RU 📌 Pinned

Как сделать?

Dark[Ol(U23)leneri] #34 18.04.2010 22:57 6408 comments 2435245 views

Он самый,
см. второе сообщение в теме “Грабли”.

как сделать так чтобы выбор действия в первый раз менял переменную на 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,
в текстовые файлы вывод сделать нельзя. Но можно завести строковую переменную, в которую добавлять по ходу игры строки. Или просто выводить в окно доп. описания.

еще можно попробовать отладчик

Aleks Versus Moderator 12.02.2013 17:39 (13 years ago)

werewolf:

a = -(a-1)

А можно ещё проще 1-a. :lol:

werewolf:

еще можно попробовать отладчик

отладчик не поможет, если есть, например, неявная зацикленность. Очень сложно отследить. А вот ведение лога очень помогло бы. Где-то на форуме был плагин, позволяющий отслеживать состояние игры. Если сделать нечто подобное с отслеживанием содержимого переменных…

Дядюшка Ау #721 21.03.2013 09:50 (12 years ago)

Очень нужно узнать.
Допустим есть локация. Квартира в ней несколько комнат. Они определяются массивами.

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()

По второму вопросу - такой возможности нет

Дядюшка Ау #721 21.03.2013 10:28 (12 years ago)

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 использовать не обязательно

Дядюшка Ау #721 21.03.2013 11:19 (12 years ago)

werewolf,
Огромное спасибо! Очень помогло. А можно то же самое еще и с вещью проделать? То есть когда нажмет игрок на вещь не известно.

if $selobj='ТЕСТ':
cla
*clr
'Тестовое сообщение'
act 'Выйти': GOTO $CURLOC
end

Тут чего надо сделать, что бы объект запоминал из какого места он был вызван?

ну это только по первому варианту
то есть в локациях где от $ARGS[0] зависит вывод вызывать

$metka = $ARGS[0]

ну при выборе предмета

if $selobj='ТЕСТ':
  cla
  *clr
  'Тестовое сообщение'
  act 'Выйти': GOTO $CURLOC,$metka
end
Дядюшка Ау #721 21.03.2013 11:45 (12 years ago)

Огромное спасибо! Вы очень помогли!

Log in or Register to post comments.