Как сделать?
…
Как сделать, чтобы при повышении уровня персонажа (текстовое RPG) на экран выводилось окно с выбором характеристик которые игрок хочет улучшить? При выборе характеристики значение переменной отвечающей за нее должно увеличиваться, но при этом, игра должна помнить на какой локации она находилась до этого. Если с выводом окна ничего не получится, то какие есть альтернативные варианты осушествления данной идеи?
Пробовал делать с помощью msg, но так не работает. Самый простой способ написать локацию-подпрограмму с таким кодом:
$text['maintxt']=$maintxt & ! сохраняем текст из окна основного описания
$text['stattxt']=$stattxt & ! сохраняем текст из окна дополнительного описания
$text['curacts']=$curacts & ! сохраняем действия
clr & ! очищаем окно дополнительного описания
*clr & ! очищаем окно основного описания
cla & ! очищаем список действий
!!! ... выводим нужный список например ввиде ссылок... !!!
*pl '<a href="exec:здоровье+=10">Увеличить здоровье на 10</a>'
!!! ... или в виде действий ... !!!
act 'Увеличить здоровье на 10': здоровье+=10
!!! ... ну и конечно, нужно действие, возвращающее всё обратно ... !!!
act '...Закрыть...':
clr
*clr
cla
dynamic $text['curacts']
pl $text['stattxt']
*pl $text['maintxt']
end
Вызывать эту локацию нужно в месте повышения уровня.
Он самый,
см. второе сообщение в теме “Грабли”.
как сделать так чтобы выбор действия в первый раз менял переменную на 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
Тут чего надо сделать, что бы объект запоминал из какого места он был вызван?