Специальные команды триггеров


* текст
   Символ '*' в начале строки означает комментарий. Вся строка игнорируется интерпретатором триггеров.


attach vnum id
Назначить триггер с номером vnum мобу, пердмету или комнате с номером id.
Внимание! Не путать id с vnum.


global переменная
   Команда global делает переменную глобальной. Заметим, что эта переменная является глобальной только в рамках одного скрипта, в котором она была объявлена глобальной.


context значение
Меняет содержимое параметра context скрипта на значение (целое положительное число).
Когда скрипт начинает работать, его context равен 0. Когда переменная объявляется глобальной, ее context будет установлен в значение параметра context скрипта. Для того чтобы глобальная переменная бала найдена при обращении к ней, необходимо чтобы ее context был равен 0 или текущему значению параметра context скрипта. Подробнее об этом параметре и примерах его использования смотрите в разделе Переменные.    


dg_cast 'заклинание' цель
Триггер в котором выполнилась эта команда вызовет колдование 'заклинания', причем таким образом, как будто персонаж в игре сам произнес это 'заклинание'. Если это триггер моба - моб в действительности произнесет данное 'заклинание', в противном случае (триггер предмета или комнаты) будет загружен специальный моб (которого вам создавать не нужно, он уже существует) для того чтобы произнести 'заклинание', и сразу после этого будет уничтожен. Заклинания с групповыми аффектами не могут быть вызваны этой командой.
Внимание! Пользуйтесь этой командой осторожно. Заклинания произносимые с помощью этой команды будут успешными даже в не_магических комнатах, а агрессивные заклинания будут успешными и в мирных комнатах.


eval переменная выражение
Эта команда вычисляет значение выражения и устанавливает значение переменной в результат. О том как производятся вычисления выражения смотрите в разделе Выражения.

    Пример: eval foobar 15 - 5 устанавливает переменную foobar в значение 10.


break
Прекращает выполнение switch блока. Смотри switch для более подробных объяснений.


case условие
    Определяет группу команд внутри switch блока. (Смотри switch ниже.)


default
    Используется в switch блоке. Определяет группу команд, которая будет выполнена если switch-выражение не совпало ни с одним case-условием. (Смотри switch ниже.)


done
   Завершает switch или while блок.


detach vnum id
  Убирает триггер с номером vnum с объекта (моба, предмета или комнаты) с номером id.


extract переменная номер_слова текст
Устанавливает значение переменной (если такой не существует - создается новая) в слово номер номер_слова из текста. Имя переменной не заключается в %.


if выражение1
...
elseif (выражение2)
...
else
...
end
    Команда if должна предшествовать командам elseif (необязательная команда), else (необязательная команда), и end.


halt
    Эта команда прекращает выполнение триггера. Триггер возвратит значение 1, если другое значение не было задано командой return


makeuid переменная id
   Создает новую переменную, которая идентифицирует игрока, моба или предмет с этим id-номером. Все поля этой переменной устанавливаются в значения соответствующие этому игроку, мобу или предмету.


remote переменная id
    Копирует переменную в список глобальных переменных скрипта принадлежащего мобу, предмету или комнате с этим id.


return значение
    Return изменяет возвращаемое значение триггера. Значение возвращается после выполнения всех команд триггера, или при выполнении команд wait или halt. В отличие от большинства языков программирования, return не прекращает выполнение триггера.


set переменная выражение
    Устанавливает значение переменной в выражение без вычисления значения выражения.


Пример: set foobar 15 - 5
Устанавливает значение переменной foobar в "15 - 5"


switch выражение
case условие1
...
break
case условие2
...
break
case условие3
...
break
default
...
done

Switch начинает блок выбора по условию.
Среди условий (условие1, условие2, условие3 ...) ищется равное выражению.

Обратите внимание, что только команда break прерывает выполнение списка команд. То есть, если например %number% будет равен 3-м, и мы не поставим команду break перед командой 'case 2', то команда 'say number равен двум' тоже будет отработана.


unset переменная
     Уничтожает переменную если она существует.


version
     Отсылает номер версии интерпретатора скриптов в лог МАДа.


wait продолжительность
wait until время
     Приостанавливает выполнение триггера на определенный промежуток времени.


while выражение
     Начинает блок цикла. Блок содержит серию команд, которые будут выполняться до тех пор, пока выражение не станет ложным. Блок заканчивается командой done.


Игровые команды

Обычные игровые команды могут быть использованы в триггерах. Каждый тип игрового объекта (моб, комната или предмет) может пользоваться всеми доступными ему командами.

Замечание. Базовый CircleMUD не позволяет мобам колдовать заклинания таким образом.


Команды мобов

Мобы могут использовать любые игровые команды, доступные игроку такого же класса и уровня, а так же нижеследующие команды.


masound сообщение
Выдает сообщение во все комнаты соединенные выходами с комнатой в которой находится моб, которому принадлежит этот триггер.


mat цель команда
Команда выполняется мобом на (в) указанной цели. Целью может быть номер комнаты (vnum), имя игрока или предмета. Целью не может быть private или god комната. Командой может быть любая доступная мобу команда.


mdoor комната направление поле [значение]
      Смотри wdoor ниже.


mecho сообщение
      Посылает сообщение всем не спящим персонажам в комнате, в которой нахидится моб.


mechoaround цель сообщение
      Посылает сообщение всем в комнате кроме жертвы и моба.


mexp жертва количество
     Меняет текущее количество опыта жертвы на количество. Количество может быть 100,000 или меньше, включая отрицательные значения.


mforce жертва команда
     Моб заставляет жертву выполнить команду. Если жертва это all - все игроки в комнате будут заставлены выполнить команду. На бессмертных эта команда не действует. Жертве не посылается никаких сообщений, кроме тех, которые вызваны исполнением команды.


mforget жертва
     Убирает жертву из 'памяти' моба.
Смотри так же mremember ниже.


mgoto цель
     Перемещает моба к цели. Целью может быть предмет, комната или персонаж. Сообщение не выдается. Перенос в god или занятую private комнаты не осуществляется.


mjunk предмет
    Убирает предмет из инвентори моба. Mjunk all убирает все предметы из инвентори моба.


mhunt жертва
     Моб начинает 'охотиться' за жертвой и найдя ее начинает драться с жертвой. Если моб дерется - команда будет проигнорирована. Если моб 'охотится' за другой жертвой, он прекратит поиски и начнет охотиться за жертвой.


mkill жертва
     Mkill заставляет моба атаковать жертву. Работает так же как и команда убить.


mload <obj|mob> vnum
     Эта команда загружает моба или предмет с номером vnum в игру. Мобы загружаются в ту же комнату, в которой находится моб, чей триггер выполнил эту команду. Предметы загружаются в инвентори моба. No-take (тяжелые или не берущиеся) предметы загружаются в комнату в которой находится моб. Сообщение не выдается.


mpurge [цель]
     Удаляет цель (предмет или моб) из игры. Если цель не задана, все предметы и мобы удаляются из комнаты в которой находится моб. Игроки не могут быть удалены этой командой. Сообщение не выдается.


mremember жертва [команда]
     Команда добавляет жертву в 'память' моба. Как только после этого моб встретит жертву, он выполнит команду, если этот параметр задан. Если нет - выполнится встроенный триггер 'памяти'. Как только моб выполнит команду, жертва будет исключена из 'памяти' моба.
Замечание. Даже если команда задана, у моба ДОЛЖЕН быть memory триггер.


msend жертва сообщение
    Жертве будет послано сообщение


mteleport жертва цель
    Переносит жертву к цели. Жертва не обязательно должна находиться в той же комнате что и моб. Если жертва это 'all' - все персонажи в комнате с мобом будут перенесены к цели. Цель - это vnum комнаты куда бедет осуществляться перенос. Сообщение не выдается.


mtransform vnum
   Эта команда превращает моба в другого моба, основываясь на параметрах моба с номером vnum. Причем такие параметры как единицы жизни, максимальные единицы жизни, положение (сидит, стоит или спит), количество денег и количество опыта останутся прежними. Превращение является постоянным, но возможны другие превращения. В комнату не выдаются сообщения о превращении. У нового моба останутся все прежние триггера, триггера моба-прототипа (с номером vnum), триггера с моба-прототипа не добавятся, и load-триггер не будет выполнен заново.


Команды предметов

Триггера предметов могут использовать следующие команды.


odoor комната направление поле [значение]
    Смотри wdoor ниже.


oecho сообщение
    Посылается сообщение всем не спящим персонажам в комнате в которой находится этот предмет. Если этот предмет одет на ком-то, или находится в чьем-то инвентори, сообщение посылается всем не спящим в комнате в которой находится моб или игрок у которого находится этот предмет.


oechoaround жертва сообщение
    Посылается сообщение всем в комнате кроме жертвы.


oexp жертва количество
   Меняет текущее значение опыта жертвы на количество. Количество может быть 100,000 или меньше, в том числе отрицательным.


oforce жертва команда
   Объект заставляет жертву выполнить команду. Если жертва это 'all' - все персонажи в комнате будут заставлены выполнить эту команду. На бессмертных эта команда не действует. Жертве не посылается никаких сообщений, кроме тех, которые вызваны исполнением команды.


oload <obj|mob> vnum
   Команда загружает моба или предмет с номером vnum в комнату, в которой находится предмет. Обязательно указывать vnum предмета или моба, имя не будет работать. Сообщения не выдаются.


opurge [цель]
   Удаляет цель (предмет или моб) из игры. Если цель не указана, все предметы или мобы находящиеся в комнате удаляются из игры. Игроки не могут быть удалены этой командой. Сообщение не выдается.


osend жертва сообщение
   Сообщение посылается жертве.


oteleport жертва цель
   Перемещает жертву к цели. Цель не обязательно должна находиться Если жертва это 'all' - все персонажи находящиеся в комнате будут перенесены к цели. Сообщение не выдается.


otimer значение
   Устанавливает таймер объекта в значение. Как только таймер обнулится timer-триггер предмета будет выполнен.


otransform vnum
    Этой командой предмет преобразовывается в другой предмет, по образцу предмета с номером vnum. Преобразование является постоянным, но возможны другие преобразования. В комнату не выдаются сообщения о преобразовании. У нового предмета останутся все прежние триггера, триггера предмета-прототипа (с номером vnum) не добавятся, и load-триггер предмета не будет выполнен заново.


Команды мира

Триггера комнат могут использовать следующие команды.


wasound сообщение
   Wasound посылает сообщение во все прилегающие к этой комнате комнаты.


wdamage жертва количество
   Нанести вред (или исцелить, если количество отрицательное число) жертве.


wdoor комната направление поле [значение]
   Эта команда используется для добавления, удаления и модифицирования дверей в комнате (указывать vnum комнаты). Направление определяет, какая дверь будет изменена и может быть север, юг, восток, запад, вверх, или вниз. (Примечание: только русские слова для направлений поддерживаются!) Если дверь не существует, новая дверь будет создана. Поле определяет какой параметр двери будет изменен. Допустимые поля:

purge
Удаляет дверь полностью. Значение не используется.

description
Значение будет новым описанием выхода комнаты.

flags
Значение будет новыми флагами двери.

Вот список букв, который представляет все флаги двери.

a - У выхода есть дверь открывается/закрывается.

b - Дверь закрыта.

c - Дверь заперта.

d - Замок нельзя взломать.

e - Дверь секретная (если поддерживается МАДом).

Например, " wdoor 100 север abe " создает закрытую, закрытую секретную дверь на севере в комнате 100.

key
Значение - vnum предмета, который будет новым ключом к двери.

name
Значение - новое имя двери.

room
Значение - комната, к которой будет подсоединена эта дверь.


wecho сообщение
   Wecho посылает сообщение всем кто не спит в комнате.


wechoaround жертва сообщение
   Посылает сообщение всем в комнате кроме жертвы.


wexp жертва количество
   Wexp изменяет опыт жертвы на количество. Количество может быть 100,000 опыта и меньше, включая отрицательные значения.


wforce жертва команда
   Заставляет жертву выполнить команду. Если жертва это 'all' или 'все', все персонажи в комнате выполнят эту команду. Wforce не влияет на Бессмертных. Никаких сообщений не посылается, кроме тех, которые были вызваны выполненной командой.


wload <obj|mob> vnum
  Эта команда загружает монстра или предмет в игру в комнату, выполняющую команду. Вы должны задать vnum монстра или предмета. Имя не сработает. При выполнении не показывается никаких сообщений.


wpurge [цель]
   Wpurge убирает предметы или монстров из игры. Если цель не задана, все предметы и монстры в этой комнате будут удалены. Если цель задана, только указанный монстр или предмет будет удален. Игроки не могут быть удалены этой командой. При выполнении не показывается никаких сообщений.


wsend жертва сообщение
   Сообщение будет послано жертве.


wteleport жертва цель
   Wteleport переместит жертву к цели. Жертва не должна обязательно находиться в этой комнате. Если жертва это all или все, все персонажи в комнате будут телепортированы в комнату-цель. При выполнении не показывается никаких сообщений.