hook — различия между версиями

Материал из Руководство по OpenKore
Перейти к: навигация, поиск
м
 
(не показаны 2 промежуточные версии 2 участников)
Строка 1: Строка 1:
 
;Hook / зацепка / событие
 
;Hook / зацепка / событие
 
:В OpenKore есть события, так называемые хуки (зацепки). На события можно подписаться. Когда наступает событие, OpenKore цепляет подписавшиеся на него функции (обработчики событий). У события есть название, именно по этому названию подписываются на события.
 
:В OpenKore есть события, так называемые хуки (зацепки). На события можно подписаться. Когда наступает событие, OpenKore цепляет подписавшиеся на него функции (обработчики событий). У события есть название, именно по этому названию подписываются на события.
:На события можно подписаться в плагине (см. [[How_to_write_plugins_for_OpenKore]]) или в макросе (см. [[Макро-плагин]], условие автомакроса hook).
+
:На события можно подписаться в плагине (см. [[How_to_write_plugins_for_OpenKore]]) или в макросе (см. [[macro|плагин macro]], условие автомакроса hook).
  
 
Как выглядит зацепка в коде OpenKore можно посмотреть в ревизии [http://sourceforge.net/p/openkore/code/8981/ 8991]:
 
Как выглядит зацепка в коде OpenKore можно посмотреть в ревизии [http://sourceforge.net/p/openkore/code/8981/ 8991]:
Строка 39: Строка 39:
 
:Plugins::callHook('pvp_mode', {pvp => $pvp}); # 1 PvP, 2 GvG, 3 Battleground
 
:Plugins::callHook('pvp_mode', {pvp => $pvp}); # 1 PvP, 2 GvG, 3 Battleground
  
;route_success, route
+
;route
:Вместо Plugins::callHook('route_success'); появился Plugins::callHook('route', {status => 'success'}); и добавился Plugins::callHook('route', {status => 'stuck'});. Т.е. появился аргумент status, который может быть success или stuck.
+
:Plugins::callHook('route', {status => 'success'}); и Plugins::callHook('route', {status => 'stuck'});
:Изменилось в ревизии [http://sourceforge.net/p/openkore/code/8645/ 8645].
+
:См. ревизию [http://sourceforge.net/p/openkore/code/8645/ 8645].

Текущая версия на 02:54, 22 января 2019

Hook / зацепка / событие
В OpenKore есть события, так называемые хуки (зацепки). На события можно подписаться. Когда наступает событие, OpenKore цепляет подписавшиеся на него функции (обработчики событий). У события есть название, именно по этому названию подписываются на события.
На события можно подписаться в плагине (см. How_to_write_plugins_for_OpenKore) или в макросе (см. плагин macro, условие автомакроса hook).

Как выглядит зацепка в коде OpenKore можно посмотреть в ревизии 8991:

Plugins::callHook('portal_exist2', {
	srcMap => $destMap,
	srcx => $destPos{x},
	srcy => $destPos{y},
	dstMap => $sourceMap,
	dstx => $sourcePos{x},
	dsty => $sourcePos{y}
});

В данном примере дёргаются обработчики события portal_exist2, им передаются шесть параметров.


Некоторые события

zeny_change
Количество зени изменилось. Например, что-то продали.
Добавлено в ревизии 8965
vending_item_sold
Наступает перед тем, как из магазина игрока исчезнет проданный предмет.
Добавлено в ревизии 8965
npc_exist
Наступает после того, как на консоль выводится сообщение, мол, вижу непись: "NPC Exists: %s (%d, %d) (ID %d) - (%d)\n"...
Добавлено в ревизии 8938
В коде выглядит так: Plugins::callHook('npc_exist', {npc => $actor});
AI_sell_auto
Добавлено в ревизии 8874
pvp_mode
Добавлено в ревизии 8738
Plugins::callHook('pvp_mode', {pvp => $pvp}); # 1 PvP, 2 GvG, 3 Battleground
route
Plugins::callHook('route', {status => 'success'}); и Plugins::callHook('route', {status => 'stuck'});
См. ревизию 8645.