hooks: Difference between revisions
No edit summary |
|
(No difference)
| |
Revision as of 22:35, 26 April 2021
Recommended hooks
Initialization
start
Called once after loading all plugins, but before loading or configuring load of any control or tables files. %config and all other stuff would be unavailable at this moment. Reconfiguration for the following initialization steps (like profiles plugin does) should be performed there, as well as anything else that needs to be performed as soon as possible.
start2
Called once before loading any control or tables files, but when that load is already being configured. %config etc would still be unavailable at this moment. Monkey-patching of whatever will be loaded next can be performed there.
start3
Called once after all control and tables files are loaded. You probably should use initialized hook instead.
initialized
Called once when all initialization is done and it's ready to connect to the server or start XKore. Additional initialization should be performed there.
Continuous Work
mainLoop_pre
Called continuously.
mainLoop_post
Called continuously, after processing all other routines.
AI_pre/manual
Called continuously when in game unless AI is turned off.
AI_pre
Called continuously when in game if AI is set to automatic.
AI_post
Called continuously when in game if AI is set to automatic, after processing all other AI routines.
Discovering all existing hooks Unix Distro
openkore/trunk$ find src -name .svn -prune -o -exec grep -Hn "^[^#]*callHook" {} \;
Discovering all existing hooks Windows Distro
open cmd cd openkore\src findstr /S /n "callHook" *.pl; findstr /S /n "callHook" *.pm;
Note that some hooks, like packet/<name>, packet_pre/<name> and mangle/<name>, actually are many hooks, for example, one hook for each network packet type. See about it here.
Hook List
This list might be outdated.
functions.pl:74: Plugins::callHook('mainLoop_pre');
functions.pl:76: Plugins::callHook('mainLoop_post');
functions.pl:83: Plugins::callHook('start');
functions.pl:136: Plugins::callHook( 'parse_command_line' );
functions.pl:281: Plugins::callHook('start2');
functions.pl:305: Plugins::callHook('start3');
functions.pl:551: Plugins::callHook('initialized');
functions.pl:702: Plugins::callHook('packet_mapChange');
functions.pl:911: Plugins::callHook('mainLoop::setTitle',\%args);
Actor\Item.pm:483: Plugins::callHook( 'get_item_weight', $self ) if !defined $self->{weight};
Actor\You.pm:262: Plugins::callHook('attack_start', {ID => $targetID});
Actor.pm:596: Plugins::callHook('Actor::setStatus::change', {
AI\Attack.pm:167: Plugins::callHook("target_died", {monster => $monsters_old{$ID}});
AI\Attack.pm:208: Plugins::callHook('attack_end', {ID => $ID})
AI\Attack.pm:628: Plugins::callHook('AI::Attack::main', {target => $target})
AI\CoreLogic.pm:57: Plugins::callHook('AI_start', {state => AI::state});
AI\CoreLogic.pm:68: Plugins::callHook('AI_pre/manual');
AI\CoreLogic.pm:117: Plugins::callHook('AI_pre');
AI\CoreLogic.pm:212: Plugins::callHook('AI_post');
AI\CoreLogic.pm:538: Plugins::callHook('portal_exist2', {
AI\CoreLogic.pm:563: Plugins::callHook('portal_exist2', {
AI\CoreLogic.pm:1373: Plugins::callHook("AI_storage_open", \%pluginArgs); # we can hook here to perform actions BEFORE any storage function
AI\CoreLogic.pm:1456: Plugins::callHook("AI_storage_done", \%hookArgs);
AI\CoreLogic.pm:1710: Plugins::callHook("AI_sell_auto");
AI\CoreLogic.pm:1739: Plugins::callHook('AI_sell_auto_done');
AI\CoreLogic.pm:1789: Plugins::callHook('AI_buy_auto_done');
AI\CoreLogic.pm:1798: Plugins::callHook('AI_buy_auto');
AI\CoreLogic.pm:2087: Plugins::callHook("AI/lockMap", \%args);
AI\CoreLogic.pm:2430: Plugins::callHook("ai_follow", $args);
AI\CoreLogic.pm:2934: Plugins::callHook("checkMonsterAutoAttack", \%hookArgs);
AI\Slave.pm:333: Plugins::callHook("homonulus_target_died");
AI.pm:96: Plugins::callHook('AI_state_change', {old => $AI, new => $_[0]});
ChatQueue.pm:64: Plugins::callHook('ChatQueue::add', \%item);
ChatQueue.pm:616: Plugins::callHook('ChatQueue::processChatResponse', $cmd);
Commands.pm:311: Plugins::callHook("Commands::run/pre", \%params);
Commands.pm:313: Plugins::callHook("Commands::run/post", \%params);
Commands.pm:317: Plugins::callHook('Command_post', \%params);
Commands.pm:1430: Plugins::callHook('Commands::cmdConf', {
FileParsers.pm:693: Plugins::callHook("FileParsers::ROLUT", \%ret);
FileParsers.pm:720: Plugins::callHook("FileParsers::RODescLUT", \%ret);
FileParsers.pm:770: Plugins::callHook ('FileParsers::ROQuestsLUT', \%ret);
FileParsers.pm:1305: Plugins::callHook('updatePortalLUT', $plugin_args);
FileParsers.pm:1319: Plugins::callHook('updatePortalLUT2', $plugin_args);
Interface\Console\Curses.pm:683: Plugins::callHook( 'curses/updateStatus' );
Interface\Console\Curses.pm:808: Plugins::callHook( 'curses/updateObjects' );
InventoryList\Cart.pm:33: Plugins::callHook('cart_ready');
InventoryList\Cart.pm:35: Plugins::callHook('cart_info_updated');
InventoryList\Inventory.pm:34: Plugins::callHook('inventory_ready');
InventoryList\Storage.pm:36: Plugins::callHook('storage_first_session_openning');
InventoryList\Storage.pm:38: Plugins::callHook('packet_storage_open');
InventoryList\Storage.pm:45: Plugins::callHook('packet_storage_close');
Misc.pm:297: Plugins::callHook('configModify', {
Misc.pm:348: Plugins::callHook('configModify', {
Misc.pm:388: Plugins::callHook('setTimeout', {
Misc.pm:1136: Plugins::callHook('avoidGM_talk', \%args);
Misc.pm:1259: Plugins::callHook('charSelectScreen', \%plugin_args);
Misc.pm:1892: Plugins::callHook('inventory_item_removed', {item => $item, index => $binID, amount => $amount, remaining => ($item->{amount} <= 0 ? 0 : $item->{amount})});
Misc.pm:1911: Plugins::callHook('storage_item_removed', {item => $item, index => $binID, amount => $amount, remaining => ($item->{amount} <= 0 ? 0 : $item->{amount})});
Misc.pm:1930: Plugins::callHook('cart_item_removed', {item => $item, index => $binID, amount => $amount, remaining => ($item->{amount} <= 0 ? 0 : $item->{amount})});
Misc.pm:2308: Plugins::callHook('objectAdded', {
Misc.pm:2325: Plugins::callHook('objectRemoved', {
Misc.pm:2692: Plugins::callHook('changed_status',{actor => $actor, changed => $changed});
Misc.pm:2701: # Plugins::callHook('perfect_hidden_player',undef);
Misc.pm:2702: Plugins::callHook('perfect_hidden_player',{actor => $actor, changed => $changed});
Misc.pm:2714: Plugins::callHook('perfect_hidden_npc',{actor => $actor, changed => $changed});
Misc.pm:3167: Plugins::callHook('teleport_sent', \%args);
Misc.pm:3173: Plugins::callHook('teleport_sent', \%args);
Misc.pm:3205: Plugins::callHook('teleport_sent', \%args);
Misc.pm:3214: Plugins::callHook('teleport_sent', \%args);
Misc.pm:3224: Plugins::callHook('teleport_sent', \%args);
Misc.pm:3236: Plugins::callHook('teleport_sent', \%args);
Misc.pm:3287: Plugins::callHook('teleport_sent', \%args);
Misc.pm:3688: Plugins::callHook('avoidGM_near', \%args);
Misc.pm:4299: Plugins::callHook("checkSelfCondition", \%hookArgs);
Misc.pm:4451: Plugins::callHook('checkPlayerCondition', \%args);
Misc.pm:4526: Plugins::callHook('checkMonsterCondition', \%args);
Misc.pm:4613: Plugins::callHook ('open_shop', {title => $shop{title}, items => \@items});
Misc.pm:4630: Plugins::callHook("shop_closed");
Network\ClientReceive.pm:75: Plugins::callHook('map_loaded');
Network\DirectConnection.pm:140: Plugins::callHook('Network::connectTo', {
Network\DirectConnection.pm:173: Plugins::callHook("Network::serverSend/pre", { msg => \$msg });
Network\DirectConnection.pm:178: Plugins::callHook("Network::serverSend", { msg => $msg });
Network\DirectConnection.pm:196: Plugins::callHook("Network::serverRecv", { msg => \$msg });
Network\DirectConnection.pm:245: Plugins::callHook("serverDisconnect/fail");
Network\DirectConnection.pm:248: Plugins::callHook("serverDisconnect/success");
Network\DirectConnection.pm:260: Plugins::callHook('Network::stateChanged');
Network\DirectConnection.pm:274: Plugins::callHook('Network::clientAlive', \%args);
Network\DirectConnection.pm:286: Plugins::callHook('Network::clientSend', \%args);
Network\DirectConnection.pm:301: Plugins::callHook('Network::clientRecv', \%args);
Network\DirectConnection.pm:355: Plugins::callHook("Network::serverConnect/master");
Network\DirectConnection.pm:490: Plugins::callHook("Network::serverConnect/special");
Network\DirectConnection.pm:530: Plugins::callHook("Network::serverConnect/char");
Network\DirectConnection.pm:566: Plugins::callHook("Network::serverConnect/charselect");
Network\DirectConnection.pm:603: Plugins::callHook("Network::serverConnect/mapserver");
Network\DirectConnection.pm:621: Plugins::callHook('disconnected');
Network\DirectConnection.pm:636: Plugins::callHook('disconnected');
Network\PacketParser.pm:269: Plugins::callHook("packet_pre/$handler->[0]", \%args);
Network\PacketParser.pm:271: Plugins::callHook("$self->{hook_prefix}/packet_pre/$handler->[0]", \%args);
Network\PacketParser.pm:286: Plugins::callHook("packet/$handler->[0]", \%args);
Network\PacketParser.pm:288: Plugins::callHook("$self->{hook_prefix}/packet/$handler->[0]", \%args);
Network\PacketParser.pm:365: Plugins::callHook("$self->{hook_prefix}/willMangle", \%args);
Network\PacketParser.pm:387: Plugins::callHook("$self->{hook_prefix}/mangle", \%hook_args);
Network\PacketParser.pm:491: Plugins::callHook($hook, {switch => $switch, msg => $msg, msg_size => length($msg), realMsg => \$msg});
Network\Receive\kRO\RagexeRE_2009_09_22a.pm:57: Plugins::callHook ('captcha_image', $hookArgs);
Network\Receive\kRO\RagexeRE_2009_09_22a.pm:66: Plugins::callHook ('captcha_file', $hookArgs);
Network\Receive\kRO\RagexeRE_2009_09_22a.pm:80: Plugins::callHook ('captcha_answer', {flag => $args->{flag}});
Network\Receive\kRO\RagexeRE_2010_03_09a.pm:69: Plugins::callHook('packet_open_buying_store', {
Network\Receive\kRO\RagexeRE_2010_03_09a.pm:120: Plugins::callHook('packet_buying_store', {
Network\Receive\kRO\RagexeRE_2010_03_09a.pm:138: Plugins::callHook('packet_buying_store2', {
Network\Receive\kRO\RagexeRE_2010_04_20a.pm:53: Plugins::callHook('packet_buying', {ID => unpack 'V', $ID});
Network\Receive\kRO\RagexeRE_2013_03_20.pm:125: Plugins::callHook('equipped_item', {slot => $equipSlot_lut{$_}, item => $item});
Network\Receive\kRO\Sakexe_0.pm:810: Plugins::callHook($args->{hook}, {index => $index, item => $local_item});
Network\Receive\kRO\Sakexe_0.pm:841: Plugins::callHook('in_game');
Network\Receive\kRO\Sakexe_0.pm:884: Plugins::callHook('packet_areaSpell', {
Network\Receive\kRO\Sakexe_0.pm:1166: Plugins::callHook('chat_joined', {
Network\Receive\kRO\Sakexe_0.pm:1183: Plugins::callHook('packet_castCancelled', {
Network\Receive\kRO\Sakexe_0.pm:1204: Plugins::callHook('equipped_item', {slot => $equipSlot_lut{$_}, item => $item});
Network\Receive\kRO\Sakexe_0.pm:1380: Plugins::callHook('packet_guildMsg', {
Network\Receive\kRO\Sakexe_0.pm:1505: Plugins::callHook('item_gathered',{item => $item->{name}});
Network\Receive\kRO\Sakexe_0.pm:1571: Plugins::callHook('packet_inventory', {index => $local_item->{binID}});
Network\Receive\kRO\Sakexe_0.pm:1610: Plugins::callHook('packet_inventory', {index => $item->{binID}});
Network\Receive\kRO\Sakexe_0.pm:1634: Plugins::callHook('item_skill', {
Network\Receive\kRO\Sakexe_0.pm:1734: Plugins::callHook('Network::Receive::map_changed', {
Network\Receive\kRO\Sakexe_0.pm:1777: Plugins::callHook('in_game');
Network\Receive\kRO\Sakexe_0.pm:1919: Plugins::callHook('npc_autotalk', {
Network\Receive\kRO\Sakexe_0.pm:1935: Plugins::callHook('npc_talk', {
Network\Receive\kRO\Sakexe_0.pm:2081: Plugins::callHook('packet_pubMsg', {
Network\Receive\kRO\Sakexe_0.pm:2101: Plugins::callHook('parseMsg/addPrivMsgUser', {
Network\Receive\kRO\Sakexe_0.pm:2113: Plugins::callHook('packet_privMsg', {
Network\Receive\kRO\Sakexe_0.pm:2134: Plugins::callHook('packet_sentPM', {
Network\Receive\kRO\Sakexe_0.pm:2167: Plugins::callHook('parseMsg/recvChars', $args->{options});
Network\Receive\kRO\Sakexe_0.pm:2335: Plugins::callHook('packet_selfChat', {
Network\Receive\kRO\Sakexe_0.pm:2424: Plugins::callHook('pvp_mode', {
Network\Receive\kRO\Sakexe_0.pm:2440: Plugins::callHook('pvp_mode', {
Network\Receive\kRO\Sakexe_0.pm:2543: Plugins::callHook('is_casting', {
Network\Receive\kRO\Sakexe_0.pm:2615: Plugins::callHook('packet_charSkills', {
Network\Receive\kRO\Sakexe_0.pm:2694: Plugins::callHook('packet_skilluse', {
Network\Receive\kRO\Sakexe_0.pm:2746: Plugins::callHook('packet_skillfail', {
Network\Receive\kRO\Sakexe_0.pm:2775: Plugins::callHook('packet_skilluse', {
Network\Receive\kRO\Sakexe_0.pm:2853: Plugins::callHook('packet_skilluse', {
Network\Receive\kRO\Sakexe_0.pm:2905: Plugins::callHook($hook, {
Network\Receive\kRO\Sakexe_0.pm:2933: Plugins::callHook('packet_charSkills', {
Network\Receive\kRO\Sakexe_0.pm:3147: Plugins::callHook('unequipped_item', {slot => $equipSlot_lut{$_}, item => $item});
Network\Receive\kRO\Sakexe_0.pm:3166: Plugins::callHook('base_level', {name => $name});
Network\Receive\kRO\Sakexe_0.pm:3169: Plugins::callHook('job_level', {name => $name});
Network\Receive\kRO\Sakexe_0.pm:3199: Plugins::callHook('packet_vender', {ID => $ID});
Network\Receive\kRO\Sakexe_0.pm:3239: Plugins::callHook('packet_vender_store', { item => $item });
Network\Receive\kRO\Sakexe_0.pm:3248: Plugins::callHook('packet_vender_store2', {
Network\Receive\pRO.pm:90: Plugins::callHook('parseMsg/recvChars', $args->{options});
Network\Receive\ServerType0.pm:907: Plugins::callHook($args->{hook}, {index => $index, item => $local_item});
Network\Receive\ServerType0.pm:944: Plugins::callHook('in_game');
Network\Receive\ServerType0.pm:996: Plugins::callHook('packet_areaSpell', {
Network\Receive\ServerType0.pm:1290: Plugins::callHook('chat_joined', {
Network\Receive\ServerType0.pm:1307: Plugins::callHook('packet_castCancelled', {
Network\Receive\ServerType0.pm:1328: Plugins::callHook('equipped_item', {slot => $equipSlot_lut{$_}, item => $item});
Network\Receive\ServerType0.pm:1514: Plugins::callHook('packet_guildMsg', {
Network\Receive\ServerType0.pm:1661: Plugins::callHook('item_gathered',{item => $item->{name}});
Network\Receive\ServerType0.pm:1737: Plugins::callHook('item_skill', {
Network\Receive\ServerType0.pm:1848: Plugins::callHook('Network::Receive::map_changed', {
Network\Receive\ServerType0.pm:1986: Plugins::callHook('npc_autotalk', {
Network\Receive\ServerType0.pm:2007: Plugins::callHook('npc_talk', {
Network\Receive\ServerType0.pm:2153: Plugins::callHook('packet_pubMsg', {
Network\Receive\ServerType0.pm:2173: Plugins::callHook('parseMsg/addPrivMsgUser', {
Network\Receive\ServerType0.pm:2185: Plugins::callHook('packet_privMsg', {
Network\Receive\ServerType0.pm:2206: Plugins::callHook('packet_sentPM', {
Network\Receive\ServerType0.pm:2253: Plugins::callHook('parseMsg/recvChars', $args->{options});
Network\Receive\ServerType0.pm:2454: Plugins::callHook('packet_selfChat', {
Network\Receive\ServerType0.pm:2547: Plugins::callHook('pvp_mode', {
Network\Receive\ServerType0.pm:2564: Plugins::callHook('pvp_mode', {
Network\Receive\ServerType0.pm:2669: Plugins::callHook('is_casting', {
Network\Receive\ServerType0.pm:2742: Plugins::callHook('packet_charSkills', {
Network\Receive\ServerType0.pm:2826: Plugins::callHook('packet_skilluse', {
Network\Receive\ServerType0.pm:2881: Plugins::callHook('packet_skillfail', {
Network\Receive\ServerType0.pm:2918: Plugins::callHook('packet_skilluse', {
Network\Receive\ServerType0.pm:3003: Plugins::callHook('packet_skilluse', {
Network\Receive\ServerType0.pm:3047: Plugins::callHook($hook, {
Network\Receive\ServerType0.pm:3075: Plugins::callHook('packet_charSkills', {
Network\Receive\ServerType0.pm:3321: Plugins::callHook('unequipped_item', {slot => $equipSlot_lut{$_}, item => $item});
Network\Receive\ServerType0.pm:3340: Plugins::callHook('base_level', {name => $actor});
Network\Receive\ServerType0.pm:3343: Plugins::callHook('job_level', {name => $actor});
Network\Receive\ServerType0.pm:3382: Plugins::callHook('packet_vender', {ID => $ID, title => bytesToString($args->{title})});
Network\Receive\ServerType0.pm:3422: Plugins::callHook('packet_vender_store', { item => $item });
Network\Receive\ServerType0.pm:3431: Plugins::callHook('packet_vender_store2', {
Network\Receive\ServerType0.pm:3595: Plugins::callHook('packet_item_removed', {index => $item->{binID}});
Network\Receive\ServerType0.pm:4248: Plugins::callHook ('captcha_image', $hookArgs);
Network\Receive\ServerType0.pm:4257: Plugins::callHook ('captcha_file', $hookArgs);
Network\Receive\ServerType0.pm:4271: Plugins::callHook ('captcha_answer', {flag => $args->{flag}});
Network\Receive\ServerType0.pm:4376: Plugins::callHook('packet_open_buying_store', {
Network\Receive\ServerType0.pm:4394: Plugins::callHook('packet_buying', {ID => unpack 'V', $ID});
Network\Receive\ServerType0.pm:4439: Plugins::callHook('packet_buying_store', {
Network\Receive\ServerType0.pm:4457: Plugins::callHook('packet_buying_store2', {
Network\Receive\ServerType0.pm:4509: Plugins::callHook('packet_buyer', {ID => $ID});
Network\Receive\ServerType15.pm:47: Plugins::callHook('in_game');
Network\Receive\ServerType19.pm:47: Plugins::callHook('in_game');
Network\Receive\ServerType20.pm:47: Plugins::callHook('in_game');
Network\Receive\Zero.pm:79: Plugins::callHook('in_game');
Network\Receive.pm:837: Plugins::callHook('exp_gained');
Network\Receive.pm:895: Plugins::callHook('base_level_changed', {
Network\Receive.pm:928: Plugins::callHook('zeny_change', {
Network\Receive.pm:1000: Plugins::callHook('job_level_changed', {
Network\Receive.pm:1093: Plugins::callHook('packet_charStats', {
Network\Receive.pm:1186: Plugins::callHook('packet_pre/actor_display', $args);
Network\Receive.pm:1188: Plugins::callHook('packet/actor_display', $args);
Network\Receive.pm:1526: Plugins::callHook('add_player_list', $actor);
Network\Receive.pm:1530: Plugins::callHook('add_monster_list', $actor);
Network\Receive.pm:1534: Plugins::callHook('add_pet_list', $actor);
Network\Receive.pm:1538: Plugins::callHook('add_portal_list', $actor);
Network\Receive.pm:1547: Plugins::callHook('add_npc_list', $actor);
Network\Receive.pm:1551: Plugins::callHook('add_slave_list', $actor);
Network\Receive.pm:1554: Plugins::callHook('add_elemental_list', $actor);
Network\Receive.pm:1575: Plugins::callHook('player', {player => $actor}); #backwards compatibility
Network\Receive.pm:1577: Plugins::callHook('player_exist', {player => $actor});
Network\Receive.pm:1581: Plugins::callHook('npc_exist', {npc => $actor});
Network\Receive.pm:1585: Plugins::callHook('portal_exist', {portal => $actor});
Network\Receive.pm:1619: Plugins::callHook('player', {player => $actor}); #backwards compatibailty
Network\Receive.pm:1621: Plugins::callHook('player_connected', {player => $actor});
Network\Receive.pm:1648: Plugins::callHook('player_moved', $actor);
Network\Receive.pm:1651: Plugins::callHook('monster_moved', $actor);
Network\Receive.pm:1654: Plugins::callHook('pet_moved', $actor);
Network\Receive.pm:1657: Plugins::callHook('slave_moved', $actor);
Network\Receive.pm:1661: Plugins::callHook('portal_moved', $actor);
Network\Receive.pm:1665: Plugins::callHook('npc_moved', $actor);
Network\Receive.pm:1668: Plugins::callHook('pet_moved', $actor);
Network\Receive.pm:1708: Plugins::callHook('self_died');
Network\Receive.pm:1747: Plugins::callHook('monster_disappeared', {monster => $monster});
Network\Receive.pm:1778: Plugins::callHook('player_disappeared', {player => $player});
Network\Receive.pm:1798: Plugins::callHook('portal_disappeared', {portal => $portal});
Network\Receive.pm:1807: Plugins::callHook('npc_disappeared', {npc => $npc});
Network\Receive.pm:1815: Plugins::callHook('pet_disappeared', {pet => $pet});
Network\Receive.pm:1839: Plugins::callHook('slave_disappeared', {slave => $slave});
Network\Receive.pm:1855: Plugins::callHook('elemental_disappeared', {elemental => $elemental});
Network\Receive.pm:1943: Plugins::callHook('packet_attack', {sourceID => $args->{sourceID}, targetID => $args->{targetID}, msg => \$msg, dmg => $totalDamage, type => $args->{type}});
Network\Receive.pm:2007: Plugins::callHook('charNameUpdate', {player => $player});
Network\Receive.pm:2021: Plugins::callHook('mobNameUpdate', {monster => $monster});
Network\Receive.pm:2039: Plugins::callHook('npcNameUpdate', {npc => $npc});
Network\Receive.pm:2052: Plugins::callHook('petNameUpdate', {pet => $pet});
Network\Receive.pm:2064: Plugins::callHook('slaveNameUpdate', {slave => $slave});
Network\Receive.pm:2077: Plugins::callHook('elementalNameUpdate', {elemental => $elemental});
Network\Receive.pm:2236: Plugins::callHook('packet_localBroadcast', {
Network\Receive.pm:2425: Plugins::callHook('packet_sysMsg', {
Network\Receive.pm:2577: Plugins::callHook('equipped_item', {slot => 'arrow', item => $item});
Network\Receive.pm:2610: Plugins::callHook('packet_item_removed', {index => $item->{binID}});
Network\Receive.pm:2648: Plugins::callHook(
Network\Receive.pm:2663: Plugins::callHook(
Network\Receive.pm:2698: Plugins::callHook(
Network\Receive.pm:2715: Plugins::callHook(
Network\Receive.pm:2958: Plugins::callHook('pvp_mode', {
Network\Receive.pm:2998: Plugins::callHook('packet_areaSpell', {
Network\Receive.pm:3041: Plugins::callHook('packet_areaSpell', {
Network\Receive.pm:3234: Plugins::callHook('quest_mission_added', {
Network\Receive.pm:3273: Plugins::callHook('quest_mission_added', {
Network\Receive.pm:3327: Plugins::callHook('quest_mission_updated', {
Network\Receive.pm:3411: Plugins::callHook('makable_item_list', {
Network\Receive.pm:3671: Plugins::callHook('dial');
Network\Receive.pm:3792: Plugins::callHook('chat_created', {
Network\Receive.pm:3814: Plugins::callHook('packet_chatinfo', {
Network\Receive.pm:3854: Plugins::callHook('chat_modified', {
Network\Receive.pm:3917: Plugins::callHook('chat_leave');
Network\Receive.pm:3929: Plugins::callHook('chat_removed', {
Network\Receive.pm:3961: Plugins::callHook("error_deal", { type =>$args->{type}} );
Network\Receive.pm:3964: Plugins::callHook("error_deal", { type =>$args->{type}} );
Network\Receive.pm:3982: Plugins::callHook("engaged_deal", {name => $currentDeal{name}});
Network\Receive.pm:3985: Plugins::callHook("error_deal", { type =>$args->{type}} );
Network\Receive.pm:3988: Plugins::callHook("error_deal", { type =>$args->{type}} );
Network\Receive.pm:3997: Plugins::callHook("cancelled_deal");
Network\Receive.pm:4005: Plugins::callHook("complete_deal");
Network\Receive.pm:4013: Plugins::callHook("finalized_deal", {name => $currentDeal{name}});
Network\Receive.pm:4032: Plugins::callHook("incoming_deal", {name => $user});
Network\Receive.pm:4126: Plugins::callHook('packet_emotion', {
Network\Receive.pm:4135: Plugins::callHook('disconnected') if ($net->getState() == Network::IN_GAME);
Network\Receive.pm:4604: Plugins::callHook('packet_useitem', \%hook_args);
Network\Receive.pm:4874: Plugins::callHook('Network::Receive::map_changed', {
Network\Receive.pm:4937: Plugins::callHook('npc_talk_done', {ID => $ID});
Network\Receive.pm:4979: Plugins::callHook('npc_autotalk', {
Network\Receive.pm:5010: Plugins::callHook('npc_talk_responses', {
Network\Receive.pm:5199: Plugins::callHook('packet_vender', {ID => $ID, title => bytesToString($args->{title})});
Network\Receive.pm:5225: Plugins::callHook('add_player_list', $actor);
Network\Receive.pm:5246: Plugins::callHook('player_disappeared', {player => $player});
Network\Receive.pm:5416: Plugins::callHook('packet_partyJoin', { partyName => $info->{name} });
Network\Receive.pm:5467: Plugins::callHook('packet_partyMsg', {
Network\Receive.pm:6068: Plugins::callHook('packet_clanMsg', {
Network\Receive.pm:6164: Plugins::callHook('cooking_list', {
Network\Send\ServerType1.pm:37: Plugins::callHook('packet_pre/sendAttack', \%args) if ($flag == 0 || $flag == 7);
Network\Send\ServerType1.pm:38: Plugins::callHook('packet_pre/sendSit', \%args) if ($flag == 2 || $flag == 3);
Network\Send\ServerType1.pm:56: Plugins::callHook('packet_pre/sendSit', \%args);
Network\Send\ServerType1.pm:74: Plugins::callHook('packet_pre/sendStand', \%args);
Network\Send\ServerType1.pm:151: Plugins::callHook('packet_pre/sendSkillUse', \%args);
Network\Send\ServerType10.pm:39: Plugins::callHook('packet_pre/sendAttack', \%args) if ($flag == 0 || $flag == 7);
Network\Send\ServerType10.pm:40: Plugins::callHook('packet_pre/sendSit', \%args) if ($flag == 2 || $flag == 3);
Network\Send\ServerType10.pm:59: Plugins::callHook('packet_pre/sendAttack', \%args);
Network\Send\ServerType2.pm:44: Plugins::callHook('packet_pre/sendAttack', \%args) if ($flag == 0 || $flag == 7);
Network\Send\ServerType2.pm:45: Plugins::callHook('packet_pre/sendSit', \%args) if ($flag == 2 || $flag == 3);
Network\Send\ServerType3.pm:44: Plugins::callHook('packet_pre/sendAttack', \%args) if ($flag == 0 || $flag == 7);
Network\Send\ServerType3.pm:45: Plugins::callHook('packet_pre/sendSit', \%args) if ($flag == 2 || $flag == 3);
Network\Send\ServerType4.pm:44: Plugins::callHook('packet_pre/sendAttack', \%args) if ($flag == 0 || $flag == 7);
Network\Send\ServerType4.pm:45: Plugins::callHook('packet_pre/sendSit', \%args) if ($flag == 2 || $flag == 3);
Network\Send\ServerType5.pm:43: Plugins::callHook('packet_pre/sendAttack', \%args) if ($flag == 0 || $flag == 7);
Network\Send\ServerType5.pm:44: Plugins::callHook('packet_pre/sendSit', \%args) if ($flag == 2 || $flag == 3);
Network\Send\ServerType6.pm:36: Plugins::callHook('packet_pre/sendAttack', \%args) if ($flag == 0 || $flag == 7);
Network\Send\ServerType6.pm:37: Plugins::callHook('packet_pre/sendSit', \%args) if ($flag == 2 || $flag == 3);
Network\Send\ServerType7.pm:35: Plugins::callHook('packet_pre/sendAttack', \%args);
Network\Send\ServerType7.pm:55: Plugins::callHook('packet_pre/sendSit', \%args);
Network\Send\ServerType7.pm:73: Plugins::callHook('packet_pre/sendStand', \%args);
Network\Send\ServerType7.pm:96: Plugins::callHook('packet_pre/sendSkillUse', \%args);
Network\Send\ServerType8.pm:50: Plugins::callHook('packet_pre/sendAttack', \%args) if ($flag == 0 || $flag == 7);
Network\Send\ServerType8.pm:51: Plugins::callHook('packet_pre/sendSit', \%args) if ($flag == 2 || $flag == 3);
Network\Send\ServerType8.pm:70: Plugins::callHook('packet_pre/sendAttack', \%args);
Network\Send\ServerType8.pm:88: Plugins::callHook('packet_pre/sendStand', \%args);
Network\Send\ServerType8.pm:105: Plugins::callHook('packet_pre/sendSit', \%args);
Network\Send\ServerType8.pm:125: Plugins::callHook('packet_pre/sendSkillUse', \%args);
Network\Send\ServerType8_1.pm:39: Plugins::callHook('packet_pre/sendAttack', \%args);
Network\Send\ServerType8_1.pm:126: Plugins::callHook('packet_pre/sendSit', \%args);
Network\Send\ServerType8_1.pm:145: Plugins::callHook('packet_pre/sendStand', \%args);
Network\Send\ServerType8_1.pm:167: Plugins::callHook('packet_pre/sendSkillUse', \%args);
Network\Send\ServerType8_3.pm:48: Plugins::callHook('packet_pre/sendSit', \%args);
Network\Send\ServerType8_3.pm:66: Plugins::callHook('packet_pre/sendAttack', \%args);
Network\Send\ServerType8_3.pm:94: Plugins::callHook('packet_pre/sendStand', \%args);
Network\Send\ServerType8_5.pm:42: Plugins::callHook('packet_pre/sendSkillUse', \%args);
Network\Send\ServerType8_5.pm:176: Plugins::callHook('packet_pre/sendAttack', \%args);
Network\Send.pm:241: Plugins::callHook($hookName, \%args);
Network\Send.pm:461: Plugins::callHook('packet/sendMapLoaded');
Network\Send.pm:501: Plugins::callHook('packet_pre/sendAttack', \%args) if $flag == ACTION_ATTACK || $flag == ACTION_ATTACK_REPEAT;
Network\Send.pm:502: Plugins::callHook('packet_pre/sendSit', \%args) if $flag == ACTION_SIT || $flag == ACTION_STAND;
Network\Send.pm:753: Plugins::callHook('packet_pre/sendSkillUse', \%args);
Network\XKore.pm:123: Plugins::callHook("Network::serverSend/pre", { msg => \$msg });
Network\XKore.pm:143: Plugins::callHook('Network::stateChanged');
Network\XKore.pm:246: Plugins::callHook('disconnected');
Network\XKore.pm:267: Plugins::callHook('XKore_start');
Plugins.pm:428:sub callHook {
Poseidon\Client.pm:82: Plugins::callHook('Poseidon/client_authenticate', {
Poseidon\QueryServer.pm:77: Plugins::callHook('Poseidon/server_authenticate', {
Settings.pm:341: Plugins::callHook( usage => $data );
Settings.pm:495: Plugins::callHook('pre_load_'.$internalFilename, $pre_load);
Settings.pm:543: Plugins::callHook('load_'.$internalFilename, $load);
Settings.pm:548: Plugins::callHook('pos_load_'.$internalFilename, $pos_load);
Settings.pm:550: Plugins::callHook('load_'.$internalFilename, $load);
Settings.pm:554: Plugins::callHook('pos_load_'.$internalFilename, $pos_load);
Settings.pm:595: Plugins::callHook('preloadfiles', {files => $files});
Settings.pm:599: Plugins::callHook('loadfiles', {files => $files, current => $i});
Settings.pm:604: Plugins::callHook('postloadfiles', {files => $files});
Task\MapRoute.pm:358: Plugins::callHook('Task::MapRoute::iterate::missing_portal', \%plugin_args);
Task\MapRoute.pm:435: Plugins::callHook('Task::MapRoute::iterate::route_portal_near', \%plugin_args);
Task\Route.pm:236: Plugins::callHook('route', {status => 'success'});
Task\Route.pm:274: Plugins::callHook('route', {status => 'stuck'});
Task\Route.pm:350: Plugins::callHook('route', {status => 'success'});
test\PluginsHookTest.pm:29: Plugins::callHook('hook2');
test\PluginsHookTest.pm:31: Plugins::callHook('hook1');
test\PluginsHookTest.pm:39: Plugins::callHook('hook1');
test\PluginsHookTest.pm:41: Plugins::callHook('hook2');
test\PluginsHookTest.pm:43: Plugins::callHook('hook3');
test\PluginsHookTest.pm:51: Plugins::callHook('hook1');
test\PluginsHookTest.pm:53: Plugins::callHook('hook2');
test\PluginsHookTest.pm:61: Plugins::callHook('hook2');
test\PluginsHookTest.pm:63: Plugins::callHook('hook1');
test\PluginsHookTest.pm:71: Plugins::callHook('hook2');
test\PluginsHookTest.pm:73: Plugins::callHook('hook1');
test\PluginsHookTest.pm:93: Plugins::callHook('hook1');
test\PluginsHookTest.pm:95: Plugins::callHook('hook2');
test\PluginsHookTest.pm:102: Plugins::callHook('hook1');
test\PluginsHookTest.pm:124: Plugins::callHook( 'add_during_call' );
test\PluginsHookTest.pm:129: Plugins::callHook( 'add_during_call' );
test\PluginsHookTest.pm:134: Plugins::callHook( 'add_during_call' );
test\PluginsHookTest.pm:139: Plugins::callHook( 'add_during_call' );
test\PluginsHookTest.pm:156: Plugins::callHook( 'del_during_call' );
test\PluginsHookTest.pm:161: Plugins::callHook( 'del_during_call' );
test\PluginsHookTest.pm:166: Plugins::callHook( 'del_during_call' );
test\PluginsHookTest.pm:171: Plugins::callHook( 'del_during_call' );
test\PluginsHookTest.pm:176: Plugins::callHook( 'del_during_call' );
Utils\PathFinding.pm:101: Plugins::callHook("PathFindingReset", \%hookArgs);