Как сделать?
…
можно ли удалять гипер-строчки по типу <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
Здесь используется один массив, в котором может сохраняться состояние любого числа действий. Индексом может быть любая строка / название действия / что угодно, в общем-то.
Снова здравствуйте. Вопрос по html в классическом плеере 5.9, Я с трудом разбирался и сваял такой код:
$up,$left,$right,$down,$upopis,$leftopis,$rightopis,$downopis=%sosed & ! кортеж который задаётся на каждой локации
'<div align="center">'
'<table border="0" cellpadding="0" cellspacing="0">'
! Первая строка: Наверх
'<tr>'
' <td width="100"></td>'
if $up <> "":
' <td align="center" height="20"><a href="EXEC: gt ''<<$up>>''" class="plain"><b><font color="#4a6fa5"><<$upopis>></font></b></a></td>'
else
' <td height="20"></td>'
end
' <td width="100"></td>'
'</tr>'
! Вторая строка: Налево и Направо
'<tr>'
if $left <> "":
' <td align="right" width="100" height="20"><a href="EXEC: gt ''<<$left>>''" class="plain"><b><font color="#4a6fa5"><<$leftopis>></font></b></a></td>'
else
' <td width="100" height="20"></td>'
end
' <td width="40"></td>'
if $right <> "":
' <td align="left" width="100" height="20"><a href="EXEC: gt ''<<$right>>''" class="plain"><b><font color="#4a6fa5"><<$rightopis>></font></b></a></td>'
else
' <td width="100" height="20"></td>'
end
'</tr>'
! Третья строка: Вниз
'<tr>'
' <td width="100"></td>'
if $down <> "":
' <td align="center" height="20"><a href="EXEC: gt ''<<$down>>''" class="plain"><b><font color="#4a6fa5"><<$downopis>></font></b></a></td>'
else
' <td height="20"></td>'
end
' <td width="100"></td>'
'</tr>'
'</table>'
'</div>'
Эта локация вызывается через ‘gs’. В итоге у меня навигационный крестик сверху основного окна, тут всё прекрасно работает. Но следом за ним должно идти название текущей локации и её картинка, так вот они почему-то получаются в километре внизу. Экран приходится прокручивать, чтобы до них добраться. Подскажите пожалуйста, как избавиться от этого огромного пробела? Вот пример кода одной из локаций откуда эта ‘tablica’ вызывается:
cls
gs 'time'
$loc =$curloc
y=1
x=1
%sosed=['administr','ploshad','ulicarich','imperpros2','Дума','Главная площадь','Богатая улица','Ниже по проспекту']
gs 'tablica'
'<center><b> Императорский проспект начинающийся от площади перед дворцом </b></center>'
'<center><img src ="" ></center>'
gs 'npconloc'
Первая идея, которая приходит в голову, просто запихать название и картинку в эту же табличку. Но у него как мне показалось есть один минус - я так и не пойму, а что вообще происходит-то.
Также как я второй раз не понял, как надо оформлять сообщения нормально. Мне бы не помешал учебник, по пользованию этим форумом и не на английском.
Думаю, это типичная проблема использования неявного оператора: если выводится значение без оператора, то после вывода в основное описание добавляется перенос строки (аналогично *PL).
Самое простое решение - использовать явно *P, например:
*p '<center><b> Императорский проспект начинающийся от площади перед дворцом </b></center>'
*p '<center><img src ="" ></center>'
Byte:
Думаю, это типичная проблема использования неявного оператора: если выводится значение без оператора, то после вывода в основное описание добавляется перенос строки (аналогично
*PL).
Я попробовал, у меня ничего не изменилось :(
provincial: Я попробовал, у меня ничего не изменилось :(
Можешь прислать свой код на aleksversus@mail.ru. Пометь только в теме письма “Код QSP на проверку”.(Если игра сильно большая, несколько гигов, то убери из игры все медиа, не использующиеся на экране с ошибкой). Пока что выглядит так, как сказал Байт. Строки выводятся без оператора *p и это ломает разметку. Ещё отступы между тегами лучше не ставить. Например в этой строке:
provincial:
' <td align="center" height="20"><a href="EXEC: gt ''<<$up>>''" class="plain"><b><font color="#4a6fa5"><<$upopis>></font></b></a></td>'
у тебя сдвинут тег внутри строки. Этот сдвиг не нивелируется классическим плеером.