Как сделать?
…
Он самый,
см. второе сообщение в теме “Грабли”.
как сделать так чтобы выбор действия в первый раз менял переменную на 1, а повторное нажатие давало 0 на выходе?
например, выбор действия ‘дверь’ сначала открывал дверь, а потом закрывал её (и так далее, каждый раз).
Spoiler
вот до чего я сам смог додуматься, однако, оно не работает
if a = 0:
a = a + 1
else
a = a - 1
end
Imm0ral,
if a = 0:
a = 1
else
a = 0
end
или можно одной строчкой :)
a = -(a-1)
Как сделать так, чтобы игра могла писать что-то в текстовые файлы? Если такое возможно.
Мне бы очень пригодилось для ловли багов.
Omut,
в текстовые файлы вывод сделать нельзя. Но можно завести строковую переменную, в которую добавлять по ходу игры строки. Или просто выводить в окно доп. описания.
еще можно попробовать отладчик
werewolf:
a = -(a-1)
А можно ещё проще 1-a. :lol:
werewolf:
еще можно попробовать отладчик
отладчик не поможет, если есть, например, неявная зацикленность. Очень сложно отследить. А вот ведение лога очень помогло бы. Где-то на форуме был плагин, позволяющий отслеживать состояние игры. Если сделать нечто подобное с отслеживанием содержимого переменных…
Очень нужно узнать.
Допустим есть локация. Квартира в ней несколько комнат. Они определяются массивами.
if $ARGS[0]='start':
'Описание локации'
act 'Зайти в комнату':gt'локация','second'
end
if $ARGS[0]='second':
'Описание локации 2й локации'
act 'Выйти':gt'локация','start'
end
Из этой локации я командой GS вызываю другую локацию, которая затирает кнопки и описание. Как мне вернутся из локации вызываемой GS обратно в локацию массив? Команда $CURLOC в данной ситуации выбивает на пустой экран.
Командами GT и GS, вернутся не могу, у меня сотня локаций. Если я начну определять местоположение переменными, то это мне до пенсии и вероятность ошибки будет очень велика.
Второй очень важный вопрос. Можно ли в команду MSG добавить кнопки “да” “нет”
Учитывая что у тебя вывод в локации идет только если задан $ARGS[0], то поэтому и переход на $CURLOC приводит к пустой локации
варианта в принципе 2
1) при входе на локацию записывать $ARGS[0] в переменную(например $текущая_комната), а потом в другой локе делать gt $CURLOC(), $текущая_комната
2) при переходе по GS передавать $ARGS[0] одним из параметров, и соответственно использовать его при возврате через $CURLOC()
По второму вопросу - такой возможности нет
werewolf:
2) при переходе по GS передавать $ARGS[0] одним из параметров, и соответственно использовать его при возврате через $CURLOC()
А как это сделать? Напишите пример кода пожалуйста.
Я пробовал
set $metka = $CURLOC,’$ARGS[0]’
act ‘Выйти’: GOTO $CURLOC,’$metka’
и
set $metka = ‘$ARGS[0]’
act ‘Выйти’: GOTO $CURLOC,’$metka’
Не помогает
второй пример немного не правильный
нужно в основной локе
$metka = $ARGS[0]
и в локе откуда возвращаетесь
act 'Выйти': GOTO $CURLOC, $metka
то есть без кавычек (если вы используете кавычки то в переменную записывается не содержимое другой переменной а ее название)
а по второму варианту
в вызов через gs добавить $args[0] параметром
gs 'название локи', $args[0]
а в переходе по $CURLOC этот параметр использовать
act 'Выйти': GOTO $CURLOC, $args[0]
Кстати set использовать не обязательно
werewolf,
Огромное спасибо! Очень помогло. А можно то же самое еще и с вещью проделать? То есть когда нажмет игрок на вещь не известно.
if $selobj='ТЕСТ':
cla
*clr
'Тестовое сообщение'
act 'Выйти': GOTO $CURLOC
end
Тут чего надо сделать, что бы объект запоминал из какого места он был вызван?
ну это только по первому варианту
то есть в локациях где от $ARGS[0] зависит вывод вызывать
$metka = $ARGS[0]
ну при выборе предмета
if $selobj='ТЕСТ':
cla
*clr
'Тестовое сообщение'
act 'Выйти': GOTO $CURLOC,$metka
end
Огромное спасибо! Вы очень помогли!