Как сделать?
…
RomaDova,
что значит “картинка поставлена на предмет”? В инвентарь добавляется предмет с иконкой? Или ты другое имел в виду?
RomaDova,
если ты вставляешь картинку в имя предмета типа:
addobj '<img src="1.gif">Отвёртка'
,
то можно проверять имя не на полное соответствие, а на наличие некоторого текста, названия например:
! #onObjSel
if instr($selobj,'Отвёртка')<>0:
! код взаимодействия с предметом
end
end
Aleks Versus,
лишний “end”.
Я добавляю предметы с картинками оператором
addobj "Имя предмета/путь к картинке/картинка.png"
и если картинка анимирована, то есть находится в формате gif, то все добавляется нормально, но исчезает возможность взаимодействия с картинкой - она не реагирует на selobj и “не выполняет” свою команду
RomaDova,
реальный пример кода можешь привести?
Насчёт сложных текстовых конструкций и заворачивания их в теги.
Можно не только переменную использовать, но и функцию.
$акт_шкаф=func('mklink','exec:goto ''Шкаф''','шкаф')
А в локации mklink это:
$result='<a href="'+$args[0]+'">'+$args[1]+'</a>'
или возможность завернуть в ссылку многострочный код с рекурсией:
if ОсмотрЛ=0:
$акт_лампа="exec:
ОсмотрЛ=1
goto $curloc
end"
$акт_лампа=func('mklink',$акт_лампа,'не горит лампа')
end
В случае, если лампа осмотрена, $aкт_лампа меняется на простой текст в выдаче локации. Вот так реализовал дезактивацию ссылок.
Хитрый Пряник,
END лишний в EXEC. Он там не нужен.
Многострочный код в ссылке - противопоказано. Это плохая практика в принципе. И ещё в Навигаторе не работает.
По поводу удобного форматирования ссылок. Для этих целей сделан модуль “вики-разметка”.
Проиллюстрирую слова Некса:
вместо
$акт_лампа="exec:
ОсмотрЛ=1
goto $curloc
end"
лучше
$акт_лампа="exec: ОсмотрЛ=1 & goto $curloc"
Спасибо, не знал, что можно использовать & для вытягивания в строку.
Для многокода буду делать gs конечно, потому что куча всего в одну строку неудобочитаемо.
Ещё вопрос: возможно ли получить имя переменной как строку и наоборот создать новую переменную с именем равным сгенерированной строке? Или пользоваться массивами, где одна из ячеек — имя?
Конструкции для инкремента/декремента вида i++, i–, i++5 отсутствуют по идеологическим причинам?
Хитрый Пряник:
Ещё вопрос: возможно ли получить имя переменной как строку и наоборот создать новую переменную с именем равным сгенерированной строке? Или пользоваться массивами, где одна из ячеек — имя?
Думаю тут поможет Динамический код.
UPD: Имя переменной как строку получить нельзя, даже не могу представить такой сценарий вне ООП. Тут скорее всего поможет массив имен переменных. Подробнее смогу ответить только если конкретную задачу узнаю.
Про динамический уже вспомнил, однако соль не в этом а в превращениях в текст и обратно.
Уже накурил по поиску как правильно передать массив функции (его имя), чтобы к нему обратиться:
!Предложенный способ с вызовом типа:
func('chisskl','патронов')
!а внутри съём копии и работа с ней:
copyarr 'TempArray',"<<$args[0]>>".
Однако, когда объёмы массива большие, то есть смысл делать более громоздкий код, который не удваивает занимаемую память:
*nl dyneval "$<<$args[0]>>[<<i>>][<<j>>]"
!вернёт значение из массива
Так же можно вписать значение в изначальный массив вот так:
dynamic $dyneval "<<$args[0]>>[0]=6"
Как вариант — снимать копию только с нужной области массива. Понимаю, что это слишком сильный загон в масштабах QSP, но говнокод не люблю
Конструкции для инкремента/декремента вида i++, i–, i++5 отсутствуют по идеологическим причинам?
Учитывая, что простота языка является одной из основных фишек QSP, можно и так сказать. Отсутствует это и многое другое, циклы и объекты например. Фанаты программирования, которые не могут обойтись без продвинутого синтаксиса, могут выбрать более сложные платформы, например INSTEAD.
Да не, мне в целом не важно какой синтаксис, лишь бы он был ясным и всё работало.
Если процедура сложная и выполняется хотя бы дважды — я сразу пишу функцию, чтобы больше с этим моментом не париться :)
Nex:
Конструкции для инкремента/декремента вида i++, i–, i++5 отсутствуют по идеологическим причинам?
Учитывая, что простота языка является одной из основных фишек QSP, можно и так сказать.
Сокращенные операции с присвоением
Хитрый Пряник,
ты это имел в виду?