Появился один вопрос относительно URQL.
Сцены\комнаты\локации могут иметь свои локальные переменные, которые не будут сбрасываться с каждым новых входом?
Конкретный пример того, что хотел реализовать:
Есть комната, там есть монстр, а у него есть "очки здоровья" и именно эти ОЗ должны сохраняться т.е. зашёл - пострелял немного, а затем сбежал, потом вернулся и добил монстра.
Такое можно реализовать? Конечно можно глобальную переменную объявить что-то вроде loc_room_gateA_monter_hp, но это как-то ... вроде должно быть что-то такое встроенное?
Неактивен
В URQ нет локальных переменных, и это не объектно-ориентированный язык. Посещение/покидание локации в общем случае не влияет на значения переменных, если только не присваивать этим переменным значения в явном виде (из этого правила есть исключения, но пока ими можно пренебречь).
Посмотрите описание языка здесь: http://urq.plut.info/texts
(Там для старой версии под DOS, но сами принципы языка с тех пор не сильно поменялись).
Один из приемов, чтобы не запутаться в длинной череде похожих переменных - давать переменным, относящшимся к определенной локации, имя, начинающееся с имени этой локации.
Неактивен
DarkDes написал:
Да, вроде смысле понятен. По сути это тогда получается собственные переменные рода "превлок" и "каррентлок". Но на самом деле понадобится только одна - превлок. Получается её каждый раз необходимо будет ставить для каждой локации или есть какой-то механизм для этого?
Из документации: current_loc и previous_loc (строковые системные переменные) хранят имена соответственно текущей и предыдущей посещенной локаций. previous_loc удобно использовать для сохранения игры из любой локации при помощи действия типа use_inv_Запись. Для первой локации previous_loc равна ее имени (чтобы сохранение работало и для нее). current_loc и previous_loc теперь меняются только при btn-переходах.
DarkDes написал:
Вроде имеется локация common - она вызывается при действии (переходе) или всегда (как обновление игры - каждый "кадр") ?
Локация common вызывается только при переходах по btn. Есть еще системная числовая переменная Common, позволяющая задать, к какой именно локации Common будет происходить обращение (например, при Common=5 вызываться будет локация Common_5).
Это, кстати, тоже из документации:).
Неактивен
Ajenta написал:
Если бы об этом кто-то знал, то может быть и пользовались бы.
Об этом вроде как в документации (описании URQL для URQ_DOS от Корвина) написано. Страница 21, "Строковые переменные и работа с ними".
Неактивен
Ajenta написал:
Ну и кстати кто в курсе, что в фурке это рабоотает, опять же.
Ну, вообще фурка изначально ориентирована была на то, чтобы по максимуму перенять стандарт досурки, поэтому по умолчанию можно считать, что если какой-то функционал есть в URQ_DOS, в FireURQ он тоже есть. (Тон, поправь меня, если что). Исключения, наверно, по пальцам одной руки пересчитать можно, причем бОльшая их часть описана в фурк-документации. Я навскидку из неподдерживаемых фич досурки могу вспомнить разве что чуть иную логику работы с инвентарем (вследствие чего иногда "размножаются" кнопки, а некоторые популярные авторы отказываются писАть на фурке). Да, еще DOS-кодировка не поддерживается, поэтому эпический квест про Евга, универ и спасательный круг на фурке без перекодировки не доступен.
Прости меня, Аджента, за длинный и занудный пост:).
Неактивен
Александр Морт написал:
invkill
Да, invkill удаляет весь инвентарь. Есть еще perkill - сбрасывает все переменные.
Полный рестарт делается так: вначале квеста ставится метка, сразу после которой прописываются invkill и perkill. Когда нужен рестарт, просто каким-то образом осуществляется переход на эту метку (через btn, goto...)
Неактивен