Справочник по триггерам, используемым в картах игры “Битва колдунов 2”

 

Словарь условных терминов

 

     Триггер

Последовательность строк, содержащих условия и действия. Действия выполняются только после того, как будут выполнены нужные условия.

     Условие

Условие – строка, содержащая определенное условие.

Если условие не выполнено – все дальнейшие строки

триггера выполняться не будут.

     Действие

Действие – строка, подразумевающая некоторые действия с объектами карты.

     Герой

Существо со свойством “Герой”. Каждый герой имеет определенный номер.

Таким образом, можно конкретно указать в триггерах на определенное создание,

используя этот номер.

     Главный колдун

Существо со свойством “Главный колдун”.

Как правило, игрок имеет только одно такое существо.

     Группа

Совокупность существ, каждому из которых задано свойство “Группа”,

причем с одним и тем же номером.

     Специальная вещь

Вещь со свойством “Специальная вещь”.

     Специальная территория (объект)

Объект со свойством “Спец.объект”.

     Идент

Номер ресурса. Ресурсами могут являться спрайты, звуки, анимации и текстовые файлы.

     Файл BPF

Файл с заранее скомпилированными дополнительными ресурсами.

     Переменная

Вы можете задать множество переменных.

Переменная имеет определенный номер.

В каждой переменной хранится определенное число.

Вы можете прибавить к этому числу, вычитать из него и сравнивать с другими числами.

В любых триггерах вместо любого числа можно использовать переменную, написав следующее: 

v<номер переменной>. Например, v15 подставит вместо этого значение переменной номер 15.

Использование переменных позволяет создавать очень сложные условия и ничем не

ограниченную логику.

     Уникальный номер

Устаревшее понятие. В нынешнем редакторе увидеть уникальные номера объектов нельзя.

 

 

Специальные триггеры

 

В тексте могут присутствовать специальные триггеры, которые выполняются независимо от условий, например, триггеры, подгружающие графику. Все эти триггеры выполняются сразу после загрузки карты.

 

     #usebpf <номер файла BPF> <имя файла BPF> <пароль>

Это действие устанавливает соответствие определенному номеру 1..100

определенный файл BPF.

     #loadbpf <номер файла BPF>

         Это действие загружает определенный файл BPF.

     #text <номер> <слово1> <слово2> <...> <endtext>

Это действие присваивает определенному номеру 0..100 определенный текст.

Вместо этого лучше пользоваться заранее скомпилированным текстом.

     #include <номер текстового ресурса>

Это действие вставляет триггеры из текстового ресурса в текущее место.

 

Обычные триггеры имеют следующий формат:

 

#trigger <номер триггера>

......

#trigger <номер триггера>

......

#endtr

 

Триггер состоит из последовательности условий и действий.

Условия определяют - будут ли выполняться последующие действия.

Если в конце триггера условия выполнялись, то триггер сбрасывается и

считается выполненным.

 

Условия

 

#turn <номер хода>

         Сейчас ход ...

     #mapturn <номер хода>

Сейчас ... ход, прошедший от момента запуска этой карты.

Такое условие необходимо во второй и дальнейших картах связанной компании.

     #turnbegin

         Ход только начался. Это условие будет выполнено в начале хода.

     #player <номер игрока>

         Ходит игрок ....

     #begin

Сейчас ход 1.

     #notbegin

Сейчас не ход 1.

 

     #dropcond

         Сбросить условия, т.е. выполнять дальнейшие действия.

 

     #nowiz

         Текущий игрок не имеет главных колдунов.

     #noenemywiz

         На карте не осталось вражеских главных колдунов.

 

     #collarti <число>

         Главный колдун текущего игрока собрал ... артефактов.

     #wizardhasthings <тип 1> <тип 2>  <..> 0

         Главный колдун имеет в своем инвентаре вещи следующих типов.

     #wizardhasthingsnear <тип 1> <тип 2>  <..> 0

         Колдун имеет в своем инвентаре или на клетке под ним вещи следующих типов.

     #playerhasthing <номер игрока> <номер спец.вещи>

         Какое-то из созданий игрока владеет специальной вещью с номером.

     #playerhasgold <номер игрока> <количество>

         Игрок имеет столько или больше золотых монет.

     #currentplayerhasthing <номер спец.вещи>

          Какое-то из созданий текущего игрока владеет вещью с номером.

 

     #wizardsatportals

         Все главные колдуны текущего игрока должны находиться

         на пентаграммах порталов.

     #wizardatkoords <x1> <y1> <x2> <y2> <..> -1 -1

         Главный колдун текущего игрока пришел в определенное место.

 

     #specialthingsatkoords <номер спец.вещи> <к-во> <x0> <y0> <длина> <высота>

         В заданной зоне карты лежит некоторое количество определенных вещей.

 

     #creaturetypeatkoords <номер игрока> <тип> <x1> <y1> <x2> <y2> <..> -1 -1

         Существо определенного типа появилось в определенных координатах.

         Если тип=0, то триггер сработает на любое существо игрока.

     #nobodyatkoords <x> <y>

         Это условие будет выполняться, если в определенной клетке нет созданий.

 

     #heroatkoords <номер героя> <x0> <y0> <длина> <высота>

         Существо с этим номером находится в заданных координатах.

     #heroisdeadoratkoords <номер героя> <x0> <y0> <длина> <высота>

          Существо либо не существует, либо в заданных координатах.

     #heroseehero <номер героя> <номер героя>

         Это условие выполняется, если одно существо видит другое.

     #heroseeplayer <номер героя> <номер игрока>

         Это условие выполняется, если существо видит любое существо определенного игрока.

     #heroisdead <номер героя>

         Это условие выполняется, если герой мертв.

     #heroisnotdead <номер героя>

         Это условие выполняется, если герой жив.

 

     #groupatkoords <номер группы> <x0> <y0> <длина> <высота>

         Все существа данной группы находятся в данной зоне.

     #hasobjective <номер>

         В списке целей должна быть указана цель с определенным номером.

 

     #varif <номер переменной> <операция сравнения> <число>

         Сравнение заданной переменной с числом (или с другой переменной).

         Операция может быть:

         = равно

         < меньше

         > больше

         <> не равно

         >= больше или равно

         <= меньше или равно

         Внимание! Операция сравнения должна быть отделена пробелами.

     #varequal <номер переменной> <число>

         Заданная переменная должна быть равна определенному числу.

     #varnotequal <номер переменной> <число>

         Заданная переменная не должна быть равна определенному числу.

     #varmore <номер переменной> <число>

         Заданная переменная больше определенного числа.

     #varless <номер переменной> <число>

          Заданная переменная меньше определенного числа.

     #varexists <номер переменной>

         Заданная переменная уже была инициализирована.

     #varnotexists <номер переменной>

         Заданная переменная еще не инициализирована.

 

     #terrwasused <x> <y>

         Условие сработает, если заданный объект был использован.

         После срабатывания триггера объект будет считаться не использованным.

 

     #lastanswer <номер ответа>

         Условие срабатывает, если в ходе какого-нибудь разговора

был дан определенный ответ.

     #lastphrase <номер фразы>

         Условие по последней сказанной фразе.

     #talkwasused <номер ответа>

         Условие сработает, если этот ответ хоть раз был нажат.

 

     #soundnotplaying <номер звука>

         Условие сработает, если звук не играет в данный момент.

 

Действия

 

 

     #crwiz

          Создать колдуна для текущего игрока

     #setwizardnickname

          Имя главного колдуна текущего игрока станет равным его нику.

     #victory

          Победа для текущего игрока

     #loose

          Проигрыш текущему игроку

     #setally <номер игрока 1> <номер игрока 2>

          Устанавливает игроков союзниками (для компьютерного интеллекта).

     #setenemy <номер игрока 1> <номер игрока 2>

          Устанавливает заданных игроков врагами.

     #playeraddgold <номер игрока> <количество золотых монет>

          Добавляет золото определенному игроку.

 

     #settr <номер триггера>

          Включить триггер с определенным номером.

Т.е. даже если этот триггер уже выполнялся, то он будет снова выполнен

          при первой же возможности.

     #repeat

          Не сбрасывать текущий триггер после его окончания.

          Это действие выполняется всегда, независимо от условия.

 

     #setmessageeffect <номер>

          Устанавливает текущий эффект появления сообщений по умолчанию.

          0=сообщение появляется быстро

          1=сообщение появляется медленно

     #message <номер>

          Напечатать текущему игроку сообщение, состоящее из слов.

          Сообщение должно быть задано ранее с помощью особого действия #text или #dtext.

          Сообщение также может быть задано идентификатором текстового ресурса.

     #pmessage <число> <звук>

          Напечатать текущему игроку сообщение в виде картинки, сопроводив ее звуком.

          Число = идентификатор картинки в файле BPF.

 

     #stopmusic

          Остановить музыку.

     #startmusic <звук>

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

     #startsound <звук>

          Проигрывание определенного звука один раз.

 

     #panimation <номер_файла_BPF> <звук_1> <время_1>  <звук_2> <время_2> <……> 0 0

          Начать показ анимации, сопровождаемой звуками.

          Звуки воспроизводятся в определенном кадре анимации.

          Примечательно, что анимация должна иметь номер 3401.

 

     #spelllist <номер_1> <номер_2> <…..> 0

          Здесь указывается список доступных заклинаний, состоящий из номеров.

          Этот список присваивается главному колдуну текущего игрока

взамен старого списка.

     #addspells <номер1> <номер2> <...> 0

          Добавляет определенные заклинания главному колдуну текущего игрока.

     #givemana <число1> <число2> <число3> <число4>

          Добавляет главному колдуну текущего игрока некоторое количество белой маны,

          зеленой, красной и черной маны.

     #setmana <число1> <число2> <число3> <число4>

          Устанавливает колдуну определенное количество белой,

          зеленой, красной и черной маны.

     #managrow <прирост_белой> <прирост_зеленой> <прирост_красной> <прирост_черной>

          Главный колдун текущего игрока будет иметь такой прирост всех видов маны.

     #manalimits <макс_белая> <макс_зеленая> <макс_красная> <макс_черная>

          Максимальное количество маны у колдуна.

     #delwhitesphere

     #delgreensphere

     #delredsphere

     #delblacksphere

          Удаляет способность к определенного вида магии у колдуна текущего игрока.

     #savewizard

          Сохраняет существо-колдуна в файл ‘wiz.tmp’ вместе со всеми вещами.

     #loadcreature <имя_файла> <x> <y>

          Загружает существо из файла и устанавливает на карту вместе со всеми вещами.

     #loadthing <имя_файла> <x> <y>

          Загружает вещь из файла и устанавливает на карту.

     #loadterritory <имя_файла> <x> <y>

          Загружает территорию из файла и устанавливает на карту.

     #loadmanyterritories <имя файла> <номер анимации объектов, где будут созданы новые объекты>

          Это действие создает множество объектов в определенных местах.

Места указываются другими объектами.

     #loadmanycreatures <имя файла> <номер анимации объектов, где будут созданы новые объекты>

          Это действие создает множество существ в определенных местах.

Места указываются другими объектами.

 

     #markallthingsnotdelete

          Помечает все текущие присутствующие вещи, чтобы не удалять их

          триггером #deleteallfloorthings.

     #deleteallfloorthings

          Удалить все вещи, которые лежат на земле с карты.

    

     #startanimation <номер анимации> <x> <y>

          Запускает определенную анимацию в определенных координатах.

          Вместо этого триггера следует использовать #engine-триггеры.

     #engineinit

Инициализирует engine.

Далее можно задавать другие действия с префиксом “#engine”.

Последней строкой является #enginestart,

который запускает все эти действия на воспроизведение.

     #engineanim <номер анимации> <x> <y>

          Подготавливает определенную анимацию в определенных координатах.

     #engineusesquare <x> <y>

          Объект в заданных координатах будет использован. Например, откроется дверь.

     #enginesound <id>

          Исполняет звук с заданным номером.

     #engineafterlast

          Следующие действия выполняются после действия, указанного ранее.

     #enginepause <количество миллисекунд>

          Пауза продолжительностью определенное количество миллисекунд.

     #enginestart

          Запускает все анимации, подготовленные триггерами #engine...

    

     #saveheroslot <номер слота> <номер героя>

          Сохраняет существо-героя в файл-слот.

     #savethingslot <номер слота> <номер специальной вещи>

          Сохраняет специальную вещь в файл-слот.

     #saveterrslot <номер слота> <номер спец.территории>

          Сохраняет специальный объект в файл-слот.

     #savemapslot <номер слота>

          Сохраняет текущую карту в файл-слот.

     #loadmapslot <номер слота>

          Загружает карту из файла-слота.

     #loadheroslot <номер слота> <x> <y>

          Загружает создание из файла-слота и устанавливает на карту.

     #loadterrslot <номер слота> <x> <y>

          Загружает специальный объект из файла-слота и устанавливает на карту.

     #loadthingslot <номер слота> <x> <y>

          Загружает специальную вещь из файла-слота и устанавливает на карту.

     #slotempty <номер слота>

          Очищает определенный файл-слот.

     #savegroupslot <номер слота> <номер героя>

          Сохраняет группу созданий в определенный слот.

     #loadgroupslot <номер слота> <x1> <y1> <x2> <y2> <..> <-1> <-1>

          Загружает группу созданий и ставит их на карту.

          Вы должны указать достаточно координат для созданий.

          Если координат не хватит - создания не будут установлены.

    

     #deletespecterr <номер спец.объекта>

          Удаляет с карты определенную территорию.

     #deletespecthing <номер спец.вещи>

          Удаляет с карты определенную вещь.

     #deleteobjectatkoords <x> <y> <идент>

          Удаляет с карты объект с определенным изображением в заданных координатах.

 

 

     #startmap <имя_файла>

          Загружает, инициализирует и запускает следующую карту.

 

     #clearobjectives

          Очистить список целей миссии (и глобальные, и локальные).

     #dropobjective <номер сообщения>

          Убрать данную цель (глобальную или локальную).

     #setobjective <номер сообщения>

          Установить новую локальную цель миссии.

Этот триггер устанавливает цель только для данной миссии.

     #setglobalobjective <номер сообщения>

Установить новую глобальную цель - эта цель будет переходить с миссии на миссию,

пока ее не выполнят. Этот триггер более пригоден для кампаний.

 

     #setvar <номер переменной> <число>

          Инициализирует определенную переменную и присваивает ей число.

     #setvarrandom <номер переменной> <min> <max>

          Инициализирует определенную переменную и присваивает ей случайно число от min до max.

     #setvarobjectkoords <номер переменной 1> <номер переменной 2> <идент>

          Инициализирует определенные переменные и присваивает ей координаты объекта с заданным изображением. Если таких       объектов – несколько – присваиваются координаты случайного объекта. Если ни одного объекта не найдено – то               переменным присваиваются -1.

     #varoper <номер переменной> <операция> <число>

          Арифметические операции с переменной.

         Операция может быть:

         + сложение

         - вычитание

         * умножение

         / деление

         ^ возведение в степень

         Внимание! Операция должна быть отделена пробелами.

 

     #setexpvariable <номер игрока> <номер переменной>

          Все существа данного игрока получают способность Опыт-переменная со значением "номер переменной".

 

     #increasevar <номер переменной> <число>

          Увеличивает значение определенной переменной на определенное число.

     #increasevarkoordx <номер переменной> <число>

          Увеличивает значение определенной переменной, но учитывает скроллинг карты.

     #increasevarkoordy <номер переменной> <число>

          Увеличивает значение определенной переменной, но учитывает скроллинг карты.

 

 

     #creaturesethero <x> <y> <номер героя>

          Создание в определенных координатах становится героем с определенным номером.

     #creatureaddhealth <x> <y> <количество>

          Добавить созданию в определенных координатах здоровье.

     #herosethero <номер героя> <новый_номер>

          Создание-герой меняет свой номер героя.

     #herodeletefrommap <номер героя>

          Убрать героя с карты.

     #herosetplayer <номер героя> <номер игрока>

          Определенный герой переходит под контроль определенного игрока.

     #herosetcurrentplayer <номер героя>

          Определенный герой переходит под контроль текущего игрока.

     #herosetgroup <номер героя> <номер группы>

          Занести определенного героя в определенную группу.

 

     #herosetmana <номер героя> <белая> <зеленая> <красная> <черная>

         Устанавливает герою ману.

     #herogivemana <номер героя> <белая> <зеленая> <красная> <черная>

         Добавляет герою ману.

     #heroclearspells <номер героя>

          Забирает у героя все заклинания.

     #heroaddspells <номер героя> <номер_1> <номер_2> <…..> 0

          Добавляет герою заклинания.

         Если заклинания указаны со знаком минус, то заклинания отбираются.

 

     #heroaddproperty <номер героя> <тип свойства> <значение свойства>

          Данный герой получает определенную способность с заданным значением.

         Номера способностей можно посмотреть в редакторе в редакторе способностей героя.

     #herodeleteproperty <номер героя> <тип свойства>

         Забирает у героя определенную способность.

     #herogetproperty <номер героя> <номер способности> <номер переменной>

          Получает в переменную значение способности.

 

     #thingaddproperty <номер спец.вещи> <тип свойства> <значение свойства>

          Данная вещь получает определенную способность с заданным значением.

         Номера способностей можно посмотреть в редакторе в редакторе способностей вещей.

     #thingdeleteproperty <номер спец.вещи> <тип свойства>

         Забирает у вещи определенную способность.

     #thinggetproperty <номер спец.вещи> <номер способности> <номер переменной>

          Получает в переменную значение способности.

 

     #terraddproperty <номер спец.объекта> <тип свойства> <значение свойства>

          Данный объект (местность) получает определенную способность с заданным значением.

         Номера способностей можно посмотреть в редакторе в редакторе способностей местности.

     #terrdeleteproperty <номер спец.объекта> <тип свойства>

         Забирает у объекта определенную способность.

     #terrgetproperty <номер спец.объекта> <номер способности> <номер переменной>

          Получает в переменную значение способности.

 

     #talkaddanswer <фраза> <ответ> <фраза после ответа>

          Задает параметры одного из ответов для построения разговора.

          Фраза - идентификатор фразы (текстовый ресурс),

на которую может быть дан ответ.

          Ответ - идентификатор ответа (текстовый ресурс).

          Фраза после ответа - идентификатор следующей фразы после ответа.

     #talkdeleteanswer <фраза> <ответ>

          Удаляет один из ответов.

     #herosettalk <номер героя> <номер фразы>

          Устанавливает фразу для героя - чтобы c ним можно было поговорить.

          Если номер фразы равен 0, то возможность поговорить с героем удаляется.

     #terrsettalk <номер спец.объекта> <номер фразы>

          Устанавливает фразу для специального объекта (территории).

          Если номер фразы равен 0, то фраза удаляется.

     #talkhero <номер героя>

          Начинается разговор с определенным героем.

     #talkstart <номер фразы>

          Начинается разговор. Запускается определенная фраза.

     #clearlastanswer

          Устанавливает последний ответ в 0.

     #clearlastphrase

          Устанавливает последнюю фразу в 0.

    

     #targetzonexy <x зоны> <y зоны> <длина зоны> <высота зоны> <x цели> <y цели>

          Установить цели всем существам (управляемым компьютером) в данной зоне.

          Существа будут стремиться прийти в эту точку, открывая двери.

          Если им мешает непроходимая преграда,

то они движутся к ближайшему возможному месту.

     #targetgroupxy <номер группы> <x цели> <y цели>

          Установить цели всем существам (управляемым компьютером) данной группы.

          Существа будут стремиться прийти точку цели, открывая двери.

          Если им мешает непроходимая преграда,

то они движутся к ближайшему возможному месту.

 

     #settradingplace <номер магазина> <рисунок вещи> <рисунок вещи> <...> <0>

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

          Для определения вещи, используется ее рисунок.

          Чтобы указать, где конкретно расположено место –

используйте свойство 'Магазин' у созданий и территорий.

     #allowbattles <режим>

          Управляет возможностью сражаться и запуском заклинаний на карте.

0 = сражаться нельзя.

     #quickmove <режим>

Отменяет или включает передачу хода на карте.

0 = ход можно передать.

Если быстрый режим включен (ход нельзя передать),

то создания не тратят скорость при передвижении.

Удобно в местах, где не нужно сражаться, а только ходить и

разговаривать.

     #allowmagic <режим>

          Управляет возможностью применять магию. 0=применять магию нельзя.

     #allowinventory <режим>

          Управляет возможностью использовать вещи. 0=применять вещи нельзя.

     #allowreview <режим>

          Управляет возможностью просмотреть карту после игры.

0=просматривать карту нельзя.

В картах для мультиплеера просматривать карту после игры можно.

 

     #centermap <x> <y>

          Центрирует карту.

     #border <x> <y> <длина> <высота>

          Устанавливает зону, которую видит игрок.

Скроллинг карты за пределы этой зоны запрещен.

     #borderremove

          Отключает границы зоны - вся карта становится доступна.