FOnline
 Указатель Классы Функции Переменные Группы Страницы
Зарезервированные скриптовые функции

Используются только в скрипте main.fos. Подробнее...

Функции

void karma_voting (Critter &crFrom, Critter &crTo, bool valUp)
 Вызывается при смене кармы одним игроком другому. Подробнее...
 
bool check_look (Critter &cr, Critter &opponent)
 Обработчик, позволяющий проверять в скрипте видимость одного криттера другим. Подробнее...
 
bool check_trap_look (Map &map, Critter &cr, Item &item)
 Обработчик, позволяющий проверять в скрипте видимость предмета криттером. Подробнее...
 
uint item_cost (Item &item, Critter &cr, Critter &npc, bool sell)
 Обработчик, позволяющий определять в скрипте цену предметов. Подробнее...
 
void items_crafted (Item @[]&items, uint[]&itemsCount, Item @[]&resources, Critter &crafter)
 Вызывается при крафте игроком новых предметов. Подробнее...
 
bool items_barter (Item @[]&saleItems, uint[]&saleItemsCount, Item @[]&buyItems, uint[]&buyItemsCount, Critter &player, Critter &npc)
 Вызывается при попытке совершения бартера между игроком и NPC. Подробнее...
 
void player_levelup (Critter &player, uint skillIndex, uint skillUp, uint perkIndex)
 Вызывается при распределении скиллпоинтов или выборе перка игроком. Подробнее...
 
void turn_based_sequence (Map &map, Critter @[]&critters, Critter @firstTurnCrit)
 Вызывается перед каждым новым раундом в пошаговом бое. Подробнее...
 

Сервер

200

bool start ()
 Вызывается при старте сервера. Подробнее...
 
void init ()
 Вызывается при старте сервера раньше, чем start(), когда мир еще не сгенерирован. Подробнее...
 
void finish ()
 Вызывается при остановке сервера. Подробнее...
 
uint loop ()
 Функция, вызываемая движком с задаваемой периодичностью. Подробнее...
 
void get_start_time (uint16 &multiplier, uint16 &year, uint16 &month, uint16 &day, uint16 &hour, uint16 &minute)
 Функция, устанавливающая стартовое время сервера. Подробнее...
 

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

190

void global_process (int type, Critter &cr, Critter @[]&group, Item @car, uint &x, uint &y, uint &toX, uint &toY, uint &speed, uint &encounterDescriptor, bool &waitForAnswer)
 Вызывается при различных событиях, связанных с перемещением и различными действиями группы криттеров на глобальной карте мира. Подробнее...
 
void global_invite (Critter @[]&group, Item @car, uint encounterDescriptor, int combatMode, uint &mapId, uint16 &hexX, uint16 &hexY, uint8 &dir)
 Вызывается, когда группа криттеров заходит на энкаутер. Подробнее...
 

Карты

190

void map_critter_in (Map &map, Critter &cr)
 Вызывается при заходе криттера на карту. Подробнее...
 
void map_critter_out (Map &map, Critter &cr)
 Вызывается при выходе криттера с карты. Подробнее...
 

Криттеры

180

void critter_init (Critter &cr, bool registration)
 Вызывается при регистрации/логине игрока или создании/загрузке NPC. Подробнее...
 
void critter_idle (Critter &cr)
 Вызывается при простое криттера. Подробнее...
 
void critter_finish (Critter &cr)
 Вызывается при выходе криттера из игры. Подробнее...
 
void critter_dead (Critter &cr, Critter @killer)
 Вызывается при смерти любого криттера. Подробнее...
 
void critter_respawn (Critter &cr)
 Вызывается при респауне криттера. Подробнее...
 
void critter_attack (Critter &cr, Critter &target, ProtoItem &weapon, uint8 weaponMode, ProtoItem @ammo)
 Глобальный обработчик атаки, который вызывается каждый раз при атаке одного криттера другим. Подробнее...
 
void critter_attacked (Critter &cr, Critter &attacker)
 Глобальный обработчик атаки, который вызывается каждый раз при атаке одного криттера другим. Подробнее...
 
bool critter_stealing (Critter &cr, Critter &thief, Item &item, uint count)
 Глобальный обработчик попытки воровства. Подробнее...
 
bool critter_use_item (Critter &cr, Item &item, Critter @targetCr, Item @targetItem, Scenery @targetScen, uint param)
 Глобальный обработчик использования предметов. Подробнее...
 
bool critter_use_skill (Critter &cr, int skill, Critter @targetCr, Item @targetItem, Scenery @targetScen)
 Глобальный обработчик использования скиллов. Подробнее...
 
void critter_move_item (Critter &cr, Item &item, int fromSlot)
 Глобальный обработчик, вызываемый при смене криттером предмета в активном слоте (в руках и при смене брони). Подробнее...
 
void critter_reload_weapon (Critter &cr, Item &weapon, Item @ammo)
 Вызывается при перезарядке или разрядке оружия криттером. Подробнее...
 
void critter_move_item (Critter &cr, Item &item, uint8 fromSlot)
 Вызызывается при смене предмета в активном слоте (того, что в руках или смене брони) у криттера. Подробнее...
 
bool critter_check_move_item (Critter &cr, Item &item, uint8 toSlot, Item @itemSwap)
 Вызызывается перед каждым перемещением предмета у криттера. Подробнее...
 

Планы

Глобальные обработчики событий для планов.

Вызываются они только для тех NPC, у которых не определены соответствующие индивидуальные события.

170

bool npc_plane_begin (Critter &npc, NpcPlane &plane, uint childIndex, int reason, Critter @someCr, Item @someItem)
 Вызывается перед добавлением плана (которого еще нет в списках у NPC). Подробнее...
 
bool npc_plane_end (Critter &npc, NpcPlane &plane, uint childIndex, int reason, Critter @someCr, Item @someItem)
 Вызывается перед удалением плана (который еще присутствует в списках планов). Подробнее...
 
bool npc_plane_run (Critter &npc, NpcPlane &plane, uint childIndex, int reason, uint &result0, uint &result1, uint &result2)
 Вызывается во время выполнения некоторых планов. Подробнее...
 

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

Используются только в скрипте main.fos.

Должны быть обязательно объявлены, иначе сервер не запустится.

Функции

bool start ( )

Вызывается при старте сервера.

Возвращает
Показывает удачно ли прошла инициализация. true – если удачно; false – в противном случае.
void init ( )

Вызывается при старте сервера раньше, чем start(), когда мир еще не сгенерирован.

void finish ( )

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

uint loop ( )

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

Период задается с помощью возвращаемого значения.

Возвращает
Время в миллисекундах, через которое функцию следует вызвать снова. Если будет возвращен ноль, то функция больше не будет вызываться.
void get_start_time ( uint16 &  multiplier,
uint16 &  year,
uint16 &  month,
uint16 &  day,
uint16 &  hour,
uint16 &  minute 
)

Функция, устанавливающая стартовое время сервера.

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

Аргументы
[out]multiplierКоэффициент ускорения времени (1..99).
[out]yearСтартовый год (1700..30000).
[out]monthСтартовый месяц (1..12).
[out]dayСтартовый день (1..31).
[out]hourСтартовый час час (0..23).
[out]minuteСтартовая минута (0..59)
void global_process ( int  type,
Critter cr,
Critter @&[]  group,
Item car,
uint &  x,
uint &  y,
uint &  toX,
uint &  toY,
uint &  speed,
uint &  encounterDescriptor,
bool &  waitForAnswer 
)

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

Типы событий, при которых вызывается данная функция (возможные значения параметра type):

  • GLOBAL_PROCESS_MOVE – при передвижении по глобальной карте, каждые 5 секунд.
  • GLOBAL_PROCESS_ENTER – при попытке входа на пустую карту.
  • GLOBAL_PROCESS_START_FAST – сразу при выходе на глобал или отсоединении от группы.
  • GLOBAL_PROCESS_START – при прошествии 20 секунд от выхода на глобал или при первой попытке передвижения.
  • GLOBAL_PROCESS_SET_MOVE – при изменении направления движения.
  • GLOBAL_PROCESS_STOPPED – при остановке группы на глобале.
  • GLOBAL_PROCESS_NPC_IDLE – при простое NPC на глобале (промежуток вызова определяется переменной __CritterIdleTick).

Для открытия диалогового окна с вопросом о входе на энкаунтер используются методы Say* класса Critter, с типами:

  • SAY_ENCOUNTER_ANY – возможность выбора между боем в реальном времени, пошаговым режимом боя и отказом от захода на энкаутер.
  • SAY_ENCOUNTER_RT – предлагается только бой в реальном времени и отказ.
  • SAY_ENCOUNTER_TB – предлагается только бой в пошаговом режиме и отказ.
Аргументы
[in]typeТип вызова.
[in]crКриттер, для которого вызван обработчик.
[in]groupГруппа тех, кто двигается.
[in]carУказатель на машину, используемую группой.
[in,out]x,yТекущая позиция.
[in,out]toX,toYПозиция, куда двигается группа.
[out]speedСлужит для установки скорости перемещения по глобалу.
[out]encounterDescriptorЕсли в результате вызова данный параметр принимает ненулевое значение, то он впоследствии отправится в функцию global_invite, в которой уже и надо выставить конкретно номер карты и позицию входа. Если encounterDescriptor равен 0, то функция global_invite не вызывается.
[out]waitForAnswerЕсли в результате вызова данный параметр принимает значение true, то перед последующим вызовом функции global_invite лидер группы должен подтвердить приглашение. Если false, то функция global_invite вызывается сразу. Каким образом показать сообщение лидеру см. в Примечаниях.
Прим.
Можно менять переменные x, y, toX, toY, чтобы изменить точки: текущую или назначения, соответственно. Чтобы остановить группу просто присвойте точке назначения текущую.
Первым криттером в списке group является лидер группы.
См. также
global_invite
Critter::Say
Critter::SayMsg
CRITTER_EVENT_GLOBAL_PROCESS
void global_invite ( Critter @&[]  group,
Item car,
uint  encounterDescriptor,
int  combatMode,
uint &  mapId,
uint16 &  hexX,
uint16 &  hexY,
uint8 &  dir 
)

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

Аргументы
[in]groupГруппа криттеров, заходящих на энкаутер.
[in]carУказатель на машину, используемую группой.
[in]encounterDescriptorПереданный из функции global_process номер.
[in]combatModeВыбранный (игроком или движком) режим боя (см. Combat modes).
[out]mapIdУникальный идентификатор карты энкаутера. Если в результате вызова данный параметр принимает ненулевое значение, то группа заходит на указанную карту.
[out]hexX,hexYНачальная позиция криттеров на карте.
[out]dirНачальное направление криттеров на карте.
См. также
global_process
CRITTER_EVENT_GLOBAL_INVITE
void map_critter_in ( Map map,
Critter cr 
)

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

Аргументы
mapКарта, на которую осуществляется вход.
crИгрок, который входит.
См. также
MAP_EVENT_CRITTER_IN
void map_critter_out ( Map map,
Critter cr 
)

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

Аргументы
mapКарта, с которой осуществляется выход.
crИгрок, который выходит.
См. также
MAP_EVENT_CRITTER_OUT
void critter_init ( Critter cr,
bool  registration 
)

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

Аргументы
crИгрок.
registrationПри логине равен false; при регистрации (первом входе) – true.
Прим.
По умолчанию, стартовой позицией игроков считается центр глобальной карты.
void critter_idle ( Critter cr)

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

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

Аргументы
crКриттер, для которого вызывается функция.
См. также
CRITTER_EVENT_IDLE
void critter_finish ( Critter cr)

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

Аргументы
crКриттер, для которого вызывается функция.
См. также
CRITTER_EVENT_FINISH
void critter_dead ( Critter cr,
Critter killer 
)

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

Аргументы
crУбитый или погибший криттер.
killerУказатель на криттера-убийцу.
См. также
CRITTER_EVENT_DEAD MAP_EVENT_CRITTER_DEAD
void critter_respawn ( Critter cr)

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

Аргументы
crКриттер, для которого вызывается событие.
См. также
CRITTER_EVENT_RESPAWN
void critter_attack ( Critter cr,
Critter target,
ProtoItem weapon,
uint8  weaponMode,
ProtoItem ammo 
)

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

Аргументы
crАтакующий криттер.
targetАтакуемый криттер.
weaponИспользуемый прототип оружия, уже настроенный на нужный тип атаки.
weaponModeРежим атаки оружия. старшие четыре бита - прицел (см. Hit Locations), младшие четыре бита - тип использования (0 – primary, 1 – secondary, 2 – third).
ammoИспользуемая амуниция.
См. также
Critter::SendCombatResult
CRITTER_EVENT_ATTACK
CRITTER_EVENT_SMTH_ATTACK
void critter_attacked ( Critter cr,
Critter attacker 
)

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

Аргументы
crАтакуемый криттер.
attackerАтакующий криттер.
См. также
CRITTER_EVENT_ATTACKED
CRITTER_EVENT_SMTH_ATTACKED
bool critter_stealing ( Critter cr,
Critter thief,
Item item,
uint  count 
)

Глобальный обработчик попытки воровства.

Аргументы
crОбворовываемый криттер.
thiefВор.
itemВоруемый предмет.
countКоличество воруемых предметов.
Возвращает
Попадает в параметр success в обработчиках CRITTER_EVENT_STEALING и CRITTER_EVENT_SMTH_STEALING, которые, в свою очередь, уже не возвращают никакого значения.
См. также
CRITTER_EVENT_STEALING
CRITTER_EVENT_SMTH_STEALING
bool critter_use_item ( Critter cr,
Item item,
Critter targetCr,
Item targetItem,
Scenery targetScen,
uint  param 
)

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

Аргументы
crКриттер, который использует предмет.
itemИспользуемый предмет.
targetCrУказатель на криттера, на котором используется предмет.
targetItemУказатель на предмет, на котором используется предмет.
targetScenУказатель на сценери, на котором используется предмет.
param(?).
Возвращает
true, если обработка полностью выполнена скриптом; false, если обработка должна быть выполнена движком.
См. также
CRITTER_EVENT_USE_ITEM
bool critter_use_skill ( Critter cr,
int  skill,
Critter targetCr,
Item targetItem,
Scenery targetScen 
)

Глобальный обработчик использования скиллов.

Аргументы
crКриттер, использующий скилл.
skillИспользуемый скилл (см. Навыки и Special Skill Values).
targetCrУказатель на криттера, на котором используется скилл.
targetItemУказатель на предмет, на котором используется скилл.
targetScenУказатель на сценери, на котором используется скилл.
Возвращает
true, если обработка полностью выполнена скриптом; false, если обработка должна быть выполнена движком.
См. также
CRITTER_EVENT_USE_SKILL
void critter_move_item ( Critter cr,
Item item,
int  fromSlot 
)

Глобальный обработчик, вызываемый при смене криттером предмета в активном слоте (в руках и при смене брони).

Аргументы
crКриттер, меняющий предмет.
itemПредмет.
fromSlotСлот (см. Slots).
void critter_reload_weapon ( Critter cr,
Item weapon,
Item ammo 
)

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

Аргументы
crКриттер, который выполняет перезарядку.
weaponОружие.
ammoУказатель на предмет, представляющий патроны. Если передан null, то это значит, что криттер разряжает оружие.
void critter_move_item ( Critter cr,
Item item,
uint8  fromSlot 
)

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

Аргументы
crКриттер, который меняет предмет.
itemПредмет, который меняется.
fromSlotСлот, из которого берется предмет.
bool critter_check_move_item ( Critter cr,
Item item,
uint8  toSlot,
Item itemSwap 
)

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

Аргументы
crКриттер, который меняет предмет;
itemПредмет, который перемещается;
toSlotСлот, из которого берется предмет;
itemSwapпредмет, который уже находится в слоте назначения и который переместится в слот перемещаемого предмета при успешной транзакции.
Возвращает
Если возвратить false, то предмет не переместится; если true, то переместится.
bool npc_plane_begin ( Critter npc,
NpcPlane plane,
uint  childIndex,
int  reason,
Critter someCr,
Item someItem 
)

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

Аргументы
npcNPC, для которого вызвана функция.
planeДобавляемый план.
childIndexНомер плана в цепочке наследников.
reasonУказывает причину начала плана (см. Plane begin reasons).
someCr(?)
someItem(?)
Возвращает
Если возвратить false, то план не добавится; если true, то добавится.
bool npc_plane_end ( Critter npc,
NpcPlane plane,
uint  childIndex,
int  reason,
Critter someCr,
Item someItem 
)

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

Аргументы
npcNPC, для которого вызвана функция.
planeУдаляемый план.
childIndexНомер плана в цепочке наследников.
reasonУказывает причину завершения плана (см. Plane end reasons).
someCr(?)
someItem(?)
Возвращает
Если возвратить false, то план станет последним по текущей приоритетности; если true, то удалится.
bool npc_plane_run ( Critter npc,
NpcPlane plane,
uint  childIndex,
int  reason,
uint &  result0,
uint &  result1,
uint &  result2 
)

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

Аргументы
npcNPC, для которого вызвана функцмя-обработчик.
planeПлан, для которого вызвана функция-обработчик.
childIndexНомер плана в цепочке наследников.
reasonПричина, по которой была вызвана функция обработчик (см. Plane run reasons).
[in,out]result0,result1,result2Аргументы, интерпретация которых зависит от аргумента reason.
Возвращает
Показывает, было ли обработано событие в скрипте.
void karma_voting ( Critter crFrom,
Critter crTo,
bool  valUp 
)

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

Аргументы
crFromИгрок, меняющий карму.
crToИгрок, которому меняется карма.
valUpПовышается ли карма (true) или понижается (false).
bool check_look ( Critter cr,
Critter opponent 
)

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

Чтобы эта функция использовалась при расчётах видимости, установите флаг LOOK_CHECK_SCRIPT глобальной переменной __LookChecks.

Аргументы
crКриттер, относительно которого определяется видимость другого криттера.
opponentКриттер, видимость которого проверяется.
Возвращает
true, в случае, если один криттер видит другого; false – в противном случае.
Прим.
События CRITTER_EVENT_SHOW_CRITTER_X и CRITTER_EVENT_HIDE_CRITTER_X при этом не вызываются.
bool check_trap_look ( Map map,
Critter cr,
Item item 
)

Обработчик, позволяющий проверять в скрипте видимость предмета криттером.

Чтобы эта функция использовалась при расчётах видимости, установите флаг LOOK_CHECK_ITEM_SCRIPT глобальной переменной __LookChecks.

Аргументы
mapКарта, на которой проверяется видимость.
crКриттер, относительно которого определяется видимость предмета.
itemПредмет, видимость которого проверяется.
Возвращает
true, в случае, если один криттер видит другого; false – в противном случае.
uint item_cost ( Item item,
Critter cr,
Critter npc,
bool  sell 
)

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

Чтобы эта функция использовалась при расчётах цен предметов, необходимо установить глобальной переменной __CustomItemCost значение true.

Аргументы
itemПредмет, для которого определяется цена.
crИгрок, участвующий в обмене.
npcNPC, участвующий в обмене.
sellУказывает, продается ли (true) предмет игроком или покупается (false).
Прим.
Не забудьте определить эту функцию в клиентском скрипте.
Помните, что надо возвращать цену за один предмет, а не за все.
Возвращает
Цена одного предмета.
См. также
ClientReserved::item_cost
void items_crafted ( Item @&[]  items,
uint &[]  itemsCount,
Item @&[]  resources,
Critter crafter 
)

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

Аргументы
itemsСозданные предметы.
itemsCountКоличество созданных предметов (для определения количества группируемых предметов).
resourcesПредметы-ресурсы.
crafterИгрок, скрафтивший предметы.
Прим.
Ресурсы resources в функции не имеют какой-либо принадлежности (Item::Accessory == ACCESSORY_NONE) и будут удалены после выхода из функции, если никому не будут присвоены.
bool items_barter ( Item @&[]  saleItems,
uint &[]  saleItemsCount,
Item @&[]  buyItems,
uint &[]  buyItemsCount,
Critter player,
Critter npc 
)

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

Аргументы
saleItemsПродаваемые игроком предметы.
saleItemsCountМассив с количеством продаваемых предметов, соответсвующий saleItems.
buyItemsПокупаемые игроком предметы.
buyItemsCountМассив с количеством покупаемых предметов, соответствующий buyItems.
playerИгрок, участвующий в бартере.
npcNPC, участвующий в бартере.
Возвращает
Если возвращается false, то бартер не будет совершен.
void player_levelup ( Critter player,
uint  skillIndex,
uint  skillUp,
uint  perkIndex 
)

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

Аргументы
playerИгрок.
skillIndexНомер навыка, на который распределяются скиллпоинты (см. Навыки).
skillUpКоличество затраченных скиллпоинтов.
perkIndexНомер выбранного перка (см. Перки).
void turn_based_sequence ( Map map,
Critter @&[]  critters,
Critter firstTurnCrit 
)

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

Аргументы
mapКарта боя.
crittersВсе игроки с карты.
firstTurnCritИгрок, который ходит первым. Данный аргумент берется из Map::BeginTurnBased.
Прим.
Отсортированная очередь возвращается в переданном массиве Critter@[]& critters.