Как сделать?
…
можно ли удалять гипер-строчки по типу <a href=“EXEC:код кнопки”>текст кнопки</a>
Без смены текста описания не получится. Игра может создать спец локацию-помощник, которая будет это делать - получаем текст описания, очищаем существующий, заменяем/удаляем в старом тексте то что нужно, выводим на экран новый текст - это может быть одна переиспользуемая локация.
Блин, и как делать на новом форуме абзацы нормальные?))
В Djot нужны пустые строки между абзацами.
Byte:
Можно делать и delact ’Взять яблоко’ и delact $selact (последнее удобнее для удаления выбранного действия). DELACT удаляет действие сразу же - дальнейшего перехода на локацию не требуется. С “GT” действие удаляется, происходит переход на локацию и все действия добавляются заново. Если нужен GT, то проще просто не добавлять ACT по какому-то условию.
Хм, тогда не понимаю зачем этот delact нужен. Я думал, он должен удалить действие навсегда. Но возврат на локацию мне как раз нужен - нужны сразу изменения переменных, реакция на изменения, все такое. Есть возможность у перехода в меню и обратно - и если после этого всё будет обновляться, то так не пойдет.
Да, DELACT удаляет действие из текущих. Если оно добавится заново, то его нужно удалять снова. DELACT иногда используют, чтобы удалить действие без обновления всей локации.
mkir:
Byte:
Можно делать и delact ’Взять яблоко’ и delact $selact (последнее удобнее для удаления выбранного действия). DELACT удаляет действие сразу же - дальнейшего перехода на локацию не требуется. С “GT” действие удаляется, происходит переход на локацию и все действия добавляются заново. Если нужен GT, то проще просто не добавлять ACT по какому-то условию.
Хм, тогда не понимаю зачем этот delact нужен. Я думал, он должен удалить действие навсегда. Но возврат на локацию мне как раз нужен - нужны сразу изменения переменных, реакция на изменения, все такое. Есть возможность у перехода в меню и обратно - и если после этого всё будет обновляться, то так не пойдет.
Т.е. по совету Byte и на примере вашего кода: просто надо сделать ’флаг’ обозначающий нужно это действие или нет. И на основе этого выводить или нет act
if flag <> 0:
act 'Взять яблоко':
яблоко+=1
flag = 0
gt $curloc
end
end
Это была проверка на возможность взять только одно яблоко, один раз.
Можно делать проверку на наличие яблок в локации, а можно ли их вообще взять, может их нету и тогда не выводить действие: if яблоко_в_локации > 0:
Можно делать проверку на наличие яблок у персонажа, Может у него они уже есть и ему они не нужны: if яблоко = 0:
Тут хватает вариантов, смотря какой алгоритм и чего вам надо. В общем, “скобки обыкновенные” из простого if … end
Есть вариант “тумблер обыкновенный”. Т.е. при каждом обращении к кнопке он меняет свое значение на противоположное. Наример, представьте у вас пульт с кнопками-лампочками:
нажали - загорелась
нажали - погасла
flag = 1 - flag
Был “0” станет “1”, был “1” станет “0”. Значение меняется при каждом обращении и никаких if .. else .. end
В общем случае такой тумблер описывается так: flag может принимать одно из двух значений А или В тогда формула тумблера выглядит так:
flag = A + B - flag
был равен А станет равен В, был равен В станет равен А
@Spacum Ну, я знаю, как работать с переменными. Вопрос был в том, что у меня этих яблок, груш, фруктов, овощей, гвоздей, табуретов, книг и всего-всего, намечается слишком много - и возможностей что-то подобрать во время какого-нибудь квеста соответственно еще больше, квесты не генерятся, пишутся вручную, единичные, не бесконечные и не рандомные “нычки” расставляются тоже вручную и на каждый “взять” не хочется заводить новую переменную, а хотелось бы просто механически удалять действия после его совершения. Но раз это невозможно в том виде, как мне воображалось, будем по старинке)
mkir:
@Spacum Ну, я знаю, как работать с переменными. Вопрос был в том, что у меня этих яблок, груш, фруктов, овощей, гвоздей, табуретов, книг и всего-всего, намечается слишком много - и возможностей что-то подобрать во время какого-нибудь квеста соответственно еще больше, квесты не генерятся, пишутся вручную, единичные, не бесконечные и не рандомные “нычки” расставляются тоже вручную и на каждый “взять” не хочется заводить новую переменную, а хотелось бы просто механически удалять действия после его совершения. Но раз это невозможно в том виде, как мне воображалось, будем по старинке)
Можно сделать через массив:
if act_hidden['Test']=0:
act 'Test':
...
act_hidden[$selact]=1 &! или act_hidden['Test']=1
gt $curloc
end
end
Здесь используется один массив, в котором может сохраняться состояние любого числа действий. Индексом может быть любая строка / название действия / что угодно, в общем-то.