Переменные имеют вид имен, окруженных символами '%', например %actor%.
Перед обработкой команды, строка сканируется и все переменные заменяются на их значения. Сначала проверяется список локальных переменных. Если такой переменной не найдено, проверяются глобальные переменные. Если переменная все еще не найдена, проверяется список 'встроенных' переменных (не тех, которые определяются скриптом). Если переменная не найдена, она будет замещена пустой строкой (строка с процентами будет убрана из текста и ничего не останется на ее месте). Два знака '%', следующих сразу друг за другом будут интерпретированы как одиночный '%'.
Есть два типа переменных, локальные и глобальные. Все локальные переменные удаляются когда триггер заканчивает работу и могут использовать только этим триггером. Глобальные переменные остаются пока их не уберут командой unset или не будет удален скрипт.
У глобальных переменных есто так же параметр context.
Параметр context есть так же и у
скрипта. По умолчанию он равен нулю.
С помощью команды 'context <value>' можно установить
context скрипта в любое целое положительное значение.
Сontext глобальной переменной всегда устанавливается в текущее
(в момент объявления ее глобальной) значение context'a
скрипта.
Если context глобальной переменной равен нулю или текущему
значению context'a скрипта - она будет 'видна'. В противном случае
она будет недоступна для работы с ней.
Имена и поля переменных чувствительны к регистрам.
Поля переменных
Чтобы получить поле, используйте синтаксис %переменная.поле%. Допустимые поля для каждого типа игровых объектов указаны ниже.
Переменная actor
Поле |
Описание поля |
alias | Список алиасов персонажа. |
align | Наклонности персонажа в числовой (!) форме. |
canbeseen | Истина если персонаж виден мобу (всегда истина в триггерах предметов и комнат). |
str, int, wis, con, dex, cha | Параметры персонажа (сила, интеллект, мудрость, ловкость, харизма). |
class | Профессия персонажа в виде строки. (Маг/Жрец/Вор/Воин/..) |
stradd | Количество возможных тренировок параметров персонажа. |
eq(позиция) | Предмет одетый на персонаже на позиции, если такой есть. Позиция может быть задана как числом так и названием (голова, тело, и тд.) |
gold | Количество денег у персонажа. |
id | Уникальный id-номер персонажа. |
level | Уровень персонажа. |
name | Имя персонажа (короткое описание для мобов). |
rname, dname, vname, tname, pname | Имя персонажа в родительном, дательном, винительном, творительном или предложном падежах. |
next_in_room | Следующий персонаж в комнате, если такой отсутствует возвращается пустое значение. |
race | Раса персонажа, в виде числа (!). |
fighting | Возвращает ID того с кем сражается персонаж, иначе возвращает nobody. |
room | Vnum комнаты, в которой находится персонаж. |
sex | Пол персонажа, как строка (Neutral, Male, Female). |
skill(умение) | Возвращает умение в процентах. Пример: %actor.skill(спрятаться)%. |
vnum | Виртуальный номер персонажа. -1 для игроков. |
weight | Вес персонажа. |
size | Размер персонажа. |
slava | Количество славы у игрока. (Адамант МАД). |
haveobj(vnum) | Имеет ли персонаж предмет vnum Возвращаемые значения: none - нет inv - предмет находится в инвентори eq - предмет надет Предметы в предметах не видит. |
Предметы
Поле |
Описание поля |
id | Уникальный id-номер предмета |
name | Список алиасов предмета |
shortdesc | Короткое описание предмета |
type | Тип предмета - например WAND, ARMOR, или KEY |
val0 | Value 0 of the object, defined in values.doc |
val1 | Value 1 of the object, defined in values.doc |
val2 | Value 2 of the object, defined in values.doc. |
val3 | Value 3 of the object, defined in values.doc |
vnum | Виртуальный номер предмета |
Комнаты
Поле |
Описание поля |
id | Уникальный id-номер комнаты |
name | Название комнаты |
direction (north/south/east/west/up/down) | Список флагов выхода в указанном направлении |
vnum | Виртуальный номер комнаты |
people | Возвращает первого персонажа в комнате, или пустое значение |
Текстовые переменные
Это переменная %speech% или любая переменная созданная в триггере и содержащая текст.
Поле |
Описание поля |
strlen | Возвращает количество символов в тексте |
trim | Возвращает текст без пробелов в начале и конце. |
car | Возвращает первое слово из текста. Например для %text% ="Это текстовая переменная" %text.car% вернет значение "Это" |
cdr | Возвращает текст без первого слова и с обрезанными пробелами в начале и конце. Например для %text%="Это текстовая переменная" %text.cdr% вернет значение "текстовая" |
Специальные переменные
Поле |
Описание поля |
self | Объект (моб, предмет или комната) которому принадлежит скрипт. Все поля для переменной соответствующего типа могут быть использованы. |
time.<поле> | Полем может быть hour, day, month, или year. Возвращает час, день, месяц или год текущего времени МАДа. |
peop |