Появился один вопрос относительно URQL.
Сцены\комнаты\локации могут иметь свои локальные переменные, которые не будут сбрасываться с каждым новых входом?
Конкретный пример того, что хотел реализовать:
Есть комната, там есть монстр, а у него есть "очки здоровья" и именно эти ОЗ должны сохраняться т.е. зашёл - пострелял немного, а затем сбежал, потом вернулся и добил монстра.
Такое можно реализовать? Конечно можно глобальную переменную объявить что-то вроде loc_room_gateA_monter_hp, но это как-то ... вроде должно быть что-то такое встроенное?
Неактивен
DarkDes написал:
Появилось пару вопросов-проблем относительно URQ.
Можно ли составлять конструкции вот такого вида?Код:
if <> then A1 else if <> then A2 else if <> then A3 else A4Пробую написать такое, но условия срабатывают как-то неверно.
Можно. Просто пиши все подряд if A then B else if C then D и т.д. Можно использовать переносы строк для наглядности, но ты это умеешь. Подводный камень был в том, чтобы понять какой else относится к какому ifу, но это легко понять один раз сильно протестив подобную конструкцию в фурке.
DarkDes написал:
И ещё по поводу меню. Нужно каждый раз делать метки вроде такого:
Код:
:mark1 btn mark1_1, Abc btn mark1_2, Def end :mark1_1 ... end :mark1_2 ... endМожно ли как-то сократить такую конструкцию? Т.е. чтобы логика нажатия кнопок оставалась в рамках одного mark1 ?
Для такого нужно использовать кнопку с параметром (работает только в фурке).
Могу путаться в синтаксисе, глянь на вики как правильно их использовать, но идея такая:
:0 btn mark(1), Abc ; по нажатию кнопки передаем в первую переменную локации mark единичку btn mark(2), Abc ; по нажатию кнопки передаем туда же двойку end :mark if mark_1=1 then pln Нажата первая кнопка if mark_1=2 then pln Нажата вторая кнопка end
DarkDes написал:
И похоже нет возможности вызвать proc в меню? Хотел вывод сообщений сделать при нажатии на кнопку, но мне дебаг говорит, что нельзя.
По-моему ты говоришь про т.н. "локальные действия", тоже есть в документации на вики. Но вообще, первый раз слышу, что кто-то использует меню в реальной игре Удачи!
DarkDes написал:
Вот конкретный код:
Код:
if (InputCode == #%proc_EnterCode_1$ )
Ты здесь сравниваешь значение переменной InputCode со значением другой переменной, имя которой - значение переменной proc_EnterCode_1. Т.е., если proc_EnterCode_1="z" урка понимает твое выражение как if (InputCode == z), а чему там равно значение этого z никто не знает, скорее всего "".
Если нужно сравнить значение InputCode с текстовым значением proc_EnterCode_1, то лучше ставить кавычки.
if (InputCode == "#%proc_EnterCode_1$" )
Отредактировано Евг (14.09.2015 14:05)
Неактивен
== появилось во времена досурки, когда Корянов решил сделать сравнение строк по маске
Если = просто сравнивало переменные по "совпадает одно с другим или нет", то == позволяло писать конструкции вида if str == "взять *" then ... или if date == "??.01.2015" then ... Таким образом не надо было бить строки на буквы и перебирать каждую в цикле. Но этим, кажется почти никто не пользуется
Отредактировано Евг (15.09.2015 13:06)
Неактивен
Ну да, проверь:
:0 z = "взять лук" if z == "взять *" then p Я взяла & if z == "* лук" then p лук и заплакала. else p что-то непонятное и теперь не знаю, что с этим делать. else p Ничего я не взяла. end
Неактивен
Сходу и не сообразишь.
В досурке была переменная time, которая хранила количество секунд (или мс) прошедших с полуночи. Мне тут подсказали, что и в фурке такое есть, так что можно это использовать.
До входа в фазу боя запоминай, что было в time, после клика опять проверяй, что настучало в time, считай там разницу и ставь соответствующую паузу на количество секунд, которое необходимо до конца фазы.
Или паузу в цикле, пока не настучит нужная разница time_now-time_old.
Правда в досурке в полночь переменная time сбрасывалась Так что если играть ночью можно было попасть в неприятную ситуацию. Нужно этот момент отлавливать.
Отредактировано Евг (23.10.2015 19:15)
Неактивен