3 #include "../../clib/clib_endian.h" 4 #include "../../clib/logfacility.h" 5 #include "../../clib/passert.h" 6 #include "../../clib/rawtypes.h" 7 #include "../globals/network.h" 8 #include "../pktboth.h" 9 #include "../pktbothid.h" 11 #include "../pktinid.h" 12 #include "../pktout.h" 13 #include "../pktoutid.h" 23 msghandler.
func( client, msg );
80 if ( msglen >
sizeof *msg )
95 ERROR_PRINT.Format(
"Extended Message Handler {} (0x{:X}) multiply defined.\n" )
96 << submsgtype << submsgtype;
97 throw std::runtime_error(
"Extended Message Handler multiply defined." );
107 #define MESSAGE_HANDLER( type, func ) \ 108 PacketRegistry::set_handler( type##_ID, sizeof( type ), \ 109 reinterpret_cast<Network::PktHandlerFunc>( func ), \ 110 Network::PacketVersion::V1 ) 112 #define MESSAGE_HANDLER_VARLEN( type, func ) \ 113 PacketRegistry::set_handler( type##_ID, MSGLEN_2BYTELEN_DATA, (Network::PktHandlerFunc)func, \ 114 Network::PacketVersion::V1 ) 116 #define MESSAGE_HANDLER_V2( type, func ) \ 117 PacketRegistry::set_handler( type##_ID, sizeof( type ), \ 118 reinterpret_cast<Network::PktHandlerFunc>( func ), \ 119 Network::PacketVersion::V2 ) 121 #define MESSAGE_HANDLER_VARLEN_V2( type, func ) \ 122 PacketRegistry::set_handler( type##_ID, MSGLEN_2BYTELEN_DATA, (Network::PktHandlerFunc)func, \ 123 Network::PacketVersion::V2 ) 127 using namespace Core;
192 using namespace Core;
void equip_item(Network::Client *client, PKTIN_13 *msg)
void ClientCreateChar(Network::Client *client, PKTIN_00 *msg)
void handle_target_cursor(Network::Client *client, PKTBI_6C *msg)
void handle_attack(Network::Client *client, Core::PKTIN_05 *msg)
void handle_secure_trade_msg(Network::Client *client, PKTBI_6F *msg)
void(* PktHandlerFunc)(Client *client, void *msg)
void handle_msg_BB(Client *client, PKTBI_BB *)
void char_select(Network::Client *client, PKTIN_5D *msg)
void handle_mode_set(Client *client, PKTBI_72 *msg)
void open_book_handler(Client *client, PKTBI_93 *msg)
std::array< Network::MSG_HANDLER, 256 > handler_v2
static int msglen(unsigned char msgid)
void handle_char_profile_request(Client *client, PKTBI_B8_IN *msg)
void handle_msg_BF(Client *client, PKTBI_BF *msg)
void handle_open_spellbook(Network::Client *client, PKTIN_12 *msg)
static MSG_HANDLER find_handler(unsigned char msgid, const Client *client)
void handle_get_tip(Network::Client *client, PKTIN_A7 *msg)
void gumpbutton_handler(Client *client, PKTIN_B1 *msg)
void handle_delete_character(Network::Client *client, PKTIN_83 *msg)
void handle_map_pin(Network::Client *client, PKTBI_56 *msg)
void loginserver_login(Network::Client *client, PKTIN_80 *msg)
void login2(Network::Client *client, PKTIN_91 *msg)
static bool is_defined(unsigned char msgid)
static void handle_msg(unsigned char msgid, Client *client, void *data)
void handle_keep_alive(Network::Client *client, PKTBI_73 *msg)
void get_item(Network::Client *client, PKTIN_07 *msg)
void KR_Verifier_Response(Network::Client *, PKTIN_E4 *)
void handle_prompt(Network::Client *client, PKTBI_9A *msg)
void handle_ef_seed(Client *client, PKTIN_EF *msg)
void handle_client_version(Client *client, PKTBI_BD *msg)
void handle_e1_clienttype(Client *client, PKTIN_E1 *msg)
void handle_help(Network::Client *client, PKTIN_9B *)
static int msglen_v2(unsigned char msgid)
void handle_allnames(Client *client, PKTBI_98_IN *msg)
static PktHandlerFunc get_callback(unsigned char msgid, PacketVersion version=PacketVersion::V1)
void drop_item(Network::Client *client, PKTIN_08_V1 *msg)
void srequest(Network::Client *client, PKTIN_34 *msg)
static void set_handler(unsigned char msgid, int len, PktHandlerFunc func, PacketVersion version=PacketVersion::V1)
NetworkManager networkManager
void handle_cast_spell(Network::Client *client, PKTIN_12 *msg)
void UnicodeSpeechHandler(Network::Client *client, PKTIN_AD *msgin)
static void set_extended_handler(UEXTMSGID submsgtype, void(*func)(Client *client, Core::PKTIN_12 *msg))
void handle_resync_request(Network::Client *client, PKTBI_22_SYNC *msg)
void handle_bulletin_boards(Client *client, PKTBI_71 *)
void doubleclick(Network::Client *client, PKTIN_06 *msg)
void handle_rename_char(Client *client, PKTIN_75 *msg)
void handle_textentry(Client *client, PKTIN_AC *msg)
void handle_A4(Network::Client *, PKTIN_A4 *)
void handle_menu_selection(Network::Client *client, PKTIN_7D *msg)
std::unordered_map< u64, ScriptDiffData > data
std::array< Network::ExtMsgHandler, 256 > ext_handler_table
#define MESSAGE_HANDLER(type, func)
void handle_unicode_prompt(Client *client, Core::PKTBI_C2 *msg)
void buyhandler(Client *client, PKTBI_3B *msg)
bool might_use_v2_handler() const
std::array< Network::MSG_HANDLER, 256 > handler
void handle_singleclick(Network::Client *client, PKTIN_09 *msg)
static void handle_extended_cmd(Client *client, Core::PKTIN_12 *msg)
void handle_action(Network::Client *client, PKTIN_12 *cmd)
void handle_skill_lock(Network::Client *client, PKTBI_3A_LOCKS *msg)
void handle_msg_B5(Client *client, PKTIN_B5 *)
void handle_request_tooltip(Network::Client *client, PKTIN_B6 *msgin)
#define MESSAGE_HANDLER_VARLEN(type, func)
#define MESSAGE_HANDLER_V2(type, func)
static void initialize_msg_handlers()
void SpeechHandler(Network::Client *client, PKTIN_03 *mymsg)
void drop_item_v2(Network::Client *client, PKTIN_08_V2 *msg)
void handle_use_skill(Network::Client *client, PKTIN_12 *msg)
void handle_walk(Network::Client *client, PKTIN_02 *msg02)
void sellhandler(Client *client, PKTIN_9F *msg)
void handle_update_range_change(Client *client, PKTBI_C8 *)
void handle_selcolor(Client *client, PKTBI_95 *msg)
void ClientCreateCharKR(Network::Client *client, PKTIN_8D *msg)
void handle_D9(Network::Client *client, PKTIN_D9 *msg)
void read_book_page_handler(Client *client, PKTBI_66 *msg)
void handle_unknown_C4(Client *client, PKTOUT_C4 *)
static void initialize_extended_handlers()
void handle_se_object_list(Client *client, PKTBI_D6_IN *msgin)
void handle_aos_commands(Client *client, PKTBI_D7 *msg)
void handle_resurrect_menu(Client *client, PKTBI_2C *msg)
void select_server(Network::Client *client, PKTIN_A0 *msg)
void ClientCreateChar70160(Network::Client *client, PKTIN_F8 *msg)