FOnline
 Указатель Классы Функции Переменные Группы Страницы
Critter events

События для криттеров. Подробнее...

Общие

События, связанные с изменением состояния криттера.

300

#define CRITTER_EVENT_IDLE   (0)
 Вызывается каждые 20 секунд простоя криттера. Подробнее...
 
#define CRITTER_EVENT_FINISH   (1)
 Вызывается при удалении криттера из игры. Подробнее...
 
#define CRITTER_EVENT_DEAD   (2)
 Вызывается при смерти криттера перед глобальным обработчиком смертей critter_dead. Подробнее...
 
#define CRITTER_EVENT_RESPAWN   (3)
 Вызывается при оживлении криттера после смерти (респауне). Подробнее...
 
#define CRITTER_EVENT_KNOCKOUT   (23)
 Вызывается при уходе криттера в нокаут. Подробнее...
 

Действия

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

#define CRITTER_EVENT_ATTACK   (15)
 Вызывается при атаке криттером кого-либо. Подробнее...
 
#define CRITTER_EVENT_ATTACKED   (16)
 Вызывается когда данного криттера атаковали. Подробнее...
 
#define CRITTER_EVENT_STEALING   (17)
 Вызываетcя при попытке воровства у данного криттера. Подробнее...
 
#define CRITTER_EVENT_BARTER   (36)
 Вызывается когда с NPC начинается или заканчивается бартер. Подробнее...
 
#define CRITTER_EVENT_TALK   (37)
 Вызывается, когда с NPC начинают или заканчивают разговор. Подробнее...
 
#define CRITTER_EVENT_USE_SKILL   (21)
 Вызывается при использовании навыка на что-либо. Подробнее...
 
#define CRITTER_EVENT_USE_SKILL_ON_ME   (22)
 Вызывается при использовании кем-то навыка на данном криттере. Подробнее...
 

Предметы

События, связанные с предметами

#define CRITTER_EVENT_USE_ITEM   (19)
 Вызывается при использовании данными криттером какого-либо предмета. Подробнее...
 
#define CRITTER_EVENT_USE_ITEM_ON_ME   (20)
 Вызывается при использовании какого-либо предмета на данном криттере. Подробнее...
 
#define CRITTER_EVENT_SHOW_ITEM_ON_MAP   (12)
 Вызывается при появлении предмета в поле зрения. Подробнее...
 
#define CRITTER_EVENT_CHANGE_ITEM_ON_MAP   (13)
 Вызывается в том случае, если поменялся предмет в поле зрения. Подробнее...
 
#define CRITTER_EVENT_HIDE_ITEM_ON_MAP   (14)
 Вызывается при исчезновении предмета из поля зрения. Подробнее...
 
#define CRITTER_EVENT_DROP_ITEM   (21)
 Вызывается при выкидывании криттером предмета из своего инвентаря. Подробнее...
 
#define CRITTER_EVENT_MOVE_ITEM   (24)
 Вызывается при перемещении какого-либо предмета в инвентаре данного криттера. Подробнее...
 

Другие криттеры

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

#define CRITTER_EVENT_SHOW_CRITTER   (4)
 Вызывается при появлении нового криттера в поле зрения. Подробнее...
 
#define CRITTER_EVENT_SHOW_CRITTER_1   (5)
 Вызывается при появлении нового криттера в поле зрения. Подробнее...
 
#define CRITTER_EVENT_SHOW_CRITTER_2   (6)
 Вызывается при появлении нового криттера в поле зрения. Подробнее...
 
#define CRITTER_EVENT_SHOW_CRITTER_3   (7)
 Вызывается при появлении нового криттера в поле зрения. Подробнее...
 
#define CRITTER_EVENT_HIDE_CRITTER   (8)
 Вызывается при пропаже криттера из поля зрения. Подробнее...
 
#define CRITTER_EVENT_HIDE_CRITTER_1   (9)
 Вызывается при пропаже криттера из поля зрения. Подробнее...
 
#define CRITTER_EVENT_HIDE_CRITTER_2   (10)
 Вызывается при пропаже криттера из поля зрения. Подробнее...
 
#define CRITTER_EVENT_HIDE_CRITTER_3   (11)
 Вызывается при пропаже криттера из поля зрения. Подробнее...
 
#define CRITTER_EVENT_MESSAGE   (18)
 Вызывается, когда приходит сообщение, отправленное с помощью метода Critter::SendMessage. Подробнее...
 
#define CRITTER_EVENT_SMTH_DEAD   (24)
 Вызывается, когда криттер в области видимости умирает. Подробнее...
 
#define CRITTER_EVENT_SMTH_STEALING   (25)
 Вызывается, когда какой-либо криттер в области видимости подвергся краже. Подробнее...
 
#define CRITTER_EVENT_SMTH_ATTACK   (26)
 Вызывается, когда какой-либо криттер в области видимости атакует кого-либо. Подробнее...
 
#define CRITTER_EVENT_SMTH_ATTACKED   (27)
 Вызывается, когда какой-либо криттер в области видимости атакован. Подробнее...
 
#define CRITTER_EVENT_SMTH_USE_ITEM   (28)
 Вызывается, когда криттер в области видимости использует предмет на чем-либо. Подробнее...
 
#define CRITTER_EVENT_SMTH_USE_SKILL   (29)
 Вызывается, когда криттер в области видимости использует навык на чем-либо. Подробнее...
 
#define CRITTER_EVENT_SMTH_DROP_ITEM   (30)
 Вызывается, когда криттер в области видимости выкидывает предмет. Подробнее...
 
#define CRITTER_EVENT_SMTH_MOVE_ITEM   (31)
 Вызывается, когда криттер в области видимости меняет местоположение предмета. Подробнее...
 
#define CRITTER_EVENT_SMTH_KNOCKOUT   (32)
 Вызывается, когда криттер в области видимости уходит в нокаут. Подробнее...
 

Планы

События для планов NPC.

Срабатывают и для дочерних планов: childIndex указывает на их номер (если 0, то это базовый план).

#define CRITTER_EVENT_PLANE_BEGIN   (33)
 Вызывается перед добавлением плана (которого еще нет в списках у NPC). Подробнее...
 
#define CRITTER_EVENT_PLANE_END   (34)
 Вызывается перед удалением плана (который ещё присутствует в списках планов). Подробнее...
 
#define CRITTER_EVENT_PLANE_RUN   (35)
 Вызывается во время выполнения некоторых планов. Подробнее...
 

Глобальная карта

События возникающие при перемещении на глобальной карте

#define CRITTER_EVENT_GLOBAL_PROCESS   (38)
 Вызывается при событиях на глобальной карте. Подробнее...
 
#define CRITTER_EVENT_GLOBAL_INVITE   (39)
 Вызывается при переходе на карту на глобальной карте мира. Подробнее...
 

Пошаговый бой

События связанные с пошаговым боем

#define CRITTER_EVENT_TURN_BASED_PROCESS   (40)
 Вызывается в начале и в конце хода криттера. Подробнее...
 
#define CRITTER_EVENT_SMTH_TURN_BASED_PROCESS   (41)
 Вызывается в начале и конце хода какого-либо криттера в области видимости. Подробнее...
 

Подробное описание

События для криттеров.

Прим.
Первым параметром любого обработчика является ссылка на криттера, для которого вызвано событие.
События можно вешать не только на NPC, но и на игроков.
См. также
Critter Critter::SetEvent

Макросы

#define CRITTER_EVENT_IDLE   (0)

Вызывается каждые 20 секунд простоя криттера.

Для изменения времени вызова события используйте метод Critter::Wait в обработчике.

Сигнатура обработчика:
void _FuncName(Critter& cr)
См. также
Critter::EventIdle
#define CRITTER_EVENT_FINISH   (1)

Вызывается при удалении криттера из игры.

Сигнатура обработчика:
void _FuncName(Critter& cr, bool deleted)
Аргументы
deleted@с true - функция вызвана перед полным удалением криттера, @с false - функция вызвана остановкой сервера.
См. также
Critter::EventFinish
#define CRITTER_EVENT_DEAD   (2)

Вызывается при смерти криттера перед глобальным обработчиком смертей critter_dead.

Сигнатура обработчика:
void _FuncName(Critter& cr, Critter@ killer)
Аргументы
killerЕсли криттер был убит другим криттером, то аргумент содержит указатель на убившего криттера.
См. также
Critter::ToDead Critter::EventDead critter_dead
#define CRITTER_EVENT_RESPAWN   (3)

Вызывается при оживлении криттера после смерти (респауне).

Сигнатура обработчика:
void _FuncName(Critter& cr)
См. также
Critter::ToLife Critter::EventRespawn critter_respawn
#define CRITTER_EVENT_KNOCKOUT   (23)

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

Сигнатура обработчика:
void _FuncName(Critter& cr, bool faceUp, uint lostAp, uint knockDist)
Аргументы
faceUpПоказывает, упал ли криттер лицом вверх (true) или вниз (false).
lostApКоличество очков действия, необходимых для поднятия с земли.
knockDistКоличество гексов, на которое "отлетел" криттер.
См. также
Critter::ToKnockout Critter::EventKnockout
#define CRITTER_EVENT_ATTACK   (15)

Вызывается при атаке криттером кого-либо.

Сигнатура обработчика:
bool _FuncName(Critter& cr, Critter& target);
Аргументы
targetАтакуемый криттер.
Возвращает
При возвращенном значении true глобальный обработчик critter_attack не вызывается.
См. также
Critter::EventAttack CRITTER_EVENT_SMTH_ATTACK ITEM_EVENT_ATTACK critter_attack
#define CRITTER_EVENT_ATTACKED   (16)

Вызывается когда данного криттера атаковали.

Сигнатура обработчика:
bool _FuncName(Critter& cr, Critter& attacker);
Аргументы
attackerАтакующий криттер.
Возвращает
При возвращенном значении true глобальный обработчик critter_attacked не вызывается.
См. также
Critter::EventAttacked CRITTER_EVENT_SMTH_ATTACKED critter_attacked
#define CRITTER_EVENT_STEALING   (17)

Вызываетcя при попытке воровства у данного криттера.

Сигнатура обработчика:
void _FuncName(Critter& cr, Critter& thief, bool success, Item& item, uint count)
Аргументы
thiefВор.
successУспешно ли произошло воровство, расчитанное в critter_stealing.
itemВоруемый предмет.
countКоличество воруемых предметов.
См. также
Critter::EventStealing CRITTER_EVENT_SMTH_STEALING critter_stealing
#define CRITTER_EVENT_BARTER   (36)

Вызывается когда с NPC начинается или заканчивается бартер.

Сигнатура обработчика:
bool _FuncName(Critter& cr, Critter& player, bool attach, uint barterCount)
Аргументы
playerИгрок, начинающий или заканчивающий бартер.
attachПоказывает, начинается (true) или заканчивается (false) бартер.
barterCountВсего торгующих, включая новое присоединение/отсоединение.
Возвращает
При возвращении true – бартер начинается; false – бартер не начинается. Актуально при attach == true.
См. также
Critter::EventBarter
#define CRITTER_EVENT_TALK   (37)

Вызывается, когда с NPC начинают или заканчивают разговор.

Сигнатура обработчика:
bool _FuncName(Critter& cr, Critter& player, bool attach, uint talkCount)
Аргументы
playerИгрок, начинающий или заканчивающий разговор.
attachПоказывает, начинается (true) или заканчивается (false) разговор.
talkCountВсего разговаривающих, включая новое присоединение/отсоединение.
Возвращает
При возвращении true – диалог начинается; false – не начинается. Актуально при attach == true.
См. также
Critter::EventTalk
#define CRITTER_EVENT_USE_SKILL   (21)

Вызывается при использовании навыка на что-либо.

bool _FuncName(Critter& cr, int skill, Critter@ onCritter, Item@ onItem, Scenery@ onScenery)
Аргументы
skillИспользуемый скилл (см. Навыки и Special Skill Values).
onCritterЕсли предмет используется на криттере, то аргумент содержит указатель на этого криттера.
onItemЕсли предмет используется на другом предмете, то аргумент содержит указатель на этот (другой) предмет.
onSceneryЕсли предмет используется на сценери, то аргумент содержит указатель на это сценери.
Возвращает
При false вызывается глобальный обработчик critter_use_skill При true – выход.
См. также
Critter::EventUseSkill ITEM_EVENT_SKILL
#define CRITTER_EVENT_USE_SKILL_ON_ME   (22)

Вызывается при использовании кем-то навыка на данном криттере.

bool _FuncName(Critter& whoUse, int skill)
Аргументы
whoUseКриттер использующий скилл
skillИспользуемый скилл (см. Навыки и Special Skill Values).
Возвращает
При false вызывается глобальный обработчик critter_use_skill При true – выход.
#define CRITTER_EVENT_USE_ITEM   (19)

Вызывается при использовании данными криттером какого-либо предмета.

bool _FuncName(Critter& cr, Item& item, Critter@ onCritter, Item@ onItem, Scenery@ onScenery)
Аргументы
itemИспользуемый предмет.
onCritterЕсли предмет используется на криттере, то аргумент содержит указатель на этого криттера.
onItemЕсли предмет используется на другом предмете, то аргумент содержит указатель на этот (другой) предмет.
onSceneryЕсли предмет используется на сценери, то аргумент содержит указатель на это сценери.
Возвращает
При false вызывается глобальный обработчик critter_use_item. При true – выход.
См. также
Critter::EventUseItem ITEM_EVENT_USE critter_use_item
#define CRITTER_EVENT_USE_ITEM_ON_ME   (20)

Вызывается при использовании какого-либо предмета на данном криттере.

bool _FuncName(Critter& whoUse, Item& item)
Аргументы
whoUseКриттер использовавший предмет.
Item&Используемый предмет.
Возвращает
При false вызывается глобальный обработчик critter_use_item. При true – выход.
#define CRITTER_EVENT_SHOW_ITEM_ON_MAP   (12)

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

Сигнатура обработчика:
void _FuncName(Critter& cr, Item& showItem, bool added, Critter@ dropper)
Аргументы
showItemПоявившийся предмет.
addedtrue, если предмет появился при смене радиуса обзора криттера; false, если предмет появился в ином случае (например, если был выкинут другим криттером).
dropperЕсли предмет был выкинут из инвентаря какого-либо криттера, то аргумент будет содержать указатель на этого криттера. В противном случае, null.
См. также
Critter::EventShowItemOnMap
#define CRITTER_EVENT_CHANGE_ITEM_ON_MAP   (13)

Вызывается в том случае, если поменялся предмет в поле зрения.

Например, открылась или закрылась дверь (или контейнер).

Сигнатура обработчика:
void _FuncName(Critter& cr, Item& item)
Аргументы
itemИзменившийся предмет.
См. также
Critter::EventChangeItemOnMap
#define CRITTER_EVENT_HIDE_ITEM_ON_MAP   (14)

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

Сигнатура обработчика:
void _FuncName(Critter& cr, Item& hidedItem, bool removed, Critter@ picker)
Аргументы
hidedItemИсчезнувший предмет.
removedtrue, если предмет исчез при смене радиуса обзора криттера; false, если предмет исчез в рамках радиуса обзора (например, если был подобран другим криттером).
pickerЕсли предмет был подобран каким-либо криттером, то аргумент будет содержать указатель на этого криттера. В противном случае, null.
См. также
Critter::EventHideItemOnMap
#define CRITTER_EVENT_DROP_ITEM   (21)

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

Сигнатура обработчика:
void _FuncName(Critter& cr, Item& item)
Аргументы
itemВыкидиваемый предмет.
См. также
Critter::EventDropItem ITEM_EVENT_DROP
#define CRITTER_EVENT_MOVE_ITEM   (24)

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

Сигнатура обработчика:
void _FuncName(Critter& cr, Item& item, uint8 fromSlot)
Аргументы
itemПеремещаемый предмет.
fromSlotСлот, в котором предмет находился до перемещения (см. Слоты инвентаря).
См. также
Critter::EventMoveItem ITEM_EVENT_MOVE
#define CRITTER_EVENT_SHOW_CRITTER   (4)

Вызывается при появлении нового криттера в поле зрения.

Сигнатура обработчика:
void _FuncName(Critter& cr, Critter& showCr)
Аргументы
showCrПоявившийся в поле зрения криттер.
См. также
Critter::EventShowCritter
#define CRITTER_EVENT_SHOW_CRITTER_1   (5)

Вызывается при появлении нового криттера в поле зрения.

Радиус обнаружения регулируется с помощью поля Critter::ShowCritterDist1.

Сигнатура обработчика:
void _FuncName(Critter& cr, Critter& showCr)
Аргументы
showCrПоявившийся в поле зрения криттер.
См. также
Critter::EventShowCritter1 Critter::ShowCritterDist1
#define CRITTER_EVENT_SHOW_CRITTER_2   (6)

Вызывается при появлении нового криттера в поле зрения.

Радиус обнаружения регулируется с помощью поля Critter::ShowCritterDist2.

Сигнатура обработчика:
void _FuncName(Critter& cr, Critter& showCr)
Аргументы
showCrПоявившийся в поле зрения криттер.
См. также
Critter::EventShowCritter2 Critter::ShowCritterDist2
#define CRITTER_EVENT_SHOW_CRITTER_3   (7)

Вызывается при появлении нового криттера в поле зрения.

Радиус обнаружения регулируется с помощью поля Critter::ShowCritterDist3.

Сигнатура обработчика:
void _FuncName(Critter& cr, Critter& showCr)
Аргументы
showCrПоявившийся в поле зрения криттер.
См. также
Critter::EventShowCritter3 Critter::ShowCritterDist3
#define CRITTER_EVENT_HIDE_CRITTER   (8)

Вызывается при пропаже криттера из поля зрения.

Сигнатура обработчика:
void _FuncName(Critter& cr, Critter& hideCr)
Аргументы
hideCrИсчезнувший из поля зрения криттера.
См. также
Critter::EventHideCritter
#define CRITTER_EVENT_HIDE_CRITTER_1   (9)

Вызывается при пропаже криттера из поля зрения.

Радиус поля зрения определяется полем Critter::ShowCritterDist1.

Сигнатура обработчика:
void _FuncName(Critter& cr, Critter& hideCr)
Аргументы
hideCrИсчезнувший из поля зрения криттера.
См. также
Critter::EventHideCritter1 Critter::ShowCritterDist1
#define CRITTER_EVENT_HIDE_CRITTER_2   (10)

Вызывается при пропаже криттера из поля зрения.

Радиус поля зрения определяется полем Critter::ShowCritterDist2.

Сигнатура обработчика:
void _FuncName(Critter& cr, Critter& hideCr)
Аргументы
hideCrИсчезнувший из поля зрения криттера.
См. также
Critter::EventHideCritter2 Critter::ShowCritterDist2
#define CRITTER_EVENT_HIDE_CRITTER_3   (11)

Вызывается при пропаже криттера из поля зрения.

Радиус поля зрения определяется полем Critter::ShowCritterDist1.

Сигнатура обработчика:
void _FuncName(Critter& cr, Critter& hideCr)
Аргументы
hideCrИсчезнувший из поля зрения криттера.
См. также
Critter::EventHideCritter3 Critter::ShowCritterDist3
#define CRITTER_EVENT_MESSAGE   (18)

Вызывается, когда приходит сообщение, отправленное с помощью метода Critter::SendMessage.

Сигнатура обработчика:
void _FuncName(Critter& cr, Critter& fromCr, int message, int value)
Аргументы
fromCrКриттер, отправивший сообщение.
messageНомер сообщения.
valueПереданное значение.
См. также
Critter::SendMessage Critter::EventMessage
#define CRITTER_EVENT_SMTH_DEAD   (24)

Вызывается, когда криттер в области видимости умирает.

Сигнатура обработчика:
void _FuncName(Critter& cr, Critter& fromCr, Critter@ killer)
Аргументы
fromCrУмерший криттер.
killerЕсли криттер был убит другим криттером, то аргумент содержит указатель на убившего криттера.
См. также
Critter::EventSmthDead CRITTER_EVENT_DEAD
#define CRITTER_EVENT_SMTH_STEALING   (25)

Вызывается, когда какой-либо криттер в области видимости подвергся краже.

Сигнатура обработчика:
void _FuncName(Critter& cr, Critter& fromCr, Critter& thief, bool success, Item& item, uint count)
Аргументы
fromCrКриттер, подвергшийся воровству.
thiefКриттер, совершивший воровство.
successУспешно ли произошло воровство.
itemСворованный предмет.
countКоличество сворованных предметов.
См. также
Critter::EventSmthStealing CRITTER_EVENT_STEALING
#define CRITTER_EVENT_SMTH_ATTACK   (26)

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

Сигнатура обработчика:
void _FuncName(Critter& cr, Critter& fromCr, Critter& target)
Аргументы
fromCrАтаковавший криттер.
targetАтакованный криттер.
См. также
Critter::EventSmthAttack CRITTER_EVENT_ATTACK
#define CRITTER_EVENT_SMTH_ATTACKED   (27)

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

См. CRITTER_EVENT_ATTACKED.

Сигнатура обработчика:
void _FuncName(Critter& cr, Critter& fromCr, Critter& attacker)
Аргументы
fromCrАтакованный криттер.
attackerАтаковаший криттер.
См. также
Critter::EventSmthAttacked CRITTER_EVENT_ATTACKED
#define CRITTER_EVENT_SMTH_USE_ITEM   (28)

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

См. CRITTER_EVENT_USE_ITEM.

Сигнатура обработчика:
void _FuncName(Critter& cr, Critter& fromCr, Item& item, Critter@ onCritter, Item@ onItem, Scenery@ onScenery)
Аргументы
fromCrКриттер использующий предмет.
itemИспользуемый предмет.
onCritterЕсли предмет используется на криттере, то аргумент содержит указатель на этого криттера.
onItemЕсли предмет используется на другом предмете, то аргумент содержит указатель на этот (другой) предмет.
onSceneryЕсли предмет используется на сценери, то аргумент содержит указатель на это сценери.
#define CRITTER_EVENT_SMTH_USE_SKILL   (29)

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

См. CRITTER_EVENT_USE_SKILL.

Сигнатура обработчика:
void _FuncName(Critter& cr, Critter& fromCr, int skill, Critter@ onCritter, Item@ onItem, Scenery@ onScenery)
Аргументы
fromCrКриттер использующий навык.
skillИспользуемый скил. (см. Навыки и Special Skill Values).
onCritterЕсли предмет используется на криттере, то аргумент содержит указатель на этого криттера.
onItemЕсли предмет используется на другом предмете, то аргумент содержит указатель на этот (другой) предмет.
onSceneryЕсли предмет используется на сценери, то аргумент содержит указатель на это сценери.
#define CRITTER_EVENT_SMTH_DROP_ITEM   (30)

Вызывается, когда криттер в области видимости выкидывает предмет.

См. CRITTER_EVENT_DROP_ITEM.

Сигнатура обработчика:
void _FuncName(Critter& cr, Critter& fromCr, Item& item)
Аргументы
fromCrКриттер выкинувший итем
itemВыкидиваемый предмет.
#define CRITTER_EVENT_SMTH_MOVE_ITEM   (31)

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

См. CRITTER_EVENT_MOVE_ITEM.

Сигнатура обработчика:
void _FuncName(Critter& cr, Critter& fromCr, Item& item, uint8 fromSlot)
Аргументы
fromCrКриттер поменявший у итема место
itemПеремещаемый предмет.
fromSlotСлот, в котором предмет находился до перемещения (см. Слоты инвентаря).
#define CRITTER_EVENT_SMTH_KNOCKOUT   (32)

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

См. CRITTER_EVENT_KNOCKOUT.

Сигнатура обработчика:
void _FuncName(Critter& cr, Critter& fromCr, bool faceUp, uint lostAp, uint knockDist)
Аргументы
fromCrУшедший в нокаут криттер.
faceUpПоказывает, упал ли криттер лицом вверх (true) или вниз (false).
lostApКоличество очков действия, необходимых для поднятия с земли.
knockDistКоличество гексов, на которое "отлетел" криттер.
#define CRITTER_EVENT_PLANE_BEGIN   (33)

Вызывается перед добавлением плана (которого еще нет в списках у NPC).

Сигнатура обработчика:
int _FuncName(Critter& cr, NpcPlane& plane, uint childIndex, int reason, Critter@ someCr, Item@ someItem)
Аргументы
planeПлан.
childIndexНомер плана в качестве наследника, если 0, значит план базовый.
reasonУказывает причину начала плана (см. Plane begin reasons).
someCrВ некоторых случаях хранит указатель на персонажа (см. Работа с планами ).
someItemВ некоторых случаях хранит указатель на предмет (см. Работа с планами ).
Возвращает
PLANE_RUN_GLOBAL - вызвать глобальный обработчик, который определит сохранить или удалить план; PLANE_KEEP - сохранить план, без вызова глобального обработчика; PLANE_DISCARD - удалить план, без вызова глобального обработчика.
#define CRITTER_EVENT_PLANE_END   (34)

Вызывается перед удалением плана (который ещё присутствует в списках планов).

Сигнатура обработчика:
int _FuncName(Critter& cr, NpcPlane& plane, uint childIndex, int reason, Critter@ someCr, Item@ someItem)
Аргументы
planeПлан.
childIndexНомер плана в качестве наследника, если 0, значит план базовый.
reasonУказывает причину завершения плана (см. Plane end reasons).
someCrВ некоторых случаях хранит указатель на персонажа (см. Работа с планами ).
someItemВ некоторых случаях хранит указатель на предмет (см. Работа с планами ).
Возвращает
PLANE_RUN_GLOBAL - вызвать глобальный обработчик, который определит сохранить или удалить план; PLANE_KEEP - сохранить план, без вызова глобального обработчика; PLANE_DISCARD - удалить план, без вызова глобального обработчика.
#define CRITTER_EVENT_PLANE_RUN   (35)

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

Сигнатура обработчика:
int _FuncName(Critter& cr, NpcPlane& plane, uint childIndex, int reason, uint& r0, uint& r1, uint& r2)
Аргументы
planeПлан, для которого вызвано событие.
childIndexНомер плана в цепочке наследников.
reasonПричина, по которой было вызвано событие. От неё зависит интерпретация остальных аргументов.
Возвращает
PLANE_RUN_GLOBAL - вызвать глобальный обработчик, который определит сохранить или удалить план; PLANE_KEEP - сохранить план, без вызова глобального обработчика; PLANE_DISCARD - удалить план, без вызова глобального обработчика.

На данный момент событие вызываются для обработки следующих действий:

  • REASON_ATTACK_WEAPON. Выбор оружия атакующим криттером.
    Аргументы
    [in]r0Идентификатор криттера-цели.
    [in]r1,r2Не используются.
    [out]r0Идентификатор выбранного для атаки предмета-оружия.
    [out]r1Номер, обозначающий способ использования оружия (см. ProtoItem::Weapon_SetUse).
    [out]r2Идентификатор тмпа рукопашной атаки (учитывается, если r0 == 0) (?).
  • REASON_ATTACK_DISTANTION. Выбор дистанции атаки. (?)
    Аргументы
    [in]r0Идентификатор криттера-цели.
    [in]r1NPC не может двигаться при r1 != 0.
    [in]r2Минимальное количество HP (из AI.TXT).
    [out]r0Лучшая дистанция.
    [out]r1Минимальная дистанция.
    [out]r2Максимальная дистанция. Если r2 == 0, то это означает, что нужно убегать.
  • REASON_ATTACK_USE_AIM. Прицеливание.
    Аргументы
    [in]r0Идентификатор криттера-цели..
    [in]r1Не используется.
    [in]r2Не используется.
    [out]r0Номер, обозначающий способ использования оружия (см. ProtoItem::Weapon_SetUse).
    [out]r1Цель (см. Hit Locations).
    [out]r2Время (в мс), на которое нужно сделать паузу при атаке.
#define CRITTER_EVENT_GLOBAL_PROCESS   (38)

Вызывается при событиях на глобальной карте.

Позволяет обрабатывать события от глобальной карты индивидуально для любого криттера.

Сигнатура обработчика:
bool _FuncName(Critter& cr, int type, Critter@[]& group, Item@ car, uint& x, uint& y, uint& toX, uint& toY, uint& speed, uint& encounterDescriptor, bool& waitForAnswer)
Аргументы
typeТип события (см. Global Map Events);
groupУказатели на криттеров в группе, если она сформирована;
carУказатель на машину, если она имеется;
xТекущая координата X группы на глобальной карте;
yТекущая координата Y группы на глобальной карте;
toXКоордината X конечной точки движения;
toYКоордината Y конечной точки движения;
speedСкорость движения в данной точке (зависит от маски глобальной карты);
encounterDescriptorУникальный идентификатор энкаунтера;
waitForAnswerОжидание ответа лидера группы.
Прим.
Аргументы передающиеся по ссылке (кроме cr и group) можно переназначать.
Возвращает
true - глобальный обработчик global_process не запускается; false - запуск глобального обработчика.
См. также
global_process
#define CRITTER_EVENT_GLOBAL_INVITE   (39)

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

Сигнатура обработчика:
bool _FuncName(Critter& cr, Critter@[]& group, Item@ car, uint encounterDescriptor, int combatMode, uint& mapId, uint16& hexX, uint16& hexY, uint8& dir)
Аргументы
groupуказатели на криттеров в группе, если она сформирована;
carуказатель на машину, если она имеется;
encounterDescriptorуникальный идентификатор энкаунтера;
combatModeрежим боя (COMBAT_MODE_ANY, COMBAT_MODE_REAL_TIME или COMBAT_MODE_TURN_BASED);
mapIdидентификатор карты;
hexXначальные координата X для появления группы;
hexYначальные координата Y для появления группы;
dirнаправление криттера по умолчанию.
Возвращает
true - глобальный обработчик global_invite не запускается; false - запуск глобального обработчика.
См. также
global_invite
#define CRITTER_EVENT_TURN_BASED_PROCESS   (40)

Вызывается в начале и в конце хода криттера.

Сигнатура обработчика:
void _FuncName(Critter& cr, Map& map, bool beginTurn)
Аргументы
mapкарта на которой зафиксировано событие;
beginTurntrue - функция вызвана в начале хода, false - функция вызвана в конце хода.
#define CRITTER_EVENT_SMTH_TURN_BASED_PROCESS   (41)

Вызывается в начале и конце хода какого-либо криттера в области видимости.

Сигнатура обработчика:
void _FuncName(Critter& cr, Critter& fromCr, Map& map, bool beginTurn)
Аргументы
mapкарта на которой зафиксировано событие;
beginTurntrue - функция вызвана в начале хода, false - функция вызвана в конце хода.