RU 📌 Pinned

Как сделать?

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

Aleks Versus Moderator 21.12.2013 17:08 (12 years ago)

newsash:

но код “меню_объекта” уже выполнен со старым значением.

а вон в чём дело.

Теперь понял GS это в вроде curloc только для другой ситуации. Да теперь все работает. Благодарен за помощь.

Pasha:

Теперь понял GS это в вроде curloc только для другой ситуации

Нет. $curloc - это название текущей локации. А GS - это оператор для выполнения кода локации.

И вот еще вопрос а можно как то по хитрому присваивать “действие” другой локации (не в той в которой сейчас игрок) сразу что то в роде loc ‘больница’ = act ‘лечить’ или только через переменные?

Pasha:

И вот еще вопрос а можно как то по хитрому присваивать “действие” другой локации (не в той в которой сейчас игрок) сразу что то в роде loc ‘больница’ = act ‘лечить’ или только через переменные?

В локации, где хочешь задавать действие, пишешь

можноЛечить = 1

а в локации с действием

if можнолечить:
  act 'лечить':
    код действия
  end
end

Советую почитать справку для лучшего понимания.

Так то и есть через переменные: а после проверяется соответствие значения переменной условию и если совпадает, условие выполняется. Я просто думал вдруг есть способ без переменной: если нажата кнопка то в локации больница появляется действие - лечить. Справку читаю, примеры смотрю проверяю как работают, экспериментирую только не все понимаю - тот же “курлок” в примере с предметами он как бы обновлял всю локацию и предмет появлялся, но фраза в учебнике “возвращает название текущей локации” - ставит в ступор)

Pasha,
GOTO ‘имя_локации’
означает: перейти на локацию с именем “имя_локации”

$CURLOC “возвращает название текущей локации”. Текущая локация - это последняя локация, на которую был осуществлён переход. Если мы пришли на локацию “дом”, то в $CURLOC будет значение “дом”. Перешли на локацию “улица”, теперь в $CURLOC значение “улица”.

Таким образом,
GOTO $CURLOC
означает: “перейти на текущую локацию”, то есть просто перезаходит на текущую локацию. Мы на ней уже находимся, но перезапускаем её ещё раз. Это удобный приём, чтобы обновить содержимое текущей локации в соответствии с изменившимся состоянием игры.

Pasha:

Справку читаю, примеры смотрю проверяю как работают, экспериментирую только не все понимаю - тот же “курлок” в примере с предметами он как бы обновлял всю локацию и предмет появлялся, но фраза в учебнике “возвращает название текущей локации” - ставит в ступор)

курлок - это название текущей локации, а обновляет всю локацию команда GT $curloc

Aleks Versus, Newsash, Nex - спасибо.

И снова приветствую всех) Теперь у меня новый вопрос: есть переменные допустим “K12”, “K13” и тд. Если (if) значение одной переменной=1 то появляется текст. В одной локации таких переменных несколько, каждой соответствует свой текст. Проблема в том, что текст появляется в порядке указанном в коде и не важно что “К13” значение 1 было присвоено раньше чем “К12”, текст соответствующий переменной “К12” все равно будет выше чем текст появляющийся при “К13”. Локация где проверяется значение переменной простая (не локация счетчик), а значение переменной присваиваются в других локациях. Как сделать что бы текст шел в порядке присваивания переменной а не в порядке написанном в коде?

Pasha:

Как сделать что бы текст шел в порядке присваивания переменной а не в порядке написанном в коде?

Я вижу два варианта трактовки твоего сообщения: в одном случае у тебя есть проблема, что у тебя из-за “if k12=1: k13=1” весь текст в локации выводится сразу, а не по частям, а во втором случае тебе нужно при выводе отсортировать кусочки текста в порядке, зависящем от действий игрока. Какой вариант тебя интересует?

Зависящем от действий игрока.

Пусть есть массив ’$порядок_текстов[]’.
Для добавления фразы на вывод пишешь

if no arrpos('$порядок_текстов', 'фраза1'): $порядок_текстов[]='фраза1'

В локации вывода:

i = 0
:loop
  if $порядок_текстов[i] = 'фраза1':
    *pl 'фраза1'
  end
  if $порядок_текстов[i] = 'фраза2':
    *pl 'фраза2'
  end
  i += 1
if i < arrsize('$порядок_текстов'): jump 'loop'

Это один из работающих вариантов, возможно есть более изящные.

newsash ОК. Спасибо. Буду экспериментировать теперь и с массивами.

Нет, не могу разобраться. Объясни на примере плиз. ##variant##

Log in or Register to post comments.