Нововведения в QSP 5.9.2-5.9.4
Клуб любителей текстовых игр на QSP·3 окт 2025 в 18:12
В QSP 5.9.2 было проведено много технических улучшений, ускорена работа отдельных операций и плеера. В QSP 5.9.3 основной упор так же делался на улучшение работы движка, а вот уже в версии плеера 5.9.4 появилось много всего нового.
5.9.3
Отрицание кортежей
В плеерах версии 5.9.3 появилось отрицание кортежей. Т.е. теперь вы можете использовать унарный минус перед кортежем. Это равносильно умножению всех элементов корт ежа на -1. Примеры:
%tpl = -[2] & ! [-2]
-[5,6,7] & ! [-5,-6,-7]
! a = 12
-[a, a+2, a+4] & ! [-12,-14,-16]
-[5,6,7]+3 & ! [-2,-3,-4]
-([5,6,7]+3) & ! [-8,-9,-10]
-[1,[2,-3],-4] & ! [-1,[-2,3],4]
5.9.4
Новый упрощенный синтаксис вызова локаций как операторов (замена GOSUB)
Дополняет упрощенный синтаксис вызова локаций как функций (@foo), но скобки для аргументов можно не указывать.
Синтаксис:
@@имя_локации [параметр 1], [параметр 2], [параметр 3], ...
Имя локации не может содержать символы-разделители (аналогично вызовам @foo).
Параметры локации могут отсутствовать или быть записаны со скобками (аналогично обычным операторам).
Если локация записывает что-либо в переменную RESULT, то это значение будет проигнорировано.
Примеры:
@@loc1 'text', var1, $var2
@@loc2
@@loc3('param1')
@@loc4(123, 'test')
Оператор MODOBJ
Позволяет изменят ь то, как будут отображаться предметы с заданным именем. Само имя предмета не изменяется.
Это может быть полезно, если сам предмет фактически остается тем же самым, но нужно изменить его отображение в инвентаре.
Синтаксис:
MODOBJ [$имя предмета], [$описание предмета], [$изображение предмета]
Изображение предмета опционально - если этот параметр не указан, то сохраняется предыдущее указанное изображение.
Данный оператор меняе т свойства всех предметов с указанным именем.
Для изменения свойств предметов необходимо, чтобы в инвентаре был хотя бы один указанный предмет. Далее, при добавлении новых предметов с тем же именем, их свойства будут соответствовать указанным в MODOBJ.
Обратите внимание, что этот оператор крайне не рекомендуется использовать для замены предметов (когда нужно отобразить новый/другой предмет в той же позиции инвентаря).
Примеры:
ADDOBJ 'sword'
ADDOBJ 'sword'
ADDOBJ 'keyboard'
MODOBJ 'sword', 'Sword (sheathed)'
MODOBJ 'keyboard', 'Keyboard (black)'
ADDOBJ 'sword' &! будет отображен как 'Sword (sheathed)'
MODOBJ 'sword', 'Sword (sharp)' &! изменит отображение всех предметов 'sword'
Оператор RESETOBJ
Этот оператор отменяет все изменения, произведенные с помощью MODOBJ.
Синтаксис:
RESETOBJ [$имя предмета]
Если имя предмета не указано, то сбрасывает изменения для всех предметов инвентаря.