Difference between revisions of "hooks"
(5 intermediate revisions by 4 users not shown) | |||
Line 4: | Line 4: | ||
==== start ==== | ==== start ==== | ||
− | Called once after loading all plugins, but before loading or configuring load of any [[:Category: | + | Called once after loading all plugins, but before loading or configuring load of any [[:Category:control|control]] or [[:Category:tables|tables]] files. <code>%config</code> and all other stuff would be unavailable at this moment. Reconfiguration for the following initialization steps (like [http://forums.openkore.com/viewtopic.php?t=47 profiles plugin] does) should be performed there, as well as anything else that needs to be performed as soon as possible. |
==== start2 ==== | ==== start2 ==== | ||
− | Called once before loading any [[:Category: | + | Called once before loading any [[:Category:control|control]] or [[:Category:tables|tables]] files, but when that load is already being configured. <code>%config</code> etc would still be unavailable at this moment. Monkey-patching of whatever will be loaded next can be performed there. |
==== start3 ==== | ==== start3 ==== | ||
− | Called once after all [[:Category: | + | Called once after all [[:Category:control|control]] and [[:Category:tables|tables]] files are loaded. You probably should use '''initialized''' hook instead. |
==== initialized ==== | ==== initialized ==== | ||
Line 24: | Line 24: | ||
==== AI_pre/manual ==== | ==== AI_pre/manual ==== | ||
− | Called continuously when in game unless [[AI]] is turned off. | + | Called continuously when in game unless [[ai|AI]] is turned off. |
==== AI_pre ==== | ==== AI_pre ==== | ||
− | Called continuously when in game if [[AI]] is set to automatic. | + | Called continuously when in game if [[ai|AI]] is set to automatic. |
==== AI_post ==== | ==== AI_post ==== | ||
− | Called continuously when in game if [[AI]] is set to automatic, after processing all other AI routines. | + | Called continuously when in game if [[ai|AI]] is set to automatic, after processing all other AI routines. |
== Discovering all existing hooks Unix Distro == | == Discovering all existing hooks Unix Distro == | ||
Line 37: | Line 37: | ||
== Discovering all existing hooks Windows Distro == | == Discovering all existing hooks Windows Distro == | ||
− | + | open cmd | |
+ | cd openkore\src | ||
findstr /S /n "callHook" *.pl; | findstr /S /n "callHook" *.pl; | ||
findstr /S /n "callHook" *.pm; | findstr /S /n "callHook" *.pm; | ||
Note that some hooks, like <code>packet/<name></code>, <code>packet_pre/<name></code> and <code>mangle/<name></code>, actually are many hooks, for example, one hook for each network packet type. [[Mangle|See about it here]]. | Note that some hooks, like <code>packet/<name></code>, <code>packet_pre/<name></code> and <code>mangle/<name></code>, actually are many hooks, for example, one hook for each network packet type. [[Mangle|See about it here]]. | ||
+ | |||
+ | == Hook List == | ||
+ | This list might be outdated. | ||
<pre> | <pre> |
Revision as of 00:22, 27 April 2021
Contents
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);