Спасибо, подумаю.
Неактивен
Может запоминать переменные по состоянию на начало локации? После повторного выполнения макросов (кроме рандома), они станут такими же, как были до возвращения. Кроме того, в этом случае игрок гарантированно увидит то же описание локации (даже в случае вывода устаревших значений, как в моём предыдущем примере).
Да, это была ошибка, я её исправил. Завтра выложу версию с большим обновлением ASM.
Неактивен
Доступна версия 1.2. Подробно см. здесь: https://forum.ifiction.ru/viewtopic.php … 017#p25017
Неактивен
Morych написал:
Снова про Бэк. Собственно, пример:
Код:
:: Start <<set $i = 0>> [[Location 1]] :: Location 1 i = <<print $i>> <<set $i = 1>> [[Location 2]] :: Location 2 I want back! <<back>>Первоначально на "Локации 1" я вижу, что "i = 0". Иду на "Локацию 2", на которой внезапно нажимаю кнопку "Назад". Ожидаю увидеть то же самое, но вижу "i = 1". На месте игрока я бы запаниковал.
Если добавить макросы <<back>> и <<return>> в параграф Location 1, то получается, что при возврате с Location 1 на Start любым из макросов $i = 0 при любом возврате, хотя я думал, исходя из описания, что при возврате с помощью <<return>> $i должно равняться 1? так как сохраняется новое значение переменной?
Почему не так? Или я что-то не так понял из описания макросов. Спасибо.
:: Start
<<set $i = 0>>
i = <<print $i>>
[[Location 1]]
:: Location 1
<<set $i = 1>>
i = <<print $i>>
<<back>>
<<return>>
Неактивен
В параграфе Start переменной $i присваивается значение 0. Поэтому на долю секунды значение $i после return равняется 1, и сразу меняется на 0.
Неактивен
DoubleDragon написал:
В параграфе Start переменной $i присваивается значение 0. Поэтому на долю секунды значение $i после return равняется 1, и сразу меняется на 0.
Прошу прощения, уже разобрался, я же принудительно присваиваю $i = 0, каждый раз при возврате на Start.
Нужен лишний шаг, чтобы увидеть разницу в макросах:
:: Start
<<set $i = 0>>
i = <<print $i>>
[[Location 1]]
:: Location 1
i = <<print $i>>
[[Location 2]]
:: Location 2
<<set $i = 1>>
i = <<print $i>>
<<back>>
<<return>>
Спасибо.
Неактивен
Да, теперь всё верно
Удачи!
Неактивен