From 677c6b57502140a0c3aa76323f7839dfa6559660 Mon Sep 17 00:00:00 2001 From: Akkadius Date: Mon, 15 Dec 2014 20:21:54 -0600 Subject: [PATCH 01/36] emu_tcp_connection.cpp & .h include header cleanup and forward declare --- common/emu_tcp_connection.cpp | 3 --- common/emu_tcp_connection.h | 1 + 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/common/emu_tcp_connection.cpp b/common/emu_tcp_connection.cpp index 41a39d3ab..805b4b333 100644 --- a/common/emu_tcp_connection.cpp +++ b/common/emu_tcp_connection.cpp @@ -27,13 +27,10 @@ tremendously. #include #include -#include -#include #include "emu_tcp_connection.h" #include "emu_tcp_server.h" #include "../common/servertalk.h" -#include "../common/packet_dump.h" #ifdef FREEBSD //Timothy Whitman - January 7, 2003 #define MSG_NOSIGNAL 0 diff --git a/common/emu_tcp_connection.h b/common/emu_tcp_connection.h index c7d88965d..7f4d0710b 100644 --- a/common/emu_tcp_connection.h +++ b/common/emu_tcp_connection.h @@ -26,6 +26,7 @@ struct SPackSendQueue; class EmuTCPServer; +class ServerPacket; class EmuTCPConnection : public TCPConnection { public: From 1a6a50c81006e1b8029ba992ad38a8beb412dff0 Mon Sep 17 00:00:00 2001 From: Akkadius Date: Mon, 15 Dec 2014 20:24:38 -0600 Subject: [PATCH 02/36] eq_packet.cpp & .h header include cleanup --- common/eq_packet.cpp | 11 +++++++---- common/eq_packet.h | 5 ----- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/common/eq_packet.cpp b/common/eq_packet.cpp index 3ea622040..60d892c23 100644 --- a/common/eq_packet.cpp +++ b/common/eq_packet.cpp @@ -15,18 +15,21 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ + +#include "crc16.h" #include "debug.h" -#include -#include -#include #include "eq_packet.h" #include "misc.h" #include "op_codes.h" -#include "crc16.h" #include "platform.h" +#include +#include +#include + #ifndef STATIC_OPCODE #include "opcodemgr.h" #endif + #include "packet_dump.h" #include "packet_functions.h" #include diff --git a/common/eq_packet.h b/common/eq_packet.h index 04418f733..dcd3747a0 100644 --- a/common/eq_packet.h +++ b/common/eq_packet.h @@ -19,8 +19,6 @@ #define _EQPACKET_H #include "base_packet.h" -#include "eq_stream_type.h" -#include "op_codes.h" #include "platform.h" #ifdef STATIC_OPCODE @@ -30,9 +28,6 @@ #include "emu_opcodes.h" #endif -class EQStream; -class EQStreamPair; - class EQPacket : public BasePacket { friend class EQStream; public: From 5e31b8f96e818ccf8ec9b1bbaf9a41026bed26de Mon Sep 17 00:00:00 2001 From: Akkadius Date: Mon, 15 Dec 2014 20:28:27 -0600 Subject: [PATCH 03/36] eq_stream.cpp & .h include header cleanup --- common/eq_stream.cpp | 3 --- common/eq_stream.h | 17 ++++++++++------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/common/eq_stream.cpp b/common/eq_stream.cpp index 7b69decc2..879d57664 100644 --- a/common/eq_stream.cpp +++ b/common/eq_stream.cpp @@ -19,15 +19,12 @@ #include "debug.h" #include "eq_packet.h" #include "eq_stream.h" -#include "misc.h" -#include "mutex.h" #include "op_codes.h" #include "crc16.h" #include "platform.h" #include #include -#include #include #include diff --git a/common/eq_stream.h b/common/eq_stream.h index 5a637c46e..ee797021f 100644 --- a/common/eq_stream.h +++ b/common/eq_stream.h @@ -1,22 +1,26 @@ #ifndef _EQSTREAM_H #define _EQSTREAM_H -#include #include #include #include #include + #ifndef WIN32 #include #endif -#include "eq_stream_type.h" + +#include "../common/misc.h" +#include "../common/opcodemgr.h" +#include "../common/timer.h" + #include "eq_packet.h" #include "eq_stream_intf.h" +#include "eq_stream_type.h" #include "mutex.h" -#include "../common/opcodemgr.h" -#include "../common/misc.h" -#include "../common/condition.h" -#include "../common/timer.h" + +class EQApplicationPacket; +class EQProtocolPacket; #define FLAG_COMPRESSED 0x01 #define FLAG_ENCODED 0x04 @@ -78,7 +82,6 @@ struct SessionStats { #pragma pack() class OpcodeManager; -class EQStreamPair; class EQRawApplicationPacket; class EQStream : public EQStreamInterface { From 968b0adc1d747b266350029c984375722c9fc87f Mon Sep 17 00:00:00 2001 From: Akkadius Date: Mon, 15 Dec 2014 20:30:53 -0600 Subject: [PATCH 04/36] eq_stream_factory.cpp & .h header include cleanup/forward declare --- common/eq_stream_factory.cpp | 6 +++--- common/eq_stream_factory.h | 6 ++++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/common/eq_stream_factory.cpp b/common/eq_stream_factory.cpp index 12828b28c..5f76a28ee 100644 --- a/common/eq_stream_factory.cpp +++ b/common/eq_stream_factory.cpp @@ -1,5 +1,6 @@ #include "debug.h" #include "eq_stream_factory.h" + #ifdef _WINDOWS #include #include @@ -13,11 +14,10 @@ #include #include #endif -#include + #include + #include "op_codes.h" -#include "eq_stream.h" -#include "logsys.h" ThreadReturnType EQStreamFactoryReaderLoop(void *eqfs) { diff --git a/common/eq_stream_factory.h b/common/eq_stream_factory.h index 7aa5d66ac..58fddaa40 100644 --- a/common/eq_stream_factory.h +++ b/common/eq_stream_factory.h @@ -4,11 +4,13 @@ #include #include + #include "../common/eq_stream.h" #include "../common/condition.h" #include "../common/timeoutmgr.h" -#include "../common/opcodemgr.h" -#include "../common/timer.h" + +class EQStream; +class Timer; class EQStreamFactory : private Timeoutable { private: From e048c5cf17f707971e08c52d0bbb1d5e99428941 Mon Sep 17 00:00:00 2001 From: Akkadius Date: Mon, 15 Dec 2014 20:32:03 -0600 Subject: [PATCH 05/36] eq_stream_ident.h header include cleanup --- common/eq_stream_ident.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/eq_stream_ident.h b/common/eq_stream_ident.h index c038daf26..2020c85cf 100644 --- a/common/eq_stream_ident.h +++ b/common/eq_stream_ident.h @@ -4,13 +4,13 @@ #include "eq_stream.h" #include "timer.h" #include -#include #include #define STREAM_IDENT_WAIT_MS 10000 class OpcodeManager; class StructStrategy; +class EQStreamInterface; class EQStreamIdentifier { public: From bbea7f4f53093342788c447e1263dbe53153a115 Mon Sep 17 00:00:00 2001 From: Akkadius Date: Mon, 15 Dec 2014 21:01:52 -0600 Subject: [PATCH 06/36] eqemu_config.cpp & .h header cleanup, code style cleanup of eqemu_config.h --- common/eqemu_config.cpp | 2 + common/eqemu_config.h | 328 ++++++++++++++++++++-------------------- 2 files changed, 162 insertions(+), 168 deletions(-) diff --git a/common/eqemu_config.cpp b/common/eqemu_config.cpp index 165b0786f..abeac70c5 100644 --- a/common/eqemu_config.cpp +++ b/common/eqemu_config.cpp @@ -15,9 +15,11 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ + #include "../common/debug.h" #include "eqemu_config.h" #include "misc_functions.h" + #include #include diff --git a/common/eqemu_config.h b/common/eqemu_config.h index 9fa21bea6..908d66aa1 100644 --- a/common/eqemu_config.h +++ b/common/eqemu_config.h @@ -1,4 +1,4 @@ -/* EQEMu: Everquest Server Emulator +/* EQEMu: Everquest Server Emulator Copyright (C) 2001-2006 EQEMu Development Team (http://eqemulator.net) This program is free software; you can redistribute it and/or modify @@ -28,200 +28,192 @@ struct LoginConfig { uint16 LoginPort; }; -class EQEmuConfig : public XMLParser { -public: - virtual std::string GetByName(const std::string &var_name) const; +class EQEmuConfig : public XMLParser +{ + public: + virtual std::string GetByName(const std::string &var_name) const; - // From - std::string ShortName; - std::string LongName; - std::string WorldAddress; - std::string LocalAddress; - std::string LoginHost; - std::string LoginAccount; - std::string LoginPassword; - uint16 LoginPort; - uint32 LoginCount; - LinkedList loginlist; - bool Locked; - uint16 WorldTCPPort; - std::string WorldIP; - bool TelnetEnabled; - int32 MaxClients; - bool WorldHTTPEnabled; - uint16 WorldHTTPPort; - std::string WorldHTTPMimeFile; - std::string SharedKey; + // From + std::string ShortName; + std::string LongName; + std::string WorldAddress; + std::string LocalAddress; + std::string LoginHost; + std::string LoginAccount; + std::string LoginPassword; + uint16 LoginPort; + uint32 LoginCount; + LinkedList loginlist; + bool Locked; + uint16 WorldTCPPort; + std::string WorldIP; + bool TelnetEnabled; + int32 MaxClients; + bool WorldHTTPEnabled; + uint16 WorldHTTPPort; + std::string WorldHTTPMimeFile; + std::string SharedKey; - // From - std::string ChatHost; - uint16 ChatPort; + // From + std::string ChatHost; + uint16 ChatPort; - // From - std::string MailHost; - uint16 MailPort; + // From + std::string MailHost; + uint16 MailPort; - // From - std::string DatabaseHost; - std::string DatabaseUsername; - std::string DatabasePassword; - std::string DatabaseDB; - uint16 DatabasePort; + // From + std::string DatabaseHost; + std::string DatabaseUsername; + std::string DatabasePassword; + std::string DatabaseDB; + uint16 DatabasePort; - // From // QueryServ - std::string QSDatabaseHost; - std::string QSDatabaseUsername; - std::string QSDatabasePassword; - std::string QSDatabaseDB; - uint16 QSDatabasePort; + // From // QueryServ + std::string QSDatabaseHost; + std::string QSDatabaseUsername; + std::string QSDatabasePassword; + std::string QSDatabaseDB; + uint16 QSDatabasePort; - // From - std::string SpellsFile; - std::string OpCodesFile; - std::string EQTimeFile; - std::string LogSettingsFile; + // From + std::string SpellsFile; + std::string OpCodesFile; + std::string EQTimeFile; + std::string LogSettingsFile; - // From - std::string MapDir; - std::string QuestDir; - std::string PluginDir; + // From + std::string MapDir; + std::string QuestDir; + std::string PluginDir; - // From - std::string LogPrefix; - std::string LogSuffix; - std::string ZoneExe; - uint32 RestartWait; - uint32 TerminateWait; - uint32 InitialBootWait; - uint32 ZoneBootInterval; + // From + std::string LogPrefix; + std::string LogSuffix; + std::string ZoneExe; + uint32 RestartWait; + uint32 TerminateWait; + uint32 InitialBootWait; + uint32 ZoneBootInterval; - // From - uint16 ZonePortLow; - uint16 ZonePortHigh; - uint8 DefaultStatus; + // From + uint16 ZonePortLow; + uint16 ZonePortHigh; + uint8 DefaultStatus; // uint16 DynamicCount; // map StaticZones; -protected: + protected: - static EQEmuConfig *_config; + static EQEmuConfig *_config; - static std::string ConfigFile; + static std::string ConfigFile; #define ELEMENT(name) \ void do_##name(TiXmlElement *ele); - #include "eqemu_config_elements.h" +#include "eqemu_config_elements.h" - EQEmuConfig() { - // import the needed handler prototypes + EQEmuConfig() + { + // import the needed handler prototypes #define ELEMENT(name) \ - Handlers[#name]=(ElementHandler)&EQEmuConfig::do_##name; - #include "eqemu_config_elements.h" + Handlers[#name]=(ElementHandler)&EQEmuConfig::do_##name; +#include "eqemu_config_elements.h" + // Set sane defaults + // Login server + LoginHost = "eqemulator.net"; + LoginPort = 5998; + // World + Locked = false; + WorldTCPPort = 9000; + TelnetEnabled = false; + WorldHTTPEnabled = false; + WorldHTTPPort = 9080; + WorldHTTPMimeFile = "mime.types"; + SharedKey = ""; //blank disables authentication + // Mail + ChatHost = "eqchat.eqemulator.net"; + ChatPort = 7778; + // Mail + MailHost = "eqmail.eqemulator.net"; + MailPort = 7779; + // Mysql + DatabaseHost = "localhost"; + DatabasePort = 3306; + DatabaseUsername = "eq"; + DatabasePassword = "eq"; + DatabaseDB = "eq"; + // QueryServ Database + QSDatabaseHost = "localhost"; + QSDatabasePort = 3306; + QSDatabaseUsername = "eq"; + QSDatabasePassword = "eq"; + QSDatabaseDB = "eq"; + // Files + SpellsFile = "spells_us.txt"; + OpCodesFile = "opcodes.conf"; + EQTimeFile = "eqtime.cfg"; + LogSettingsFile = "log.ini"; + // Dirs + MapDir = "Maps"; + QuestDir = "quests"; + PluginDir = "plugins"; + // Launcher + LogPrefix = "logs/zone-"; + LogSuffix = ".log"; + RestartWait = 10000; //milliseconds + TerminateWait = 10000; //milliseconds + InitialBootWait = 20000; //milliseconds + ZoneBootInterval = 2000; //milliseconds + #ifdef WIN32 + ZoneExe = "zone.exe"; + #else + ZoneExe = "./zone"; + #endif + // Zones + ZonePortLow = 7000; + ZonePortHigh = 7999; + DefaultStatus = 0; + // For where zones need to connect to. + WorldIP = "127.0.0.1"; + // Dynamics to start + //DynamicCount=5; + MaxClients = -1; + LoginCount = 0; + } + virtual ~EQEmuConfig() {} - // Set sane defaults + public: - // Login server - LoginHost="eqemulator.net"; - LoginPort=5998; + // Produce a const singleton + static const EQEmuConfig *get() + { + if (_config == nullptr) { + LoadConfig(); + } + return (_config); + } - // World - Locked=false; - WorldTCPPort=9000; - TelnetEnabled=false; - WorldHTTPEnabled=false; - WorldHTTPPort=9080; - WorldHTTPMimeFile="mime.types"; - SharedKey = ""; //blank disables authentication + // Allow the use to set the conf file to be used. + static void SetConfigFile(std::string file) + { + EQEmuConfig::ConfigFile = file; + } - // Mail - ChatHost="eqchat.eqemulator.net"; - ChatPort=7778; + // Load the config + static bool LoadConfig() + { + if (_config != nullptr) { + delete _config; + } + _config = new EQEmuConfig; + return _config->ParseFile(EQEmuConfig::ConfigFile.c_str(), "server"); + } - // Mail - MailHost="eqmail.eqemulator.net"; - MailPort=7779; - - // Mysql - DatabaseHost="localhost"; - DatabasePort=3306; - DatabaseUsername="eq"; - DatabasePassword="eq"; - DatabaseDB="eq"; - - // QueryServ Database - QSDatabaseHost="localhost"; - QSDatabasePort=3306; - QSDatabaseUsername="eq"; - QSDatabasePassword="eq"; - QSDatabaseDB="eq"; - - // Files - SpellsFile="spells_us.txt"; - OpCodesFile="opcodes.conf"; - EQTimeFile="eqtime.cfg"; - LogSettingsFile="log.ini"; - - // Dirs - MapDir="Maps"; - QuestDir="quests"; - PluginDir="plugins"; - - // Launcher - LogPrefix = "logs/zone-"; - LogSuffix = ".log"; - RestartWait = 10000; //milliseconds - TerminateWait = 10000; //milliseconds - InitialBootWait = 20000; //milliseconds - ZoneBootInterval = 2000; //milliseconds -#ifdef WIN32 - ZoneExe = "zone.exe"; -#else - ZoneExe = "./zone"; -#endif - - // Zones - ZonePortLow=7000; - ZonePortHigh=7999; - DefaultStatus=0; - - // For where zones need to connect to. - WorldIP="127.0.0.1"; - - // Dynamics to start - //DynamicCount=5; - - MaxClients=-1; - - LoginCount=0; - - } - virtual ~EQEmuConfig() {} - -public: - - // Produce a const singleton - static const EQEmuConfig *get() { - if (_config == nullptr) - LoadConfig(); - return(_config); - } - - // Allow the use to set the conf file to be used. - static void SetConfigFile(std::string file) { EQEmuConfig::ConfigFile = file; } - - // Load the config - static bool LoadConfig() { - if (_config != nullptr) - delete _config; - _config=new EQEmuConfig; - - return _config->ParseFile(EQEmuConfig::ConfigFile.c_str(),"server"); - } - - void Dump() const; + void Dump() const; }; #endif From 6f747c3678d66f44472c304c7c6ac62ebfed262a Mon Sep 17 00:00:00 2001 From: Akkadius Date: Mon, 15 Dec 2014 21:03:09 -0600 Subject: [PATCH 07/36] eqemu_config.cpp code structure cleanup --- common/eqemu_config.cpp | 631 +++++++++++++++++++++------------------- 1 file changed, 338 insertions(+), 293 deletions(-) diff --git a/common/eqemu_config.cpp b/common/eqemu_config.cpp index abeac70c5..2fe10ee9d 100644 --- a/common/eqemu_config.cpp +++ b/common/eqemu_config.cpp @@ -1,4 +1,4 @@ -/* EQEMu: Everquest Server Emulator +/* EQEMu: Everquest Server Emulator Copyright (C) 2001-2006 EQEMu Development Team (http://eqemulator.net) This program is free software; you can redistribute it and/or modify @@ -26,53 +26,54 @@ std::string EQEmuConfig::ConfigFile = "eqemu_config.xml"; EQEmuConfig *EQEmuConfig::_config = nullptr; -void EQEmuConfig::do_world(TiXmlElement *ele) { +void EQEmuConfig::do_world(TiXmlElement *ele) +{ const char *text; TiXmlElement * sub_ele;; - - text= ParseTextBlock(ele,"shortname"); - if (text) - ShortName=text; - - text = ParseTextBlock(ele,"longname"); - if (text) - LongName=text; - - text = ParseTextBlock(ele,"address",true); - if (text) - WorldAddress=text; - - text = ParseTextBlock(ele,"localaddress",true); - if (text) - LocalAddress=text; - - text = ParseTextBlock(ele,"maxclients",true); - if (text) - MaxClients=atoi(text); - + text = ParseTextBlock(ele, "shortname"); + if (text) { + ShortName = text; + } + text = ParseTextBlock(ele, "longname"); + if (text) { + LongName = text; + } + text = ParseTextBlock(ele, "address", true); + if (text) { + WorldAddress = text; + } + text = ParseTextBlock(ele, "localaddress", true); + if (text) { + LocalAddress = text; + } + text = ParseTextBlock(ele, "maxclients", true); + if (text) { + MaxClients = atoi(text); + } // Get the element - text = ParseTextBlock(ele,"key",true); - if (text) - SharedKey=text; - + text = ParseTextBlock(ele, "key", true); + if (text) { + SharedKey = text; + } // Get the element sub_ele = ele->FirstChildElement("loginserver"); if (sub_ele) { - text=ParseTextBlock(sub_ele,"host",true); - if (text) - LoginHost=text; - - text=ParseTextBlock(sub_ele,"port",true); - if (text) - LoginPort=atoi(text); - - text=ParseTextBlock(sub_ele,"account",true); - if (text) - LoginAccount=text; - - text=ParseTextBlock(sub_ele,"password",true); - if (text) - LoginPassword=text; + text = ParseTextBlock(sub_ele, "host", true); + if (text) { + LoginHost = text; + } + text = ParseTextBlock(sub_ele, "port", true); + if (text) { + LoginPort = atoi(text); + } + text = ParseTextBlock(sub_ele, "account", true); + if (text) { + LoginAccount = text; + } + text = ParseTextBlock(sub_ele, "password", true); + if (text) { + LoginPassword = text; + } } else { char str[32]; do { @@ -80,329 +81,373 @@ void EQEmuConfig::do_world(TiXmlElement *ele) { sub_ele = ele->FirstChildElement(str); if (sub_ele) { LoginConfig* loginconfig = new LoginConfig; - text=ParseTextBlock(sub_ele,"host",true); - if (text) - loginconfig->LoginHost=text; - - text=ParseTextBlock(sub_ele,"port",true); - if (text) - loginconfig->LoginPort=atoi(text); - - text=ParseTextBlock(sub_ele,"account",true); - if (text) - loginconfig->LoginAccount=text; - - text=ParseTextBlock(sub_ele,"password",true); - if (text) - loginconfig->LoginPassword=text; + text = ParseTextBlock(sub_ele, "host", true); + if (text) { + loginconfig->LoginHost = text; + } + text = ParseTextBlock(sub_ele, "port", true); + if (text) { + loginconfig->LoginPort = atoi(text); + } + text = ParseTextBlock(sub_ele, "account", true); + if (text) { + loginconfig->LoginAccount = text; + } + text = ParseTextBlock(sub_ele, "password", true); + if (text) { + loginconfig->LoginPassword = text; + } loginlist.Insert(loginconfig); } - } while(sub_ele); + } while (sub_ele); } - // Check for locked sub_ele = ele->FirstChildElement("locked"); - if (sub_ele != nullptr) - Locked=true; - + if (sub_ele != nullptr) { + Locked = true; + } // Get the element sub_ele = ele->FirstChildElement("tcp"); - if(sub_ele != nullptr) { - + if (sub_ele != nullptr) { text = sub_ele->Attribute("ip"); - if (text) - WorldIP=text; - + if (text) { + WorldIP = text; + } text = sub_ele->Attribute("port"); - if (text) - WorldTCPPort=atoi(text); - + if (text) { + WorldTCPPort = atoi(text); + } text = sub_ele->Attribute("telnet"); - if (text && !strcasecmp(text,"enabled")) - TelnetEnabled=true; - + if (text && !strcasecmp(text, "enabled")) { + TelnetEnabled = true; + } } - // Get the element sub_ele = ele->FirstChildElement("http"); - if(sub_ele != nullptr) { - + if (sub_ele != nullptr) { // text = sub_ele->Attribute("ip"); // if (text) // WorldIP=text; - text = sub_ele->Attribute("mimefile"); - if (text) - WorldHTTPMimeFile=text; - + if (text) { + WorldHTTPMimeFile = text; + } text = sub_ele->Attribute("port"); - if (text) - WorldHTTPPort=atoi(text); - + if (text) { + WorldHTTPPort = atoi(text); + } text = sub_ele->Attribute("enabled"); - if (text && !strcasecmp(text,"true")) - WorldHTTPEnabled=true; - + if (text && !strcasecmp(text, "true")) { + WorldHTTPEnabled = true; + } } } -void EQEmuConfig::do_chatserver(TiXmlElement *ele) { +void EQEmuConfig::do_chatserver(TiXmlElement *ele) +{ const char *text; - - text=ParseTextBlock(ele,"host",true); - if (text) - ChatHost=text; - - text=ParseTextBlock(ele,"port",true); - if (text) - ChatPort=atoi(text); + text = ParseTextBlock(ele, "host", true); + if (text) { + ChatHost = text; + } + text = ParseTextBlock(ele, "port", true); + if (text) { + ChatPort = atoi(text); + } } -void EQEmuConfig::do_mailserver(TiXmlElement *ele) { +void EQEmuConfig::do_mailserver(TiXmlElement *ele) +{ const char *text; - - text=ParseTextBlock(ele,"host",true); - if (text) - MailHost=text; - - text=ParseTextBlock(ele,"port",true); - if (text) - MailPort=atoi(text); + text = ParseTextBlock(ele, "host", true); + if (text) { + MailHost = text; + } + text = ParseTextBlock(ele, "port", true); + if (text) { + MailPort = atoi(text); + } } -void EQEmuConfig::do_database(TiXmlElement *ele) { +void EQEmuConfig::do_database(TiXmlElement *ele) +{ const char *text; - - text=ParseTextBlock(ele,"host",true); - if (text) - DatabaseHost=text; - - text=ParseTextBlock(ele,"port",true); - if (text) - DatabasePort=atoi(text); - - text=ParseTextBlock(ele,"username",true); - if (text) - DatabaseUsername=text; - - text=ParseTextBlock(ele,"password",true); - if (text) - DatabasePassword=text; - - text=ParseTextBlock(ele,"db",true); - if (text) - DatabaseDB=text; + text = ParseTextBlock(ele, "host", true); + if (text) { + DatabaseHost = text; + } + text = ParseTextBlock(ele, "port", true); + if (text) { + DatabasePort = atoi(text); + } + text = ParseTextBlock(ele, "username", true); + if (text) { + DatabaseUsername = text; + } + text = ParseTextBlock(ele, "password", true); + if (text) { + DatabasePassword = text; + } + text = ParseTextBlock(ele, "db", true); + if (text) { + DatabaseDB = text; + } } -void EQEmuConfig::do_qsdatabase(TiXmlElement *ele) { +void EQEmuConfig::do_qsdatabase(TiXmlElement *ele) +{ const char *text; - - text=ParseTextBlock(ele,"host",true); - if (text) - QSDatabaseHost=text; - - text=ParseTextBlock(ele,"port",true); - if (text) - QSDatabasePort=atoi(text); - - text=ParseTextBlock(ele,"username",true); - if (text) - QSDatabaseUsername=text; - - text=ParseTextBlock(ele,"password",true); - if (text) - QSDatabasePassword=text; - - text=ParseTextBlock(ele,"db",true); - if (text) - QSDatabaseDB=text; + text = ParseTextBlock(ele, "host", true); + if (text) { + QSDatabaseHost = text; + } + text = ParseTextBlock(ele, "port", true); + if (text) { + QSDatabasePort = atoi(text); + } + text = ParseTextBlock(ele, "username", true); + if (text) { + QSDatabaseUsername = text; + } + text = ParseTextBlock(ele, "password", true); + if (text) { + QSDatabasePassword = text; + } + text = ParseTextBlock(ele, "db", true); + if (text) { + QSDatabaseDB = text; + } } -void EQEmuConfig::do_zones(TiXmlElement *ele) { +void EQEmuConfig::do_zones(TiXmlElement *ele) +{ const char *text; TiXmlElement *sub_ele; // TiXmlNode *node,*sub_node; - - text=ParseTextBlock(ele,"defaultstatus",true); - if (text) - DefaultStatus=atoi(text); - + text = ParseTextBlock(ele, "defaultstatus", true); + if (text) { + DefaultStatus = atoi(text); + } // Get the element sub_ele = ele->FirstChildElement("ports"); - if(sub_ele != nullptr) { - + if (sub_ele != nullptr) { text = sub_ele->Attribute("low"); - if (text) - ZonePortLow=atoi(text);; - + if (text) { + ZonePortLow = atoi(text); + }; text = sub_ele->Attribute("high"); - if (text) - ZonePortHigh=atoi(text); + if (text) { + ZonePortHigh = atoi(text); + } } } -void EQEmuConfig::do_files(TiXmlElement *ele) { +void EQEmuConfig::do_files(TiXmlElement *ele) +{ const char *text; - - text=ParseTextBlock(ele,"spells",true); - if (text) - SpellsFile=text; - - text=ParseTextBlock(ele,"opcodes",true); - if (text) - OpCodesFile=text; - - text=ParseTextBlock(ele,"logsettings",true); - if (text) - LogSettingsFile=text; - - text=ParseTextBlock(ele,"eqtime",true); - if (text) - EQTimeFile=text; + text = ParseTextBlock(ele, "spells", true); + if (text) { + SpellsFile = text; + } + text = ParseTextBlock(ele, "opcodes", true); + if (text) { + OpCodesFile = text; + } + text = ParseTextBlock(ele, "logsettings", true); + if (text) { + LogSettingsFile = text; + } + text = ParseTextBlock(ele, "eqtime", true); + if (text) { + EQTimeFile = text; + } } -void EQEmuConfig::do_directories(TiXmlElement *ele) { +void EQEmuConfig::do_directories(TiXmlElement *ele) +{ const char *text; - - text=ParseTextBlock(ele,"maps",true); - if (text) - MapDir=text; - - text=ParseTextBlock(ele,"quests",true); - if (text) - QuestDir=text; - - text=ParseTextBlock(ele,"plugins",true); - if (text) - PluginDir=text; - + text = ParseTextBlock(ele, "maps", true); + if (text) { + MapDir = text; + } + text = ParseTextBlock(ele, "quests", true); + if (text) { + QuestDir = text; + } + text = ParseTextBlock(ele, "plugins", true); + if (text) { + PluginDir = text; + } } -void EQEmuConfig::do_launcher(TiXmlElement *ele) { +void EQEmuConfig::do_launcher(TiXmlElement *ele) +{ const char *text; TiXmlElement *sub_ele; - - text=ParseTextBlock(ele,"logprefix",true); - if (text) + text = ParseTextBlock(ele, "logprefix", true); + if (text) { LogPrefix = text; - - text=ParseTextBlock(ele,"logsuffix",true); - if (text) + } + text = ParseTextBlock(ele, "logsuffix", true); + if (text) { LogSuffix = text; - + } // Get the element - text = ParseTextBlock(ele,"exe",true); - if (text) + text = ParseTextBlock(ele, "exe", true); + if (text) { ZoneExe = text; - + } // Get the element sub_ele = ele->FirstChildElement("timers"); - if(sub_ele != nullptr) { + if (sub_ele != nullptr) { text = sub_ele->Attribute("restart"); - if (text) + if (text) { RestartWait = atoi(text); - + } text = sub_ele->Attribute("reterminate"); - if (text) + if (text) { TerminateWait = atoi(text); - + } text = sub_ele->Attribute("initial"); - if (text) + if (text) { InitialBootWait = atoi(text); - + } text = sub_ele->Attribute("interval"); - if (text) + if (text) { ZoneBootInterval = atoi(text); + } } } -std::string EQEmuConfig::GetByName(const std::string &var_name) const { - if(var_name == "ShortName") - return(ShortName); - if(var_name == "LongName") - return(LongName); - if(var_name == "WorldAddress") - return(WorldAddress); - if(var_name == "LoginHost") - return(LoginHost); - if(var_name == "LoginAccount") - return(LoginAccount); - if(var_name == "LoginPassword") - return(LoginPassword); - if(var_name == "LoginPort") - return(itoa(LoginPort)); - if(var_name == "Locked") - return(Locked?"true":"false"); - if(var_name == "WorldTCPPort") - return(itoa(WorldTCPPort)); - if(var_name == "WorldIP") - return(WorldIP); - if(var_name == "TelnetEnabled") - return(TelnetEnabled?"true":"false"); - if(var_name == "WorldHTTPPort") - return(itoa(WorldHTTPPort)); - if(var_name == "WorldHTTPMimeFile") - return(WorldHTTPMimeFile); - if(var_name == "WorldHTTPEnabled") - return(WorldHTTPEnabled?"true":"false"); - if(var_name == "ChatHost") - return(ChatHost); - if(var_name == "ChatPort") - return(itoa(ChatPort)); - if(var_name == "MailHost") - return(MailHost); - if(var_name == "MailPort") - return(itoa(MailPort)); - if(var_name == "DatabaseHost") - return(DatabaseHost); - if(var_name == "DatabaseUsername") - return(DatabaseUsername); - if(var_name == "DatabasePassword") - return(DatabasePassword); - if(var_name == "DatabaseDB") - return(DatabaseDB); - if(var_name == "DatabasePort") - return(itoa(DatabasePort)); - if(var_name == "QSDatabaseHost") - return(QSDatabaseHost); - if(var_name == "QSDatabaseUsername") - return(QSDatabaseUsername); - if(var_name == "QSDatabasePassword") - return(QSDatabasePassword); - if(var_name == "QSDatabaseDB") - return(QSDatabaseDB); - if(var_name == "QSDatabasePort") - return(itoa(QSDatabasePort)); - if(var_name == "SpellsFile") - return(SpellsFile); - if(var_name == "OpCodesFile") - return(OpCodesFile); - if(var_name == "EQTimeFile") - return(EQTimeFile); - if(var_name == "LogSettingsFile") - return(LogSettingsFile); - if(var_name == "MapDir") - return(MapDir); - if(var_name == "QuestDir") - return(QuestDir); - if(var_name == "PluginDir") - return(PluginDir); - if(var_name == "LogPrefix") - return(LogPrefix); - if(var_name == "LogSuffix") - return(LogSuffix); - if(var_name == "ZoneExe") - return(ZoneExe); - if(var_name == "ZonePortLow") - return(itoa(ZonePortLow)); - if(var_name == "ZonePortHigh") - return(itoa(ZonePortHigh)); - if(var_name == "DefaultStatus") - return(itoa(DefaultStatus)); +std::string EQEmuConfig::GetByName(const std::string &var_name) const +{ + if (var_name == "ShortName") { + return (ShortName); + } + if (var_name == "LongName") { + return (LongName); + } + if (var_name == "WorldAddress") { + return (WorldAddress); + } + if (var_name == "LoginHost") { + return (LoginHost); + } + if (var_name == "LoginAccount") { + return (LoginAccount); + } + if (var_name == "LoginPassword") { + return (LoginPassword); + } + if (var_name == "LoginPort") { + return (itoa(LoginPort)); + } + if (var_name == "Locked") { + return (Locked ? "true" : "false"); + } + if (var_name == "WorldTCPPort") { + return (itoa(WorldTCPPort)); + } + if (var_name == "WorldIP") { + return (WorldIP); + } + if (var_name == "TelnetEnabled") { + return (TelnetEnabled ? "true" : "false"); + } + if (var_name == "WorldHTTPPort") { + return (itoa(WorldHTTPPort)); + } + if (var_name == "WorldHTTPMimeFile") { + return (WorldHTTPMimeFile); + } + if (var_name == "WorldHTTPEnabled") { + return (WorldHTTPEnabled ? "true" : "false"); + } + if (var_name == "ChatHost") { + return (ChatHost); + } + if (var_name == "ChatPort") { + return (itoa(ChatPort)); + } + if (var_name == "MailHost") { + return (MailHost); + } + if (var_name == "MailPort") { + return (itoa(MailPort)); + } + if (var_name == "DatabaseHost") { + return (DatabaseHost); + } + if (var_name == "DatabaseUsername") { + return (DatabaseUsername); + } + if (var_name == "DatabasePassword") { + return (DatabasePassword); + } + if (var_name == "DatabaseDB") { + return (DatabaseDB); + } + if (var_name == "DatabasePort") { + return (itoa(DatabasePort)); + } + if (var_name == "QSDatabaseHost") { + return (QSDatabaseHost); + } + if (var_name == "QSDatabaseUsername") { + return (QSDatabaseUsername); + } + if (var_name == "QSDatabasePassword") { + return (QSDatabasePassword); + } + if (var_name == "QSDatabaseDB") { + return (QSDatabaseDB); + } + if (var_name == "QSDatabasePort") { + return (itoa(QSDatabasePort)); + } + if (var_name == "SpellsFile") { + return (SpellsFile); + } + if (var_name == "OpCodesFile") { + return (OpCodesFile); + } + if (var_name == "EQTimeFile") { + return (EQTimeFile); + } + if (var_name == "LogSettingsFile") { + return (LogSettingsFile); + } + if (var_name == "MapDir") { + return (MapDir); + } + if (var_name == "QuestDir") { + return (QuestDir); + } + if (var_name == "PluginDir") { + return (PluginDir); + } + if (var_name == "LogPrefix") { + return (LogPrefix); + } + if (var_name == "LogSuffix") { + return (LogSuffix); + } + if (var_name == "ZoneExe") { + return (ZoneExe); + } + if (var_name == "ZonePortLow") { + return (itoa(ZonePortLow)); + } + if (var_name == "ZonePortHigh") { + return (itoa(ZonePortHigh)); + } + if (var_name == "DefaultStatus") { + return (itoa(DefaultStatus)); + } // if(var_name == "DynamicCount") // return(itoa(DynamicCount)); - return(""); + return (""); } void EQEmuConfig::Dump() const From a612f289e7c48a7c6fd85b68dba0aeacae3ac89d Mon Sep 17 00:00:00 2001 From: Akkadius Date: Mon, 15 Dec 2014 21:05:35 -0600 Subject: [PATCH 08/36] Another Linux fix --- common/eq_stream_factory.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/common/eq_stream_factory.cpp b/common/eq_stream_factory.cpp index 5f76a28ee..0b940c18f 100644 --- a/common/eq_stream_factory.cpp +++ b/common/eq_stream_factory.cpp @@ -16,6 +16,7 @@ #endif #include +#include #include "op_codes.h" From 3d8777084cafc4bd88d33abab57af96172213e53 Mon Sep 17 00:00:00 2001 From: Akkadius Date: Mon, 15 Dec 2014 21:10:14 -0600 Subject: [PATCH 09/36] db_update_manifest.txt fix --- utils/sql/db_update_manifest.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/sql/db_update_manifest.txt b/utils/sql/db_update_manifest.txt index 54c82c8d9..432d97183 100644 --- a/utils/sql/db_update_manifest.txt +++ b/utils/sql/db_update_manifest.txt @@ -314,7 +314,7 @@ 9058|2014_11_26_InventoryTableUpdate.sql|SHOW COLUMNS FROM `inventory` LIKE 'ornamenticon'|empty| 9059|2014_12_01_mercs_table_update.sql|SHOW COLUMNS FROM `mercs` LIKE 'MercSize'|empty| 9060|2014_12_09_items_table_update.sql|SHOW COLUMNS FROM `items` LIKE 'herosforgemodel'|empty| -9061|2014_12_11_inventory_table_update.sql|SHOW COLUMNS FROM `inventory` LIKE 'ornament_hero_model'|empty| +9061|2014_12_13_inventory_table_update.sql|SHOW COLUMNS FROM `inventory` LIKE 'ornament_hero_model'|empty| 9062|2014_12_15_multiple_table_updates.sql|SHOW COLUMNS FROM `items` LIKE 'augslot6type'|empty| # Upgrade conditions: From 0c21f56ff39f8c187360ca32b2fc0702b85e3ecd Mon Sep 17 00:00:00 2001 From: Akkadius Date: Mon, 15 Dec 2014 21:57:07 -0600 Subject: [PATCH 10/36] faction.cpp & .h header include cleanup and faction.cpp code structure style change --- common/faction.cpp | 199 +++++++++++++++++++++++++-------------------- common/faction.h | 1 - 2 files changed, 113 insertions(+), 87 deletions(-) diff --git a/common/faction.cpp b/common/faction.cpp index 576971ec5..65524f623 100644 --- a/common/faction.cpp +++ b/common/faction.cpp @@ -1,4 +1,4 @@ -/* EQEMu: Everquest Server Emulator +/* EQEMu: Everquest Server Emulator Copyright (C) 2001-2002 EQEMu Development Team (http://eqemu.org) This program is free software; you can redistribute it and/or modify @@ -15,34 +15,35 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "debug.h" + #include "faction.h" #include "races.h" -const char *FactionValueToString(FACTION_VALUE fv) { - switch(fv) { - case FACTION_ALLY: - return("Ally"); - case FACTION_WARMLY: - return("Warmly"); - case FACTION_KINDLY: - return("Kindly"); - case FACTION_AMIABLE: - return("Amiable"); - case FACTION_INDIFFERENT: - return("Indifferent"); - case FACTION_APPREHENSIVE: - return("Apprehensive"); - case FACTION_DUBIOUS: - return("Dubious"); - case FACTION_THREATENLY: - return("Threatenly"); - case FACTION_SCOWLS: - return("Scowls, ready to attack."); - default: - break; +const char *FactionValueToString(FACTION_VALUE fv) +{ + switch (fv) { + case FACTION_ALLY: + return ("Ally"); + case FACTION_WARMLY: + return ("Warmly"); + case FACTION_KINDLY: + return ("Kindly"); + case FACTION_AMIABLE: + return ("Amiable"); + case FACTION_INDIFFERENT: + return ("Indifferent"); + case FACTION_APPREHENSIVE: + return ("Apprehensive"); + case FACTION_DUBIOUS: + return ("Dubious"); + case FACTION_THREATENLY: + return ("Threatenly"); + case FACTION_SCOWLS: + return ("Scowls, ready to attack."); + default: + break; } - return("Unknown Faction Con"); + return ("Unknown Faction Con"); } @@ -55,35 +56,56 @@ const char *FactionValueToString(FACTION_VALUE fv) { FACTION_VALUE CalculateFaction(FactionMods* fm, int32 tmpCharacter_value) { int32 character_value = tmpCharacter_value; - if (fm) + if (fm) { character_value += fm->base + fm->class_mod + fm->race_mod + fm->deity_mod; - if(character_value >= 1101) return FACTION_ALLY; - if(character_value >= 701 && character_value <= 1100) return FACTION_WARMLY; - if(character_value >= 401 && character_value <= 700) return FACTION_KINDLY; - if(character_value >= 101 && character_value <= 400) return FACTION_AMIABLE; - if(character_value >= 0 && character_value <= 100) return FACTION_INDIFFERENT; - if(character_value >= -100 && character_value <= -1) return FACTION_APPREHENSIVE; - if(character_value >= -700 && character_value <= -101) return FACTION_DUBIOUS; - if(character_value >= -999 && character_value <= -701) return FACTION_THREATENLY; - if(character_value <= -1000) return FACTION_SCOWLS; + } + if (character_value >= 1101) { + return FACTION_ALLY; + } + if (character_value >= 701 && character_value <= 1100) { + return FACTION_WARMLY; + } + if (character_value >= 401 && character_value <= 700) { + return FACTION_KINDLY; + } + if (character_value >= 101 && character_value <= 400) { + return FACTION_AMIABLE; + } + if (character_value >= 0 && character_value <= 100) { + return FACTION_INDIFFERENT; + } + if (character_value >= -100 && character_value <= -1) { + return FACTION_APPREHENSIVE; + } + if (character_value >= -700 && character_value <= -101) { + return FACTION_DUBIOUS; + } + if (character_value >= -999 && character_value <= -701) { + return FACTION_THREATENLY; + } + if (character_value <= -1000) { + return FACTION_SCOWLS; + } return FACTION_INDIFFERENT; } // this function should check if some races have more than one race define bool IsOfEqualRace(int r1, int r2) { - if (r1 == r2) + if (r1 == r2) { return true; + } // TODO: add more values - switch(r1) - { - case DARK_ELF: - if (r2 == 77) - return true; - break; - case BARBARIAN: - if (r2 == 90) - return true; + switch (r1) { + case DARK_ELF: + if (r2 == 77) { + return true; + } + break; + case BARBARIAN: + if (r2 == 90) { + return true; + } } return false; } @@ -91,50 +113,55 @@ bool IsOfEqualRace(int r1, int r2) // trolls endure ogres, dark elves, ... bool IsOfIndiffRace(int r1, int r2) { - if (r1 == r2) + if (r1 == r2) { return true; + } // TODO: add more values - switch(r1) - { - case DARK_ELF: - case OGRE: - case TROLL: - if (r2 == OGRE || r2 == TROLL || r2 == DARK_ELF) + switch (r1) { + case DARK_ELF: + case OGRE: + case TROLL: + if (r2 == OGRE || r2 == TROLL || r2 == DARK_ELF) { + return true; + } + break; + case HUMAN: + case BARBARIAN: + case HALF_ELF: + case GNOME: + case HALFLING: + case WOOD_ELF: + if (r2 == HUMAN || + r2 == BARBARIAN || + r2 == ERUDITE || + r2 == HALF_ELF || + r2 == GNOME || + r2 == HALFLING || + r2 == DWARF || + r2 == HIGH_ELF || + r2 == WOOD_ELF) { + return true; + } + break; + case ERUDITE: + if (r2 == HUMAN || r2 == HALF_ELF) { + return true; + } + break; + case DWARF: + if (r2 == HALFLING || r2 == GNOME) { + return true; + } + break; + case HIGH_ELF: + if (r2 == WOOD_ELF) { + return true; + } + break; + case VAHSHIR: return true; - break; - case HUMAN: - case BARBARIAN: - case HALF_ELF: - case GNOME: - case HALFLING: - case WOOD_ELF: - if (r2 == HUMAN || - r2 == BARBARIAN || - r2 == ERUDITE || - r2 == HALF_ELF || - r2 == GNOME || - r2 == HALFLING || - r2 == DWARF || - r2 == HIGH_ELF || - r2 == WOOD_ELF) - return true; - break; - case ERUDITE: - if (r2 == HUMAN || r2 == HALF_ELF) - return true; - break; - case DWARF: - if (r2 == HALFLING || r2 == GNOME) - return true; - break; - case HIGH_ELF: - if (r2 == WOOD_ELF) - return true; - break; - case VAHSHIR: - return true; - case IKSAR: - return false; + case IKSAR: + return false; } return false; } diff --git a/common/faction.h b/common/faction.h index c98fc0916..a455b81e6 100644 --- a/common/faction.h +++ b/common/faction.h @@ -21,7 +21,6 @@ #include "types.h" #include "features.h" #include -#include enum FACTION_VALUE { FACTION_ALLY = 1, From 20200fd028c6a6fd9632e47e6645e89f76b6ed08 Mon Sep 17 00:00:00 2001 From: Akkadius Date: Mon, 15 Dec 2014 21:59:23 -0600 Subject: [PATCH 11/36] guild_base.cpp & .h include header cleanup --- common/guild_base.cpp | 1 - common/guild_base.h | 230 ++++++++++++++++++++++-------------------- 2 files changed, 118 insertions(+), 113 deletions(-) diff --git a/common/guild_base.cpp b/common/guild_base.cpp index e6df92569..06e108534 100644 --- a/common/guild_base.cpp +++ b/common/guild_base.cpp @@ -16,7 +16,6 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "debug.h" #include "guild_base.h" #include "database.h" #include "logsys.h" diff --git a/common/guild_base.h b/common/guild_base.h index b59244480..bfe14205e 100644 --- a/common/guild_base.h +++ b/common/guild_base.h @@ -3,146 +3,152 @@ #include "guilds.h" #include -#include #include class Database; -class CharGuildInfo { -public: - //fields from `characer_` - uint32 char_id; - std::string char_name; - uint8 class_; - uint16 level; - uint32 time_last_on; - uint32 zone_id; +class CharGuildInfo +{ + public: + //fields from `characer_` + uint32 char_id; + std::string char_name; + uint8 class_; + uint16 level; + uint32 time_last_on; + uint32 zone_id; - //fields from `guild_members` - uint32 guild_id; - uint8 rank; - bool tribute_enable; - uint32 total_tribute; - uint32 last_tribute; //timestamp - bool banker; - bool alt; - std::string public_note; + //fields from `guild_members` + uint32 guild_id; + uint8 rank; + bool tribute_enable; + uint32 total_tribute; + uint32 last_tribute; //timestamp + bool banker; + bool alt; + std::string public_note; }; //this object holds guild functionality shared between world and zone. -class BaseGuildManager { -public: - BaseGuildManager(); - virtual ~BaseGuildManager(); +class BaseGuildManager +{ + public: + BaseGuildManager(); + virtual ~BaseGuildManager(); - //this must be called before doing anything else with this object - void SetDatabase(Database *db) { m_db = db; } + //this must be called before doing anything else with this object + void SetDatabase(Database *db) + { + m_db = db; + } - bool LoadGuilds(); - bool RefreshGuild(uint32 guild_id); + bool LoadGuilds(); + bool RefreshGuild(uint32 guild_id); - //guild edit actions. - uint32 CreateGuild(const char* name, uint32 leader_char_id); - bool DeleteGuild(uint32 guild_id); - bool RenameGuild(uint32 guild_id, const char* name); - bool SetGuildMOTD(uint32 guild_id, const char* motd, const char *setter); - bool SetGuildURL(uint32 GuildID, const char* URL); - bool SetGuildChannel(uint32 GuildID, const char* Channel); + //guild edit actions. + uint32 CreateGuild(const char* name, uint32 leader_char_id); + bool DeleteGuild(uint32 guild_id); + bool RenameGuild(uint32 guild_id, const char* name); + bool SetGuildMOTD(uint32 guild_id, const char* motd, const char *setter); + bool SetGuildURL(uint32 GuildID, const char* URL); + bool SetGuildChannel(uint32 GuildID, const char* Channel); - //character edit actions - bool SetGuildLeader(uint32 guild_id, uint32 leader_char_id); - bool SetGuild(uint32 charid, uint32 guild_id, uint8 rank); - bool SetGuildRank(uint32 charid, uint8 rank); - bool SetBankerFlag(uint32 charid, bool is_banker); - bool ForceRankUpdate(uint32 charid); - bool GetAltFlag(uint32 CharID); - bool SetAltFlag(uint32 charid, bool is_alt); - bool GetBankerFlag(uint32 CharID); - bool SetTributeFlag(uint32 charid, bool enabled); - bool SetPublicNote(uint32 charid, const char *note); + //character edit actions + bool SetGuildLeader(uint32 guild_id, uint32 leader_char_id); + bool SetGuild(uint32 charid, uint32 guild_id, uint8 rank); + bool SetGuildRank(uint32 charid, uint8 rank); + bool SetBankerFlag(uint32 charid, bool is_banker); + bool ForceRankUpdate(uint32 charid); + bool GetAltFlag(uint32 CharID); + bool SetAltFlag(uint32 charid, bool is_alt); + bool GetBankerFlag(uint32 CharID); + bool SetTributeFlag(uint32 charid, bool enabled); + bool SetPublicNote(uint32 charid, const char *note); - //queries - bool GetCharInfo(const char *char_name, CharGuildInfo &into); - bool GetCharInfo(uint32 char_id, CharGuildInfo &into); - bool GetEntireGuild(uint32 guild_id, std::vector &members); //caller is responsible for deleting each pointer in the resulting vector. - bool GuildExists(uint32 guild_id) const; - bool GetGuildMOTD(uint32 guild_id, char *motd_buffer, char *setter_buffer) const; - bool GetGuildURL(uint32 GuildID, char *URLBuffer) const; - bool GetGuildChannel(uint32 GuildID, char *ChannelBuffer) const; - const char *GetRankName(uint32 guild_id, uint8 rank) const; - const char *GetGuildName(uint32 guild_id) const; - bool GetGuildNameByID(uint32 guild_id, std::string &into) const; - uint32 GetGuildIDByName(const char *GuildName); - bool IsGuildLeader(uint32 guild_id, uint32 char_id) const; - uint8 GetDisplayedRank(uint32 guild_id, uint8 rank, uint32 char_id) const; - bool CheckGMStatus(uint32 guild_id, uint8 status) const; - bool CheckPermission(uint32 guild_id, uint8 rank, GuildAction act) const; + //queries + bool GetCharInfo(const char *char_name, CharGuildInfo &into); + bool GetCharInfo(uint32 char_id, CharGuildInfo &into); + bool GetEntireGuild(uint32 guild_id, std::vector &members); //caller is responsible for deleting each pointer in the resulting vector. + bool GuildExists(uint32 guild_id) const; + bool GetGuildMOTD(uint32 guild_id, char *motd_buffer, char *setter_buffer) const; + bool GetGuildURL(uint32 GuildID, char *URLBuffer) const; + bool GetGuildChannel(uint32 GuildID, char *ChannelBuffer) const; + const char *GetRankName(uint32 guild_id, uint8 rank) const; + const char *GetGuildName(uint32 guild_id) const; + bool GetGuildNameByID(uint32 guild_id, std::string &into) const; + uint32 GetGuildIDByName(const char *GuildName); + bool IsGuildLeader(uint32 guild_id, uint32 char_id) const; + uint8 GetDisplayedRank(uint32 guild_id, uint8 rank, uint32 char_id) const; + bool CheckGMStatus(uint32 guild_id, uint8 status) const; + bool CheckPermission(uint32 guild_id, uint8 rank, GuildAction act) const; // uint32 Getguild_id(uint32 eqid); - uint32 FindGuildByLeader(uint32 leader) const; + uint32 FindGuildByLeader(uint32 leader) const; // void GetGuildMembers(uint32 guild_id,GuildMember_Struct* gms); - uint32 NumberInGuild(uint32 guild_id); + uint32 NumberInGuild(uint32 guild_id); // bool GetGuildRanks(uint32 guildeqid, GuildRanks_Struct* gr); // bool EditGuild(uint32 guild_id, uint8 ranknum, GuildRankLevel_Struct* grl); - uint8 *MakeGuildList(const char *head_name, uint32 &length) const; //make a guild list packet, returns ownership of the buffer. + uint8 *MakeGuildList(const char *head_name, uint32 &length) const; //make a guild list packet, returns ownership of the buffer. - static const char *const GuildActionNames[_MaxGuildAction]; - uint32 DoesAccountContainAGuildLeader(uint32 AccountID); + static const char *const GuildActionNames[_MaxGuildAction]; + uint32 DoesAccountContainAGuildLeader(uint32 AccountID); -protected: - //the methods which must be defined by base classes. - virtual void SendGuildRefresh(uint32 guild_id, bool name, bool motd, bool rank, bool relation) = 0; - virtual void SendCharRefresh(uint32 old_guild_id, uint32 guild_id, uint32 charid) = 0; - virtual void SendRankUpdate(uint32 CharID) = 0; - virtual void SendGuildDelete(uint32 guild_id) = 0; + protected: + //the methods which must be defined by base classes. + virtual void SendGuildRefresh(uint32 guild_id, bool name, bool motd, bool rank, bool relation) = 0; + virtual void SendCharRefresh(uint32 old_guild_id, uint32 guild_id, uint32 charid) = 0; + virtual void SendRankUpdate(uint32 CharID) = 0; + virtual void SendGuildDelete(uint32 guild_id) = 0; - uint32 DBCreateGuild(const char* name, uint32 leader_char_id); - bool DBDeleteGuild(uint32 guild_id); - bool DBRenameGuild(uint32 guild_id, const char* name); - bool DBSetGuildLeader(uint32 guild_id, uint32 leader_char_id); - bool DBSetGuildMOTD(uint32 guild_id, const char* motd, const char *setter); - bool DBSetGuildURL(uint32 GuildID, const char* URL); - bool DBSetGuildChannel(uint32 GuildID, const char* Channel); - bool DBSetGuild(uint32 charid, uint32 guild_id, uint8 rank); - bool DBSetGuildRank(uint32 charid, uint8 rank); - bool DBSetBankerFlag(uint32 charid, bool is_banker); - bool DBSetAltFlag(uint32 charid, bool is_alt); - bool DBSetTributeFlag(uint32 charid, bool enabled); - bool DBSetPublicNote(uint32 charid, const char *note); - bool QueryWithLogging(std::string query, const char *errmsg); + uint32 DBCreateGuild(const char* name, uint32 leader_char_id); + bool DBDeleteGuild(uint32 guild_id); + bool DBRenameGuild(uint32 guild_id, const char* name); + bool DBSetGuildLeader(uint32 guild_id, uint32 leader_char_id); + bool DBSetGuildMOTD(uint32 guild_id, const char* motd, const char *setter); + bool DBSetGuildURL(uint32 GuildID, const char* URL); + bool DBSetGuildChannel(uint32 GuildID, const char* Channel); + bool DBSetGuild(uint32 charid, uint32 guild_id, uint8 rank); + bool DBSetGuildRank(uint32 charid, uint8 rank); + bool DBSetBankerFlag(uint32 charid, bool is_banker); + bool DBSetAltFlag(uint32 charid, bool is_alt); + bool DBSetTributeFlag(uint32 charid, bool enabled); + bool DBSetPublicNote(uint32 charid, const char *note); + bool QueryWithLogging(std::string query, const char *errmsg); // void DBSetPublicNote(uint32 guild_id,char* charname, char* note); - bool LocalDeleteGuild(uint32 guild_id); + bool LocalDeleteGuild(uint32 guild_id); - class RankInfo { - public: - RankInfo(); - std::string name; - bool permissions[_MaxGuildAction]; - }; - class GuildInfo { - public: - GuildInfo(); - std::string name; - std::string motd; - std::string motd_setter; - std::string url; - std::string channel; + class RankInfo + { + public: + RankInfo(); + std::string name; + bool permissions[_MaxGuildAction]; + }; + class GuildInfo + { + public: + GuildInfo(); + std::string name; + std::string motd; + std::string motd_setter; + std::string url; + std::string channel; - uint32 leader_char_id; - uint8 minstatus; - //tribute is not in here on purpose, since it is only valid in world! - RankInfo ranks[GUILD_MAX_RANK+1]; - }; + uint32 leader_char_id; + uint8 minstatus; + //tribute is not in here on purpose, since it is only valid in world! + RankInfo ranks[GUILD_MAX_RANK + 1]; + }; - std::map m_guilds; //we own the pointers in this map - void ClearGuilds(); //clears internal structure + std::map m_guilds; //we own the pointers in this map + void ClearGuilds(); //clears internal structure - Database *m_db; //we do not own this + Database *m_db; //we do not own this - bool _StoreGuildDB(uint32 guild_id); - GuildInfo *_CreateGuild(uint32 guild_id, const char *guild_name, uint32 account_id, uint8 minstatus, const char *guild_motd, const char *motd_setter, const char *Channel, const char *URL); - uint32 _GetFreeGuildID(); + bool _StoreGuildDB(uint32 guild_id); + GuildInfo *_CreateGuild(uint32 guild_id, const char *guild_name, uint32 account_id, uint8 minstatus, const char *guild_motd, const char *motd_setter, const char *Channel, const char *URL); + uint32 _GetFreeGuildID(); }; From edec2ad24cf23be050e1fa2ef62cae91216b350e Mon Sep 17 00:00:00 2001 From: Akkadius Date: Mon, 15 Dec 2014 22:04:39 -0600 Subject: [PATCH 12/36] faction.cpp linux build fix --- common/faction.cpp | 2 ++ common/guilds.cpp | 1 + 2 files changed, 3 insertions(+) diff --git a/common/faction.cpp b/common/faction.cpp index 65524f623..c387f8453 100644 --- a/common/faction.cpp +++ b/common/faction.cpp @@ -19,6 +19,8 @@ #include "faction.h" #include "races.h" +#include + const char *FactionValueToString(FACTION_VALUE fv) { switch (fv) { diff --git a/common/guilds.cpp b/common/guilds.cpp index ddd5d9a59..6098c2e1b 100644 --- a/common/guilds.cpp +++ b/common/guilds.cpp @@ -15,6 +15,7 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ + #include "../common/debug.h" #include "misc_functions.h" #include "guilds.h" From 6d0b44d69e3d90794ba75c3f6f158baabe6f6e51 Mon Sep 17 00:00:00 2001 From: Akkadius Date: Mon, 15 Dec 2014 22:10:06 -0600 Subject: [PATCH 13/36] item.cpp & .h header include cleanup --- common/item.cpp | 13 +++++-------- common/item.h | 11 +++-------- 2 files changed, 8 insertions(+), 16 deletions(-) diff --git a/common/item.cpp b/common/item.cpp index df4997470..1b99ad779 100644 --- a/common/item.cpp +++ b/common/item.cpp @@ -16,19 +16,16 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "debug.h" -#include "string_util.h" -#include "item.h" -#include "database.h" -#include "misc.h" -#include "races.h" -#include "shareddb.h" #include "classes.h" +#include "debug.h" +#include "item.h" +#include "races.h" #include "rulesys.h" +#include "shareddb.h" +#include "string_util.h" #include -#include #include std::list dirty_inst; diff --git a/common/item.h b/common/item.h index 995f121d6..b0aa06466 100644 --- a/common/item.h +++ b/common/item.h @@ -23,21 +23,16 @@ #ifndef __ITEM_H #define __ITEM_H -class ItemInst; // Item belonging to a client (contains info on item, dye, augments, charges, etc) -class ItemInstQueue; // Queue of ItemInst objects (i.e., cursor) -class Inventory; // Character inventory class ItemParse; // Parses item packets class EvolveInfo; // Stores information about an evolving item family -#include -#include -#include -#include -#include "../common/eq_packet_structs.h" #include "../common/eq_constants.h" #include "../common/item_struct.h" #include "../common/timer.h" +#include +#include + // Helper typedefs typedef std::list::const_iterator iter_queue; typedef std::map::const_iterator iter_inst; From 7887511589dc5fbb305c652860ba0cd38dab6806 Mon Sep 17 00:00:00 2001 From: Akkadius Date: Mon, 15 Dec 2014 22:12:56 -0600 Subject: [PATCH 14/36] faction linux build fix for real --- common/faction.cpp | 2 -- common/faction.h | 1 + 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/common/faction.cpp b/common/faction.cpp index c387f8453..65524f623 100644 --- a/common/faction.cpp +++ b/common/faction.cpp @@ -19,8 +19,6 @@ #include "faction.h" #include "races.h" -#include - const char *FactionValueToString(FACTION_VALUE fv) { switch (fv) { diff --git a/common/faction.h b/common/faction.h index a455b81e6..c98fc0916 100644 --- a/common/faction.h +++ b/common/faction.h @@ -21,6 +21,7 @@ #include "types.h" #include "features.h" #include +#include enum FACTION_VALUE { FACTION_ALLY = 1, From e9b72e0f7d227a18bf1326879228cb8fe7fcb1ac Mon Sep 17 00:00:00 2001 From: Akkadius Date: Mon, 15 Dec 2014 22:15:17 -0600 Subject: [PATCH 15/36] logsys_eqemu .cpp & .h include cleanup --- common/logsys.cpp | 7 ++++--- common/logsys_eqemu.cpp | 3 --- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/common/logsys.cpp b/common/logsys.cpp index 2b90c8b4a..c01baf04e 100644 --- a/common/logsys.cpp +++ b/common/logsys.cpp @@ -16,13 +16,14 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "logsys.h" #include "debug.h" +#include "eq_packet.h" +#include "logsys.h" +#include "misc.h" + #include #include #include -#include "misc.h" -#include "eq_packet.h" #define LOG_CATEGORY(category) #category , diff --git a/common/logsys_eqemu.cpp b/common/logsys_eqemu.cpp index b5f846b4a..e16de1055 100644 --- a/common/logsys_eqemu.cpp +++ b/common/logsys_eqemu.cpp @@ -21,9 +21,6 @@ #include "string_util.h" #include -#include - -#include void log_message(LogType type, const char *fmt, ...) { va_list args; From de32970d6ff0bc2bd6286edbfd5a057df3ca6561 Mon Sep 17 00:00:00 2001 From: Akkadius Date: Mon, 15 Dec 2014 22:16:30 -0600 Subject: [PATCH 16/36] add back in for linux --- common/guild_base.h | 1 + common/logsys_eqemu.cpp | 3 +++ 2 files changed, 4 insertions(+) diff --git a/common/guild_base.h b/common/guild_base.h index bfe14205e..ac8b1a895 100644 --- a/common/guild_base.h +++ b/common/guild_base.h @@ -3,6 +3,7 @@ #include "guilds.h" #include +#include #include class Database; diff --git a/common/logsys_eqemu.cpp b/common/logsys_eqemu.cpp index e16de1055..b5f846b4a 100644 --- a/common/logsys_eqemu.cpp +++ b/common/logsys_eqemu.cpp @@ -21,6 +21,9 @@ #include "string_util.h" #include +#include + +#include void log_message(LogType type, const char *fmt, ...) { va_list args; From f8a182584587c1d4330958a45c23e77dc3bdf032 Mon Sep 17 00:00:00 2001 From: Akkadius Date: Mon, 15 Dec 2014 22:21:44 -0600 Subject: [PATCH 17/36] misc_functions cleanup --- common/misc_functions.cpp | 4 +++- common/misc_functions.h | 2 -- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/common/misc_functions.cpp b/common/misc_functions.cpp index 81fc2434b..18171c0a8 100644 --- a/common/misc_functions.cpp +++ b/common/misc_functions.cpp @@ -15,11 +15,13 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ + + #include "../common/debug.h" #include "misc_functions.h" #include #include -#include + #ifndef WIN32 #include #include diff --git a/common/misc_functions.h b/common/misc_functions.h index a013423ff..610a86b04 100644 --- a/common/misc_functions.h +++ b/common/misc_functions.h @@ -19,8 +19,6 @@ #define MISCFUNCTIONS_H #include "types.h" -#include -#include #include #include From c1e5d8b7dc37a4bc63769e36bd20b95f118adae4 Mon Sep 17 00:00:00 2001 From: Akkadius Date: Mon, 15 Dec 2014 22:21:57 -0600 Subject: [PATCH 18/36] misc cleanup --- common/misc.cpp | 3 ++- common/mysql_request_result.h | 3 --- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/common/misc.cpp b/common/misc.cpp index b2e80e3bd..61ac556f5 100644 --- a/common/misc.cpp +++ b/common/misc.cpp @@ -9,13 +9,14 @@ #include #include #include + #ifndef WIN32 #include #endif + #include #include "misc.h" #include "types.h" -#include #include #define ENC(c) (((c) & 0x3f) + ' ') diff --git a/common/mysql_request_result.h b/common/mysql_request_result.h index ab84eeb18..b2d6fe3d1 100644 --- a/common/mysql_request_result.h +++ b/common/mysql_request_result.h @@ -9,9 +9,6 @@ #include #include "types.h" #include "mysql_request_row.h" -#include -#include -#include class MySQLRequestResult { private: From ffe447859a24d536016c42f1ef02a0ed46b7b8d3 Mon Sep 17 00:00:00 2001 From: Akkadius Date: Mon, 15 Dec 2014 22:23:49 -0600 Subject: [PATCH 19/36] opcode_map.cpp readability --- common/opcode_map.cpp | 590 +++++++++++++++++++++--------------------- 1 file changed, 295 insertions(+), 295 deletions(-) diff --git a/common/opcode_map.cpp b/common/opcode_map.cpp index edb6ba64c..fdaaf3fa1 100644 --- a/common/opcode_map.cpp +++ b/common/opcode_map.cpp @@ -6,302 +6,302 @@ std::map opcode_map; std::string get_opcode_name(unsigned long opcode) { -std::map::iterator itr;; - - return (itr=opcode_map.find(opcode))!=opcode_map.end() ? itr->second : "OP_Unknown"; + std::map::iterator itr;; + return (itr = opcode_map.find(opcode)) != opcode_map.end() ? itr->second : "OP_Unknown"; } + void load_opcode_names() { - opcode_map[0x0176]="LiveOP_Heartbeat"; - opcode_map[0x02d7]="LiveOP_ReloadUI"; - opcode_map[0x01eb]="LiveOP_IncreaseStats"; - opcode_map[0x0134]="LiveOP_ApproveZone"; - opcode_map[0x01d5]="LiveOP_Dye"; - opcode_map[0x0168]="LiveOP_Stamina"; - opcode_map[0x014d]="LiveOP_ControlBoat"; - opcode_map[0x003e]="LiveOP_MobUpdate"; - opcode_map[0x0027]="LiveOP_ClientUpdate"; - opcode_map[0x0024]="LiveOP_ChannelMessage"; - opcode_map[0x01d7]="LiveOP_SimpleMessage"; - opcode_map[0x01d8]="LiveOP_FormattedMessage"; - opcode_map[0x01c6]="LiveOP_TGB"; - opcode_map[0x0285]="LiveOP_TestBuff"; - opcode_map[0x012d]="LiveOP_Bind_Wound"; - opcode_map[0x01ab]="LiveOP_Charm"; - opcode_map[0x014c]="LiveOP_Begging"; - opcode_map[0x0152]="LiveOP_MoveCoin"; - opcode_map[0x0292]="LiveOP_SpawnDoor"; - opcode_map[0x009d]="LiveOP_Sneak"; - opcode_map[0x0079]="LiveOP_ExpUpdate"; - opcode_map[0x027d]="LiveOP_DumpName"; - opcode_map[0x01ea]="LiveOP_RespondAA"; - opcode_map[0x01c9]="LiveOP_SendAAStats"; - opcode_map[0x0366]="LiveOP_SendAATable"; - opcode_map[0x01e9]="LiveOP_AAAction"; - opcode_map[0x00bb]="LiveOP_BoardBoat"; - opcode_map[0x00bc]="LiveOP_LeaveBoat"; - opcode_map[0x02b8]="LiveOP_AdventureInfoRequest"; - opcode_map[0x02b9]="LiveOP_AdventureInfo"; - opcode_map[0x02a6]="LiveOP_AdventureRequest"; - opcode_map[0x02a8]="LiveOP_AdventureDetails"; - opcode_map[0x02a9]="LiveOP_LDoNButton"; - opcode_map[0x02ba]="LiveOP_AdventureData"; - opcode_map[0x02c9]="LiveOP_AdventureFinish"; - opcode_map[0x02c6]="LiveOP_LeaveAdventure"; - opcode_map[0x02ce]="LiveOP_AdventureUpdate"; - opcode_map[0x002b]="LiveOP_SendExpZonein"; - opcode_map[0x01e4]="LiveOP_ZoneInSendName"; - opcode_map[0x01bf]="LiveOP_GuildLeader"; - opcode_map[0x009a]="LiveOP_GuildPeace"; - opcode_map[0x0132]="LiveOP_GuildRemove"; - opcode_map[0x0059]="LiveOP_GuildMemberList"; - opcode_map[0x026e]="LiveOP_GuildMemberUpdate"; - opcode_map[0x0130]="LiveOP_GuildInvite"; - opcode_map[0x01c0]="LiveOP_GuildMOTD"; - opcode_map[0x003c]="LiveOP_GuildPublicNote"; - opcode_map[0x027e]="LiveOP_GetGuildMOTD"; - opcode_map[0x0277]="LiveOP_GuildDemote"; - opcode_map[0x0131]="LiveOP_GuildInviteAccept"; - opcode_map[0x00a4]="LiveOP_GuildWar"; - opcode_map[0x0133]="LiveOP_GuildDelete"; - opcode_map[0x0233]="LiveOP_GuildManageRemove"; - opcode_map[0x022d]="LiveOP_GuildManageAdd"; - opcode_map[0x0039]="LiveOP_GuildManageStatus"; - opcode_map[0x01e8]="LiveOP_Trader"; - opcode_map[0x01e7]="LiveOP_Bazaar"; - opcode_map[0x01c4]="LiveOP_BecomeTrader"; - opcode_map[0x01f4]="LiveOP_BazaarInspect"; - opcode_map[0x006e]="LiveOP_TraderItemUpdate"; - opcode_map[0x017c]="LiveOP_TraderDelItem"; - opcode_map[0x01eb]="LiveOP_TraderShop"; - opcode_map[0x01ca]="LiveOP_TraderBuy"; - opcode_map[0x01ac]="LiveOP_PetCommands"; - opcode_map[0x0042]="LiveOP_TradeSkillCombine"; - opcode_map[0x02e5]="LiveOP_AugmentItem"; - opcode_map[0x0367]="LiveOP_ItemName"; - opcode_map[0x02cd]="LiveOP_ShopItem"; - opcode_map[0x0065]="LiveOP_ShopPlayerBuy"; - opcode_map[0x006a]="LiveOP_ShopPlayerSell"; - opcode_map[0x006d]="LiveOP_ShopDelItem"; - opcode_map[0x0f6d]="LiveOP_ShopEndConfirm"; - opcode_map[0x00f7]="LiveOP_ShopRequest"; - opcode_map[0x006c]="LiveOP_ShopEnd"; - opcode_map[0x02d1]="LiveOP_AdventureMerchantRequest"; - opcode_map[0x02d2]="LiveOP_AdventureMerchantResponse"; - opcode_map[0x02d3]="LiveOP_AdventureMerchantPurchase"; - opcode_map[0x02e3]="LiveOP_AdventurePointsUpdate"; - opcode_map[0x0270]="LiveOP_LFGCommand"; - opcode_map[0x01d0]="LiveOP_LFGAppearance"; - opcode_map[0x01b5]="LiveOP_MoneyUpdate"; - opcode_map[0x0721]="LiveOP_GroupDelete"; - opcode_map[0x0272]="LiveOP_GroupAcknowledge"; - opcode_map[0x024a]="LiveOP_GroupUpdate"; - opcode_map[0x025f]="LiveOP_GroupInvite"; - opcode_map[0x00ff]="LiveOP_GroupDisband"; - opcode_map[0x00d5]="LiveOP_GroupInvite2"; - opcode_map[0x025e]="LiveOP_GroupFollow"; - opcode_map[0x00d7]="LiveOP_GroupFollow2"; - opcode_map[0x00d6]="LiveOP_GroupCancelInvite"; - opcode_map[0x0156]="LiveOP_Split"; - opcode_map[0x00d8]="LiveOP_Jump"; - opcode_map[0x01d6]="LiveOP_ConsiderCorpse"; - opcode_map[0x0064]="LiveOP_SkillUpdate"; - opcode_map[0x0178]="LiveOP_GMEndTrainingResponse"; - opcode_map[0x013c]="LiveOP_GMEndTraining"; - opcode_map[0x0175]="LiveOP_GMTrainSkill"; - opcode_map[0x013b]="LiveOP_GMTraining"; - opcode_map[0x017b]="LiveOP_ConsumeAmmo"; - opcode_map[0x0171]="LiveOP_CombatAbility"; - opcode_map[0x009c]="LiveOP_TrackUnknown"; - opcode_map[0x0234]="LiveOP_TrackTarget"; - opcode_map[0x0286]="LiveOP_Track"; - opcode_map[0x0297]="LiveOP_ReadBook"; - opcode_map[0x001f]="LiveOP_ItemLinkClick"; - opcode_map[0x01f4]="LiveOP_ItemLinkResponse"; - opcode_map[0x01d9]="LiveOP_ItemLinkText"; - opcode_map[0x0a41]="LiveOP_RezzRequest"; - opcode_map[0x00e5]="LiveOP_RezzAnswer"; - opcode_map[0x019b]="LiveOP_RezzComplete"; - opcode_map[0x0128]="LiveOP_MoveDoor"; - opcode_map[0x0127]="LiveOP_ClickDoor"; - opcode_map[0x0247]="LiveOP_SendZonepoints"; - opcode_map[0x008c]="LiveOP_SetRunMode"; - opcode_map[0x0248]="LiveOP_InspectRequest"; - opcode_map[0x0249]="LiveOP_InspectAnswer"; - opcode_map[0x0187]="LiveOP_SenseTraps"; - opcode_map[0x018e]="LiveOP_DisarmTraps"; - opcode_map[0x01bc]="LiveOP_Assist"; - opcode_map[0x0240]="LiveOP_PickPocket"; - opcode_map[0x0119]="LiveOP_LootRequest"; - opcode_map[0x011a]="LiveOP_EndLootRequest"; - opcode_map[0x011b]="LiveOP_MoneyOnCorpse"; - opcode_map[0x0179]="LiveOP_LootComplete"; - opcode_map[0x013f]="LiveOP_LootItem"; - opcode_map[0x0151]="LiveOP_MoveItem"; - opcode_map[0x0056]="LiveOP_WhoAllRequest"; - opcode_map[0x0229]="LiveOP_WhoAllResponse"; - opcode_map[0x0167]="LiveOP_Consume"; - opcode_map[0x0172]="LiveOP_AutoAttack"; - opcode_map[0x0186]="LiveOP_AutoAttack2"; - opcode_map[0x0173]="LiveOP_TargetMouse"; - opcode_map[0x01ba]="LiveOP_TargetCommand"; - opcode_map[0x01d8]="LiveOP_TargetReject"; - opcode_map[0x009e]="LiveOP_Hide"; - opcode_map[0x012e]="LiveOP_Forage"; - opcode_map[0x0077]="LiveOP_Fishing"; - opcode_map[0x0246]="LiveOP_Bug"; - opcode_map[0x00f2]="LiveOP_Emote"; - opcode_map[0x0140]="LiveOP_EmoteAnim"; - opcode_map[0x015c]="LiveOP_Consider"; - opcode_map[0x01cb]="LiveOP_FaceChange"; - opcode_map[0x0197]="LiveOP_RandomReq"; - opcode_map[0x0087]="LiveOP_RandomReply"; - opcode_map[0x01c3]="LiveOP_Camp"; - opcode_map[0x0192]="LiveOP_YellForHelp"; - opcode_map[0x00ef]="LiveOP_SafePoint"; - opcode_map[0x0157]="LiveOP_Buff"; - opcode_map[0x00c0]="LiveOP_ColoredText"; - opcode_map[0x0440]="LiveOP_MultiLineMsg"; - opcode_map[0x021c]="LiveOP_SpecialMesg"; - opcode_map[0x0013]="LiveOP_Consent"; - opcode_map[0x029d]="LiveOP_ConsentResponse"; - opcode_map[0x02d4]="LiveOP_Deny"; - opcode_map[0x016c]="LiveOP_Stun"; - opcode_map[0x0021]="LiveOP_BeginCast"; - opcode_map[0x00be]="LiveOP_CastSpell"; - opcode_map[0x01a8]="LiveOP_InterruptCast"; - opcode_map[0x0105]="LiveOP_Death"; - opcode_map[0x023f]="LiveOP_FeignDeath"; - opcode_map[0x012b]="LiveOP_Illusion"; - opcode_map[0x0078]="LiveOP_LevelUpdate"; - opcode_map[0x0371]="LiveOP_LevelAppearance"; - opcode_map[0x00c2]="LiveOP_MemorizeSpell"; - opcode_map[0x0244]="LiveOP_HPUpdate"; - opcode_map[0x022e]="LiveOP_SendHPTarget"; - opcode_map[0x007d]="LiveOP_Mend"; - opcode_map[0x0160]="LiveOP_Taunt"; - opcode_map[0x0199]="LiveOP_GMDelCorpse"; - opcode_map[0x0047]="LiveOP_GMFind"; - opcode_map[0x0020]="LiveOP_GMServers"; - opcode_map[0x010b]="LiveOP_GMGoto"; - opcode_map[0x028c]="LiveOP_GMSummon"; - opcode_map[0x010a]="LiveOP_GMKick"; - opcode_map[0x0109]="LiveOP_GMKill"; - opcode_map[0x0b40]="LiveOP_GMNameChange"; - opcode_map[0x00a3]="LiveOP_GMLastName"; - opcode_map[0x01b3]="LiveOP_GMToggle"; - opcode_map[0x028f]="LiveOP_GMEmoteZone"; - opcode_map[0x0074]="LiveOP_GMBecomeNPC"; - opcode_map[0x00de]="LiveOP_GMHideMe"; - opcode_map[0x0184]="LiveOP_GMZoneRequest"; - opcode_map[0x0239]="LiveOP_GMZoneRequest2"; - opcode_map[0x0068]="LiveOP_Petition"; - opcode_map[0x0085]="LiveOP_PetitionRefresh"; - opcode_map[0x01ee]="LiveOP_PDeletePetition"; - opcode_map[0x0092]="LiveOP_PetitionBug"; - opcode_map[0x0069]="LiveOP_PetitionUpdate"; - opcode_map[0x0076]="LiveOP_PetitionCheckout"; - opcode_map[0x0056]="LiveOP_PetitionCheckout2"; - opcode_map[0x0091]="LiveOP_PetitionDelete"; - opcode_map[0x02b4]="LiveOP_PetitionResolve"; - opcode_map[0x007e]="LiveOP_PetitionCheckIn"; - opcode_map[0x0090]="LiveOP_PetitionUnCheckout"; - opcode_map[0x01ec]="LiveOP_PetitionQue"; - opcode_map[0x01bb]="LiveOP_SetServerFilter"; - opcode_map[0x0218]="LiveOP_NewSpawn"; - opcode_map[0x0140]="LiveOP_Animation"; - opcode_map[0x0142]="LiveOP_ZoneChange"; - opcode_map[0x00f3]="LiveOP_DeleteSpawn"; - opcode_map[0x0265]="LiveOP_CrashDump"; - opcode_map[0x00e8]="LiveOP_EnvDamage"; - opcode_map[0x0101]="LiveOP_Action"; - opcode_map[0x00e2]="LiveOP_Damage"; - opcode_map[0x00bf]="LiveOP_ManaChange"; - opcode_map[0x027c]="LiveOP_ClientError"; - opcode_map[0x00fb]="LiveOP_Save"; - opcode_map[0x0316]="LiveOP_LocInfo"; - opcode_map[0x0188]="LiveOP_Surname"; - opcode_map[0x018f]="LiveOP_SwapSpell"; - opcode_map[0x01db]="LiveOP_DeleteSpell"; - opcode_map[0x029f]="LiveOP_CloseContainer"; - opcode_map[0x029f]="LiveOP_ClickObjectAck"; - opcode_map[0x00fa]="LiveOP_CreateObject"; - opcode_map[0x00f9]="LiveOP_ClickObject"; - opcode_map[0x01c1]="LiveOP_ClearObject"; - opcode_map[0x0265]="LiveOP_ZoneUnavail"; - opcode_map[0x02e0]="LiveOP_ItemPacket"; - opcode_map[0x029a]="LiveOP_TradeRequest"; - opcode_map[0x0037]="LiveOP_TradeRequestAck"; - opcode_map[0x002d]="LiveOP_TradeAcceptClick"; - opcode_map[0x0162]="LiveOP_TradeMoneyUpdate"; - opcode_map[0x0036]="LiveOP_TradeCoins"; - opcode_map[0x002e]="LiveOP_CancelTrade"; - opcode_map[0x002f]="LiveOP_FinishTrade"; - opcode_map[0x00a1]="LiveOP_SaveOnZoneReq"; - opcode_map[0x0185]="LiveOP_Logout"; - opcode_map[0x0298]="LiveOP_RequestDuel"; - opcode_map[0x0a5d]="LiveOP_DuelResponse"; - opcode_map[0x016e]="LiveOP_DuelResponse2"; - opcode_map[0x007c]="LiveOP_InstillDoubt"; - opcode_map[0x00ac]="LiveOP_SafeFallSuccess"; - opcode_map[0x02fb]="LiveOP_DisciplineUpdate"; - opcode_map[0x02f2]="LiveOP_TributeUpdate"; - opcode_map[0x02f3]="LiveOP_TributeItem"; - opcode_map[0x02f4]="LiveOP_TributePointUpdate"; - opcode_map[0x02f5]="LiveOP_SendTributes"; - opcode_map[0x02f6]="LiveOP_TributeInfo"; - opcode_map[0x02f7]="LiveOP_SelectTribute"; - opcode_map[0x02f8]="LiveOP_TributeTimer"; - opcode_map[0x02f9]="LiveOP_StartTribute"; - opcode_map[0x02fa]="LiveOP_TributeNPC"; - opcode_map[0x02fe]="LiveOP_TributeMoney"; - opcode_map[0x0364]="LiveOP_TributeToggle"; - opcode_map[0x0322]="LiveOP_RecipesFavorite"; - opcode_map[0x01f9]="LiveOP_RecipesSearch"; - opcode_map[0x01fa]="LiveOP_RecipeReply"; - opcode_map[0x01fb]="LiveOP_RecipeDetails"; - opcode_map[0x01fc]="LiveOP_RecipeAutoCombine"; - opcode_map[0x02db]="LiveOP_FindPersonRequest"; - opcode_map[0x02dc]="LiveOP_FindPersonReply"; - opcode_map[0x01dd]="LiveOP_Shielding"; - opcode_map[0x0198]="LiveOP_SetDataRate"; - opcode_map[0x023b]="LiveOP_ZoneEntry"; - opcode_map[0x006b]="LiveOP_PlayerProfile"; - opcode_map[0x0291]="LiveOP_CharInventory"; - opcode_map[0x0170]="LiveOP_ZoneSpawns"; - opcode_map[0x0026]="LiveOP_TimeOfDay"; - opcode_map[0x015b]="LiveOP_Weather"; - opcode_map[0x00ec]="LiveOP_ReqNewZone"; - opcode_map[0x00eb]="LiveOP_NewZone"; - opcode_map[0x00fd]="LiveOP_ReqClientSpawn"; - opcode_map[0x012F]="LiveOP_SpawnAppearance"; - opcode_map[0x0086]="LiveOP_ClientReady"; - opcode_map[0x0086]="LiveOP_ZoneComplete"; - opcode_map[0x02db]="LiveOP_LoginComplete"; - opcode_map[0x0195]="LiveOP_ApproveWorld"; - opcode_map[0x035f]="LiveOP_LogServer"; - opcode_map[0x01b2]="LiveOP_MOTD"; - opcode_map[0x0251]="LiveOP_SendLoginInfo"; - opcode_map[0x00ea]="LiveOP_DeleteCharacter"; - opcode_map[0x0102]="LiveOP_SendCharInfo"; - opcode_map[0x00e1]="LiveOP_ExpansionInfo"; - opcode_map[0x0104]="LiveOP_CharacterCreate"; - opcode_map[0x02ab]="LiveOP_RandomNameGenerator"; - opcode_map[0x005d]="LiveOP_GuildsList"; - opcode_map[0x0125]="LiveOP_ApproveName"; - opcode_map[0x0261]="LiveOP_EnterWorld"; - opcode_map[0x015a]="LiveOP_World_Client_CRC1"; - opcode_map[0x015e]="LiveOP_World_Client_CRC2"; - opcode_map[0x0269]="LiveOP_SetChatServer"; - opcode_map[0x0264]="LiveOP_ZoneServerInfo"; - opcode_map[0x0017]="LiveOP_AckPacket"; - opcode_map[0x012c]="LiveOP_WearChange"; - opcode_map[0x1FA1]="LiveOP_WorldObjectsSent"; - opcode_map[0x39C4]="LiveOP_BlockedBuffs"; - opcode_map[0x4656]="LiveOP_SpawnPositionUpdate"; - opcode_map[0x4b61]="LiveOP_ManaUpdate"; - opcode_map[0x02d6]="LiveOP_EnduranceUpdate"; - opcode_map[0x2ac1]="LiveOP_MobManaUpdate"; - opcode_map[0x6c5f]="LiveOP_MobEnduranceUpdate"; - opcode_map[0x73a8]="LiveOP_SendMaxCharacters"; + opcode_map[0x0176] = "LiveOP_Heartbeat"; + opcode_map[0x02d7] = "LiveOP_ReloadUI"; + opcode_map[0x01eb] = "LiveOP_IncreaseStats"; + opcode_map[0x0134] = "LiveOP_ApproveZone"; + opcode_map[0x01d5] = "LiveOP_Dye"; + opcode_map[0x0168] = "LiveOP_Stamina"; + opcode_map[0x014d] = "LiveOP_ControlBoat"; + opcode_map[0x003e] = "LiveOP_MobUpdate"; + opcode_map[0x0027] = "LiveOP_ClientUpdate"; + opcode_map[0x0024] = "LiveOP_ChannelMessage"; + opcode_map[0x01d7] = "LiveOP_SimpleMessage"; + opcode_map[0x01d8] = "LiveOP_FormattedMessage"; + opcode_map[0x01c6] = "LiveOP_TGB"; + opcode_map[0x0285] = "LiveOP_TestBuff"; + opcode_map[0x012d] = "LiveOP_Bind_Wound"; + opcode_map[0x01ab] = "LiveOP_Charm"; + opcode_map[0x014c] = "LiveOP_Begging"; + opcode_map[0x0152] = "LiveOP_MoveCoin"; + opcode_map[0x0292] = "LiveOP_SpawnDoor"; + opcode_map[0x009d] = "LiveOP_Sneak"; + opcode_map[0x0079] = "LiveOP_ExpUpdate"; + opcode_map[0x027d] = "LiveOP_DumpName"; + opcode_map[0x01ea] = "LiveOP_RespondAA"; + opcode_map[0x01c9] = "LiveOP_SendAAStats"; + opcode_map[0x0366] = "LiveOP_SendAATable"; + opcode_map[0x01e9] = "LiveOP_AAAction"; + opcode_map[0x00bb] = "LiveOP_BoardBoat"; + opcode_map[0x00bc] = "LiveOP_LeaveBoat"; + opcode_map[0x02b8] = "LiveOP_AdventureInfoRequest"; + opcode_map[0x02b9] = "LiveOP_AdventureInfo"; + opcode_map[0x02a6] = "LiveOP_AdventureRequest"; + opcode_map[0x02a8] = "LiveOP_AdventureDetails"; + opcode_map[0x02a9] = "LiveOP_LDoNButton"; + opcode_map[0x02ba] = "LiveOP_AdventureData"; + opcode_map[0x02c9] = "LiveOP_AdventureFinish"; + opcode_map[0x02c6] = "LiveOP_LeaveAdventure"; + opcode_map[0x02ce] = "LiveOP_AdventureUpdate"; + opcode_map[0x002b] = "LiveOP_SendExpZonein"; + opcode_map[0x01e4] = "LiveOP_ZoneInSendName"; + opcode_map[0x01bf] = "LiveOP_GuildLeader"; + opcode_map[0x009a] = "LiveOP_GuildPeace"; + opcode_map[0x0132] = "LiveOP_GuildRemove"; + opcode_map[0x0059] = "LiveOP_GuildMemberList"; + opcode_map[0x026e] = "LiveOP_GuildMemberUpdate"; + opcode_map[0x0130] = "LiveOP_GuildInvite"; + opcode_map[0x01c0] = "LiveOP_GuildMOTD"; + opcode_map[0x003c] = "LiveOP_GuildPublicNote"; + opcode_map[0x027e] = "LiveOP_GetGuildMOTD"; + opcode_map[0x0277] = "LiveOP_GuildDemote"; + opcode_map[0x0131] = "LiveOP_GuildInviteAccept"; + opcode_map[0x00a4] = "LiveOP_GuildWar"; + opcode_map[0x0133] = "LiveOP_GuildDelete"; + opcode_map[0x0233] = "LiveOP_GuildManageRemove"; + opcode_map[0x022d] = "LiveOP_GuildManageAdd"; + opcode_map[0x0039] = "LiveOP_GuildManageStatus"; + opcode_map[0x01e8] = "LiveOP_Trader"; + opcode_map[0x01e7] = "LiveOP_Bazaar"; + opcode_map[0x01c4] = "LiveOP_BecomeTrader"; + opcode_map[0x01f4] = "LiveOP_BazaarInspect"; + opcode_map[0x006e] = "LiveOP_TraderItemUpdate"; + opcode_map[0x017c] = "LiveOP_TraderDelItem"; + opcode_map[0x01eb] = "LiveOP_TraderShop"; + opcode_map[0x01ca] = "LiveOP_TraderBuy"; + opcode_map[0x01ac] = "LiveOP_PetCommands"; + opcode_map[0x0042] = "LiveOP_TradeSkillCombine"; + opcode_map[0x02e5] = "LiveOP_AugmentItem"; + opcode_map[0x0367] = "LiveOP_ItemName"; + opcode_map[0x02cd] = "LiveOP_ShopItem"; + opcode_map[0x0065] = "LiveOP_ShopPlayerBuy"; + opcode_map[0x006a] = "LiveOP_ShopPlayerSell"; + opcode_map[0x006d] = "LiveOP_ShopDelItem"; + opcode_map[0x0f6d] = "LiveOP_ShopEndConfirm"; + opcode_map[0x00f7] = "LiveOP_ShopRequest"; + opcode_map[0x006c] = "LiveOP_ShopEnd"; + opcode_map[0x02d1] = "LiveOP_AdventureMerchantRequest"; + opcode_map[0x02d2] = "LiveOP_AdventureMerchantResponse"; + opcode_map[0x02d3] = "LiveOP_AdventureMerchantPurchase"; + opcode_map[0x02e3] = "LiveOP_AdventurePointsUpdate"; + opcode_map[0x0270] = "LiveOP_LFGCommand"; + opcode_map[0x01d0] = "LiveOP_LFGAppearance"; + opcode_map[0x01b5] = "LiveOP_MoneyUpdate"; + opcode_map[0x0721] = "LiveOP_GroupDelete"; + opcode_map[0x0272] = "LiveOP_GroupAcknowledge"; + opcode_map[0x024a] = "LiveOP_GroupUpdate"; + opcode_map[0x025f] = "LiveOP_GroupInvite"; + opcode_map[0x00ff] = "LiveOP_GroupDisband"; + opcode_map[0x00d5] = "LiveOP_GroupInvite2"; + opcode_map[0x025e] = "LiveOP_GroupFollow"; + opcode_map[0x00d7] = "LiveOP_GroupFollow2"; + opcode_map[0x00d6] = "LiveOP_GroupCancelInvite"; + opcode_map[0x0156] = "LiveOP_Split"; + opcode_map[0x00d8] = "LiveOP_Jump"; + opcode_map[0x01d6] = "LiveOP_ConsiderCorpse"; + opcode_map[0x0064] = "LiveOP_SkillUpdate"; + opcode_map[0x0178] = "LiveOP_GMEndTrainingResponse"; + opcode_map[0x013c] = "LiveOP_GMEndTraining"; + opcode_map[0x0175] = "LiveOP_GMTrainSkill"; + opcode_map[0x013b] = "LiveOP_GMTraining"; + opcode_map[0x017b] = "LiveOP_ConsumeAmmo"; + opcode_map[0x0171] = "LiveOP_CombatAbility"; + opcode_map[0x009c] = "LiveOP_TrackUnknown"; + opcode_map[0x0234] = "LiveOP_TrackTarget"; + opcode_map[0x0286] = "LiveOP_Track"; + opcode_map[0x0297] = "LiveOP_ReadBook"; + opcode_map[0x001f] = "LiveOP_ItemLinkClick"; + opcode_map[0x01f4] = "LiveOP_ItemLinkResponse"; + opcode_map[0x01d9] = "LiveOP_ItemLinkText"; + opcode_map[0x0a41] = "LiveOP_RezzRequest"; + opcode_map[0x00e5] = "LiveOP_RezzAnswer"; + opcode_map[0x019b] = "LiveOP_RezzComplete"; + opcode_map[0x0128] = "LiveOP_MoveDoor"; + opcode_map[0x0127] = "LiveOP_ClickDoor"; + opcode_map[0x0247] = "LiveOP_SendZonepoints"; + opcode_map[0x008c] = "LiveOP_SetRunMode"; + opcode_map[0x0248] = "LiveOP_InspectRequest"; + opcode_map[0x0249] = "LiveOP_InspectAnswer"; + opcode_map[0x0187] = "LiveOP_SenseTraps"; + opcode_map[0x018e] = "LiveOP_DisarmTraps"; + opcode_map[0x01bc] = "LiveOP_Assist"; + opcode_map[0x0240] = "LiveOP_PickPocket"; + opcode_map[0x0119] = "LiveOP_LootRequest"; + opcode_map[0x011a] = "LiveOP_EndLootRequest"; + opcode_map[0x011b] = "LiveOP_MoneyOnCorpse"; + opcode_map[0x0179] = "LiveOP_LootComplete"; + opcode_map[0x013f] = "LiveOP_LootItem"; + opcode_map[0x0151] = "LiveOP_MoveItem"; + opcode_map[0x0056] = "LiveOP_WhoAllRequest"; + opcode_map[0x0229] = "LiveOP_WhoAllResponse"; + opcode_map[0x0167] = "LiveOP_Consume"; + opcode_map[0x0172] = "LiveOP_AutoAttack"; + opcode_map[0x0186] = "LiveOP_AutoAttack2"; + opcode_map[0x0173] = "LiveOP_TargetMouse"; + opcode_map[0x01ba] = "LiveOP_TargetCommand"; + opcode_map[0x01d8] = "LiveOP_TargetReject"; + opcode_map[0x009e] = "LiveOP_Hide"; + opcode_map[0x012e] = "LiveOP_Forage"; + opcode_map[0x0077] = "LiveOP_Fishing"; + opcode_map[0x0246] = "LiveOP_Bug"; + opcode_map[0x00f2] = "LiveOP_Emote"; + opcode_map[0x0140] = "LiveOP_EmoteAnim"; + opcode_map[0x015c] = "LiveOP_Consider"; + opcode_map[0x01cb] = "LiveOP_FaceChange"; + opcode_map[0x0197] = "LiveOP_RandomReq"; + opcode_map[0x0087] = "LiveOP_RandomReply"; + opcode_map[0x01c3] = "LiveOP_Camp"; + opcode_map[0x0192] = "LiveOP_YellForHelp"; + opcode_map[0x00ef] = "LiveOP_SafePoint"; + opcode_map[0x0157] = "LiveOP_Buff"; + opcode_map[0x00c0] = "LiveOP_ColoredText"; + opcode_map[0x0440] = "LiveOP_MultiLineMsg"; + opcode_map[0x021c] = "LiveOP_SpecialMesg"; + opcode_map[0x0013] = "LiveOP_Consent"; + opcode_map[0x029d] = "LiveOP_ConsentResponse"; + opcode_map[0x02d4] = "LiveOP_Deny"; + opcode_map[0x016c] = "LiveOP_Stun"; + opcode_map[0x0021] = "LiveOP_BeginCast"; + opcode_map[0x00be] = "LiveOP_CastSpell"; + opcode_map[0x01a8] = "LiveOP_InterruptCast"; + opcode_map[0x0105] = "LiveOP_Death"; + opcode_map[0x023f] = "LiveOP_FeignDeath"; + opcode_map[0x012b] = "LiveOP_Illusion"; + opcode_map[0x0078] = "LiveOP_LevelUpdate"; + opcode_map[0x0371] = "LiveOP_LevelAppearance"; + opcode_map[0x00c2] = "LiveOP_MemorizeSpell"; + opcode_map[0x0244] = "LiveOP_HPUpdate"; + opcode_map[0x022e] = "LiveOP_SendHPTarget"; + opcode_map[0x007d] = "LiveOP_Mend"; + opcode_map[0x0160] = "LiveOP_Taunt"; + opcode_map[0x0199] = "LiveOP_GMDelCorpse"; + opcode_map[0x0047] = "LiveOP_GMFind"; + opcode_map[0x0020] = "LiveOP_GMServers"; + opcode_map[0x010b] = "LiveOP_GMGoto"; + opcode_map[0x028c] = "LiveOP_GMSummon"; + opcode_map[0x010a] = "LiveOP_GMKick"; + opcode_map[0x0109] = "LiveOP_GMKill"; + opcode_map[0x0b40] = "LiveOP_GMNameChange"; + opcode_map[0x00a3] = "LiveOP_GMLastName"; + opcode_map[0x01b3] = "LiveOP_GMToggle"; + opcode_map[0x028f] = "LiveOP_GMEmoteZone"; + opcode_map[0x0074] = "LiveOP_GMBecomeNPC"; + opcode_map[0x00de] = "LiveOP_GMHideMe"; + opcode_map[0x0184] = "LiveOP_GMZoneRequest"; + opcode_map[0x0239] = "LiveOP_GMZoneRequest2"; + opcode_map[0x0068] = "LiveOP_Petition"; + opcode_map[0x0085] = "LiveOP_PetitionRefresh"; + opcode_map[0x01ee] = "LiveOP_PDeletePetition"; + opcode_map[0x0092] = "LiveOP_PetitionBug"; + opcode_map[0x0069] = "LiveOP_PetitionUpdate"; + opcode_map[0x0076] = "LiveOP_PetitionCheckout"; + opcode_map[0x0056] = "LiveOP_PetitionCheckout2"; + opcode_map[0x0091] = "LiveOP_PetitionDelete"; + opcode_map[0x02b4] = "LiveOP_PetitionResolve"; + opcode_map[0x007e] = "LiveOP_PetitionCheckIn"; + opcode_map[0x0090] = "LiveOP_PetitionUnCheckout"; + opcode_map[0x01ec] = "LiveOP_PetitionQue"; + opcode_map[0x01bb] = "LiveOP_SetServerFilter"; + opcode_map[0x0218] = "LiveOP_NewSpawn"; + opcode_map[0x0140] = "LiveOP_Animation"; + opcode_map[0x0142] = "LiveOP_ZoneChange"; + opcode_map[0x00f3] = "LiveOP_DeleteSpawn"; + opcode_map[0x0265] = "LiveOP_CrashDump"; + opcode_map[0x00e8] = "LiveOP_EnvDamage"; + opcode_map[0x0101] = "LiveOP_Action"; + opcode_map[0x00e2] = "LiveOP_Damage"; + opcode_map[0x00bf] = "LiveOP_ManaChange"; + opcode_map[0x027c] = "LiveOP_ClientError"; + opcode_map[0x00fb] = "LiveOP_Save"; + opcode_map[0x0316] = "LiveOP_LocInfo"; + opcode_map[0x0188] = "LiveOP_Surname"; + opcode_map[0x018f] = "LiveOP_SwapSpell"; + opcode_map[0x01db] = "LiveOP_DeleteSpell"; + opcode_map[0x029f] = "LiveOP_CloseContainer"; + opcode_map[0x029f] = "LiveOP_ClickObjectAck"; + opcode_map[0x00fa] = "LiveOP_CreateObject"; + opcode_map[0x00f9] = "LiveOP_ClickObject"; + opcode_map[0x01c1] = "LiveOP_ClearObject"; + opcode_map[0x0265] = "LiveOP_ZoneUnavail"; + opcode_map[0x02e0] = "LiveOP_ItemPacket"; + opcode_map[0x029a] = "LiveOP_TradeRequest"; + opcode_map[0x0037] = "LiveOP_TradeRequestAck"; + opcode_map[0x002d] = "LiveOP_TradeAcceptClick"; + opcode_map[0x0162] = "LiveOP_TradeMoneyUpdate"; + opcode_map[0x0036] = "LiveOP_TradeCoins"; + opcode_map[0x002e] = "LiveOP_CancelTrade"; + opcode_map[0x002f] = "LiveOP_FinishTrade"; + opcode_map[0x00a1] = "LiveOP_SaveOnZoneReq"; + opcode_map[0x0185] = "LiveOP_Logout"; + opcode_map[0x0298] = "LiveOP_RequestDuel"; + opcode_map[0x0a5d] = "LiveOP_DuelResponse"; + opcode_map[0x016e] = "LiveOP_DuelResponse2"; + opcode_map[0x007c] = "LiveOP_InstillDoubt"; + opcode_map[0x00ac] = "LiveOP_SafeFallSuccess"; + opcode_map[0x02fb] = "LiveOP_DisciplineUpdate"; + opcode_map[0x02f2] = "LiveOP_TributeUpdate"; + opcode_map[0x02f3] = "LiveOP_TributeItem"; + opcode_map[0x02f4] = "LiveOP_TributePointUpdate"; + opcode_map[0x02f5] = "LiveOP_SendTributes"; + opcode_map[0x02f6] = "LiveOP_TributeInfo"; + opcode_map[0x02f7] = "LiveOP_SelectTribute"; + opcode_map[0x02f8] = "LiveOP_TributeTimer"; + opcode_map[0x02f9] = "LiveOP_StartTribute"; + opcode_map[0x02fa] = "LiveOP_TributeNPC"; + opcode_map[0x02fe] = "LiveOP_TributeMoney"; + opcode_map[0x0364] = "LiveOP_TributeToggle"; + opcode_map[0x0322] = "LiveOP_RecipesFavorite"; + opcode_map[0x01f9] = "LiveOP_RecipesSearch"; + opcode_map[0x01fa] = "LiveOP_RecipeReply"; + opcode_map[0x01fb] = "LiveOP_RecipeDetails"; + opcode_map[0x01fc] = "LiveOP_RecipeAutoCombine"; + opcode_map[0x02db] = "LiveOP_FindPersonRequest"; + opcode_map[0x02dc] = "LiveOP_FindPersonReply"; + opcode_map[0x01dd] = "LiveOP_Shielding"; + opcode_map[0x0198] = "LiveOP_SetDataRate"; + opcode_map[0x023b] = "LiveOP_ZoneEntry"; + opcode_map[0x006b] = "LiveOP_PlayerProfile"; + opcode_map[0x0291] = "LiveOP_CharInventory"; + opcode_map[0x0170] = "LiveOP_ZoneSpawns"; + opcode_map[0x0026] = "LiveOP_TimeOfDay"; + opcode_map[0x015b] = "LiveOP_Weather"; + opcode_map[0x00ec] = "LiveOP_ReqNewZone"; + opcode_map[0x00eb] = "LiveOP_NewZone"; + opcode_map[0x00fd] = "LiveOP_ReqClientSpawn"; + opcode_map[0x012F] = "LiveOP_SpawnAppearance"; + opcode_map[0x0086] = "LiveOP_ClientReady"; + opcode_map[0x0086] = "LiveOP_ZoneComplete"; + opcode_map[0x02db] = "LiveOP_LoginComplete"; + opcode_map[0x0195] = "LiveOP_ApproveWorld"; + opcode_map[0x035f] = "LiveOP_LogServer"; + opcode_map[0x01b2] = "LiveOP_MOTD"; + opcode_map[0x0251] = "LiveOP_SendLoginInfo"; + opcode_map[0x00ea] = "LiveOP_DeleteCharacter"; + opcode_map[0x0102] = "LiveOP_SendCharInfo"; + opcode_map[0x00e1] = "LiveOP_ExpansionInfo"; + opcode_map[0x0104] = "LiveOP_CharacterCreate"; + opcode_map[0x02ab] = "LiveOP_RandomNameGenerator"; + opcode_map[0x005d] = "LiveOP_GuildsList"; + opcode_map[0x0125] = "LiveOP_ApproveName"; + opcode_map[0x0261] = "LiveOP_EnterWorld"; + opcode_map[0x015a] = "LiveOP_World_Client_CRC1"; + opcode_map[0x015e] = "LiveOP_World_Client_CRC2"; + opcode_map[0x0269] = "LiveOP_SetChatServer"; + opcode_map[0x0264] = "LiveOP_ZoneServerInfo"; + opcode_map[0x0017] = "LiveOP_AckPacket"; + opcode_map[0x012c] = "LiveOP_WearChange"; + opcode_map[0x1FA1] = "LiveOP_WorldObjectsSent"; + opcode_map[0x39C4] = "LiveOP_BlockedBuffs"; + opcode_map[0x4656] = "LiveOP_SpawnPositionUpdate"; + opcode_map[0x4b61] = "LiveOP_ManaUpdate"; + opcode_map[0x02d6] = "LiveOP_EnduranceUpdate"; + opcode_map[0x2ac1] = "LiveOP_MobManaUpdate"; + opcode_map[0x6c5f] = "LiveOP_MobEnduranceUpdate"; + opcode_map[0x73a8] = "LiveOP_SendMaxCharacters"; } From 5c903c6ee343b104adb1bcd9c41b808ccac260b9 Mon Sep 17 00:00:00 2001 From: Akkadius Date: Mon, 15 Dec 2014 22:25:46 -0600 Subject: [PATCH 20/36] opcodemgr.cpp cleanup --- common/opcodemgr.cpp | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/common/opcodemgr.cpp b/common/opcodemgr.cpp index 6e524bfa5..f7a6ad3bf 100644 --- a/common/opcodemgr.cpp +++ b/common/opcodemgr.cpp @@ -15,15 +15,13 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "debug.h" -#include -#include "opcodemgr.h" -#include "debug.h" -#include "emu_opcodes.h" -#include -#include +#include "emu_opcodes.h" +#include "opcodemgr.h" + +#include #include +#include #include OpcodeManager::OpcodeManager() { From 1c665653eacd2565eef64053cc475eee19793d58 Mon Sep 17 00:00:00 2001 From: Akkadius Date: Mon, 15 Dec 2014 22:26:58 -0600 Subject: [PATCH 21/36] packet_dump cleanup --- common/packet_dump.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/common/packet_dump.cpp b/common/packet_dump.cpp index 6bb412f6b..3c9dfab4f 100644 --- a/common/packet_dump.cpp +++ b/common/packet_dump.cpp @@ -15,13 +15,12 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "../common/debug.h" + #include #include #include #include "packet_dump.h" -#include "eq_packet.h" #include "../common/servertalk.h" void DumpPacketAscii(const uchar* buf, uint32 size, uint32 cols, uint32 skip) { From fab6b602a82c886e3a0f5e37f92ac7c3d1094f62 Mon Sep 17 00:00:00 2001 From: Akkadius Date: Mon, 15 Dec 2014 22:28:15 -0600 Subject: [PATCH 22/36] packet_dump_file cleanup --- common/packet_dump_file.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/common/packet_dump_file.cpp b/common/packet_dump_file.cpp index 32aa7d984..95a72bb60 100644 --- a/common/packet_dump_file.cpp +++ b/common/packet_dump_file.cpp @@ -15,16 +15,18 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include -#include -#include + #include "../common/debug.h" + +#include +#include +#include #include + //#ifdef _CRTDBG_MAP_ALLOC // #undef new // #define new new(_NORMAL_BLOCK, __FILE__, __LINE__) //#endif -#include #include #ifdef _WINDOWS From 62d8fb538b22e1827e0c39f6c7fd812657da0d7a Mon Sep 17 00:00:00 2001 From: Akkadius Date: Mon, 15 Dec 2014 22:42:19 -0600 Subject: [PATCH 23/36] ptimer.cpp header include cleanup --- common/ptimer.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/common/ptimer.cpp b/common/ptimer.cpp index c9b25b1a5..b39f37a04 100644 --- a/common/ptimer.cpp +++ b/common/ptimer.cpp @@ -15,15 +15,13 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ + #include "debug.h" #include "timer.h" #include "ptimer.h" #include "database.h" #include "string_util.h" -#include -#include -#include #ifdef _WINDOWS #include From 689f95b430b2f7ae229c10c5d2cb9698455cf02f Mon Sep 17 00:00:00 2001 From: Akkadius Date: Mon, 15 Dec 2014 22:42:34 -0600 Subject: [PATCH 24/36] shareddb.cpp & .h header include cleanup --- common/shareddb.cpp | 20 ++--- common/shareddb.h | 194 +++++++++++++++++++++++--------------------- 2 files changed, 109 insertions(+), 105 deletions(-) diff --git a/common/shareddb.cpp b/common/shareddb.cpp index 4ba16b441..d0f89658a 100644 --- a/common/shareddb.cpp +++ b/common/shareddb.cpp @@ -3,22 +3,20 @@ #include #include -#include "shareddb.h" -#include "mysql.h" -#include "item.h" #include "classes.h" -#include "rulesys.h" -#include "seperator.h" -#include "string_util.h" #include "eq_packet_structs.h" -#include "guilds.h" -#include "extprofile.h" -#include "memory_mapped_file.h" -#include "ipc_mutex.h" #include "eqemu_exception.h" -#include "loottable.h" #include "faction.h" #include "features.h" +#include "guilds.h" +#include "ipc_mutex.h" +#include "item.h" +#include "loottable.h" +#include "memory_mapped_file.h" +#include "mysql.h" +#include "rulesys.h" +#include "shareddb.h" +#include "string_util.h" SharedDatabase::SharedDatabase() : Database(), skill_caps_mmf(nullptr), items_mmf(nullptr), items_hash(nullptr), faction_mmf(nullptr), faction_hash(nullptr), diff --git a/common/shareddb.h b/common/shareddb.h index 5f0707054..073c385e8 100644 --- a/common/shareddb.h +++ b/common/shareddb.h @@ -6,128 +6,134 @@ #include "database.h" #include "skills.h" #include "spdat.h" -#include "item.h" #include "base_data.h" #include "fixed_memory_hash_set.h" #include "fixed_memory_variable_hash_set.h" #include - +class EvolveInfo; +class Inventory; +class ItemInst; +struct BaseDataStruct; +struct InspectMessage_Struct; +struct PlayerProfile_Struct; +struct SPDat_Spell_Struct; struct Item_Struct; struct NPCFactionList; -struct Faction; struct LootTable_Struct; struct LootDrop_Struct; -namespace EQEmu { +namespace EQEmu +{ class MemoryMappedFile; } /* - * This object is inherited by world and zone's DB object, - * and is mainly here to facilitate shared memory, and other - * things which only world and zone need. - */ -class SharedDatabase : public Database { -public: - SharedDatabase(); - SharedDatabase(const char* host, const char* user, const char* passwd, const char* database,uint32 port); - virtual ~SharedDatabase(); + This object is inherited by world and zone's DB object, + and is mainly here to facilitate shared memory, and other + things which only world and zone need. +*/ +class SharedDatabase : public Database +{ + public: + SharedDatabase(); + SharedDatabase(const char* host, const char* user, const char* passwd, const char* database, uint32 port); + virtual ~SharedDatabase(); - /* - * General Character Related Stuff - */ - bool SetGMSpeed(uint32 account_id, uint8 gmspeed); - uint8 GetGMSpeed(uint32 account_id); - bool SetHideMe(uint32 account_id, uint8 hideme); - int32 DeleteStalePlayerCorpses(); - void LoadCharacterInspectMessage(uint32 character_id, InspectMessage_Struct* message); - void SaveCharacterInspectMessage(uint32 character_id, const InspectMessage_Struct* message); - void GetBotInspectMessage(uint32 botid, InspectMessage_Struct* message); - void SetBotInspectMessage(uint32 botid, const InspectMessage_Struct* message); - bool GetCommandSettings(std::map &commands); - uint32 GetTotalTimeEntitledOnAccount(uint32 AccountID); + /* + General Character Related Stuff + */ + bool SetGMSpeed(uint32 account_id, uint8 gmspeed); + uint8 GetGMSpeed(uint32 account_id); + bool SetHideMe(uint32 account_id, uint8 hideme); + int32 DeleteStalePlayerCorpses(); + void LoadCharacterInspectMessage(uint32 character_id, InspectMessage_Struct* message); + void SaveCharacterInspectMessage(uint32 character_id, const InspectMessage_Struct* message); + void GetBotInspectMessage(uint32 botid, InspectMessage_Struct* message); + void SetBotInspectMessage(uint32 botid, const InspectMessage_Struct* message); + bool GetCommandSettings(std::map &commands); + uint32 GetTotalTimeEntitledOnAccount(uint32 AccountID); - /* - * Character Inventory - */ - bool SaveCursor(uint32 char_id, std::list::const_iterator &start, std::list::const_iterator &end); - bool SaveInventory(uint32 char_id, const ItemInst* inst, int16 slot_id); - bool DeleteSharedBankSlot(uint32 char_id, int16 slot_id); - bool DeleteInventorySlot(uint32 char_id, int16 slot_id); - bool UpdateInventorySlot(uint32 char_id, const ItemInst* inst, int16 slot_id); - bool UpdateSharedBankSlot(uint32 char_id, const ItemInst* inst, int16 slot_id); - bool VerifyInventory(uint32 account_id, int16 slot_id, const ItemInst* inst); - bool GetSharedBank(uint32 id, Inventory* inv, bool is_charid); - int32 GetSharedPlatinum(uint32 account_id); - bool SetSharedPlatinum(uint32 account_id, int32 amount_to_add); - bool GetInventory(uint32 char_id, Inventory* inv); - bool GetInventory(uint32 account_id, char* name, Inventory* inv); - bool SetStartingItems(PlayerProfile_Struct* pp, Inventory* inv, uint32 si_race, uint32 si_class, uint32 si_deity, uint32 si_current_zone, char* si_name, int admin); + /* + Character Inventory + */ + bool SaveCursor(uint32 char_id, std::list::const_iterator &start, std::list::const_iterator &end); + bool SaveInventory(uint32 char_id, const ItemInst* inst, int16 slot_id); + bool DeleteSharedBankSlot(uint32 char_id, int16 slot_id); + bool DeleteInventorySlot(uint32 char_id, int16 slot_id); + bool UpdateInventorySlot(uint32 char_id, const ItemInst* inst, int16 slot_id); + bool UpdateSharedBankSlot(uint32 char_id, const ItemInst* inst, int16 slot_id); + bool VerifyInventory(uint32 account_id, int16 slot_id, const ItemInst* inst); + bool GetSharedBank(uint32 id, Inventory* inv, bool is_charid); + int32 GetSharedPlatinum(uint32 account_id); + bool SetSharedPlatinum(uint32 account_id, int32 amount_to_add); + bool GetInventory(uint32 char_id, Inventory* inv); + bool GetInventory(uint32 account_id, char* name, Inventory* inv); + bool SetStartingItems(PlayerProfile_Struct* pp, Inventory* inv, uint32 si_race, uint32 si_class, uint32 si_deity, uint32 si_current_zone, char* si_name, int admin); - std::string GetBook(const char *txtfile); + std::string GetBook(const char *txtfile); - /* - * Item Methods - */ - ItemInst* CreateItem(uint32 item_id, int16 charges = 0, uint32 aug1 = 0, uint32 aug2 = 0, uint32 aug3 = 0, uint32 aug4 = 0, uint32 aug5 = 0, uint32 aug6 = 0, uint8 attuned = 0); - ItemInst* CreateItem(const Item_Struct* item, int16 charges = 0, uint32 aug1 = 0, uint32 aug2 = 0, uint32 aug3 = 0, uint32 aug4 = 0, uint32 aug5 = 0, uint32 aug6 = 0, uint8 attuned = 0); - ItemInst* CreateBaseItem(const Item_Struct* item, int16 charges=0); + /* + Item Methods + */ + ItemInst* CreateItem(uint32 item_id, int16 charges = 0, uint32 aug1 = 0, uint32 aug2 = 0, uint32 aug3 = 0, uint32 aug4 = 0, uint32 aug5 = 0, uint32 aug6 = 0, uint8 attuned = 0); + ItemInst* CreateItem(const Item_Struct* item, int16 charges = 0, uint32 aug1 = 0, uint32 aug2 = 0, uint32 aug3 = 0, uint32 aug4 = 0, uint32 aug5 = 0, uint32 aug6 = 0, uint8 attuned = 0); + ItemInst* CreateBaseItem(const Item_Struct* item, int16 charges = 0); - /* - * Shared Memory crap - */ + /* + Shared Memory crap + */ - //items - void GetItemsCount(int32 &item_count, uint32 &max_id); - void LoadItems(void *data, uint32 size, int32 items, uint32 max_item_id); - bool LoadItems(); - const Item_Struct* IterateItems(uint32* id); - const Item_Struct* GetItem(uint32 id); - const EvolveInfo* GetEvolveInfo(uint32 loregroup); + //items + void GetItemsCount(int32 &item_count, uint32 &max_id); + void LoadItems(void *data, uint32 size, int32 items, uint32 max_item_id); + bool LoadItems(); + const Item_Struct* IterateItems(uint32* id); + const Item_Struct* GetItem(uint32 id); + const EvolveInfo* GetEvolveInfo(uint32 loregroup); - //faction lists - void GetFactionListInfo(uint32 &list_count, uint32 &max_lists); - const NPCFactionList* GetNPCFactionEntry(uint32 id); - void LoadNPCFactionLists(void *data, uint32 size, uint32 list_count, uint32 max_lists); - bool LoadNPCFactionLists(); + //faction lists + void GetFactionListInfo(uint32 &list_count, uint32 &max_lists); + const NPCFactionList* GetNPCFactionEntry(uint32 id); + void LoadNPCFactionLists(void *data, uint32 size, uint32 list_count, uint32 max_lists); + bool LoadNPCFactionLists(); - //loot - void GetLootTableInfo(uint32 &loot_table_count, uint32 &max_loot_table, uint32 &loot_table_entries); - void GetLootDropInfo(uint32 &loot_drop_count, uint32 &max_loot_drop, uint32 &loot_drop_entries); - void LoadLootTables(void *data, uint32 size); - void LoadLootDrops(void *data, uint32 size); - bool LoadLoot(); - const LootTable_Struct* GetLootTable(uint32 loottable_id); - const LootDrop_Struct* GetLootDrop(uint32 lootdrop_id); + //loot + void GetLootTableInfo(uint32 &loot_table_count, uint32 &max_loot_table, uint32 &loot_table_entries); + void GetLootDropInfo(uint32 &loot_drop_count, uint32 &max_loot_drop, uint32 &loot_drop_entries); + void LoadLootTables(void *data, uint32 size); + void LoadLootDrops(void *data, uint32 size); + bool LoadLoot(); + const LootTable_Struct* GetLootTable(uint32 loottable_id); + const LootDrop_Struct* GetLootDrop(uint32 lootdrop_id); - void LoadSkillCaps(void *data); - bool LoadSkillCaps(); - uint16 GetSkillCap(uint8 Class_, SkillUseTypes Skill, uint8 Level); - uint8 GetTrainLevel(uint8 Class_, SkillUseTypes Skill, uint8 Level); + void LoadSkillCaps(void *data); + bool LoadSkillCaps(); + uint16 GetSkillCap(uint8 Class_, SkillUseTypes Skill, uint8 Level); + uint8 GetTrainLevel(uint8 Class_, SkillUseTypes Skill, uint8 Level); - int GetMaxSpellID(); - void LoadSpells(void *data, int max_spells); - void LoadDamageShieldTypes(SPDat_Spell_Struct* sp, int32 iMaxSpellID); + int GetMaxSpellID(); + void LoadSpells(void *data, int max_spells); + void LoadDamageShieldTypes(SPDat_Spell_Struct* sp, int32 iMaxSpellID); - int GetMaxBaseDataLevel(); - bool LoadBaseData(); - void LoadBaseData(void *data, int max_level); - const BaseDataStruct* GetBaseData(int lvl, int cl); + int GetMaxBaseDataLevel(); + bool LoadBaseData(); + void LoadBaseData(void *data, int max_level); + const BaseDataStruct* GetBaseData(int lvl, int cl); -protected: + protected: - EQEmu::MemoryMappedFile *skill_caps_mmf; - EQEmu::MemoryMappedFile *items_mmf; - EQEmu::FixedMemoryHashSet *items_hash; - EQEmu::MemoryMappedFile *faction_mmf; - EQEmu::FixedMemoryHashSet *faction_hash; - EQEmu::MemoryMappedFile *loot_table_mmf; - EQEmu::FixedMemoryVariableHashSet *loot_table_hash; - EQEmu::MemoryMappedFile *loot_drop_mmf; - EQEmu::FixedMemoryVariableHashSet *loot_drop_hash; - EQEmu::MemoryMappedFile *base_data_mmf; + EQEmu::MemoryMappedFile *skill_caps_mmf; + EQEmu::MemoryMappedFile *items_mmf; + EQEmu::FixedMemoryHashSet *items_hash; + EQEmu::MemoryMappedFile *faction_mmf; + EQEmu::FixedMemoryHashSet *faction_hash; + EQEmu::MemoryMappedFile *loot_table_mmf; + EQEmu::FixedMemoryVariableHashSet *loot_table_hash; + EQEmu::MemoryMappedFile *loot_drop_mmf; + EQEmu::FixedMemoryVariableHashSet *loot_drop_hash; + EQEmu::MemoryMappedFile *base_data_mmf; }; #endif /*SHAREDDB_H_*/ From 12206c0e501c31c0f37b6b150a9d377e651f2f35 Mon Sep 17 00:00:00 2001 From: Akkadius Date: Mon, 15 Dec 2014 22:42:44 -0600 Subject: [PATCH 25/36] races.cpp header include cleanup --- common/races.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/common/races.cpp b/common/races.cpp index d088ce185..6322b50af 100644 --- a/common/races.cpp +++ b/common/races.cpp @@ -15,8 +15,7 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "../common/debug.h" -#include "../common/eq_packet_structs.h" + #include "../common/races.h" const char* GetRaceName(uint16 race) { From f3ebb2e5d8afafae99546c90ae464c1f54e39039 Mon Sep 17 00:00:00 2001 From: Akkadius Date: Mon, 15 Dec 2014 22:42:59 -0600 Subject: [PATCH 26/36] rdtsc.cpp header include cleanup --- common/rdtsc.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/common/rdtsc.cpp b/common/rdtsc.cpp index 1d66c0254..53962f1d5 100644 --- a/common/rdtsc.cpp +++ b/common/rdtsc.cpp @@ -15,10 +15,9 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "debug.h" + #include "rdtsc.h" #include "types.h" -#include #ifdef _WINDOWS #include From b687fb2439729b26d08816921eea3ce1ad315849 Mon Sep 17 00:00:00 2001 From: Akkadius Date: Mon, 15 Dec 2014 22:43:58 -0600 Subject: [PATCH 27/36] shareddb.cpp header include cleanup --- common/shareddb.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/common/shareddb.cpp b/common/shareddb.cpp index d0f89658a..cd8fd49e0 100644 --- a/common/shareddb.cpp +++ b/common/shareddb.cpp @@ -1,14 +1,11 @@ #include #include -#include -#include #include "classes.h" #include "eq_packet_structs.h" #include "eqemu_exception.h" #include "faction.h" #include "features.h" -#include "guilds.h" #include "ipc_mutex.h" #include "item.h" #include "loottable.h" From a55b2ca5577543f85342fe49b12626447a158641 Mon Sep 17 00:00:00 2001 From: Akkadius Date: Mon, 15 Dec 2014 22:45:37 -0600 Subject: [PATCH 28/36] spdat.cpp header include cleanup --- common/spdat.cpp | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/common/spdat.cpp b/common/spdat.cpp index 3f8ae4849..8bceec249 100644 --- a/common/spdat.cpp +++ b/common/spdat.cpp @@ -70,15 +70,12 @@ */ -#include "debug.h" -#include "spdat.h" -#include "packet_dump.h" -#include "moremath.h" -#include "item.h" -#include "skills.h" -#include "bodytypes.h" +#include "../common/logsys.h" +#include "../common/logtypes.h" + #include "classes.h" -#include +#include "spdat.h" + #ifndef WIN32 #include #include "unix.h" From 40377447acf06db3af2122cef986330ebb06c0d5 Mon Sep 17 00:00:00 2001 From: Akkadius Date: Mon, 15 Dec 2014 22:47:48 -0600 Subject: [PATCH 29/36] string_util.cpp & .h header include cleanup --- common/skills.cpp | 1 + common/string_util.cpp | 3 --- common/string_util.h | 1 - 3 files changed, 1 insertion(+), 4 deletions(-) diff --git a/common/skills.cpp b/common/skills.cpp index 24a32196e..ceb726d8c 100644 --- a/common/skills.cpp +++ b/common/skills.cpp @@ -15,6 +15,7 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ + #include "types.h" #include "skills.h" diff --git a/common/string_util.cpp b/common/string_util.cpp index 2fcb59e05..63da1b08c 100644 --- a/common/string_util.cpp +++ b/common/string_util.cpp @@ -16,9 +16,6 @@ #include "string_util.h" -#include // for strncpy -#include - #ifdef _WINDOWS #include diff --git a/common/string_util.h b/common/string_util.h index 34f08b5e2..31ba4c587 100644 --- a/common/string_util.h +++ b/common/string_util.h @@ -19,7 +19,6 @@ #include #include #include -#include #include "types.h" From 6b485273d19b1ed8114437aa020a1774ca49da2c Mon Sep 17 00:00:00 2001 From: Akkadius Date: Mon, 15 Dec 2014 22:50:33 -0600 Subject: [PATCH 30/36] tcp_connection.cpp & .h header include cleanup --- common/tcp_connection.cpp | 5 +---- common/tcp_connection.h | 2 -- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/common/tcp_connection.cpp b/common/tcp_connection.cpp index ea57a6301..890a46adc 100644 --- a/common/tcp_connection.cpp +++ b/common/tcp_connection.cpp @@ -15,17 +15,14 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ + #include "../common/debug.h" #include #include -#include #include #include "tcp_connection.h" -#include "../common/servertalk.h" -#include "../common/timer.h" -#include "../common/packet_dump.h" #ifdef FREEBSD //Timothy Whitman - January 7, 2003 #define MSG_NOSIGNAL 0 diff --git a/common/tcp_connection.h b/common/tcp_connection.h index 2e5b7e883..db38c941b 100644 --- a/common/tcp_connection.h +++ b/common/tcp_connection.h @@ -48,8 +48,6 @@ #include "queue.h" #include "misc_functions.h" -class BaseTCPServer; -class ServerPacket; #define TCPConnection_ErrorBufferSize 1024 #define MaxTCPReceiveBuffferSize 524288 From f4609101d50c3c1d5cd51769287cfb09b500070c Mon Sep 17 00:00:00 2001 From: Akkadius Date: Mon, 15 Dec 2014 22:52:03 -0600 Subject: [PATCH 31/36] tcp_server.cpp include header cleanup --- common/tcp_server.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/common/tcp_server.cpp b/common/tcp_server.cpp index 415f76fa1..e424947d2 100644 --- a/common/tcp_server.cpp +++ b/common/tcp_server.cpp @@ -1,8 +1,6 @@ #include "debug.h" #include "tcp_server.h" #include -#include -#include #ifdef _WINDOWS #include From ef3d4ae51a7d1a6fdb719188542a940f696c47a7 Mon Sep 17 00:00:00 2001 From: Akkadius Date: Mon, 15 Dec 2014 22:56:29 -0600 Subject: [PATCH 32/36] string_util linux build fix --- common/string_util.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/common/string_util.h b/common/string_util.h index 31ba4c587..70e888bdf 100644 --- a/common/string_util.h +++ b/common/string_util.h @@ -17,8 +17,10 @@ #define _STRINGUTIL_H_ #include +#include #include #include + #include "types.h" From 25ee643aeb364b2ac4a5c599cab47b8d1ccb7f43 Mon Sep 17 00:00:00 2001 From: Akkadius Date: Mon, 15 Dec 2014 22:56:44 -0600 Subject: [PATCH 33/36] timer.cpp include header cleanup --- common/timer.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/common/timer.cpp b/common/timer.cpp index eb6a081c2..c1c94a7f6 100644 --- a/common/timer.cpp +++ b/common/timer.cpp @@ -15,7 +15,8 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "../common/debug.h" + + // Disgrace: for windows compile #ifndef WIN32 #include @@ -23,8 +24,6 @@ #include #endif -#include - #include "timer.h" uint32 current_time = 0; From 5b49ecf07244ee7b5c9e53695af42d397c08bca3 Mon Sep 17 00:00:00 2001 From: Akkadius Date: Mon, 15 Dec 2014 22:56:55 -0600 Subject: [PATCH 34/36] worldconn.cpp header include cleanup --- common/worldconn.cpp | 7 ------- 1 file changed, 7 deletions(-) diff --git a/common/worldconn.cpp b/common/worldconn.cpp index 73946d6f5..d43009b23 100644 --- a/common/worldconn.cpp +++ b/common/worldconn.cpp @@ -17,18 +17,11 @@ */ #include "../common/debug.h" -#include -#include -#include #include -#include -#include -#include #include "worldconn.h" #include "eqemu_config.h" #include "md5.h" -#include "database.h" #include "servertalk.h" WorldConnection::WorldConnection(EmuTCPConnection::ePacketMode mode, const char *password) From 0b89c95ab2eaea9ee9ff32d8c9ddd05735a2fb74 Mon Sep 17 00:00:00 2001 From: Akkadius Date: Mon, 15 Dec 2014 23:00:29 -0600 Subject: [PATCH 35/36] tcp_server.cpp linux build fix for not fake --- common/tcp_server.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/common/tcp_server.cpp b/common/tcp_server.cpp index e424947d2..f99fb256d 100644 --- a/common/tcp_server.cpp +++ b/common/tcp_server.cpp @@ -1,6 +1,9 @@ #include "debug.h" #include "tcp_server.h" + #include +#include +#include #ifdef _WINDOWS #include From ad8e834fe8bd3aadd4a9c3de50d4c0b1733c040f Mon Sep 17 00:00:00 2001 From: Akkadius Date: Mon, 15 Dec 2014 23:14:55 -0600 Subject: [PATCH 36/36] Dropping client 6.2 support --- common/CMakeLists.txt | 12 - common/eq_dictionary.cpp | 7 - common/eq_dictionary.h | 1 - common/patches/client62.cpp | 1341 ----------- common/patches/client62.h | 37 - common/patches/client62_constants.h | 212 -- common/patches/client62_itemfields.h | 166 -- common/patches/client62_ops.h | 54 - common/patches/client62_structs.h | 3163 -------------------------- common/patches/patches.cpp | 3 - utils/patches/patch_6.2.conf | 539 ----- world/clientlist.cpp | 6 +- zone/lua_general.cpp | 1 - zone/tasks.cpp | 14 - 14 files changed, 2 insertions(+), 5554 deletions(-) delete mode 100644 common/patches/client62.cpp delete mode 100644 common/patches/client62.h delete mode 100644 common/patches/client62_constants.h delete mode 100644 common/patches/client62_itemfields.h delete mode 100644 common/patches/client62_ops.h delete mode 100644 common/patches/client62_structs.h delete mode 100644 utils/patches/patch_6.2.conf diff --git a/common/CMakeLists.txt b/common/CMakeLists.txt index 06547f418..d547c4c88 100644 --- a/common/CMakeLists.txt +++ b/common/CMakeLists.txt @@ -67,7 +67,6 @@ SET(common_sources worldconn.cpp xml_parser.cpp platform.cpp - patches/client62.cpp patches/patches.cpp patches/sod.cpp patches/sof.cpp @@ -193,11 +192,6 @@ SET(common_headers worldconn.h xml_parser.h zone_numbers.h - patches/client62.h - patches/client62_constants.h - patches/client62_itemfields.h - patches/client62_ops.h - patches/client62_structs.h patches/patches.h patches/sod.h patches/sod_constants.h @@ -251,11 +245,6 @@ SET(common_headers ) SOURCE_GROUP(Patches FILES - patches/client62.h - patches/client62_itemfields.h - patches/client62_ops.h - patches/client62_constants.h - patches/client62_structs.h patches/patches.h patches/sod.h patches/sod_itemfields.h @@ -291,7 +280,6 @@ SOURCE_GROUP(Patches FILES patches/underfoot_ops.h patches/underfoot_constants.h patches/underfoot_structs.h - patches/client62.cpp patches/patches.cpp patches/sod.cpp patches/sof.cpp diff --git a/common/eq_dictionary.cpp b/common/eq_dictionary.cpp index 3756ca8fe..37414853e 100644 --- a/common/eq_dictionary.cpp +++ b/common/eq_dictionary.cpp @@ -548,7 +548,6 @@ uint16 EQLimits::InventoryMapSize(int16 map, uint32 version) { }, { // local[MapBank] /*Unknown*/ NOT_USED, -/*62*/ Client62::consts::MAP_BANK_SIZE, /*Titanium*/ Titanium::consts::MAP_BANK_SIZE, /*SoF*/ EmuConstants::MAP_BANK_SIZE, /*SoD*/ EmuConstants::MAP_BANK_SIZE, @@ -698,7 +697,6 @@ uint16 EQLimits::InventoryMapSize(int16 map, uint32 version) { }, { // local[MapCorpse] /*Unknown*/ NOT_USED, -/*62*/ Client62::consts::MAP_CORPSE_SIZE, /*Titanium*/ Titanium::consts::MAP_CORPSE_SIZE, /*SoF*/ SoF::consts::MAP_CORPSE_SIZE, /*SoD*/ SoD::consts::MAP_CORPSE_SIZE, @@ -728,7 +726,6 @@ uint16 EQLimits::InventoryMapSize(int16 map, uint32 version) { }, { // local[MapInspect] /*Unknown*/ NOT_USED, -/*62*/ Client62::consts::MAP_INSPECT_SIZE, /*Titanium*/ Titanium::consts::MAP_INSPECT_SIZE, /*SoF*/ SoF::consts::MAP_INSPECT_SIZE, /*SoD*/ SoD::consts::MAP_INSPECT_SIZE, @@ -1006,7 +1003,6 @@ uint64 EQLimits::CursorBitmask(uint32 version) { bool EQLimits::AllowsEmptyBagInBag(uint32 version) { static const bool local[_EmuClientCount] = { /*Unknown*/ false, -/*62*/ Client62::limits::ALLOWS_EMPTY_BAG_IN_BAG, /*Titanium*/ Titanium::limits::ALLOWS_EMPTY_BAG_IN_BAG, /*SoF*/ SoF::limits::ALLOWS_EMPTY_BAG_IN_BAG, /*SoD*/ SoD::limits::ALLOWS_EMPTY_BAG_IN_BAG, @@ -1027,8 +1023,6 @@ bool EQLimits::AllowsEmptyBagInBag(uint32 version) { bool EQLimits::AllowsClickCastFromBag(uint32 version) { static const bool local[_EmuClientCount] = { /*Unknown*/ false, -/*62*/ Client62::limits::ALLOWS_CLICK_CAST_FROM_BAG, -/*Titanium*/ Titanium::limits::ALLOWS_CLICK_CAST_FROM_BAG, /*SoF*/ SoF::limits::ALLOWS_CLICK_CAST_FROM_BAG, /*SoD*/ SoD::limits::ALLOWS_CLICK_CAST_FROM_BAG, /*Underfoot*/ Underfoot::limits::ALLOWS_CLICK_CAST_FROM_BAG, @@ -1088,7 +1082,6 @@ uint16 EQLimits::ItemContainerSize(uint32 version) { bool EQLimits::CoinHasWeight(uint32 version) { static const bool local[_EmuClientCount] = { /*Unknown*/ true, -/*62*/ Client62::limits::COIN_HAS_WEIGHT, /*Titanium*/ Titanium::limits::COIN_HAS_WEIGHT, /*SoF*/ SoF::limits::COIN_HAS_WEIGHT, /*SoD*/ SoD::limits::COIN_HAS_WEIGHT, diff --git a/common/eq_dictionary.h b/common/eq_dictionary.h index a17ade924..43511072f 100644 --- a/common/eq_dictionary.h +++ b/common/eq_dictionary.h @@ -26,7 +26,6 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #include "eq_constants.h" #include "clientversions.h" #include -#include "../common/patches/client62_constants.h" #include "../common/patches/titanium_constants.h" #include "../common/patches/sof_constants.h" #include "../common/patches/sod_constants.h" diff --git a/common/patches/client62.cpp b/common/patches/client62.cpp deleted file mode 100644 index 102414b16..000000000 --- a/common/patches/client62.cpp +++ /dev/null @@ -1,1341 +0,0 @@ -#include "../debug.h" -#include "client62.h" -#include "../opcodemgr.h" -#include "../logsys.h" -#include "../eq_stream_ident.h" -#include "../crc32.h" - -#include "../eq_packet_structs.h" -#include "../misc_functions.h" -#include "../string_util.h" -#include "../item.h" -#include "../clientversions.h" -#include "client62_structs.h" - -namespace Client62 -{ - static const char *name = "6.2"; - static OpcodeManager *opcodes = nullptr; - static Strategy struct_strategy; - - char* SerializeItem(const ItemInst *inst, int16 slot_id_in, uint32 *length, uint8 depth); - - // server to client inventory location converters - static inline int16 ServerToClient62Slot(uint32 ServerSlot); - static inline int16 ServerToClient62CorpseSlot(uint32 ServerCorpse); - - // client to server inventory location converters - static inline uint32 Client62ToServerSlot(int16 Client62Slot); - static inline uint32 Client62ToServerCorpseSlot(int16 Client62Corpse); - - void Register(EQStreamIdentifier &into) - { - //create our opcode manager if we havent already - if (opcodes == nullptr) { - //TODO: get this file name from the config file - std::string opfile = "patch_"; - opfile += name; - opfile += ".conf"; - //load up the opcode manager. - //TODO: figure out how to support shared memory with multiple patches... - opcodes = new RegularOpcodeManager(); - if (!opcodes->LoadOpcodes(opfile.c_str())) { - _log(NET__OPCODES, "Error loading opcodes file %s. Not registering patch %s.", opfile.c_str(), name); - return; - } - } - - //ok, now we have what we need to register. - - EQStream::Signature signature; - std::string pname; - - //register our world signature. - pname = std::string(name) + "_world"; - signature.ignore_eq_opcode = 0; - signature.first_length = sizeof(structs::LoginInfo_Struct); - signature.first_eq_opcode = opcodes->EmuToEQ(OP_SendLoginInfo); - into.RegisterPatch(signature, pname.c_str(), &opcodes, &struct_strategy); - - //register our zone signature. - pname = std::string(name) + "_zone"; - signature.ignore_eq_opcode = opcodes->EmuToEQ(OP_AckPacket); - signature.first_length = sizeof(structs::ClientZoneEntry_Struct); - signature.first_eq_opcode = opcodes->EmuToEQ(OP_ZoneEntry); - into.RegisterPatch(signature, pname.c_str(), &opcodes, &struct_strategy); - - _log(NET__IDENTIFY, "Registered patch %s", name); - } - - void Reload() - { - //we have a big problem to solve here when we switch back to shared memory - //opcode managers because we need to change the manager pointer, which means - //we need to go to every stream and replace it's manager. - - if (opcodes != nullptr) { - //TODO: get this file name from the config file - std::string opfile = "patch_"; - opfile += name; - opfile += ".conf"; - if (!opcodes->ReloadOpcodes(opfile.c_str())) { - _log(NET__OPCODES, "Error reloading opcodes file %s for patch %s.", opfile.c_str(), name); - return; - } - _log(NET__OPCODES, "Reloaded opcodes for patch %s", name); - } - } - - Strategy::Strategy() : StructStrategy() - { - //all opcodes default to passthrough. -#include "ss_register.h" -#include "client62_ops.h" - } - - std::string Strategy::Describe() const - { - std::string r; - r += "Patch "; - r += name; - return(r); - } - - const EQClientVersion Strategy::ClientVersion() const - { - return EQClient62; - } - -#include "ss_define.h" - -// ENCODE methods - EAT_ENCODE(OP_GuildMemberLevelUpdate); // added ; - - EAT_ENCODE(OP_ZoneServerReady); // added ; - - ENCODE(OP_Action) - { - ENCODE_LENGTH_EXACT(Action_Struct); - SETUP_DIRECT_ENCODE(Action_Struct, structs::Action_Struct); - - OUT(target); - OUT(source); - OUT(level); - OUT(instrument_mod); - OUT(sequence); - OUT(type); - //OUT(damage); - OUT(spell); - OUT(buff_unknown); // if this is 4, a buff icon is made - - FINISH_ENCODE(); - } - - ENCODE(OP_AdventureMerchantSell) - { - ENCODE_LENGTH_EXACT(Adventure_Sell_Struct); - SETUP_DIRECT_ENCODE(Adventure_Sell_Struct, structs::Adventure_Sell_Struct); - - eq->unknown000 = 1; - OUT(npcid); - eq->slot = ServerToClient62Slot(emu->slot); - OUT(charges); - OUT(sell_price); - - FINISH_ENCODE(); - } - - ENCODE(OP_ApplyPoison) - { - ENCODE_LENGTH_EXACT(ApplyPoison_Struct); - SETUP_DIRECT_ENCODE(ApplyPoison_Struct, structs::ApplyPoison_Struct); - - eq->inventorySlot = ServerToClient62Slot(emu->inventorySlot); - OUT(success); - - FINISH_ENCODE(); - } - - ENCODE(OP_BazaarSearch) - { - EQApplicationPacket *in = *p; - *p = nullptr; - - char *Buffer = (char *)in->pBuffer; - - uint8 SubAction = VARSTRUCT_DECODE_TYPE(uint8, Buffer); - - if (SubAction != BazaarSearchResults) - { - dest->FastQueuePacket(&in, ack_req); - - return; - } - - unsigned char *__emu_buffer = in->pBuffer; - - BazaarSearchResults_Struct *emu = (BazaarSearchResults_Struct *)__emu_buffer; - - int EntryCount = in->size / sizeof(BazaarSearchResults_Struct); - - if (EntryCount == 0 || (in->size % sizeof(BazaarSearchResults_Struct)) != 0) - { - _log(NET__STRUCTS, "Wrong size on outbound %s: Got %d, expected multiple of %d", opcodes->EmuToName(in->GetOpcode()), in->size, sizeof(BazaarSearchResults_Struct)); - delete in; - return; - } - in->size = EntryCount * sizeof(structs::BazaarSearchResults_Struct); - - in->pBuffer = new unsigned char[in->size]; - - memset(in->pBuffer, 0, in->size); - - structs::BazaarSearchResults_Struct *eq = (structs::BazaarSearchResults_Struct *)in->pBuffer; - - for (int i = 0; i < EntryCount; ++i, ++emu, ++eq) - { - OUT(Beginning.Action); - OUT(NumItems); - OUT(SerialNumber); - OUT(SellerID); - OUT(Cost); - OUT(ItemStat); - memcpy(eq->ItemName, emu->ItemName, sizeof(eq->ItemName)); - } - - delete[] __emu_buffer; - dest->FastQueuePacket(&in, ack_req); - } - - ENCODE(OP_BecomeTrader) - { - ENCODE_LENGTH_EXACT(BecomeTrader_Struct); - SETUP_DIRECT_ENCODE(BecomeTrader_Struct, structs::BecomeTrader_Struct); - - OUT(ID); - OUT(Code); - - FINISH_ENCODE(); - } - - ENCODE(OP_CharInventory) - { - //consume the packet - EQApplicationPacket *in = *p; - *p = nullptr; - - //store away the emu struct - unsigned char *__emu_buffer = in->pBuffer; - - int itemcount = in->size / sizeof(InternalSerializedItem_Struct); - if (itemcount == 0 || (in->size % sizeof(InternalSerializedItem_Struct)) != 0) { - _log(NET__STRUCTS, "Wrong size on outbound %s: Got %d, expected multiple of %d", opcodes->EmuToName(in->GetOpcode()), in->size, sizeof(InternalSerializedItem_Struct)); - delete in; - return; - } - InternalSerializedItem_Struct *eq = (InternalSerializedItem_Struct *)in->pBuffer; - - //do the transform... - int r; - std::string serial_string; - for (r = 0; r < itemcount; r++, eq++) { - uint32 length; - char *serialized = SerializeItem((ItemInst*)eq->inst, eq->slot_id, &length, 0); - if (serialized) { - serial_string.append(serialized, length + 1); - safe_delete_array(serialized); - } - else { - _log(NET__STRUCTS, "Serialization failed on item slot %d during OP_CharInventory. Item skipped.", eq->slot_id); - } - - } - - in->size = serial_string.length(); - in->pBuffer = new unsigned char[in->size]; - memcpy(in->pBuffer, serial_string.c_str(), serial_string.length()); - - delete[] __emu_buffer; - dest->FastQueuePacket(&in, ack_req); - } - - ENCODE(OP_DeleteCharge) { ENCODE_FORWARD(OP_MoveItem); } - - ENCODE(OP_DeleteItem) - { - ENCODE_LENGTH_EXACT(DeleteItem_Struct); - SETUP_DIRECT_ENCODE(DeleteItem_Struct, structs::DeleteItem_Struct); - - eq->from_slot = ServerToClient62Slot(emu->from_slot); - eq->to_slot = ServerToClient62Slot(emu->to_slot); - OUT(number_in_stack); - - FINISH_ENCODE(); - } - - ENCODE(OP_DeleteSpawn) - { - SETUP_DIRECT_ENCODE(DeleteSpawn_Struct, structs::DeleteSpawn_Struct); - - OUT(spawn_id); - - FINISH_ENCODE(); - } - - ENCODE(OP_GuildMemberList) - { - //consume the packet - EQApplicationPacket *in = *p; - *p = nullptr; - - //store away the emu struct - unsigned char *__emu_buffer = in->pBuffer; - Internal_GuildMembers_Struct *emu = (Internal_GuildMembers_Struct *)in->pBuffer; - - //make a new EQ buffer. - uint32 pnl = strlen(emu->player_name); - uint32 length = sizeof(structs::GuildMembers_Struct) + pnl + - emu->count * sizeof(structs::GuildMemberEntry_Struct) - + emu->name_length + emu->note_length; - in->pBuffer = new uint8[length]; - in->size = length; - //no memset since we fill every byte. - - uint8 *buffer; - buffer = in->pBuffer; - - //easier way to setup GuildMembers_Struct - //set prefix name - strcpy((char *)buffer, emu->player_name); - buffer += pnl; - *buffer = '\0'; - buffer++; - - //add member count. - *((uint32 *)buffer) = htonl(emu->count); - buffer += sizeof(uint32); - - if (emu->count > 0) { - Internal_GuildMemberEntry_Struct *emu_e = emu->member; - const char *emu_name = (const char *)(__emu_buffer + - sizeof(Internal_GuildMembers_Struct)+ //skip header - emu->count * sizeof(Internal_GuildMemberEntry_Struct) //skip static length member data - ); - const char *emu_note = (emu_name + - emu->name_length + //skip name contents - emu->count //skip string terminators - ); - - structs::GuildMemberEntry_Struct *e = (structs::GuildMemberEntry_Struct *) buffer; - - uint32 r; - for (r = 0; r < emu->count; r++, emu_e++) { - - //the order we set things here must match the struct - - //nice helper macro - /*#define SlideStructString(field, str) \ - strcpy(e->field, str.c_str()); \ - e = (GuildMemberEntry_Struct *) ( ((uint8 *)e) + str.length() )*/ -#define SlideStructString(field, str) \ - { \ - int sl = strlen(str); \ - memcpy(e->field, str, sl+1); \ - e = (structs::GuildMemberEntry_Struct *) ( ((uint8 *)e) + sl ); \ - str += sl + 1; \ - } -#define PutFieldN(field) e->field = htonl(emu_e->field) - - SlideStructString(name, emu_name); - PutFieldN(level); - PutFieldN(banker); - PutFieldN(class_); - PutFieldN(rank); - PutFieldN(time_last_on); - PutFieldN(tribute_enable); - PutFieldN(total_tribute); - PutFieldN(last_tribute); - SlideStructString(public_note, emu_note); - e->zoneinstance = 0; - e->zone_id = htons(emu_e->zone_id); -#undef SlideStructString -#undef PutFieldN - - e++; - } - } - - delete[] __emu_buffer; - dest->FastQueuePacket(&in, ack_req); - } - - ENCODE(OP_Illusion) - { - ENCODE_LENGTH_EXACT(Illusion_Struct); - SETUP_DIRECT_ENCODE(Illusion_Struct, structs::Illusion_Struct); - - OUT(spawnid); - OUT_str(charname); - - if (emu->race > 473) - eq->race = 1; - else - OUT(race); - - OUT(gender); - OUT(texture); - OUT(helmtexture); - OUT(face); - OUT(hairstyle); - OUT(haircolor); - OUT(beard); - OUT(beardcolor); - OUT(size); - - FINISH_ENCODE(); - } - - ENCODE(OP_ItemLinkResponse) { ENCODE_FORWARD(OP_ItemPacket); } - - ENCODE(OP_ItemPacket) - { - //consume the packet - EQApplicationPacket *in = *p; - *p = nullptr; - - //store away the emu struct - unsigned char *__emu_buffer = in->pBuffer; - ItemPacket_Struct *old_item_pkt = (ItemPacket_Struct *)__emu_buffer; - InternalSerializedItem_Struct *int_struct = (InternalSerializedItem_Struct *)(old_item_pkt->SerializedItem); - - uint32 length; - char *serialized = SerializeItem((const ItemInst *)int_struct->inst, int_struct->slot_id, &length, 0); - - if (!serialized) { - _log(NET__STRUCTS, "Serialization failed on item slot %d.", int_struct->slot_id); - delete in; - return; - } - in->size = length + 5; // ItemPacketType + Serialization + \0 - in->pBuffer = new unsigned char[in->size]; - ItemPacket_Struct *new_item_pkt = (ItemPacket_Struct *)in->pBuffer; - new_item_pkt->PacketType = old_item_pkt->PacketType; - memcpy(new_item_pkt->SerializedItem, serialized, length + 1); - - delete[] __emu_buffer; - safe_delete_array(serialized); - dest->FastQueuePacket(&in, ack_req); - } - - ENCODE(OP_LeadershipExpUpdate) - { - SETUP_DIRECT_ENCODE(LeadershipExpUpdate_Struct, structs::LeadershipExpUpdate_Struct); - - OUT(group_leadership_exp); - OUT(group_leadership_points); - OUT(raid_leadership_exp); - OUT(raid_leadership_points); - - FINISH_ENCODE(); - } - - ENCODE(OP_LootItem) - { - ENCODE_LENGTH_EXACT(LootingItem_Struct); - SETUP_DIRECT_ENCODE(LootingItem_Struct, structs::LootingItem_Struct); - - OUT(lootee); - OUT(looter); - eq->slot_id = ServerToClient62CorpseSlot(emu->slot_id); - OUT(auto_loot); - - FINISH_ENCODE(); - } - - ENCODE(OP_MoveItem) - { - ENCODE_LENGTH_EXACT(MoveItem_Struct); - SETUP_DIRECT_ENCODE(MoveItem_Struct, structs::MoveItem_Struct); - - eq->from_slot = ServerToClient62Slot(emu->from_slot); - eq->to_slot = ServerToClient62Slot(emu->to_slot); - OUT(number_in_stack); - - FINISH_ENCODE(); - } - - ENCODE(OP_NewSpawn) { ENCODE_FORWARD(OP_ZoneSpawns); } - - ENCODE(OP_OnLevelMessage) - { - ENCODE_LENGTH_EXACT(OnLevelMessage_Struct); - SETUP_DIRECT_ENCODE(OnLevelMessage_Struct, structs::OnLevelMessage_Struct); - - OUT_str(Title); - OUT_str(Text); - OUT(Buttons); - OUT(Duration); - OUT(PopupID); - - eq->unknown4236 = 0x00000000; - eq->unknown4240 = 0xffffffff; - - FINISH_ENCODE(); - } - - ENCODE(OP_PetBuffWindow) - { - ENCODE_LENGTH_EXACT(PetBuff_Struct); - SETUP_DIRECT_ENCODE(PetBuff_Struct, PetBuff_Struct); - - OUT(petid); - OUT(buffcount); - - int EQBuffSlot = 0; - - for (uint32 EmuBuffSlot = 0; EmuBuffSlot < BUFF_COUNT; ++EmuBuffSlot) - { - if (emu->spellid[EmuBuffSlot]) - { - eq->spellid[EQBuffSlot] = emu->spellid[EmuBuffSlot]; - eq->ticsremaining[EQBuffSlot++] = emu->ticsremaining[EmuBuffSlot]; - } - } - - FINISH_ENCODE(); - } - - ENCODE(OP_PlayerProfile) - { - SETUP_DIRECT_ENCODE(PlayerProfile_Struct, structs::PlayerProfile_Struct); - - uint32 r; - - memset(eq->unknown3224, 0xff, 448); - memset(eq->unknown3704, 0xff, 32); - - // OUT(checksum); - OUT(gender); - OUT(race); - OUT(class_); - OUT(level); - eq->level2 = emu->level; - - eq->bind_zone_id = emu->binds[0].zoneId; - eq->bind_x[0] = emu->binds[0].x; - eq->bind_y[0] = emu->binds[0].y; - eq->bind_z[0] = emu->binds[0].z; - eq->bind_heading[0] = emu->binds[0].heading; - //just making this up base on organization of struct: - eq->zone_safe_x = emu->binds[4].x; - eq->zone_safe_y = emu->binds[4].y; - eq->zone_safe_z = emu->binds[4].z; - eq->zone_safe_heading = emu->binds[4].heading; - - OUT(deity); - OUT(intoxication); - OUT_array(spellSlotRefresh, structs::MAX_PP_MEMSPELL); - OUT(abilitySlotRefresh); - // OUT(unknown0166[4]); - OUT(haircolor); - OUT(beardcolor); - OUT(eyecolor1); - OUT(eyecolor2); - OUT(hairstyle); - OUT(beard); - for (r = 0; r < 9; r++) { - OUT(item_material[r]); - OUT(item_tint[r].color); - - } - for (r = 0; r < structs::MAX_PP_AA_ARRAY; r++) { - OUT(aa_array[r].AA); - OUT(aa_array[r].value); - } - OUT(points); - OUT(mana); - OUT(cur_hp); - OUT(STR); - OUT(STA); - OUT(CHA); - OUT(DEX); - OUT(INT); - OUT(AGI); - OUT(WIS); - OUT(face); - OUT_array(spell_book, structs::MAX_PP_SPELLBOOK); - OUT_array(mem_spells, structs::MAX_PP_MEMSPELL); - OUT(platinum); - OUT(gold); - OUT(silver); - OUT(copper); - OUT(platinum_cursor); - OUT(gold_cursor); - OUT(silver_cursor); - OUT(copper_cursor); - - OUT_array(skills, structs::MAX_PP_SKILL); // 1:1 direct copy (100 dword) - - OUT(toxicity); - OUT(thirst_level); - OUT(hunger_level); - for (r = 0; r < structs::BUFF_COUNT; r++) { - OUT(buffs[r].slotid); - OUT(buffs[r].level); - OUT(buffs[r].bard_modifier); - OUT(buffs[r].effect); - OUT(buffs[r].spellid); - OUT(buffs[r].duration); - OUT(buffs[r].counters); - // OUT(buffs[r].player_id); - } - for (r = 0; r < structs::MAX_PP_DISCIPLINES; r++) { - OUT(disciplines.values[r]); - } - // OUT_array(recastTimers, structs::MAX_RECAST_TYPES); - OUT(endurance); - OUT(aapoints_spent); - OUT(aapoints); - for (r = 0; r < structs::MAX_PLAYER_BANDOLIER; r++) { - OUT_str(bandoliers[r].name); - uint32 k; - for (k = 0; k < structs::MAX_PLAYER_BANDOLIER_ITEMS; k++) { - OUT(bandoliers[r].items[k].item_id); - OUT(bandoliers[r].items[k].icon); - OUT_str(bandoliers[r].items[k].item_name); - } - } - for (r = 0; r < structs::MAX_PLAYER_BANDOLIER_ITEMS; r++) { - OUT(potionbelt.items[r].item_id); - OUT(potionbelt.items[r].icon); - OUT_str(potionbelt.items[r].item_name); - } - // OUT(available_slots); - OUT_str(name); - OUT_str(last_name); - OUT(guild_id); - OUT(birthday); - OUT(lastlogin); - OUT(timePlayedMin); - OUT(pvp); - OUT(anon); - OUT(gm); - OUT(guildrank); - OUT(exp); - OUT_array(languages, structs::MAX_PP_LANGUAGE); - OUT(x); - OUT(y); - OUT(z); - OUT(heading); - OUT(platinum_bank); - OUT(gold_bank); - OUT(silver_bank); - OUT(copper_bank); - OUT(platinum_shared); - OUT(expansions); - OUT(autosplit); - OUT(zone_id); - OUT(zoneInstance); - for (r = 0; r < structs::MAX_GROUP_MEMBERS; r++) { - OUT_str(groupMembers[r]); - } - // OUT_str(groupLeader); //this is prolly right after groupMembers, but I dont feel like checking. - // OUT(leadAAActive); - OUT(ldon_points_guk); - OUT(ldon_points_mir); - OUT(ldon_points_mmc); - OUT(ldon_points_ruj); - OUT(ldon_points_tak); - OUT(ldon_points_available); - OUT(tribute_time_remaining); - OUT(career_tribute_points); - OUT(tribute_points); - OUT(tribute_active); - for (r = 0; r < structs::MAX_PLAYER_TRIBUTES; r++) { - OUT(tributes[r].tribute); - OUT(tributes[r].tier); - } - OUT(group_leadership_exp); - OUT(raid_leadership_exp); - OUT(group_leadership_points); - OUT(raid_leadership_points); - OUT_array(leader_abilities.ranks, structs::MAX_LEADERSHIP_AA_ARRAY); - OUT(air_remaining); - OUT(entityid); - OUT(leadAAActive); - OUT(expAA); - OUT(currentRadCrystals); - OUT(careerRadCrystals); - OUT(currentEbonCrystals); - OUT(careerEbonCrystals); - OUT(groupAutoconsent); - OUT(raidAutoconsent); - OUT(guildAutoconsent); - // OUT(showhelm); - - //set the checksum... - CRC32::SetEQChecksum(__packet->pBuffer, sizeof(structs::PlayerProfile_Struct) - 4); - - FINISH_ENCODE(); - } - - ENCODE(OP_ReadBook) - { - // no apparent slot translation needed -U - EQApplicationPacket *in = *p; - *p = nullptr; - - unsigned char *__emu_buffer = in->pBuffer; - - BookText_Struct *emu_BookText_Struct = (BookText_Struct *)__emu_buffer; - - in->size = sizeof(structs::BookText_Struct) + strlen(emu_BookText_Struct->booktext); - - in->pBuffer = new unsigned char[in->size]; - - structs::BookText_Struct *eq_BookText_Struct = (structs::BookText_Struct*)in->pBuffer; - - eq_BookText_Struct->window = emu_BookText_Struct->window; - eq_BookText_Struct->type = emu_BookText_Struct->type; - strcpy(eq_BookText_Struct->booktext, emu_BookText_Struct->booktext); - - delete[] __emu_buffer; - dest->FastQueuePacket(&in, ack_req); - } - - ENCODE(OP_RespondAA) - { - ENCODE_LENGTH_EXACT(AATable_Struct); - SETUP_DIRECT_ENCODE(AATable_Struct, structs::AATable_Struct); - - unsigned int r; - for (r = 0; r < MAX_PP_AA_ARRAY; r++) { - OUT(aa_list[r].aa_skill); - OUT(aa_list[r].aa_value); - } - - FINISH_ENCODE(); - } - - ENCODE(OP_SendAATable) - { - ENCODE_LENGTH_ATLEAST(SendAA_Struct); - - SETUP_VAR_ENCODE(SendAA_Struct); - ALLOC_VAR_ENCODE(structs::SendAA_Struct, sizeof(structs::SendAA_Struct) + emu->total_abilities*sizeof(structs::AA_Ability)); - - // Check clientver field to verify this AA should be sent for SoF - // clientver 1 is for all clients and 2 is for 6.2 - if (emu->clientver <= 2) - { - OUT(id); - OUT(hotkey_sid); - OUT(hotkey_sid2); - OUT(title_sid); - OUT(desc_sid); - OUT(class_type); - OUT(cost); - OUT(seq); - OUT(current_level); - OUT(prereq_skill); - OUT(prereq_minpoints); - OUT(type); - OUT(spellid); - OUT(spell_type); - OUT(spell_refresh); - OUT(classes); - OUT(berserker); - OUT(max_level); - OUT(last_id); - OUT(next_id); - OUT(cost2); - OUT(unknown80[0]); - OUT(unknown80[1]); - OUT(total_abilities); - unsigned int r; - for (r = 0; r < emu->total_abilities; r++) { - OUT(abilities[r].skill_id); - OUT(abilities[r].base1); - OUT(abilities[r].base2); - OUT(abilities[r].slot); - } - } - - FINISH_ENCODE(); - } - - ENCODE(OP_SendCharInfo) - { - ENCODE_LENGTH_EXACT(CharacterSelect_Struct); - SETUP_DIRECT_ENCODE(CharacterSelect_Struct, structs::CharacterSelect_Struct); - - int r; - for (r = 0; r < 10; r++) { - OUT(zone[r]); - OUT(eyecolor1[r]); - OUT(eyecolor2[r]); - OUT(hairstyle[r]); - OUT(primary[r]); - OUT(race[r]); - OUT(class_[r]); - OUT_str(name[r]); - OUT(gender[r]); - OUT(level[r]); - OUT(secondary[r]); - OUT(face[r]); - OUT(beard[r]); - int k; - for (k = 0; k < 9; k++) { - eq->equip[r][k] = emu->equip[r][k].material; - eq->cs_colors[r][k].color = emu->equip[r][k].color.color; - } - OUT(haircolor[r]); - OUT(gohome[r]); - OUT(deity[r]); - OUT(beardcolor[r]); - } - - FINISH_ENCODE(); - } - - ENCODE(OP_ShopPlayerSell) - { - ENCODE_LENGTH_EXACT(Merchant_Purchase_Struct); - SETUP_DIRECT_ENCODE(Merchant_Purchase_Struct, structs::Merchant_Purchase_Struct); - - OUT(npcid); - eq->itemslot = ServerToClient62Slot(emu->itemslot); - OUT(quantity); - OUT(price); - - FINISH_ENCODE(); - } - - ENCODE(OP_Track) - { - EQApplicationPacket *in = *p; - *p = nullptr; - - unsigned char *__emu_buffer = in->pBuffer; - Track_Struct *emu = (Track_Struct *)__emu_buffer; - - int EntryCount = in->size / sizeof(Track_Struct); - - if (EntryCount == 0 || ((in->size % sizeof(Track_Struct))) != 0) - { - _log(NET__STRUCTS, "Wrong size on outbound %s: Got %d, expected multiple of %d", opcodes->EmuToName(in->GetOpcode()), in->size, sizeof(Track_Struct)); - delete in; - return; - } - - in->size = sizeof(structs::Track_Struct) * EntryCount; - in->pBuffer = new unsigned char[in->size]; - structs::Track_Struct *eq = (structs::Track_Struct *) in->pBuffer; - - for (int i = 0; i < EntryCount; ++i, ++eq, ++emu) - { - OUT(entityid); - OUT(padding002); - OUT(distance); - } - - delete[] __emu_buffer; - dest->FastQueuePacket(&in, ack_req); - } - - ENCODE(OP_TributeItem) - { - ENCODE_LENGTH_EXACT(TributeItem_Struct); - SETUP_DIRECT_ENCODE(TributeItem_Struct, structs::TributeItem_Struct); - - eq->slot = ServerToClient62Slot(emu->slot); - OUT(quantity); - OUT(tribute_master_id); - OUT(tribute_points); - - FINISH_ENCODE(); - } - - ENCODE(OP_WearChange) - { - ENCODE_LENGTH_EXACT(WearChange_Struct); - SETUP_DIRECT_ENCODE(WearChange_Struct, structs::WearChange_Struct); - - OUT(spawn_id); - OUT(material); - OUT(color.color); - OUT(wear_slot_id); - - FINISH_ENCODE(); - } - - ENCODE(OP_ZoneEntry) { ENCODE_FORWARD(OP_ZoneSpawns); } - - ENCODE(OP_ZoneSpawns) - { - //consume the packet - EQApplicationPacket *in = *p; - *p = nullptr; - - //store away the emu struct - unsigned char *__emu_buffer = in->pBuffer; - Spawn_Struct *emu = (Spawn_Struct *)__emu_buffer; - - //determine and verify length - int entrycount = in->size / sizeof(Spawn_Struct); - if (entrycount == 0 || (in->size % sizeof(Spawn_Struct)) != 0) { - _log(NET__STRUCTS, "Wrong size on outbound %s: Got %d, expected multiple of %d", opcodes->EmuToName(in->GetOpcode()), in->size, sizeof(Spawn_Struct)); - delete in; - return; - } - - //make the EQ struct. - in->size = sizeof(structs::Spawn_Struct)*entrycount; - in->pBuffer = new unsigned char[in->size]; - structs::Spawn_Struct *eq = (structs::Spawn_Struct *) in->pBuffer; - - //zero out the packet. We could avoid this memset by setting all fields (including unknowns) - //in the loop. - memset(in->pBuffer, 0, in->size); - - //do the transform... - int r; - int k; - for (r = 0; r < entrycount; r++, eq++, emu++) { - eq->gm = emu->gm; - eq->aaitle = emu->aaitle; - eq->anon = emu->anon; - eq->face = emu->face; - strcpy(eq->name, emu->name); - eq->deity = emu->deity; - eq->size = emu->size; - eq->NPC = emu->NPC; - eq->invis = emu->invis; - eq->haircolor = emu->haircolor; - eq->curHp = emu->curHp; - eq->max_hp = emu->max_hp; - eq->findable = emu->findable; - eq->deltaHeading = emu->deltaHeading; - eq->x = emu->x; - eq->y = emu->y; - eq->animation = emu->animation; - eq->z = emu->z; - eq->deltaY = emu->deltaY; - eq->deltaX = emu->deltaX; - eq->heading = emu->heading; - eq->deltaZ = emu->deltaZ; - eq->eyecolor1 = emu->eyecolor1; - // eq->showhelm = emu->showhelm; - eq->is_npc = emu->is_npc; - eq->hairstyle = emu->hairstyle; - eq->beard = emu->beard; - eq->level = emu->level; - eq->beardcolor = emu->beardcolor; - strcpy(eq->suffix, emu->suffix); - eq->petOwnerId = emu->petOwnerId; - eq->guildrank = emu->guildrank; - for (k = 0; k < 9; k++) { - eq->equipment[k] = emu->equipment[k].material; - eq->colors[k].color = emu->colors[k].color; - } - for (k = 0; k < 8; k++) { - eq->set_to_0xFF[k] = 0xFF; - } - eq->runspeed = emu->runspeed; - eq->afk = emu->afk; - eq->guildID = emu->guildID; - strcpy(eq->title, emu->title); - eq->helm = emu->helm; - eq->race = emu->race; - strcpy(eq->lastName, emu->lastName); - eq->walkspeed = emu->walkspeed; - eq->is_pet = emu->is_pet; - eq->light = emu->light; - eq->class_ = emu->class_; - eq->eyecolor2 = emu->eyecolor2; - eq->gender = emu->gender; - eq->bodytype = emu->bodytype; - eq->equip_chest2 = emu->equip_chest2; - eq->spawnId = emu->spawnId; - eq->lfg = emu->lfg; - eq->flymode = emu->flymode; - } - - //kill off the emu structure and send the eq packet. - delete[] __emu_buffer; - dest->FastQueuePacket(&in, ack_req); - } - -// DECODE methods - DECODE(OP_AdventureMerchantSell) - { - DECODE_LENGTH_EXACT(structs::Adventure_Sell_Struct); - SETUP_DIRECT_DECODE(Adventure_Sell_Struct, structs::Adventure_Sell_Struct); - - IN(npcid); - emu->slot = Client62ToServerSlot(eq->slot); - IN(charges); - IN(sell_price); - - FINISH_DIRECT_DECODE(); - } - - DECODE(OP_ApplyPoison) - { - DECODE_LENGTH_EXACT(structs::ApplyPoison_Struct); - SETUP_DIRECT_DECODE(ApplyPoison_Struct, structs::ApplyPoison_Struct); - - emu->inventorySlot = Client62ToServerSlot(eq->inventorySlot); - IN(success); - - FINISH_DIRECT_DECODE(); - } - - DECODE(OP_AugmentItem) - { - DECODE_LENGTH_EXACT(structs::AugmentItem_Struct); - SETUP_DIRECT_DECODE(AugmentItem_Struct, structs::AugmentItem_Struct); - - emu->container_slot = Client62ToServerSlot(eq->container_slot); - emu->augment_slot = eq->augment_slot; - - FINISH_DIRECT_DECODE(); - } - - DECODE(OP_CastSpell) - { - DECODE_LENGTH_EXACT(structs::CastSpell_Struct); - SETUP_DIRECT_DECODE(CastSpell_Struct, structs::CastSpell_Struct); - - IN(slot); - IN(spell_id); - emu->inventoryslot = Client62ToServerSlot(eq->inventoryslot); - IN(target_id); - - FINISH_DIRECT_DECODE(); - } - - DECODE(OP_CharacterCreate) - { - DECODE_LENGTH_EXACT(structs::CharCreate_Struct); - SETUP_DIRECT_DECODE(CharCreate_Struct, structs::CharCreate_Struct); - - IN(class_); - IN(beardcolor); - IN(beard); - IN(haircolor); - IN(gender); - IN(race); - IN(start_zone); - IN(hairstyle); - IN(deity); - IN(STR); - IN(STA); - IN(AGI); - IN(DEX); - IN(WIS); - IN(INT); - IN(CHA); - IN(face); - IN(eyecolor1); - IN(eyecolor2); - IN(tutorial); - - FINISH_DIRECT_DECODE(); - } - - DECODE(OP_Consume) - { - DECODE_LENGTH_EXACT(structs::Consume_Struct); - SETUP_DIRECT_DECODE(Consume_Struct, structs::Consume_Struct); - - emu->slot = Client62ToServerSlot(eq->slot); - IN(auto_consumed); - IN(type); - - FINISH_DIRECT_DECODE(); - } - - DECODE(OP_DeleteItem) - { - DECODE_LENGTH_EXACT(structs::DeleteItem_Struct); - SETUP_DIRECT_DECODE(DeleteItem_Struct, structs::DeleteItem_Struct); - - emu->from_slot = Client62ToServerSlot(eq->from_slot); - emu->to_slot = Client62ToServerSlot(eq->to_slot); - IN(number_in_stack); - - FINISH_DIRECT_DECODE(); - } - - DECODE(OP_FaceChange) - { - DECODE_LENGTH_EXACT(structs::FaceChange_Struct); - SETUP_DIRECT_DECODE(FaceChange_Struct, structs::FaceChange_Struct); - - IN(haircolor); - IN(beardcolor); - IN(eyecolor1); - IN(eyecolor2); - IN(hairstyle); - IN(beard); - IN(face); - - FINISH_DIRECT_DECODE(); - } - - DECODE(OP_ItemLinkClick) - { - DECODE_LENGTH_EXACT(structs::ItemViewRequest_Struct); - SETUP_DIRECT_DECODE(ItemViewRequest_Struct, structs::ItemViewRequest_Struct); - MEMSET_IN(ItemViewRequest_Struct); - - IN(item_id); - int r; - for (r = 0; r < 5; r++) { - IN(augments[r]); - } - IN(link_hash); - - FINISH_DIRECT_DECODE(); - } - - DECODE(OP_LootItem) - { - DECODE_LENGTH_EXACT(structs::LootingItem_Struct); - SETUP_DIRECT_DECODE(LootingItem_Struct, structs::LootingItem_Struct); - - IN(lootee); - IN(looter); - emu->slot_id = Client62ToServerCorpseSlot(eq->slot_id); - IN(auto_loot); - - FINISH_DIRECT_DECODE(); - } - - DECODE(OP_MoveItem) - { - DECODE_LENGTH_EXACT(structs::MoveItem_Struct); - SETUP_DIRECT_DECODE(MoveItem_Struct, structs::MoveItem_Struct); - - _log(NET__ERROR, "Moved item from %u to %u", eq->from_slot, eq->to_slot); - - emu->from_slot = Client62ToServerSlot(eq->from_slot); - emu->to_slot = Client62ToServerSlot(eq->to_slot); - IN(number_in_stack); - - FINISH_DIRECT_DECODE(); - } - - DECODE(OP_ReadBook) - { - // no apparent slot translation needed -U - DECODE_LENGTH_ATLEAST(structs::BookRequest_Struct); - SETUP_DIRECT_DECODE(BookRequest_Struct, structs::BookRequest_Struct); - - IN(window); - IN(type); - strn0cpy(emu->txtfile, eq->txtfile, sizeof(emu->txtfile)); - - FINISH_DIRECT_DECODE(); - } - - DECODE(OP_SetServerFilter) - { - DECODE_LENGTH_EXACT(structs::SetServerFilter_Struct); - SETUP_DIRECT_DECODE(SetServerFilter_Struct, structs::SetServerFilter_Struct); - - int r; - for (r = 0; r < 25; r++) { - IN(filters[r]); - } - emu->filters[25] = 1; - emu->filters[26] = 1; - emu->filters[27] = 1; - emu->filters[28] = 1; - - FINISH_DIRECT_DECODE(); - } - - DECODE(OP_ShopPlayerSell) - { - DECODE_LENGTH_EXACT(structs::Merchant_Purchase_Struct); - SETUP_DIRECT_DECODE(Merchant_Purchase_Struct, structs::Merchant_Purchase_Struct); - - IN(npcid); - emu->itemslot = Client62ToServerSlot(eq->itemslot); - IN(quantity); - IN(price); - - FINISH_DIRECT_DECODE(); - } - - DECODE(OP_TradeSkillCombine) - { - DECODE_LENGTH_EXACT(structs::NewCombine_Struct); - SETUP_DIRECT_DECODE(NewCombine_Struct, structs::NewCombine_Struct); - - emu->container_slot = Client62ToServerSlot(eq->container_slot); - IN(guildtribute_slot); - - FINISH_DIRECT_DECODE(); - } - - DECODE(OP_TributeItem) - { - DECODE_LENGTH_EXACT(structs::TributeItem_Struct); - SETUP_DIRECT_DECODE(TributeItem_Struct, structs::TributeItem_Struct); - - emu->slot = Client62ToServerSlot(eq->slot); - IN(quantity); - IN(tribute_master_id); - IN(tribute_points); - - FINISH_DIRECT_DECODE(); - } - - DECODE(OP_WearChange) - { - DECODE_LENGTH_EXACT(structs::WearChange_Struct); - SETUP_DIRECT_DECODE(WearChange_Struct, structs::WearChange_Struct); - IN(spawn_id); - IN(material); - IN(color.color); - IN(wear_slot_id); - FINISH_DIRECT_DECODE(); - } - - DECODE(OP_WhoAllRequest) - { - DECODE_LENGTH_EXACT(structs::Who_All_Struct); - SETUP_DIRECT_DECODE(Who_All_Struct, structs::Who_All_Struct); - - memcpy(emu->whom, eq->whom, sizeof(emu->whom)); - IN(wrace); - IN(wclass); - IN(lvllow); - IN(lvlhigh); - IN(gmlookup); - emu->type = 3; - - FINISH_DIRECT_DECODE(); - } - -// file scope helper methods - char *SerializeItem(const ItemInst *inst, int16 slot_id_in, uint32 *length, uint8 depth) - { - char *serialization = nullptr; - char *instance = nullptr; - const char *protection = (const char *)"\\\\\\\\\\"; - char *sub_items[10] = { nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr }; - bool stackable = inst->IsStackable(); - int16 slot_id = ServerToClient62Slot(slot_id_in); - uint32 merchant_slot = inst->GetMerchantSlot(); - int16 charges = inst->GetCharges(); - const Item_Struct *item = inst->GetUnscaledItem(); - int i; - uint32 sub_length; - - // not sure if 6.2 has a recast timer timestamp field..but, something seems amiss between this and Ti's ordering - MakeAnyLenString(&instance, - "%i|%i|%i|%i|%i|%i|%i|%i|%i|%i|", - stackable ? charges : 1, - 0, - //(merchant_slot == 0) ? slot_id : merchant_slot, // change when translator activated - (merchant_slot == 0) ? slot_id_in : merchant_slot, - inst->GetPrice(), - (merchant_slot == 0) ? 1 : inst->GetMerchantCount(), - inst->IsScaling() ? inst->GetExp() / 100 : 0, - //merchant_slot, //instance ID, bullshit for now - // The 'Merchant Slot' needs to be some unique id for bazaar to work properly - (merchant_slot == 0) ? inst->GetSerialNumber() : merchant_slot, - inst->IsAttuned() ? 1 : 0, //not sure where this field is - (stackable ? ((inst->GetItem()->ItemType == ItemTypePotion) ? charges : 0) : charges), - 0 - ); - - for (i = 0; i<10; i++) { - ItemInst *sub = inst->GetItem(i); - if (sub) { - sub_items[i] = SerializeItem(sub, 0, &sub_length, depth + 1); - } - } - - - *length = MakeAnyLenString(&serialization, - "%.*s%s" // For leading quotes (and protection) if a subitem; - "%s" // Instance data - "%.*s\"" // Quotes (and protection, if needed) around static data - "%i" // item->ItemClass so we can do |%s instead of %s| -#define I(field) "|%i" -#define C(field) "|%s" -#define S(field) "|%s" -#define F(field) "|%f" -#include "client62_itemfields.h" - "%.*s\"" // Quotes (and protection, if needed) around static data - "|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s" // Sub items - "%.*s%s" // For trailing quotes (and protection) if a subitem; - , depth ? depth - 1 : 0, protection, (depth) ? "\"" : "" - , instance - , depth, protection - , item->ItemClass -#define I(field) ,item->field -#define C(field) ,field -#define S(field) ,item->field -#define F(field) ,item->field -#include "client62_itemfields.h" - , depth, protection - , sub_items[0] ? sub_items[0] : "" - , sub_items[1] ? sub_items[1] : "" - , sub_items[2] ? sub_items[2] : "" - , sub_items[3] ? sub_items[3] : "" - , sub_items[4] ? sub_items[4] : "" - , sub_items[5] ? sub_items[5] : "" - , sub_items[6] ? sub_items[6] : "" - , sub_items[7] ? sub_items[7] : "" - , sub_items[8] ? sub_items[8] : "" - , sub_items[9] ? sub_items[9] : "" - , (depth) ? depth - 1 : 0, protection, (depth) ? "\"" : "" - ); - - for (i = 0; i < 10; i++) { - if (sub_items[i]) - safe_delete_array(sub_items[i]); - } - - safe_delete_array(instance); - - return serialization; - } - - static inline int16 ServerToClient62Slot(uint32 ServerSlot) - { - //int16 Client62Slot; - if (ServerSlot == INVALID_INDEX) - return INVALID_INDEX; - - return ServerSlot; // deprecated - } - - static inline int16 ServerToClient62CorpseSlot(uint32 ServerCorpse) - { - //int16 Client62Corpse; - return ServerCorpse; - } - - static inline uint32 Client62ToServerSlot(int16 Client62Slot) - { - //uint32 ServerSlot; - if (Client62Slot == INVALID_INDEX) - return INVALID_INDEX; - - return Client62Slot; // deprecated - } - - static inline uint32 Client62ToServerCorpseSlot(int16 Client62Corpse) - { - //uint32 ServerCorpse; - return Client62Corpse; - } -} -// end namespace Client62 diff --git a/common/patches/client62.h b/common/patches/client62.h deleted file mode 100644 index 08d1a9716..000000000 --- a/common/patches/client62.h +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef CLIENT62_H_ -#define CLIENT62_H_ - -#include "../struct_strategy.h" -#include "../item.h" - -class EQStreamIdentifier; - -namespace Client62 { - - //these are the only public member of this namespace. - extern void Register(EQStreamIdentifier &into); - extern void Reload(); - - - - //you should not directly access anything below.. - //I just dont feel like making a seperate header for it. - - class Strategy : public StructStrategy { - public: - Strategy(); - - protected: - - virtual std::string Describe() const; - virtual const EQClientVersion ClientVersion() const; - - //magic macro to declare our opcode processors - #include "ss_declare.h" - #include "client62_ops.h" - - }; - -}; - -#endif /*CLIENT62_H_*/ diff --git a/common/patches/client62_constants.h b/common/patches/client62_constants.h deleted file mode 100644 index 0e672a5de..000000000 --- a/common/patches/client62_constants.h +++ /dev/null @@ -1,212 +0,0 @@ -/* -EQEMu: Everquest Server Emulator - -Copyright (C) 2001-2014 EQEMu Development Team (http://eqemulator.net) - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; version 2 of the License. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY except by those people which sell it, which -are required to give you total support for your newly bought product; -without even the implied warranty of MERCHANTABILITY or FITNESS FOR -A PARTICULAR PURPOSE. See the GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -*/ - -#ifndef CLIENT62_CONSTANTS_H_ -#define CLIENT62_CONSTANTS_H_ - -#include "../types.h" - -namespace Client62 { - namespace maps { - typedef enum : int16 { - // this needs work to match actual client equivilents - MapPossessions = 0, - MapBank, - MapSharedBank, - MapTrade, - MapWorld, - MapLimbo, - MapTribute, - MapTrophyTribute, - MapGuildTribute, - MapMerchant, - MapDeleted, - MapCorpse, - MapBazaar, - MapInspect, - MapRealEstate, - MapViewMODPC, - MapViewMODBank, - MapViewMODSharedBank, - MapViewMODLimbo, - MapAltStorage, - MapArchived, - MapMail, - MapGuildTrophyTribute, - MapOther, - _MapCount - } InventoryMaps; - } - - namespace slots { - typedef enum : int16 { - MainCharm = 0, - MainEar1, - MainHead, - MainFace, - MainEar2, - MainNeck, - MainShoulders, - MainArms, - MainBack, - MainWrist1, - MainWrist2, - MainRange, - MainHands, - MainPrimary, - MainSecondary, - MainFinger1, - MainFinger2, - MainChest, - MainLegs, - MainFeet, - MainWaist, - MainAmmo, - MainGeneral1, - MainGeneral2, - MainGeneral3, - MainGeneral4, - MainGeneral5, - MainGeneral6, - MainGeneral7, - MainGeneral8, - MainCursor, - _MainCount, - _MainEquipmentBegin = MainCharm, - _MainEquipmentEnd = MainAmmo, - _MainEquipmentCount = (_MainEquipmentEnd - _MainEquipmentBegin + 1), - _MainGeneralBegin = MainGeneral1, - _MainGeneralEnd = MainGeneral8, - _MainGeneralCount = (_MainGeneralEnd - _MainGeneralBegin + 1) - } EquipmentSlots; - } - - namespace consts { - static const uint16 MAP_POSSESSIONS_SIZE = slots::_MainCount; - static const uint16 MAP_BANK_SIZE = 16; - static const uint16 MAP_SHARED_BANK_SIZE = 2; - static const uint16 MAP_TRADE_SIZE = 8; - static const uint16 MAP_WORLD_SIZE = 10; - static const uint16 MAP_LIMBO_SIZE = 36; - static const uint16 MAP_TRIBUTE_SIZE = 0; //? - static const uint16 MAP_TROPHY_TRIBUTE_SIZE = 0; - static const uint16 MAP_GUILD_TRIBUTE_SIZE = 0; - static const uint16 MAP_MERCHANT_SIZE = 0; - static const uint16 MAP_DELETED_SIZE = 0; - static const uint16 MAP_CORPSE_SIZE = slots::_MainCount; - static const uint16 MAP_BAZAAR_SIZE = 80; - static const uint16 MAP_INSPECT_SIZE = slots::_MainEquipmentCount; - static const uint16 MAP_REAL_ESTATE_SIZE = 0; - static const uint16 MAP_VIEW_MOD_PC_SIZE = MAP_POSSESSIONS_SIZE; - static const uint16 MAP_VIEW_MOD_BANK_SIZE = MAP_BANK_SIZE; - static const uint16 MAP_VIEW_MOD_SHARED_BANK_SIZE = MAP_SHARED_BANK_SIZE; - static const uint16 MAP_VIEW_MOD_LIMBO_SIZE = MAP_LIMBO_SIZE; - static const uint16 MAP_ALT_STORAGE_SIZE = 0; - static const uint16 MAP_ARCHIVED_SIZE = 0; - static const uint16 MAP_MAIL_SIZE = 0; - static const uint16 MAP_GUILD_TROPHY_TRIBUTE_SIZE = 0; - static const uint16 MAP_KRONO_SIZE = NOT_USED; - static const uint16 MAP_OTHER_SIZE = 0; - - static const int16 EQUIPMENT_BEGIN = slots::MainCharm; - static const int16 EQUIPMENT_END = slots::MainAmmo; - static const uint16 EQUIPMENT_SIZE = slots::_MainEquipmentCount; - - static const int16 GENERAL_BEGIN = slots::MainGeneral1; - static const int16 GENERAL_END = slots::MainGeneral8; - static const uint16 GENERAL_SIZE = slots::_MainGeneralCount; - static const int16 GENERAL_BAGS_BEGIN = 251; - static const int16 GENERAL_BAGS_END_OFFSET = 79; - static const int16 GENERAL_BAGS_END = GENERAL_BAGS_BEGIN + GENERAL_BAGS_END_OFFSET; - - static const int16 CURSOR = slots::MainCursor; - static const int16 CURSOR_BAG_BEGIN = 331; - static const int16 CURSOR_BAG_END_OFFSET = 9; - static const int16 CURSOR_BAG_END = CURSOR_BAG_BEGIN + CURSOR_BAG_END_OFFSET; - - static const int16 BANK_BEGIN = 2000; - static const int16 BANK_END = 2015; - static const int16 BANK_BAGS_BEGIN = 2031; - static const int16 BANK_BAGS_END_OFFSET = 159; - static const int16 BANK_BAGS_END = BANK_BAGS_BEGIN + BANK_BAGS_END_OFFSET; - - static const int16 SHARED_BANK_BEGIN = 2500; - static const int16 SHARED_BANK_END = 2501; - static const int16 SHARED_BANK_BAGS_BEGIN = 2531; - static const int16 SHARED_BANK_BAGS_END_OFFSET = 19; - static const int16 SHARED_BANK_BAGS_END = SHARED_BANK_BAGS_BEGIN + SHARED_BANK_BAGS_END_OFFSET; - - static const int16 TRADE_BEGIN = 3000; - static const int16 TRADE_END = 3007; - static const int16 TRADE_NPC_END = 3003; - static const int16 TRADE_BAGS_BEGIN = 3031; - static const int16 TRADE_BAGS_END_OFFSET = 79; - static const int16 TRADE_BAGS_END = TRADE_BAGS_BEGIN + TRADE_BAGS_END_OFFSET; - - static const int16 WORLD_BEGIN = 4000; - static const int16 WORLD_END = 4009; - - static const int16 TRIBUTE_BEGIN = 400; - static const int16 TRIBUTE_END = 404; - - static const int16 CORPSE_BEGIN = slots::MainGeneral1; - static const int16 CORPSE_END = slots::MainGeneral1 + slots::MainCursor; - - static const uint16 ITEM_COMMON_SIZE = 5; - static const uint16 ITEM_CONTAINER_SIZE = 10; - - static const uint32 BANDOLIERS_COUNT = 4; // count = number of bandolier instances - static const uint32 BANDOLIER_SIZE = 4; // size = number of equipment slots in bandolier instance - static const uint32 POTION_BELT_SIZE = 4; - } - - namespace limits { - static const bool ALLOWS_EMPTY_BAG_IN_BAG = false; - static const bool ALLOWS_CLICK_CAST_FROM_BAG = false; - static const bool COIN_HAS_WEIGHT = true; - } - -}; //end namespace Client62 - -#endif /*CLIENT62_CONSTANTS_H_*/ - -/* -Client62 Notes: - ** Integer-based inventory ** -ok Possessions: 0 - 30 (Corpse: 22 - 52 [Offset 22]) -ok [Equipment: 0 - 21] -ok [General: 22 - 29] -ok [Cursor: 30] -ok General Bags: 251 - 330 -ok Cursor Bags: 331 - 340 - -ok Bank: 2000 - 2015 -ok Bank Bags: 2031 - 2190 - -ok Shared Bank: 2500 - 2501 -ok Shared Bank Bags: 2531 - 2550 - - Trade: 3000 - 3007 - (Trade Bags: 3031 - 3110 -- server values) - - World: 4000 - 4009 - -*/ diff --git a/common/patches/client62_itemfields.h b/common/patches/client62_itemfields.h deleted file mode 100644 index 22419208b..000000000 --- a/common/patches/client62_itemfields.h +++ /dev/null @@ -1,166 +0,0 @@ -/* - - -These fields must be in the order of how they are serialized! - - - -*/ - - -/* 000 */ //I(ItemClass) Leave this one off on purpose -/* 001 */ S(Name) -/* 002 */ S(Lore) -/* 003 */ S(IDFile) -/* 004 */ I(ID) -/* 005 */ I(Weight) -/* 006 */ I(NoRent) -/* 007 */ I(NoDrop) -/* 008 */ I(Size) -/* 009 */ I(Slots) -/* 010 */ I(Price) -/* 011 */ I(Icon) -/* 012 */ C("0") -/* 013 */ C("0") -/* 014 */ I(BenefitFlag) -/* 015 */ I(Tradeskills) -/* 016 */ I(CR) -/* 017 */ I(DR) -/* 018 */ I(PR) -/* 019 */ I(MR) -/* 020 */ I(FR) -/* 021 */ I(AStr) -/* 022 */ I(ASta) -/* 023 */ I(AAgi) -/* 024 */ I(ADex) -/* 025 */ I(ACha) -/* 026 */ I(AInt) -/* 027 */ I(AWis) -/* 028 */ I(HP) -/* 029 */ I(Mana) -/* 030 */ I(AC) -/* 031 */ I(Deity) -/* 032 */ C("0") -/* 033 */ I(SkillModValue) -/* 034 */ I(SkillModType) -/* 035 */ I(BaneDmgRace) -/* 036 */ I(BaneDmgAmt) -/* 037 */ I(BaneDmgBody) -/* 038 */ I(Magic) -/* 039 */ I(CastTime_) -/* 040 */ I(ReqLevel) -/* 041 */ I(BardType) -/* 042 */ I(BardValue) -/* 043 */ I(Light) -/* 044 */ I(Delay) -/* 045 */ I(RecLevel) -/* 046 */ I(RecSkill) -/* 047 */ I(ElemDmgType) -/* 048 */ I(ElemDmgAmt) -/* 049 */ I(Range) -/* 050 */ I(Damage) -/* 051 */ I(Color) -/* 052 */ I(Classes) -/* 053 */ I(Races) -/* 054 */ C("0") -/* 055 */ I(MaxCharges) -/* 056 */ I(ItemType) -/* 057 */ I(Material) -/* 058 */ F(SellRate) -/* 059 */ C("0") -/* 060 */ I(CastTime_) -/* 061 */ C("0") -/* 062 */ I(ProcRate) -/* 063 */ I(CombatEffects) -/* 064 */ I(Shielding) -/* 065 */ I(StunResist) -/* 066 */ I(StrikeThrough) -/* 067 */ I(ExtraDmgSkill) -/* 068 */ I(ExtraDmgAmt) -/* 069 */ I(SpellShield) -/* 070 */ I(Avoidance) -/* 071 */ I(Accuracy) -/* 072 */ I(CharmFileID) -/* 073 */ I(FactionMod1) -/* 074 */ I(FactionMod2) -/* 075 */ I(FactionMod3) -/* 076 */ I(FactionMod4) -/* 077 */ I(FactionAmt1) -/* 078 */ I(FactionAmt2) -/* 079 */ I(FactionAmt3) -/* 080 */ I(FactionAmt4) -/* 081 */ S(CharmFile) -/* 082 */ I(AugType) -/* 083 */ I(AugSlotType[0]) -/* 084 */ I(AugSlotType[1]) -/* 085 */ I(AugSlotType[2]) -/* 086 */ I(AugSlotType[3]) -/* 087 */ I(AugSlotType[4]) -/* 088 */ I(LDoNTheme) -/* 089 */ I(LDoNPrice) -/* 090 */ I(LDoNSold) -/* 091 */ I(BagType) -/* 092 */ I(BagSlots) -/* 093 */ I(BagSize) -/* 094 */ I(BagWR) -/* 095 */ I(Book) -/* 096 */ I(BookType) -/* 097 */ S(Filename) -/* 098 */ I(BaneDmgRaceAmt) -/* 099 */ I(AugRestrict) -/* 100 */ I(LoreFlag) -/* 101 */ I(PendingLoreFlag) -/* 102 */ I(ArtifactFlag) -/* 103 */ I(SummonedFlag) -/* 104 */ I(Favor) -/* 105 */ I(FVNoDrop) -/* 106 */ I(Endur) -/* 107 */ I(DotShielding) -/* 108 */ I(Attack) -/* 109 */ I(Regen) -/* 110 */ I(ManaRegen) -/* 111 */ I(Haste) -/* 112 */ I(DamageShield) -/* 113 */ I(RecastDelay) -/* 114 */ I(RecastType) -/* 115 */ I(GuildFavor) -/* 116 */ I(AugDistiller) -/* 117 */ C("0") -/* 118 */ C("0") -/* 119 */ I(Attuneable) -/* 120 */ I(NoPet) -/* 121 */ C("0") -/* 122 */ I(PointType) -/* 123 */ I(PotionBelt) -/* 124 */ I(PotionBeltSlots) -/* 125 */ I(StackSize) -/* 126 */ I(Click.Effect) -/* 127 */ I(Click.Type) -/* 128 */ I(Click.Level2) -/* 129 */ I(Click.Level) -/* 130 */ C("0") -/* 131 */ I(Proc.Effect) -/* 132 */ I(Proc.Type) -/* 133 */ I(Proc.Level2) -/* 134 */ I(Proc.Level) -/* 135 */ C("0") -/* 136 */ I(Worn.Effect) -/* 137 */ I(Worn.Type) -/* 138 */ I(Worn.Level2) -/* 139 */ I(Worn.Level) -/* 140 */ C("0") -/* 141 */ I(Focus.Effect) -/* 142 */ I(Focus.Type) -/* 143 */ I(Focus.Level2) -/* 144 */ I(Focus.Level) -/* 145 */ C("0") -/* 146 */ I(Scroll.Effect) -/* 147 */ I(Scroll.Type) -/* 148 */ I(Scroll.Level2) -/* 149 */ I(Scroll.Level) -/* 150 */ C("0") -#undef I -#undef C -#undef S -#undef F - diff --git a/common/patches/client62_ops.h b/common/patches/client62_ops.h deleted file mode 100644 index eb7ff2205..000000000 --- a/common/patches/client62_ops.h +++ /dev/null @@ -1,54 +0,0 @@ -// out-going packets that require an ENCODE translation: -E(OP_Action) -E(OP_AdventureMerchantSell) -E(OP_ApplyPoison) -E(OP_BazaarSearch) -E(OP_BecomeTrader) -E(OP_CharInventory) -E(OP_DeleteCharge) -E(OP_DeleteItem) -E(OP_DeleteSpawn) -E(OP_GuildMemberLevelUpdate) -E(OP_GuildMemberList) -E(OP_Illusion) -E(OP_ItemLinkResponse) -E(OP_ItemPacket) -E(OP_LeadershipExpUpdate) -E(OP_LootItem) -E(OP_MoveItem) -E(OP_NewSpawn) -E(OP_OnLevelMessage) -E(OP_PetBuffWindow) -E(OP_PlayerProfile) -E(OP_ReadBook) -E(OP_RespondAA) -E(OP_SendAATable) -E(OP_SendCharInfo) -E(OP_ShopPlayerSell) -E(OP_Track) -E(OP_TributeItem) -E(OP_WearChange) -E(OP_ZoneEntry) -E(OP_ZoneServerReady) -E(OP_ZoneSpawns) -// incoming packets that require a DECODE translation: -D(OP_AdventureMerchantSell) -D(OP_ApplyPoison) -D(OP_AugmentItem) -D(OP_CastSpell) -D(OP_CharacterCreate) -D(OP_Consume) -D(OP_DeleteItem) -D(OP_FaceChange) -D(OP_ItemLinkClick) -D(OP_LootItem) -D(OP_MoveItem) -D(OP_ReadBook) -D(OP_SetServerFilter) -D(OP_ShopPlayerSell) -D(OP_TradeSkillCombine) -D(OP_TributeItem) -D(OP_WearChange) -D(OP_WhoAllRequest) -#undef E -#undef D diff --git a/common/patches/client62_structs.h b/common/patches/client62_structs.h deleted file mode 100644 index 691eeba21..000000000 --- a/common/patches/client62_structs.h +++ /dev/null @@ -1,3163 +0,0 @@ -#ifndef CLIENT62_STRUCTS_H_ -#define CLIENT62_STRUCTS_H_ - -namespace Client62 { - namespace structs { - - -static const uint32 BUFF_COUNT = 25; -/* -** Compiler override to ensure -** byte aligned structures -*/ -#pragma pack(1) - -struct LoginInfo_Struct { -/*000*/ char login_info[64]; -/*064*/ uint8 unknown064[124]; -/*188*/ uint8 zoning; // 01 if zoning, 00 if not -/*189*/ uint8 unknown189[275]; -/*488*/ -}; - -struct EnterWorld_Struct { -/*000*/ char name[64]; -/*064*/ uint32 tutorial; // 01 on "Enter Tutorial", 00 if not -/*068*/ uint32 return_home; // 01 on "Return Home", 00 if not -}; - -/* Name Approval Struct */ -/* Len: */ -/* Opcode: 0x8B20*/ -struct NameApproval -{ - char name[64]; - uint32 race; - uint32 class_; - uint32 deity; -}; - -/* -** Entity identification struct -** Size: 4 bytes -** OPCodes: OP_DeleteSpawn, OP_Assist -*/ -struct EntityId_Struct -{ -/*00*/ uint32 entity_id; -/*04*/ -}; - -struct Duel_Struct -{ - uint32 duel_initiator; - uint32 duel_target; -}; - -struct DuelResponse_Struct -{ - uint32 target_id; - uint32 entity_id; - uint32 unknown; -}; -/* - Cofruben: - Adventure stuff,not a net one,just one for our use -*/ -static const uint32 ADVENTURE_COLLECT = 0; -static const uint32 ADVENTURE_MASSKILL = 1; -static const uint32 ADVENTURE_NAMED = 2; -static const uint32 ADVENTURE_RESCUE = 3; - -struct AdventureInfo { - uint32 QuestID; - uint32 NPCID; - bool in_use; - uint32 status; - bool ShowCompass; - uint32 Objetive;// can be item to collect,mobs to kill,boss to kill and someone to rescue. - uint32 ObjetiveValue;// number of items,or number of needed mob kills. - char text[512]; - uint8 type; - uint32 minutes; - uint32 points; - float x; - float y; - uint32 zoneid; - uint32 zonedungeonid; -}; -/////////////////////////////////////////////////////////////////////////////// - - -/* -** Color_Struct -** Size: 4 bytes -** Used for convenience -** Merth: Gave struct a name so gcc 2.96 would compile -** -*/ -struct Color_Struct -{ - union - { - struct - { - uint8 blue; - uint8 green; - uint8 red; - uint8 use_tint; // if there's a tint this is FF - } rgb; - uint32 color; - }; -}; - -/* -** Character Selection Struct -** Length: 1676 Bytes -** -*/ -struct CharacterSelect_Struct { -/*0000*/ uint32 zone[10]; // Characters Current Zone -/*0040*/ uint8 eyecolor1[10]; // Characters Eye Color -/*0050*/ uint8 eyecolor2[10]; // Characters Eye 2 Color -/*0060*/ uint8 hairstyle[10]; // Characters hair style -/*0070*/ uint8 unknown0070[2]; -/*0072*/ uint32 primary[10]; // Characters primary IDFile number -/*0112*/ uint32 race[10]; // Characters Race -/*0152*/ uint8 class_[10]; // Characters Classes -/*0162*/ char name[10][64]; // Characters Names -/*0802*/ uint8 gender[10]; // Characters Gender -/*0812*/ uint8 level[10]; // Characters Levels -/*0822*/ uint8 unknown0822[2]; -/*0824*/ uint32 secondary[10]; // Characters secondary IDFile number -/*0864*/ uint8 face[10]; // Characters Face Type -/*0874*/ uint8 beard[10]; // Characters Beard Type -/*0884*/ uint32 equip[10][9]; // 0=helm, 1=chest, 2=arm, 3=bracer, 4=hand, 5=leg, 6=boot, 7=melee1, 8=melee2 (Might not be) -/*1244*/ uint8 haircolor[10]; // Characters Hair Color -/*1254*/ uint8 gohome[10]; // 1=Go Home available, 0=not -/*1264*/ Color_Struct cs_colors[10][9]; // Characters Equipment Colors -/*1624*/ uint32 deity[10]; // Characters Deity -/*1664*/ uint8 beardcolor[10]; // Characters beard Color -/*1674*/ uint8 unknown1674[2]; -/*1676*/ -}; - -/* -** Generic Spawn Struct -** Length: 257 Bytes -** Fields from old struct not yet found: -** float size; -** float walkspeed; // probably one of the ff 33 33 33 3f -** float runspeed; // probably one of the ff 33 33 33 3f -** uint8 traptype; // 65 is disarmable trap, 66 and 67 are invis triggers/traps -** uint8 npc_armor_graphic; // 0xFF=Player, 0=none, 1=leather, 2=chain, 3=steelplate -** uint8 npc_helm_graphic; // 0xFF=Player, 0=none, 1=leather, 2=chain, 3=steelplate -** -*/ - -/* -** Generic Spawn Struct -** Length: 383 Octets -** Used in: -** spawnZoneStruct -** dbSpawnStruct -** petStruct -** newSpawnStruct -*/ -struct Spawn_Struct -{ -/*0000*/ uint8 NPC; // 0=player,1=npc,2=pc corpse,3=npc corpse,a -/*0001*/ uint8 set_to_0xFF[8]; // ***Placeholder (all ff) -/*0009*/ uint8 curHp; // Current hp -/*0010*/ char lastName[32]; // Player's Lastname -/*0042*/ uint8 bodytype; // Bodytype -/*0043*/ uint8 unknown0042[7]; -/*0050*/ uint32 petOwnerId; // If this is a pet, the spawn id of owner -/*0054*/ signed deltaHeading:10;// change in heading - signed x:19; // x coord - signed padding0054:3; // ***Placeholder -/*0058*/ signed y:19; // y coord - signed animation:10; // ***Placeholder (seems like speed) - signed padding0058:3; // animation -/*0062*/ signed z:19; // z coord - signed deltaY:13; // change in y -/*0066*/ signed deltaX:13; // change in x - unsigned heading:12; // heading - signed padding0066:7; // ***Placeholder -/*0070*/ signed deltaZ:13; // change in z - signed padding0070:19; // ***Placeholder -/*0074*/ uint16 deity; // Player's Deity -/*0076*/ uint8 unknown[2]; -/*0078*/ union - { - struct - { - /*0078*/ uint32 equip_helmet; // Equipment: Helmet Visual - /*0082*/ uint32 equip_chest; // Equipment: Chest Visual - /*0086*/ uint32 equip_arms; // Equipment: Arms Visual - /*0090*/ uint32 equip_bracers; // Equipment: Bracers Visual - /*0094*/ uint32 equip_hands; // Equipment: Hands Visual - /*0098*/ uint32 equip_legs; // Equipment: Legs Visual - /*0102*/ uint32 equip_feet; // Equipment: Feet Visual - /*0106*/ uint32 equip_primary; // Equipment: Primary Visual - /*0110*/ uint32 equip_secondary; // Equipment: Secondary Visual - } equip; - /*0078*/ uint32 equipment[9]; // Array elements correspond to struct equipment above - }; -/*0114*/ uint8 unknown0114[5]; -/*0119*/ uint8 afk; // 0=no, 1=afk -/*0120*/ uint32 spawnId; // Spawn Id -/*0124*/ uint8 is_pet; // 0=no, 1=yes -/*0125*/ uint8 gm; // 0=no, 1=gm -/*0126*/ uint8 unknown0126[4]; -/*0130*/ uint8 aaitle; // 0=none, 1=general, 2=archtype, 3=class -/*0131*/ uint8 unknown0132[24]; -/*0155*/ uint8 anon; // 0=normal, 1=anon, 2=roleplay -/*0156*/ uint8 unknown0156; -/*0157*/ uint8 face; // Face id for players -/*0159*/ uint8 helm; -/*0159*/ uint8 unknown0159; -/*0160*/ float runspeed; // Speed when running -/*0164*/ uint8 eyecolor1; // Player's left eye color -/*0165*/ uint8 beard; //not 100% verified, but slightly verified -/*0166*/ uint8 is_npc; // 0=no, 1=yes -/*0167*/ uint8 flymode; //seems to be 3 for 'useable' npc classes -/*0168*/ uint32 guildID; // Current guild -/*0172*/ union - { - struct - { - /*0172*/ Color_Struct color_helmet; // Color of helmet item - /*0176*/ Color_Struct color_chest; // Color of chest item - /*0180*/ Color_Struct color_arms; // Color of arms item - /*0184*/ Color_Struct color_bracers; // Color of bracers item - /*0188*/ Color_Struct color_hands; // Color of hands item - /*0192*/ Color_Struct color_legs; // Color of legs item - /*0196*/ Color_Struct color_feet; // Color of feet item - /*0200*/ Color_Struct color_primary; // Color of primary item - /*0204*/ Color_Struct color_secondary; // Color of secondary item - } equipment_colors; - /*0172*/ Color_Struct colors[9]; // Array elements correspond to struct equipment_colors above - }; -/*0208*/ uint8 hairstyle; -/*0209*/ float walkspeed; // Speed when walking -/*0213*/ uint8 unknown0213[3]; -/*0216*/ uint8 class_; // Player's class -/*0217*/ uint8 beardcolor; // Beard color -/*0218*/ float size; // Model size -/*0222*/ uint8 findable; // 0=can't be found, 1=can be found -/*0223*/ float unknown_float; -/*0227*/ char suffix[32]; // Player's suffix (of Veeshan, etc.) -/*0259*/ uint8 unknown0259[4]; //[0] is sometimes 100 -/*0263*/ uint8 guildrank; // 0=normal, 1=officer, 2=leader -/*0264*/ uint8 unknown0264[3]; -union -{ -/*0267*/ uint8 equip_chest2; // Second place in packet for chest texture (usually 0xFF in live packets) - // Not sure why there are 2 of them, but it effects chest texture! -/*0267*/ uint8 mount_color; // drogmor: 0=white, 1=black, 2=green, 3=red - // horse: 0=brown, 1=white, 2=black, 3=tan -}; -/*0268*/ uint32 race; // Spawn race -/*0272*/ uint8 invis; // Invis (0=not, 1=invis) -/*0273*/ uint8 unknown0276[5]; -/*0278*/ uint8 lfg; // 0=off, 1=lfg on -/*0279*/ uint8 level; // Spawn Level -/*0280*/ uint8 haircolor; // Hair color -/*0281*/ uint8 max_hp; //(name prolly wrong)takes on the value 100 for players, 100 or 110 for NPCs and 120 for PC corpses... -/*0282*/ uint8 light; // Spawn's lightsource -/*0283*/ uint8 gender; // Gender (0=male, 1=female) -/*0284*/ char name[64]; // Player's Name -/*0348*/ uint8 eyecolor2; // Left eye color -/*0349*/ char title[32]; // Title -/*0381*/ uint8 unknown0381[2]; -}; /*0383*/ - -/* -** New Spawn -** Length: 176 Bytes -** OpCode: 4921 -*/ -struct NewSpawn_Struct -{ - struct Spawn_Struct spawn; // Spawn Information -}; - -struct ClientZoneEntry_Struct { -/*0000*/ uint32 unknown00; -/*0004*/ char char_name[64]; // Character Name -}; - -/* -** Server Zone Entry Struct -** Length: 452 Bytes -** OPCodes: OP_ServerZoneEntry -** -*/ -struct ServerZoneEntry_Struct -{ - struct NewSpawn_Struct player; -}; - -struct NewZone_Struct { -/*0000*/ char char_name[64]; // Character Name -/*0064*/ char zone_short_name[32]; // Zone Short Name -/*0096*/ char zone_long_name[278]; // Zone Long Name -/*0374*/ uint8 ztype; // Zone type (usually FF) -/*0375*/ uint8 fog_red[4]; // Zone fog (red) -/*0379*/ uint8 fog_green[4]; // Zone fog (green) -/*0383*/ uint8 fog_blue[4]; // Zone fog (blue) -/*0387*/ uint8 unknown323; -/*0388*/ float fog_minclip[4]; -/*0404*/ float fog_maxclip[4]; -/*0420*/ float gravity; -/*0424*/ uint8 time_type; -/*0425*/ uint8 rain_chance[4]; -/*0429*/ uint8 rain_duration[4]; -/*0433*/ uint8 snow_chance[4]; -/*0437*/ uint8 snow_duration[4]; -/*0441*/ uint8 unknown360[33]; -/*0474*/ uint8 sky; // Sky Type -/*0475*/ uint8 unknown331[13]; // ***Placeholder -/*0488*/ float zone_exp_multiplier; // Experience Multiplier -/*0492*/ float safe_y; // Zone Safe Y -/*0496*/ float safe_x; // Zone Safe X -/*0500*/ float safe_z; // Zone Safe Z -/*0504*/ float max_z; // Guessed -/*0508*/ float underworld; // Underworld, min z (Not Sure?) -/*0512*/ float minclip; // Minimum View Distance -/*0516*/ float maxclip; // Maximum View DIstance -/*0520*/ uint8 unknown_end[84]; // ***Placeholder -/*0604*/ char zone_short_name2[68]; -/*0672*/ char unknown672[12]; -/*0684*/ uint16 zone_id; -/*0686*/ uint16 zone_instance; -/*0688*/ uint32 unknown688; -/*0682*/ uint8 unknown692[4]; -}; - -/* -** Memorize Spell Struct -** Length: 12 Bytes -** -*/ -struct MemorizeSpell_Struct { -uint32 slot; // Spot in the spell book/memorized slot -uint32 spell_id; // Spell id (200 or c8 is minor healing, etc) -uint32 scribing; // 1 if memorizing a spell, set to 0 if scribing to book, 2 if un-memming -uint32 unknown12; -}; - -/* -** Make Charmed Pet -** Length: 12 Bytes -** -*/ -struct Charm_Struct { -/*00*/ uint32 owner_id; -/*04*/ uint32 pet_id; -/*08*/ uint32 command; // 1: make pet, 0: release pet -/*12*/ -}; - -struct InterruptCast_Struct -{ - uint32 spawnid; - uint32 messageid; - char message[0]; -}; - -struct DeleteSpell_Struct -{ -/*000*/int16 spell_slot; -/*002*/uint8 unknowndss002[2]; -/*004*/uint8 success; -/*005*/uint8 unknowndss006[3]; -/*008*/ -}; - -struct ManaChange_Struct -{ - uint32 new_mana; // New Mana AMount - uint32 stamina; - uint32 spell_id; - uint32 unknown12; -}; - -struct SwapSpell_Struct -{ - uint32 from_slot; - uint32 to_slot; - - -}; - -struct BeginCast_Struct -{ - // len = 8 -/*000*/ uint16 caster_id; -/*002*/ uint16 spell_id; -/*004*/ uint32 cast_time; // in miliseconds -}; - -struct CastSpell_Struct -{ - uint32 slot; - uint32 spell_id; - uint32 inventoryslot; // slot for clicky item, 0xFFFF = normal cast - uint32 target_id; - uint8 cs_unknown[4]; -}; - -/* -** SpawnAppearance_Struct -** Changes client appearance for all other clients in zone -** Size: 8 bytes -** Used in: OP_SpawnAppearance -** -*/ -struct SpawnAppearance_Struct -{ -/*0000*/ uint16 spawn_id; // ID of the spawn -/*0002*/ uint16 type; // Values associated with the type -/*0004*/ uint32 parameter; // Type of data sent -/*0008*/ -}; - - -// solar: this is used inside profile -struct SpellBuff_Struct -{ -/*000*/ uint8 slotid; //badly named... seems to be 2 for a real buff, 0 otherwise -/*001*/ uint8 level; -/*002*/ uint8 bard_modifier; -/*003*/ uint8 effect; //not real -/*004*/ uint32 spellid; -/*008*/ uint32 duration; -/*012*/ uint32 counters; -/*014*/ uint8 Unknown012[4]; -}; - -struct SpellBuffFade_Struct { -/*000*/ uint32 entityid; -/*004*/ uint8 slot; -/*005*/ uint8 level; -/*006*/ uint8 effect; -/*007*/ uint8 unknown7; -/*008*/ uint32 spellid; -/*012*/ uint32 duration; -/*016*/ uint32 unknown016; -/*020*/ uint32 unknown020; //prolly global player ID -/*024*/ uint32 slotid; -/*028*/ uint32 bufffade; -/*032*/ -}; - -struct ItemNamePacket_Struct { -/*000*/ uint32 item_id; -/*004*/ uint32 unkown004; -/*008*/ char name[64]; -/*072*/ -}; - -// Length: 10 -struct ItemProperties_Struct { - -uint8 unknown01[2]; -uint8 charges; -uint8 unknown02[13]; -}; - -struct GMTrainee_Struct -{ - /*000*/ uint32 npcid; - /*004*/ uint32 playerid; - /*008*/ uint32 skills[PACKET_SKILL_ARRAY_SIZE]; - /*408*/ uint8 unknown408[40]; - /*448*/ -}; - -struct GMTrainEnd_Struct -{ - /*000*/ uint32 npcid; - /*004*/ uint32 playerid; - /*008*/ -}; - -struct GMSkillChange_Struct { -/*000*/ uint16 npcid; -/*002*/ uint8 unknown1[2]; // something like PC_ID, but not really. stays the same thru the session though -/*002*/ uint16 skillbank; // 0 if normal skills, 1 if languages -/*002*/ uint8 unknown2[2]; -/*008*/ uint16 skill_id; -/*010*/ uint8 unknown3[2]; -}; -struct ConsentResponse_Struct { - char grantname[64]; - char ownername[64]; - uint8 permission; - char zonename[32]; -}; - -/* -** Name Generator Struct -** Length: 72 bytes -** OpCode: 0x0290 -*/ -struct NameGeneration_Struct -{ -/*0000*/ uint32 race; -/*0004*/ uint32 gender; -/*0008*/ char name[64]; -/*0072*/ -}; - -/* -** Character Creation struct -** Length: 140 Bytes -** OpCode: 0x0113 -*/ -struct CharCreate_Struct -{ - /*0000*/ uint32 class_; //guess - /*0004*/ char name[64]; - /*0068*/ uint32 beardcolor; // credit goes to vesuvias for appearance stuff - /*0072*/ uint32 beard; - /*0076*/ uint32 haircolor; - /*0080*/ int32 gender; - /*0084*/ int32 race; - /*0088*/ int32 start_zone; - /*0092*/ int32 hairstyle; - /*0096*/ uint32 deity; - ///*0072*/ int32 deity; - - - // 0 = odus - // 1 = qeynos - // 2 = halas - // 3 = rivervale - // 4 = freeport - // 5 = neriak - // 6 = gukta/grobb - // 7 = ogguk - // 8 = kaladim - // 9 = gfay - // 10 = felwithe - // 11 = akanon - // 12 = cabalis - // 13 = shar vahl - - -/*0100*/ int32 STR; -/*0104*/ int32 STA; -/*0108*/ int32 AGI; -/*0112*/ int32 DEX; -/*0116*/ int32 WIS; -/*0120*/ int32 INT; -/*0124*/ int32 CHA; -/*0128*/ uint32 face; -/*0132*/ uint32 eyecolor1; //its possiable we could have these switched -/*0136*/ uint32 eyecolor2; //since setting one sets the other we really can't check -/*0140*/ uint32 tutorial; //assumptions are bad! But guessed -}; - -/* - *Used in PlayerProfile - */ -struct AA_Array -{ - uint32 AA; - uint32 value; -}; - - -static const uint32 MAX_PP_DISCIPLINES = 100; - -struct Disciplines_Struct { - uint32 values[MAX_PP_DISCIPLINES]; -}; - -static const uint32 MAX_PLAYER_TRIBUTES = 5; -static const uint32 MAX_PLAYER_BANDOLIER = 4; -static const uint32 MAX_PLAYER_BANDOLIER_ITEMS = 4; -static const uint32 TRIBUTE_NONE = 0xFFFFFFFF; -struct Tribute_Struct { - uint32 tribute; - uint32 tier; -}; - -//len = 72 -struct BandolierItem_Struct { - uint32 item_id; - uint32 icon; - char item_name[64]; -}; - -//len = 320 -enum { //bandolier item positions - bandolierMainHand = 0, - bandolierOffHand, - bandolierRange, - bandolierAmmo -}; -struct Bandolier_Struct { - char name[32]; - BandolierItem_Struct items[MAX_PLAYER_BANDOLIER_ITEMS]; -}; -struct PotionBelt_Struct { - BandolierItem_Struct items[MAX_PLAYER_BANDOLIER_ITEMS]; -}; - -static const uint32 MAX_GROUP_LEADERSHIP_AA_ARRAY = 16; -static const uint32 MAX_RAID_LEADERSHIP_AA_ARRAY = 16; -static const uint32 MAX_LEADERSHIP_AA_ARRAY = (MAX_GROUP_LEADERSHIP_AA_ARRAY+MAX_RAID_LEADERSHIP_AA_ARRAY); -struct GroupLeadershipAA_Struct { - union { - struct { - uint32 groupAAMarkNPC; - uint32 groupAANPCHealth; - uint32 groupAADelegateMainAssist; - uint32 groupAADelegateMarkNPC; - uint32 groupAA4; - uint32 groupAA5; - uint32 groupAAInspectBuffs; - uint32 groupAA7; - uint32 groupAASpellAwareness; - uint32 groupAAOffenseEnhancement; - uint32 groupAAManaEnhancement; - uint32 groupAAHealthEnhancement; - uint32 groupAAHealthRegeneration; - uint32 groupAAFindPathToPC; - uint32 groupAAHealthOfTargetsTarget; - uint32 groupAA15; - }; - uint32 ranks[MAX_GROUP_LEADERSHIP_AA_ARRAY]; - }; -}; - -struct RaidLeadershipAA_Struct { - union { - struct { - uint32 raidAAMarkNPC; - uint32 raidAANPCHealth; - uint32 raidAADelegateMainAssist; - uint32 raidAADelegateMarkNPC; - uint32 raidAA4; - uint32 raidAA5; - uint32 raidAA6; - uint32 raidAASpellAwareness; - uint32 raidAAOffenseEnhancement; - uint32 raidAAManaEnhancement; - uint32 raidAAHealthEnhancement; - uint32 raidAAHealthRegeneration; - uint32 raidAAFindPathToPC; - uint32 raidAAHealthOfTargetsTarget; - uint32 raidAA14; - uint32 raidAA15; - }; - uint32 ranks[MAX_RAID_LEADERSHIP_AA_ARRAY]; - }; -}; - -struct LeadershipAA_Struct { - union { - struct { - GroupLeadershipAA_Struct group; - RaidLeadershipAA_Struct raid; - }; - uint32 ranks[MAX_LEADERSHIP_AA_ARRAY]; - }; -}; - -/* -** Player Profile -** -** Length: 4308 bytes -** OpCode: 0x006a - */ -static const uint32 MAX_PP_LANGUAGE = 28; -static const uint32 MAX_PP_SPELLBOOK = 400; -static const uint32 MAX_PP_MEMSPELL = 9; -static const uint32 MAX_PP_SKILL = PACKET_SKILL_ARRAY_SIZE; // 100 - actual skills buffer size -static const uint32 MAX_PP_AA_ARRAY = 240; -static const uint32 MAX_GROUP_MEMBERS = 6; -struct PlayerProfile_Struct -{ -/*0000*/ uint32 checksum; // Checksum from CRC32::SetEQChecksum -/*0004*/ char name[64]; // Name of player sizes not right -/*0068*/ char last_name[32]; // Last name of player sizes not right -/*0100*/ uint32 gender; // Player Gender - 0 Male, 1 Female -/*0104*/ uint32 race; // Player race -/*0108*/ uint32 class_; // Player class -/*0112*/ uint32 unknown0112; // -/*0116*/ uint32 level; // Level of player (might be one byte) -/*0120*/ uint32 bind_zone_id; // Zone player is bound in -/*0124*/ uint32 unknown0124[4]; -/*0140*/ float bind_x[4]; // Bind loc x coord -/*0156*/ float zone_safe_x; -/*0160*/ float bind_y[4]; // Bind loc y coord -/*0176*/ float zone_safe_y; -/*0180*/ float bind_z[4]; // Bind loc z coord -/*0196*/ float zone_safe_z; -/*0200*/ float bind_heading[4]; // -/*0216*/ float zone_safe_heading; -/*0220*/ uint32 deity; // deity -/*0224*/ uint32 guild_id; -/*0228*/ uint32 birthday; // characters bday -/*0232*/ uint32 lastlogin; // last login or zone time -/*0236*/ uint32 timePlayedMin; // in minutes -/*0240*/ uint8 pvp; -/*0241*/ uint8 level2; //no idea why this is here, but thats how it is on live -/*0242*/ uint8 anon; // 2=roleplay, 1=anon, 0=not anon -/*0243*/ uint8 gm; -/*0244*/ uint8 guildrank; -/*0245*/ uint8 unknown0245[7]; // -/*0252*/ uint32 intoxication; -/*0256*/ uint32 spellSlotRefresh[MAX_PP_MEMSPELL]; //in ms -/*0292*/ uint32 abilitySlotRefresh; -/*0296*/ uint8 haircolor; // Player hair color -/*0297*/ uint8 beardcolor; // Player beard color -/*0298*/ uint8 eyecolor1; // Player left eye color -/*0299*/ uint8 eyecolor2; // Player right eye color -/*0300*/ uint8 hairstyle; // Player hair style -/*0301*/ uint8 beard; // Beard type -/*0302*/ uint8 ability_time_seconds; //The following four spots are unknown right now..... -/*0303*/ uint8 ability_number; //ability used -/*0304*/ uint8 ability_time_minutes; -/*0305*/ uint8 ability_time_hours;//place holder -/*0306*/ uint8 unknown0306[6]; // @bp Spacer/Flag? -/*0312*/ uint32 item_material[9]; // Item texture/material of worn/held items -/*0348*/ uint8 unknown0256[44]; -/*0396*/ Color_Struct item_tint[9]; -/*0432*/ AA_Array aa_array[MAX_PP_AA_ARRAY]; -/*2348*/ float unknown2348; //seen ~128, ~47 -/*2352*/ char servername[32]; // length probably not right -/*2384*/ char title[32]; //length might be wrong -/*2416*/ char suffix[32]; //length might be wrong -/*2448*/ uint32 guildid2; // -/*2452*/ uint32 exp; // Current Experience -/*2456*/ uint32 unknown1496; -/*2460*/ uint32 points; // Unspent Practice points -/*2464*/ uint32 mana; // current mana -/*2468*/ uint32 cur_hp; // current hp -/*2472*/ uint32 unknown1512; // 0x05 -/*2476*/ uint32 STR; // Strength -/*2480*/ uint32 STA; // Stamina -/*2484*/ uint32 CHA; // Charisma -/*2488*/ uint32 DEX; // Dexterity -/*2492*/ uint32 INT; // Intelligence -/*2496*/ uint32 AGI; // Agility -/*2500*/ uint32 WIS; // Wisdom -/*2504*/ uint8 face; // Player face -/*2505*/ uint8 unknown1545[47]; // ? -/*2552*/ uint8 languages[MAX_PP_LANGUAGE]; -/*2580*/ uint8 unknown1620[4]; -/*2584*/ uint32 spell_book[MAX_PP_SPELLBOOK]; -/*4184*/ uint8 unknown3224[448]; // all 0xff -/*4632*/ uint32 mem_spells[MAX_PP_MEMSPELL]; -/*4668*/ uint8 unknown3704[32]; // -/*4700*/ float y; // Player y position -/*4704*/ float x; // Player x position -/*4708*/ float z; // Player z position -/*4712*/ float heading; // Direction player is facing -/*4716*/ uint8 unknown3756[4]; // -/*4720*/ int32 platinum; // Platinum Pieces on player -/*4724*/ int32 gold; // Gold Pieces on player -/*4728*/ int32 silver; // Silver Pieces on player -/*4732*/ int32 copper; // Copper Pieces on player -/*4736*/ int32 platinum_bank; // Platinum Pieces in Bank -/*4740*/ int32 gold_bank; // Gold Pieces in Bank -/*4744*/ int32 silver_bank; // Silver Pieces in Bank -/*4748*/ int32 copper_bank; // Copper Pieces in Bank -/*4752*/ int32 platinum_cursor; // Platinum on cursor -/*4756*/ int32 gold_cursor; // Gold on cursor -/*4760*/ int32 silver_cursor; // Silver on cursor -/*4764*/ int32 copper_cursor; // Copper on cursor -/*4768*/ int32 platinum_shared; // Platinum shared between characters -/*4772*/ uint8 unknown3812[24]; -/*4796*/ uint32 skills[MAX_PP_SKILL]; // 100 dword buffer -/*5196*/ uint8 unknown5096[184]; -/*5380*/ uint32 pvp2; // -/*5384*/ uint32 unknown4420; // -/*5388*/ uint32 pvptype; // -/*5392*/ uint32 unknown4428; // -/*5396*/ uint32 ability_down; // Doodman - Guessing -/*5400*/ uint8 unknown4436[8]; // -/*5408*/ uint32 autosplit; //not used right now -/*5412*/ uint8 unknown4448[8]; -/*5420*/ uint32 zone_change_count; // Number of times user has zoned in their career (guessing) -/*5424*/ uint8 unknown4460[28]; // -/*5452*/ uint32 expansions; // expansion setting, bit field of expansions avaliable -/*5456*/ int32 toxicity; //from drinking potions, seems to increase by 3 each time you drink -/*5460*/ char unknown4496[16]; // -/*5476*/ int32 hunger_level; -/*5480*/ int32 thirst_level; -/*5484*/ uint32 ability_up; -/*5488*/ char unknown4524[16]; -/*5504*/ uint16 zone_id; // Current zone of the player -/*5506*/ uint16 zoneInstance; // Instance ID -/*5508*/ SpellBuff_Struct buffs[BUFF_COUNT]; // Buffs currently on the player -/*6008*/ char groupMembers[6][64]; // -/*6392*/ char unknown6392[656]; -/*7048*/ uint32 entityid; -/*7052*/ uint32 leadAAActive; -/*7056*/ uint32 unknown7056; -/*7060*/ int32 ldon_points_guk; //client uses these as signed -/*7064*/ int32 ldon_points_mir; -/*7068*/ int32 ldon_points_mmc; -/*7072*/ int32 ldon_points_ruj; -/*7076*/ int32 ldon_points_tak; -/*7080*/ int32 ldon_points_available; -/*7084*/ uint8 unknown5940[112]; -/*7196*/ uint32 tribute_time_remaining; //in miliseconds -/*7200*/ uint32 unknown6048; -/*7204*/ uint32 career_tribute_points; -/*7208*/ uint32 unknown6056; -/*7212*/ uint32 tribute_points; -/*7216*/ uint32 unknown6064; -/*7220*/ uint32 tribute_active; //1=active -/*7224*/ Tribute_Struct tributes[MAX_PLAYER_TRIBUTES]; -/*7264*/ Disciplines_Struct disciplines; //fathernitwit: 10-06-04 -/*7664*/ char unknown7464[240]; -/*7904*/ uint32 endurance; -/*7908*/ uint32 group_leadership_exp; //0-1000 -/*7912*/ uint32 raid_leadership_exp; //0-2000 -/*7916*/ uint32 group_leadership_points; -/*7920*/ uint32 raid_leadership_points; -/*7924*/ LeadershipAA_Struct leader_abilities; -/*8052*/ uint8 unknown8052[132]; -/*8184*/ uint32 air_remaining; -/*8188*/ uint8 unknown8188[4608]; -/*12796*/ uint32 aapoints_spent; -/*12800*/ uint32 expAA; -/*12804*/ uint32 aapoints; //avaliable, unspent -/*12808*/ uint8 unknown12808[36]; -/*12844*/ Bandolier_Struct bandoliers[MAX_PLAYER_BANDOLIER]; -/*14124*/ uint8 unknown14124[5120]; -/*19244*/ PotionBelt_Struct potionbelt; //there should be 3 more of these -/*19532*/ uint8 unknown19532[8]; -/*19540*/ uint32 currentRadCrystals; // Current count of radiant crystals -/*19544*/ uint32 careerRadCrystals; // Total count of radiant crystals ever -/*19548*/ uint32 currentEbonCrystals; // Current count of ebon crystals -/*19552*/ uint32 careerEbonCrystals; // Total count of ebon crystals ever -/*19556*/ uint8 groupAutoconsent; // 0=off, 1=on -/*19557*/ uint8 raidAutoconsent; // 0=off, 1=on -/*19558*/ uint8 guildAutoconsent; // 0=off, 1=on -/*19559*/ uint8 unknown19559[5]; // ***Placeholder (6/29/2005) -/*19564*/ uint32 unknown15964; -/*19568*/ -}; - -/* -** Client Target Struct -** Length: 2 Bytes -** OpCode: 6221 -*/ -struct ClientTarget_Struct { -/*000*/ uint32 new_target; // Target ID -}; - -/* -** Target Rejection Struct -** Length: 12 Bytes -** OpCode: OP_TargetReject -*/ -struct TargetReject_Struct { -/*00*/ uint8 unknown00[12]; -}; - -struct PetCommand_Struct { -/*000*/ uint32 command; -/*004*/ uint32 unknown; -}; - -/* -** Delete Spawn -** Length: 4 Bytes -** OpCode: OP_DeleteSpawn -*/ -struct DeleteSpawn_Struct -{ -/*00*/ uint32 spawn_id; // Spawn ID to delete -/*04*/ -}; - -/* -** Channel Message received or sent -** Length: 144 Bytes + Variable Length + 1 -** OpCode: OP_ChannelMessage -** -*/ -struct ChannelMessage_Struct -{ -/*000*/ char targetname[64]; // Tell recipient -/*064*/ char sender[64]; // The senders name (len might be wrong) -/*128*/ uint32 language; // Language -/*132*/ uint32 chan_num; // Channel -/*136*/ uint32 cm_unknown4[2]; // ***Placeholder -/*144*/ uint32 skill_in_language; // The players skill in this language? might be wrong -/*148*/ char message[0]; // Variable length message -}; - -/* -** Special Message -** Length: 4 Bytes + Variable Text Length + 1 -** OpCode: OP_SpecialMesg -** -*/ -/* - Theres something wrong with this... example live packet: -Server->Client: [ Opcode: OP_SpecialMesg (0x0fab) Size: 244 ] - 0: 01 02 00 0A 00 00 00 09 - 05 00 00 42 61 72 73 74 | ...........Barst - 16: 72 65 20 53 6F 6E 67 77 - 65 61 76 65 72 00 7C F9 | re Songweaver.|. - 32: FF FF 84 FF FF FF 03 00 - 00 00 47 72 65 65 74 69 | ..........Greeti - -*/ -struct SpecialMesg_Struct -{ -/*00*/ char header[3]; // 04 04 00 <-- for #emote style msg -/*03*/ uint32 msg_type; // Color of text (see MT_*** below) -/*07*/ uint32 target_spawn_id; // Who is it being said to? -/*11*/ char sayer[1]; // Who is the source of the info -/*12*/ uint8 unknown12[12]; -/*24*/ char message[1]; // What is being said? -}; - -/* -** When somebody changes what they're wearing -** or give a pet a weapon (model changes) -** Length: 16 Bytes -** Opcode: 9220 -*/ -struct WearChange_Struct{ -/*000*/ uint16 spawn_id; -/*002*/ uint16 material; -/*004*/ Color_Struct color; -/*009*/ uint8 wear_slot_id; -}; - -/* -** Type: Bind Wound Structure -** Length: 8 Bytes -*/ -//Fixed for 7-14-04 patch -struct BindWound_Struct -{ -/*002*/ uint16 to; // TargetID -/*004*/ uint16 unknown2; // ***Placeholder -/*006*/ uint16 type; -/*008*/ uint16 unknown6; -}; - - -/* -** Type: Zone Change Request (before hand) -** Length: 88 bytes -** OpCode: a320 -*/ - -struct ZoneChange_Struct { -/*000*/ char char_name[64]; // Character Name -/*064*/ uint16 zoneID; -/*066*/ uint16 instanceID; -/*068*/ float y; -/*072*/ float x; -/*076*/ float z; -/*080*/ uint32 zone_reason; //0x0A == death, I think -/*084*/ int32 success; // =0 client->server, =1 server->client, -X=specific error -/*088*/ -}; - -struct RequestClientZoneChange_Struct { -/*00*/ uint16 zone_id; -/*02*/ uint16 instance_id; -/*04*/ float y; -/*08*/ float x; -/*12*/ float z; -/*16*/ float heading; -/*20*/ uint32 type; //unknown... values -}; - -struct Animation_Struct { -/*00*/ uint16 spawnid; -/*02*/ uint8 action; -/*03*/ uint8 value; -/*04*/ -}; - -// solar: this is what causes the caster to animate and the target to -// get the particle effects around them when a spell is cast -// also causes a buff icon -struct Action_Struct -{ - /* 00 */ uint16 target; // id of target - /* 02 */ uint16 source; // id of caster - /* 04 */ uint16 level; // level of caster - /* 06 */ uint16 instrument_mod; - /* 08 */ uint32 unknown08; - /* 12 */ uint16 unknown16; -// some kind of sequence that's the same in both actions -// as well as the combat damage, to tie em together? - /* 14 */ uint32 sequence; - /* 18 */ uint32 unknown18; - /* 22 */ uint8 type; // 231 (0xE7) for spells - /* 23 */ uint32 unknown23; - /* 27 */ uint16 spell; // spell id being cast - /* 29 */ uint8 unknown29; -// this field seems to be some sort of success flag, if it's 4 - /* 30 */ uint8 buff_unknown; // if this is 4, a buff icon is made - /* 31 */ -}; - -// solar: this is what prints the You have been struck. and the regular -// melee messages like You try to pierce, etc. It's basically the melee -// and spell damage message -struct CombatDamage_Struct -{ -/* 00 */ uint16 target; -/* 02 */ uint16 source; -/* 04 */ uint8 type; //slashing, etc. 231 (0xE7) for spells -/* 05 */ uint16 spellid; -/* 07 */ uint32 damage; -/* 11 */ uint32 unknown11; -/* 15 */ uint32 sequence; // see above notes in Action_Struct -/* 19 */ uint32 unknown19; -/* 23 */ -}; - -/* -** Consider Struct -** Length: 24 Bytes -** OpCode: 3721 -*/ -struct Consider_Struct{ -/*000*/ uint32 playerid; // PlayerID -/*004*/ uint32 targetid; // TargetID -/*008*/ uint32 faction; // Faction -/*0012*/ uint32 level; // Level -/*016*/ int32 cur_hp; // Current Hitpoints -/*020*/ int32 max_hp; // Maximum Hitpoints -/*024*/ uint8 pvpcon; // Pvp con flag 0/1 -/*025*/ uint8 unknown3[3]; -}; - -/* -** Spawn Death Blow -** Length: 32 Bytes -** OpCode: 0114 -*/ -struct Death_Struct -{ -/*000*/ uint32 spawn_id; -/*004*/ uint32 killer_id; -/*008*/ uint32 corpseid; // was corpseid -/*012*/ uint32 attack_skill; // was type -/*016*/ uint32 spell_id; -/*020*/ uint32 bindzoneid; //bindzoneid? -/*024*/ uint32 damage; -/*028*/ uint32 unknown028; -}; - -struct BecomeCorpse_Struct { - uint32 spawn_id; - float y; - float x; - float z; -}; - -/* -** Spawn position update -** Struct sent from server->client to update position of -** another spawn's position update in zone (whether NPC or PC) -** -*/ -struct PlayerPositionUpdateServer_Struct -{ -/*0000*/ uint16 spawn_id; -/*0002*/ int32 delta_heading:10, // change in heading - x_pos:19, // x coord - padding0002:3; // ***Placeholder -/*0006*/ int32 y_pos:19, // y coord - animation:10, // animation - padding0006:3; // ***Placeholder -/*0010*/ int32 z_pos:19, // z coord - delta_y:13; // change in y -/*0014*/ int32 delta_x:13, // change in x - heading:12, // heading - padding0014:7; // ***Placeholder -/*0018*/ int32 delta_z:13, // change in z - padding0018:19; // ***Placeholder -/*0022*/ -}; - -/* -** Player position update -** Struct sent from client->server to update -** player position on server -** -*/ -struct PlayerPositionUpdateClient_Struct -{ -/*0000*/ uint16 spawn_id; -/*0022*/ uint16 sequence; //increments one each packet -/*0004*/ float y_pos; // y coord -/*0008*/ float delta_z; // Change in z -/*0016*/ float delta_x; // Change in x -/*0012*/ float delta_y; // Change in y -/*0020*/ int32 animation:10, // animation - delta_heading:10, // change in heading - padding0020:12; // ***Placeholder (mostly 1) -/*0024*/ float x_pos; // x coord -/*0028*/ float z_pos; // z coord -/*0034*/ uint16 heading:12, // Directional heading - padding0004:4; // ***Placeholder -/*0032*/ uint8 unknown0006[2]; // ***Placeholder -/*0036*/ -}; - -/* -** Spawn HP Update -** Length: 10 Bytes -** OpCode: OP_HPUpdate -*/ -struct SpawnHPUpdate_Struct -{ -/*00*/ uint32 cur_hp; // Id of spawn to update -/*04*/ int32 max_hp; // Maximum hp of spawn -/*08*/ int16 spawn_id; // Current hp of spawn -/*10*/ -}; -struct SpawnHPUpdate_Struct2 -{ -/*01*/ int16 spawn_id; -/*00*/ uint8 hp; -}; -/* -** Stamina -** Length: 8 Bytes -** OpCode: 5721 -*/ -struct Stamina_Struct { -/*00*/ uint32 food; // (low more hungry 127-0) -/*02*/ uint32 water; // (low more thirsty 127-0) -}; - -/* -** Level Update -** Length: 12 Bytes -*/ -struct LevelUpdate_Struct -{ -/*00*/ uint32 level; // New level -/*04*/ uint32 level_old; // Old level -/*08*/ uint32 exp; // Current Experience -}; - -/* -** Experience Update -** Length: 14 Bytes -** OpCode: 9921 -*/ -struct ExpUpdate_Struct -{ -/*0000*/ uint32 exp; // Current experience ratio from 0 to 330 -/*0004*/ uint32 aaxp; // @BP ?? -}; - -/* -** Item Packet Struct - Works on a variety of opcodes -** Packet Types: See ItemPacketType enum -** -*/ -enum ItemPacketType -{ - ItemPacketViewLink = 0x00, - ItemPacketTradeView = 0x65, - ItemPacketLoot = 0x66, - ItemPacketTrade = 0x67, - ItemPacketCharInventory = 0x69, - ItemPacketSummonItem = 0x6A, - ItemPacketTributeItem = 0x6C, - ItemPacketMerchant = 0x64, - ItemPacketWorldContainer = 0x6B -}; -struct ItemPacket_Struct -{ -/*00*/ ItemPacketType PacketType; -/*04*/ char SerializedItem[1]; -/*xx*/ -}; - -struct BulkItemPacket_Struct -{ -/*00*/ char SerializedItem[0]; -/*xx*/ -}; - -struct Consume_Struct -{ -/*0000*/ uint32 slot; -/*0004*/ uint32 auto_consumed; // 0xffffffff when auto eating e7030000 when right click -/*0008*/ uint8 c_unknown1[4]; -/*0012*/ uint8 type; // 0x01=Food 0x02=Water -/*0013*/ uint8 unknown13[3]; -}; - -struct DeleteItem_Struct -{ -/*0000*/ uint32 from_slot; -/*0004*/ uint32 to_slot; -/*0008*/ uint32 number_in_stack; -/*0012*/ -}; - -struct MoveItem_Struct -{ -/*0000*/ uint32 from_slot; -/*0004*/ uint32 to_slot; -/*0008*/ uint32 number_in_stack; -/*0012*/ -}; - -// -// from_slot/to_slot -// -1 - destroy -// 0 - cursor -// 1 - inventory -// 2 - bank -// 3 - trade -// 4 - shared bank -// -// cointype -// 0 - copeer -// 1 - silver -// 2 - gold -// 3 - platinum -// -static const uint32 COINTYPE_PP = 3; -static const uint32 COINTYPE_GP = 2; -static const uint32 COINTYPE_SP = 1; -static const uint32 COINTYPE_CP = 0; - -struct MoveCoin_Struct -{ - int32 from_slot; - int32 to_slot; - int32 cointype1; - int32 cointype2; - int32 amount; -}; -struct TradeCoin_Struct{ - uint32 trader; - uint8 slot; - uint16 unknown5; - uint8 unknown7; - uint32 amount; -}; -struct TradeMoneyUpdate_Struct{ - uint32 trader; - uint32 type; - uint32 amount; -}; -/* -** Surname struct -** Size: 100 bytes -*/ -struct Surname_Struct -{ -/*0000*/ char name[64]; -/*0064*/ uint32 unknown0064; -/*0068*/ char lastname[32]; -/*0100*/ -}; - -struct GuildsListEntry_Struct { - char name[64]; -}; - -static const uint32 MAX_NUMBER_GUILDS = 1500; -struct GuildsList_Struct { - uint8 head[64]; // First on guild list seems to be empty... - GuildsListEntry_Struct Guilds[MAX_NUMBER_GUILDS]; -}; - -struct GuildUpdate_Struct { - uint32 guildID; - GuildsListEntry_Struct entry; -}; - -/* -** Money Loot -** Length: 22 Bytes -** OpCode: 5020 -*/ -struct moneyOnCorpseStruct { -/*0000*/ uint8 response; // 0 = someone else is, 1 = OK, 2 = not at this time -/*0001*/ uint8 unknown1; // = 0x5a -/*0002*/ uint8 unknown2; // = 0x40 -/*0003*/ uint8 unknown3; // = 0 -/*0004*/ uint32 platinum; // Platinum Pieces -/*0008*/ uint32 gold; // Gold Pieces - -/*0012*/ uint32 silver; // Silver Pieces -/*0016*/ uint32 copper; // Copper Pieces -}; - -//opcode = 0x5220 -// size 292 - - -struct LootingItem_Struct { -/*000*/ uint32 lootee; -/*002*/ uint32 looter; -/*004*/ uint16 slot_id; -/*006*/ uint8 unknown3[2]; -/*008*/ uint32 auto_loot; -}; - -struct GuildManageStatus_Struct{ - uint32 guildid; - uint32 oldrank; - uint32 newrank; - char name[64]; -}; -// Guild invite, remove -struct GuildJoin_Struct{ -/*000*/ uint32 guildid; -/*004*/ uint32 unknown04; -/*008*/ uint32 level; -/*012*/ uint32 class_; -/*016*/ uint32 rank;//0 member, 1 officer, 2 leader -/*020*/ uint32 zoneid; -/*024*/ uint32 unknown24; -/*028*/ char name[64]; -/*092*/ -}; -struct GuildInviteAccept_Struct { - char inviter[64]; - char newmember[64]; - uint32 response; - uint32 guildeqid; -}; -struct GuildManageRemove_Struct { - uint32 guildeqid; - char member[64]; -}; -struct GuildCommand_Struct { - char othername[64]; - char myname[64]; - uint16 guildeqid; - uint8 unknown[2]; // for guildinvite all 0's, for remove 0=0x56, 2=0x02 - uint32 officer; -}; - -// 4244 bytes. Is not really an 'OnLevelMessage', it causes a popup box to display in the client -// Text looks like HTML. -struct OnLevelMessage_Struct { -/*0000*/ char Title[128]; -/*0128*/ char Text[4096]; -/*4224*/ uint32 Buttons; -/*4228*/ uint32 Duration; -/*4232*/ uint32 PopupID; -/*4236*/ uint32 unknown4236; -/*4240*/ uint32 unknown4240; -/*4244*/ -}; - -// Opcode OP_GMZoneRequest -// Size = 88 bytes -struct GMZoneRequest_Struct { -/*0000*/ char charname[64]; -/*0064*/ uint32 zone_id; -/*0068*/ float x; -/*0072*/ float y; -/*0076*/ float z; -/*0080*/ char unknown0080[4]; -/*0084*/ uint32 success; // 0 if command failed, 1 if succeeded? -/*0088*/ -// /*072*/ int8 success; // =0 client->server, =1 server->client, -X=specific error -// /*073*/ uint8 unknown0073[3]; // =0 ok, =ffffff error -}; - -struct GMSummon_Struct { -/* 0*/ char charname[64]; -/* 30*/ char gmname[64]; -/* 60*/ uint32 success; -/* 61*/ uint32 zoneID; -/*92*/ int32 y; -/*96*/ int32 x; -/*100*/ int32 z; -/*104*/ uint32 unknown2; // E0 E0 56 00 -}; - -struct GMGoto_Struct { // x,y is swapped as compared to summon and makes sense as own packet -/* 0*/ char charname[64]; - -/* 64*/ char gmname[64]; -/* 128*/ uint32 success; -/* 132*/ uint32 zoneID; - -/*136*/ int32 y; -/*140*/ int32 x; -/*144*/ int32 z; -/*148*/ uint32 unknown2; // E0 E0 56 00 -}; - -struct GMLastName_Struct { - char name[64]; - char gmname[64]; - char lastname[64]; - uint16 unknown[4]; // 0x00, 0x00 - // 0x01, 0x00 = Update the clients -}; - -//Combat Abilities -struct CombatAbility_Struct { - uint32 m_target; //the ID of the target mob - uint32 m_atk; - uint32 m_skill; -}; - -//Instill Doubt -struct Instill_Doubt_Struct { - uint8 i_id; - uint8 ia_unknown; - uint8 ib_unknown; - uint8 ic_unknown; - uint8 i_atk; - - uint8 id_unknown; - uint8 ie_unknown; - uint8 if_unknown; - uint8 i_type; - uint8 ig_unknown; - uint8 ih_unknown; - uint8 ii_unknown; -}; - -struct GiveItem_Struct { - uint16 to_entity; - int16 to_equipSlot; - uint16 from_entity; - int16 from_equipSlot; -}; - -struct RandomReq_Struct { - uint32 low; - uint32 high; -}; - -/* solar: 9/23/03 reply to /random command; struct from Zaphod */ -struct RandomReply_Struct { -/* 00 */ uint32 low; -/* 04 */ uint32 high; -/* 08 */ uint32 result; -/* 12 */ char name[64]; -/* 76 */ -}; - -struct LFG_Struct { -/* -Wrong size on OP_LFG. Got: 80, Expected: 68 - 0: 00 00 00 00 01 00 00 00 - 00 00 00 00 64 00 00 00 | ............d... - 16: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 | ................ - 32: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 | ................ - 48: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 | ................ - 64: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 | ................ -Wrong size on OP_LFG. Got: 80, Expected: 68 - 0: 00 00 00 00 01 00 00 00 - 3F 00 00 00 41 00 00 00 | ........?...A... - 16: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 | ................ - 32: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 | ................ - 48: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 | ................ - 64: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 | ................ -Wrong size on OP_LFG. Got: 80, Expected: 68 - 0: 00 00 00 00 01 00 00 00 - 3F 00 00 00 41 00 00 00 | ........?...A... - 16: 46 72 75 62 20 66 72 75 - 62 20 66 72 75 62 00 00 | Frub frub frub.. - 32: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 | ................ - 48: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 | ................ - 64: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 | ................ -*/ -/*000*/ uint32 unknown000; -/*004*/ uint32 value; // 0x00 = off 0x01 = on -/*008*/ uint32 unknown008; -/*012*/ uint32 unknown012; -/*016*/ char name[64]; -}; - -/* -** LFG_Appearance_Struct -** Packet sent to clients to notify when someone in zone toggles LFG flag -** Size: 8 bytes -** Used in: OP_LFGAppearance -** -*/ -struct LFG_Appearance_Struct -{ -/*0000*/ uint32 spawn_id; // ID of the client -/*0004*/ uint8 lfg; // 1=LFG, 0=Not LFG -/*0005*/ char unknown0005[3]; // -/*0008*/ -}; - - -// EverQuest Time Information: -// 72 minutes per EQ Day -// 3 minutes per EQ Hour -// 6 seconds per EQ Tick (2 minutes EQ Time) -// 3 seconds per EQ Minute - -struct TimeOfDay_Struct { - uint8 hour; - uint8 minute; - uint8 day; - uint8 month; - uint32 year; -}; - -// Darvik: shopkeeper structs -struct Merchant_Click_Struct { -/*000*/ uint32 npcid; // Merchant NPC's entity id -/*004*/ uint32 playerid; -/*008*/ uint32 command; //1=open, 0=cancel/close -/*012*/ float rate; //cost multiplier, dosent work anymore -}; -/* -Unknowns: -0 is e7 from 01 to // MAYBE SLOT IN PURCHASE -1 is 03 -2 is 00 -3 is 00 -4 is ?? -5 is ?? -6 is 00 from a0 to -7 is 00 from 3f to */ -/* -0 is F6 to 01 -1 is CE CE -4A 4A -00 00 -00 E0 -00 CB -00 90 -00 3F -*/ - - - -struct Merchant_Sell_Struct { -/*000*/ uint32 npcid; // Merchant NPC's entity id -/*004*/ uint32 playerid; // Player's entity id -/*008*/ uint32 itemslot; - uint32 unknown12; -/*016*/ uint8 quantity; // Already sold -/*017*/ uint8 Unknown016[3]; -/*020*/ uint32 price; -}; -struct Merchant_Purchase_Struct { -/*000*/ uint32 npcid; // Merchant NPC's entity id -/*004*/ uint32 itemslot; // Player's entity id -/*008*/ uint32 quantity; -/*012*/ uint32 price; -}; -struct Merchant_DelItem_Struct{ -/*000*/ uint32 npcid; // Merchant NPC's entity id -/*004*/ uint32 playerid; // Player's entity id -/*008*/ uint32 itemslot; -}; -struct Adventure_Purchase_Struct { -/*000*/ uint32 some_flag; //set to 1 generally... -/*000*/ uint32 npcid; -/*004*/ uint32 itemid; -/*008*/ uint32 variable; -}; - -struct Adventure_Sell_Struct { -/*000*/ uint32 unknown000; //0x01 -/*004*/ uint32 npcid; -/*008*/ uint32 slot; -/*012*/ uint32 charges; -/*016*/ uint32 sell_price; -}; - -struct AdventurePoints_Update_Struct { -/*000*/ uint32 ldon_available_points; // Total available points -/*004*/ uint8 unkown_apu004[20]; -/*024*/ uint32 ldon_guk_points; // Earned Deepest Guk points -/*028*/ uint32 ldon_mirugal_points; // Earned Mirugal' Mebagerie points -/*032*/ uint32 ldon_mistmoore_points; // Earned Mismoore Catacombs Points -/*036*/ uint32 ldon_rujarkian_points; // Earned Rujarkian Hills points -/*040*/ uint32 ldon_takish_points; // Earned Takish points -/*044*/ uint8 unknown_apu042[216]; -}; - - -struct AdventureFinish_Struct{ - uint32 win_lose;//Cofruben: 00 is a lose,01 is win. - uint32 points; -}; -//OP_AdventureRequest -struct AdventureRequest_Struct{ - uint32 risk;//1 normal,2 hard. - uint32 entity_id; -}; -struct AdventureRequestResponse_Struct{ - uint32 unknown000; - char text[2048]; - uint32 timetoenter; - uint32 timeleft; - uint32 risk; - float x; - float y; - float z; - uint32 showcompass; - uint32 unknown2080; -}; - - - -/*struct Item_Shop_Struct { - uint16 merchantid; - uint8 itemtype; - Item_Struct item; - uint8 iss_unknown001[6]; -};*/ - -/* -** Illusion_Struct -** Changes client visible features -** Size: 168 bytes -** Used In: OP_Illusion, #face, Mob::SendIllusionPacket() -** Fields from the deprecated struct: -** uint8 unknown_26; //Always 26 -** uint8 haircolor; -** uint8 beardcolor; -** uint8 eyecolor1; // the eyecolors always seem to be the same, maybe left and right eye? -** uint8 eyecolor2; -** uint8 hairstyle; -** uint8 aa_title; -** uint8 luclinface; // and beard -** Updated by Father Nitwit for 7-14-04 patch -** -*/ - -struct Illusion_Struct { -/*000*/ uint32 spawnid; -/*004*/ char charname[64]; -/*068*/ uint16 race; -/*070*/ char unknown070[2]; -/*072*/ uint8 gender; -/*073*/ uint8 texture; -/*074*/ uint8 helmtexture; -/*075*/ uint8 unknown075; -/*076*/ uint32 face; -/*080*/ uint8 hairstyle; -/*081*/ uint8 haircolor; -/*082*/ uint8 beard; -/*083*/ uint8 beardcolor; -/*084*/ float size; -/*088*/ char unknown084[80]; -/*168*/ -}; - - -struct ZonePoint_Entry { -/*0000*/ uint32 iterator; -/*0004*/ float y; -/*0008*/ float x; -/*0012*/ float z; -/*0016*/ float heading; -/*0020*/ uint16 zoneid; -/*0022*/ uint16 zoneinstance; // LDoN instance -}; - -struct ZonePoints { -/*0000*/ uint32 count; -/*0004*/ struct ZonePoint_Entry zpe[0]; // Always add one extra to the end after all zonepoints -}; - -struct SkillUpdate_Struct { -/*00*/ uint32 skillId; -/*04*/ uint32 value; -/*08*/ -}; - -struct ZoneUnavail_Struct { - //This actually varies, but... - char zonename[16]; - int16 unknown[4]; -}; - -struct GroupGeneric_Struct { - char name1[64]; - char name2[64]; -}; - -struct GroupCancel_Struct { - char name1[64]; - char name2[64]; - uint8 toggle; -}; - -struct GroupUpdate_Struct { -/*0000*/ uint32 action; -/*0004*/ char yourname[64]; -/*0068*/ char membername[5][64]; -/*0388*/ char leadersname[64]; -}; - -struct GroupUpdate2_Struct { -/*0000*/ uint32 action; -/*0004*/ char yourname[64]; -/*0068*/ char membername[5][64]; -/*0388*/ char leadersname[64]; -/*0452*/ GroupLeadershipAA_Struct leader_aas; -/*0580*/ uint8 unknown[188]; -/*0768*/ -}; -struct GroupJoin_Struct { -/*0000*/ uint32 action; -/*0004*/ char yourname[64]; -/*0068*/ char membername[64]; -/*0132*/ uint8 unknown[84]; -}; - -struct FaceChange_Struct { -/*000*/ uint8 haircolor; -/*001*/ uint8 beardcolor; -/*002*/ uint8 eyecolor1; // the eyecolors always seem to be the same, maybe left and right eye? -/*003*/ uint8 eyecolor2; -/*004*/ uint8 hairstyle; -/*005*/ uint8 beard; // vesuvias -/*006*/ uint8 face; -//vesuvias: -//there are only 10 faces for barbs changing woad just -//increase the face value by ten so if there were 8 woad -//designs then there would be 80 barb faces -}; - -/* -** Trade request from one client to another -** Used to initiate a trade -** Size: 8 bytes -** Used in: OP_TradeRequest -*/ -struct TradeRequest_Struct { -/*00*/ uint32 to_mob_id; -/*04*/ uint32 from_mob_id; -/*08*/ -}; - -struct TradeAccept_Struct { -/*00*/ uint32 from_mob_id; -/*04*/ uint32 unknown4; //seems to be garbage -/*08*/ -}; - -/* -** Cancel Trade struct -** Sent when a player cancels a trade -** Size: 8 bytes -** Used In: OP_CancelTrade -** -*/ -struct CancelTrade_Struct { -/*00*/ uint32 fromid; -/*04*/ uint32 action; -/*08*/ -}; - -struct PetitionUpdate_Struct { - uint32 petnumber; // Petition Number - uint32 color; // 0x00 = green, 0x01 = yellow, 0x02 = red - uint32 status; - uint32 senttime; // 4 has to be 0x1F - char accountid[32]; - char gmsenttoo[64]; - int32 quetotal; - char charname[64]; -}; - -struct Petition_Struct { - uint32 petnumber; - uint32 urgency; - char accountid[32]; - char lastgm[32]; - uint32 zone; - //char zone[32]; - char charname[64]; - uint32 charlevel; - uint32 charclass; - uint32 charrace; - uint32 unknown; - //time_t senttime; // Time? - uint32 checkouts; - uint32 unavail; - //uint8 unknown5[4]; - uint32 senttime; - uint32 unknown2; - char petitiontext[1024]; - char gmtext[1024]; -}; - - -struct Who_All_Struct { // 76 length total -/*000*/ char whom[64]; -/*064*/ uint32 wrace; // FF FF = no race - -/*066*/ uint32 wclass; // FF FF = no class -/*068*/ uint32 lvllow; // FF FF = no numbers -/*070*/ uint32 lvlhigh; // FF FF = no numbers -/*072*/ uint32 gmlookup; // FF FF = not doing /who all gm -/*074*/ uint32 unknown074; -/*076*/ uint8 unknown076[64]; -/*140*/ -}; - -struct Stun_Struct { // 4 bytes total - uint32 duration; // Duration of stun -}; - -struct AugmentItem_Struct { -/*00*/ int16 container_slot; -/*02*/ char unknown02[2]; -/*04*/ int32 augment_slot; -/*08*/ -}; - -// OP_Emote -struct Emote_Struct { -/*0000*/ uint32 unknown01; -/*0004*/ char message[1024]; -/*1028*/ -}; - -// Inspect -struct Inspect_Struct { - uint16 TargetID; - uint16 PlayerID; -}; -//OP_InspectAnswer -struct InspectResponse_Struct{//Cofruben:need to send two of this for the inspect response. -/*000*/ uint32 TargetID; -/*004*/ uint32 playerid; -/*008*/ char itemnames[21][64]; -/*1352*/char unknown_zero[64];//fill with zero's. -/*1416*/uint32 itemicons[21]; -/*1500*/uint32 unknown_zero2; -/*1504*/char text[288]; -}; - -//OP_SetDataRate -struct SetDataRate_Struct { - float newdatarate; -}; - -//OP_SetServerFilter -struct SetServerFilter_Struct { - uint32 filters[25]; //see enum eqFilterType -}; - -//Op_SetServerFilterAck -struct SetServerFilterAck_Struct { - uint8 blank[8]; -}; -struct IncreaseStat_Struct{ - /*0000*/ uint8 unknown0; - /*0001*/ uint8 str; - /*0002*/ uint8 sta; - /*0003*/ uint8 agi; - /*0004*/ uint8 dex; - /*0005*/ uint8 int_; - /*0006*/ uint8 wis; - /*0007*/ uint8 cha; - /*0008*/ uint8 fire; - /*0009*/ uint8 cold; - /*0010*/ uint8 magic; - /*0011*/ uint8 poison; - /*0012*/ uint8 disease; - /*0013*/ char unknown13[116]; - /*0129*/ uint8 str2; - /*0130*/ uint8 sta2; - /*0131*/ uint8 agi2; - /*0132*/ uint8 dex2; - /*0133*/ uint8 int_2; - /*0134*/ uint8 wis2; - /*0135*/ uint8 cha2; - /*0136*/ uint8 fire2; - /*0137*/ uint8 cold2; - /*0138*/ uint8 magic2; - /*0139*/ uint8 poison2; - /*0140*/ uint8 disease2; -}; - -struct GMName_Struct { - char oldname[64]; - char gmname[64]; - char newname[64]; - uint8 badname; - uint8 unknown[3]; -}; - -struct GMDelCorpse_Struct { - char corpsename[64]; - char gmname[64]; - uint8 unknown; -}; - -struct GMKick_Struct { - char name[64]; - char gmname[64]; - uint8 unknown; -}; - - -struct GMKill_Struct { - char name[64]; - char gmname[64]; - uint8 unknown; -}; - - -struct GMEmoteZone_Struct { - char text[512]; -}; - -// This is where the Text is sent to the client. -// Use ` as a newline character in the text. -// Variable length. -struct BookText_Struct { - uint8 window; // where to display the text (0xFF means new window) - uint8 type; //type: 0=scroll, 1=book, 2=item info.. prolly others. - char booktext[1]; // Variable Length -}; -// This is the request to read a book. -// This is just a "text file" on the server -// or in our case, the 'name' column in our books table. -struct BookRequest_Struct { - uint8 window; // where to display the text (0xFF means new window) - uint8 type; //type: 0=scroll, 1=book, 2=item info.. prolly others. - char txtfile[1]; // Variable Length -}; - -/* -** Object/Ground Spawn struct -** Used for Forges, Ovens, ground spawns, items dropped to ground, etc -** Size: 92 bytes -** OpCodes: OP_CreateObject -** Last Updated: Oct-17-2003 -** -*/ -struct Object_Struct { -/*00*/ uint32 linked_list_addr[2];// They are, get this, prev and next, ala linked list -/*08*/ uint16 unknown008[2]; // -/*12*/ uint32 drop_id; // Unique object id for zone -/*16*/ uint16 zone_id; // Redudant, but: Zone the object appears in -/*18*/ uint16 zone_instance; // -/*20*/ uint32 unknown020; // -/*24*/ uint32 unknown024; // -/*28*/ float heading; // heading -/*32*/ float z; // z coord -/*36*/ float x; // x coord -/*40*/ float y; // y coord -/*44*/ char object_name[20]; // Name of object, usually something like IT63_ACTORDEF -/*64*/ float unknown064; // seems like coords, not always valid, all 0 on most world objects -/*68*/ float unknown068; // seems like coords, not always valid, all 0 on most world objects -/*72*/ float unknown072; // seems like coords, not always valid, all 0 on most world objects -/*76*/ uint32 unknown076; // -/*80*/ uint32 object_type; // Type of object, not directly translated to OP_OpenObject -/*84*/ uint32 unknown084; //set to 0xFF -/*88*/ uint32 spawn_id; // Spawn Id of client interacting with object -/*92*/ -}; -// 01 = generic drop, 02 = armor, 19 = weapon -//[13:40] and 0xff seems to be indicative of the tradeskill/openable items that end up returning the old style item type in the OP_OpenObject - -/* -** Click Object Struct -** Client clicking on zone object (forge, groundspawn, etc) -** Size: 8 bytes -** Last Updated: Oct-17-2003 -** -*/ -struct ClickObject_Struct { -/*00*/ uint32 drop_id; -/*04*/ uint32 player_id; -/*08*/ -}; - -struct Shielding_Struct { - uint32 target_id; -}; - -/* -** Click Object Acknowledgement Struct -** Response to client clicking on a World Container (ie, forge) -** -*/ -struct ClickObjectAck_Struct { -/*00*/ uint32 player_id; // Entity Id of player who clicked object -/*04*/ uint32 drop_id; // Zone-specified unique object identifier -/*08*/ uint32 open; // 1=opening, 0=closing -/*12*/ uint32 type; // See object.h, "Object Types" -/*16*/ uint32 unknown16; // -/*20*/ uint32 icon; // Icon to display for tradeskill containers -/*24*/ uint32 unknown24; // -/*28*/ char object_name[64]; // Object name to display -/*92*/ -}; - -/* -** This is different now, mostly unknown -** -*/ -struct CloseContainer_Struct { -/*00*/ uint32 player_id; // Entity Id of player who clicked object -/*04*/ uint32 drop_id; // Zone-specified unique object identifier -/*08*/ uint32 open; // 1=opening, 0=closing -/*12*/ uint32 unknown12[12]; -}; - -/* -** Generic Door Struct -** Length: 52 Octets -** Used in: -** cDoorSpawnsStruct(f721) -** -*/ -struct Door_Struct -{ -/*0000*/ char name[32]; // Filename of Door // Was 10char long before... added the 6 in the next unknown to it: Daeken M. BlackBlade -/*0032*/ float yPos; // y loc -/*0036*/ float xPos; // x loc -/*0040*/ float zPos; // z loc -/*0044*/ float heading; -/*0048*/ uint32 incline; // rotates the whole door -/*0052*/ uint16 size; // 100 is normal, smaller number = smaller model -/*0054*/ uint8 unknown0038[6]; -/*0060*/ uint8 doorId; // door's id # -/*0061*/ uint8 opentype; -/* - * Open types: - * 66 = PORT1414 (Qeynos) - * 55 = BBBOARD (Qeynos) - * 100 = QEYLAMP (Qeynos) - * 56 = CHEST1 (Qeynos) - * 5 = DOOR1 (Qeynos) - */ -/*0062*/ uint8 state_at_spawn; -/*0063*/ uint8 invert_state; // if this is 1, the door is normally open -/*0064*/ uint32 door_param; //this may index zone_points, representing the destination -/*0068*/ uint8 unknown0052[12]; // mostly 0s, the last 3 bytes are something tho -/*0080*/ -}; - - - -struct DoorSpawns_Struct { - struct Door_Struct doors[0]; -}; - -/* - OP Code: Op_ClickDoor - Size: 16 -*/ -struct ClickDoor_Struct { -/*000*/ uint8 doorid; -/*001*/ uint8 unknown001; // This may be some type of action setting -/*002*/ uint8 unknown002; // This is sometimes set after a lever is closed -/*003*/ uint8 unknown003; // Seen 0 -/*004*/ uint8 picklockskill; -/*005*/ uint8 unknown005[3]; -/*008*/ uint32 item_id; -/*012*/ uint16 player_id; -/*014*/ uint8 unknown014[2]; -/*016*/ -}; - -struct MoveDoor_Struct { - uint8 doorid; - uint8 action; -}; - - -struct BecomeNPC_Struct { - uint32 id; - int32 maxlevel; -}; - -struct Underworld_Struct { - float speed; - float y; - float x; - float z; -}; - -struct Resurrect_Struct { - uint32 unknown00; - uint16 zone_id; - uint16 instance_id; - float y; - float x; - float z; - char your_name[64]; - uint32 unknown88; - char rezzer_name[64]; - uint32 spellid; - char corpse_name[64]; - uint32 action; -/* 228 */ -}; - -struct SetRunMode_Struct { - uint8 mode; - uint8 unknown[3]; -}; - -//EnvDamage is EnvDamage2 without a few bytes at the end. - -struct EnvDamage2_Struct { -/*0000*/ uint32 id; -/*0004*/ uint16 unknown4; -/*0006*/ uint32 damage; -/*0010*/ uint8 unknown10[12]; -/*0022*/ uint8 dmgtype; //FA = Lava; FC = Falling -/*0023*/ uint8 unknown2[4]; -/*0027*/ uint16 constant; //Always FFFF -/*0029*/ uint16 unknown29; -}; - -//Bazaar Stuff =D - -struct BazaarWindowStart_Struct { - uint8 Action; - uint8 Unknown001; - uint16 Unknown002; -}; - - -struct BazaarWelcome_Struct { - BazaarWindowStart_Struct beginning; - uint32 traders; - uint32 items; - uint8 unknown1[8]; -}; - -struct BazaarSearch_Struct { - BazaarWindowStart_Struct beginning; - uint32 traderid; - uint32 class_; - uint32 race; - uint32 stat; - uint32 slot; - uint32 type; - char name[64]; - uint32 minprice; - uint32 maxprice; -}; -struct BazaarInspect_Struct{ - uint32 item_id; - uint32 unknown; - char name[64]; -}; -struct BazaarReturnDone_Struct{ - uint32 type; - uint32 traderid; - uint32 unknown8; - uint32 unknown12; - uint32 unknown16; -}; - -struct BazaarSearchResults_Struct { -/*000*/ BazaarWindowStart_Struct Beginning; -/*004*/ uint32 NumItems; -/*008*/ uint32 SerialNumber; -/*012*/ uint32 SellerID; -/*016*/ uint32 Cost; -/*020*/ uint32 ItemStat; -/*024*/ char ItemName[64]; -/*088*/ -}; - -struct ServerSideFilters_Struct { -uint8 clientattackfilters; // 0) No, 1) All (players) but self, 2) All (players) but group -uint8 npcattackfilters; // 0) No, 1) Ignore NPC misses (all), 2) Ignore NPC Misses + Attacks (all but self), 3) Ignores NPC Misses + Attacks (all but group) -uint8 clientcastfilters; // 0) No, 1) Ignore PC Casts (all), 2) Ignore PC Casts (not directed towards self) -uint8 npccastfilters; // 0) No, 1) Ignore NPC Casts (all), 2) Ignore NPC Casts (not directed towards self) -}; - -/* -** Client requesting item statistics -** Size: 32 bytes -** Used In: OP_ItemLinkClick -** Last Updated: 2/15/2009 -** -*/ -struct ItemViewRequest_Struct { -/*000*/ uint32 item_id; -/*004*/ uint32 augments[5]; -/*024*/ uint32 link_hash; -/*028*/ char unknown028[4]; -/*032*/ -}; - - -/* - * Client to server packet - */ -struct PickPocket_Struct { -// Size 18 - uint32 to; - uint32 from; - uint16 myskill; - uint8 type; // -1 you are being picked, 0 failed , 1 = plat, 2 = gold, 3 = silver, 4 = copper, 5 = item - uint8 unknown1; // 0 for response, unknown for input - uint32 coin; - uint8 lastsix[2]; -}; -/* - * Server to client packet - */ - -struct sPickPocket_Struct { - // Size 28 = coin/fail - uint32 to; - uint32 from; - uint32 myskill; - uint32 type; - uint32 coin; - char itemname[64]; -}; - -struct LogServer_Struct { -// Op_Code OP_LOGSERVER -/*000*/ uint32 unknown000; -/*004*/ uint32 unknown004; -/*008*/ uint32 unknown008; -/*012*/ uint32 unknown012; // htonl(1) on live -/*016*/ uint32 unknown016; // htonl(1) on live -/*020*/ uint8 unknown020[12]; -/*032*/ char worldshortname[32]; -/*064*/ uint8 unknown064[32]; -/*096*/ char unknown096[16]; // 'pacman' on live -/*112*/ char unknown112[16]; // '64.37,148,36' on live -/*126*/ uint8 unknown128[48]; -/*176*/ uint32 unknown176; // htonl(0x00002695) -/*180*/ char unknown180[80]; // 'eqdataexceptions@mail.station.sony.com' on live -/*260*/ uint8 unknown260; // 0x01 on live -/*261*/ uint8 unknown261; // 0x01 on live -/*262*/ uint8 unknown262[2]; -/*264*/ -}; - -struct ApproveWorld_Struct { -// Size 544 -// Op_Code OP_ApproveWorld - uint8 unknown544[544]; -}; - -struct ClientError_Struct -{ -/*00001*/ char type; -/*00001*/ char unknown0001[69]; -/*00069*/ char character_name[64]; -/*00134*/ char unknown134[192]; -/*00133*/ char message[31994]; -/*32136*/ -}; - -struct MobHealth -{ - /*0000*/ uint8 hp; //health percent - /*0001*/ uint16 id;//mobs id -}; - -struct Track_Struct { - uint16 entityid; - uint16 padding002; - float distance; -}; - -struct Tracking_Struct { - Track_Struct Entrys[0]; -}; - -/* -** ZoneServerInfo_Struct -** Zone server information -** Size: 130 bytes -** Used In: OP_ZoneServerInfo -** -*/ -struct ZoneServerInfo_Struct -{ -/*0000*/ char ip[128]; -/*0128*/ uint16 port; -}; - -struct WhoAllPlayer{ - uint32 formatstring; - uint32 pidstring; - char* name; - uint32 rankstring; - char* guild; - uint32 unknown80[2]; - uint32 zonestring; - uint32 zone; - uint32 class_; - uint32 level; - uint32 race; - char* account; - uint32 unknown100; -}; - -struct WhoAllReturnStruct { - uint32 id; - uint32 playerineqstring; - char line[27]; - uint8 unknown35; //0A - uint32 unknown36;//0s - uint32 playersinzonestring; - uint32 unknown44[2]; //0s - uint32 unknown52;//1 - uint32 unknown56;//1 - uint32 playercount;//1 - struct WhoAllPlayer player[0]; -}; - -struct Trader_Struct { - uint32 code; - uint32 itemid[160]; - uint32 unknown; - uint32 itemcost[80]; -}; - -struct ClickTrader_Struct { - uint32 code; - uint32 unknown[161];//damn soe this is totally pointless :/ but at least your finally using memset! Good job :) -LE - uint32 itemcost[80]; -}; - -struct GetItems_Struct{ - uint32 items[80]; -}; - -struct BecomeTrader_Struct -{ - uint32 ID; - uint32 Code; -}; - -struct Trader_ShowItems_Struct{ - uint32 code; - uint32 traderid; - uint32 unknown08[3]; -}; - -struct TraderBuy_Struct{ - uint32 unknown0; - uint32 traderid; - uint32 itemid; - uint32 unknown8; - uint32 price; - uint32 quantity; - uint32 slot_num; - char itemname[60]; -}; - -struct TraderItemUpdate_Struct{ - uint32 unknown0; - uint32 traderid; - uint8 fromslot; - uint8 toslot; //7? - uint16 charges; -}; - -struct MoneyUpdate_Struct{ - int32 platinum; - int32 gold; - int32 silver; - int32 copper; -}; - -struct TraderDelItem_Struct{ - uint32 slotid; - uint32 quantity; - uint32 unknown; -}; - -struct TraderClick_Struct{ - uint32 traderid; - uint32 unknown4[2]; - uint32 approval; -}; - -struct FormattedMessage_Struct{ - uint32 unknown0; - uint32 string_id; - uint32 type; - char message[0]; -}; -struct SimpleMessage_Struct{ - uint32 string_id; - uint32 color; - uint32 unknown8; -}; - -struct GuildMemberEntry_Struct { - char name[1]; //variable length - uint32 level; //network byte order - uint32 banker; //1=yes, 0=no, network byte order - uint32 class_; //network byte order - uint32 rank; //network byte order - uint32 time_last_on; //network byte order - uint32 tribute_enable; //network byte order - uint32 total_tribute; //total guild tribute donated, network byte order - uint32 last_tribute; //unix timestamp - char public_note[1]; //variable length. - uint16 zoneinstance; //network byte order - uint16 zone_id; //network byte order -/* 38 + strings */ -}; - -struct GuildMembers_Struct { //just for display purposes, this is not actually used in the message encoding. - char player_name[1]; //variable length. - uint32 count; //network byte order - GuildMemberEntry_Struct member[0]; -}; - -struct GuildMOTD_Struct{ -/*0000*/ uint32 unknown0; -/*0004*/ char name[64]; -/*0068*/ char setby_name[64]; -/*0132*/ uint32 unknown132; -/*0136*/ char motd[512]; -}; -struct GuildUpdate_PublicNote{ - uint32 unknown0; - char name[64]; - char target[64]; - char note[100]; //we are cutting this off at 100, actually around 252 -}; -struct GuildDemoteStruct{ - char name[64]; - char target[64]; -}; -struct GuildRemoveStruct{ - char target[64]; - char name[64]; - uint32 unknown128; - uint32 leaderstatus; //? -}; -struct GuildMakeLeader{ - char name[64]; - char target[64]; -}; -struct BugStruct{ -/*0000*/ char chartype[64]; -/*0064*/ char name[96]; -/*0160*/ char ui[128]; -/*0288*/ float x; -/*0292*/ float y; -/*0296*/ float z; -/*0300*/ float heading; -/*0304*/ uint32 unknown304; -/*0308*/ uint32 type; -/*0312*/ char unknown312[2144]; -/*2456*/ char bug[1024]; -/*3480*/ char placeholder[2]; -/*3482*/ char system_info[4098]; -}; - -struct Ground_Spawn{ - float max_x; - float max_y; - float min_x; - float min_y; - float max_z; - float heading; - char name[16]; - uint32 item; - uint32 max_allowed; - uint32 respawntimer; -}; -struct Ground_Spawns { - struct Ground_Spawn spawn[50]; //Assigned max number to allow -}; -struct PetitionBug_Struct{ - uint32 petition_number; - uint32 unknown4; - char accountname[64]; - uint32 zoneid; - char name[64]; - uint32 level; - uint32 class_; - uint32 race; - uint32 unknown152[3]; - uint32 time; - uint32 unknown168; - char text[1028]; -}; - -struct DyeStruct -{ - union - { - struct - { - struct Color_Struct head; - struct Color_Struct chest; - struct Color_Struct arms; - struct Color_Struct wrists; - struct Color_Struct hands; - struct Color_Struct legs; - struct Color_Struct feet; - struct Color_Struct primary; // you can't actually dye this - struct Color_Struct secondary; // or this - } - dyes; - struct Color_Struct dye[9]; - }; -}; - -struct ApproveZone_Struct { - char name[64]; - uint32 zoneid; - uint32 approve; -}; -struct ZoneInSendName_Struct { - uint32 unknown0; - char name[64]; - char name2[64]; - uint32 unknown132; -}; -struct ZoneInSendName_Struct2 { - uint32 unknown0; - char name[64]; - uint32 unknown68[145]; -}; - -static const uint32 MAX_TRIBUTE_TIERS = 10; - -struct StartTribute_Struct { - uint32 client_id; - uint32 tribute_master_id; - uint32 response; -}; - -struct TributeLevel_Struct { - uint32 level; //backwards byte order! - uint32 tribute_item_id; //backwards byte order! - uint32 cost; //backwards byte order! -}; - -struct TributeAbility_Struct { - uint32 tribute_id; //backwards byte order! - uint32 tier_count; //backwards byte order! - TributeLevel_Struct tiers[MAX_TRIBUTE_TIERS]; - char name[0]; -}; - -struct GuildTributeAbility_Struct { - uint32 guild_id; - TributeAbility_Struct ability; -}; - -struct SelectTributeReq_Struct { - uint32 client_id; //? maybe action ID? - uint32 tribute_id; - uint32 unknown8; //seen E3 00 00 00 -}; - -struct SelectTributeReply_Struct { - uint32 client_id; //echoed from request. - uint32 tribute_id; - char desc[0]; -}; - -struct TributeInfo_Struct { - uint32 active; //0 == inactive, 1 == active - uint32 tributes[MAX_PLAYER_TRIBUTES]; //-1 == NONE - uint32 tiers[MAX_PLAYER_TRIBUTES]; //all 00's - uint32 tribute_master_id; -}; - -struct TributeItem_Struct { - uint32 slot; - uint32 quantity; - uint32 tribute_master_id; - int32 tribute_points; -}; - -struct TributePoint_Struct { - int32 tribute_points; - uint32 unknown04; - int32 career_tribute_points; - uint32 unknown12; -}; - -struct TributeMoney_Struct { - uint32 platinum; - uint32 tribute_master_id; - int32 tribute_points; -}; - - -struct Split_Struct -{ - uint32 platinum; - uint32 gold; - uint32 silver; - uint32 copper; -}; - - -/* -** New Combine Struct -** Client requesting to perform a tradeskill combine -** Size: 4 bytes -** Used In: OP_TradeSkillCombine -** Last Updated: Oct-15-2003 -** -*/ -struct NewCombine_Struct { -/*00*/ int16 container_slot; -/*02*/ int16 guildtribute_slot; -/*04*/ -}; - - -//client requesting favorite recipies -struct TradeskillFavorites_Struct { - uint32 object_type; - uint32 some_id; - uint32 favorite_recipes[500]; -}; - -//search request -struct RecipesSearch_Struct { - uint32 object_type; //same as in favorites - uint32 some_id; //same as in favorites - uint32 mintrivial; - uint32 maxtrivial; - char query[56]; - uint32 unknown4; //is set to 00 03 00 00 - uint32 unknown5; //is set to 4C DD 12 00 -/*80*/ -}; - -//one sent for each item, from server in reply to favorites or search -struct RecipeReply_Struct { - uint32 object_type; - uint32 some_id; //same as in favorites - uint32 component_count; - uint32 recipe_id; - uint32 trivial; - char recipe_name[64]; -/*84*/ -}; - -//received and sent back as an ACK with different reply_code -struct RecipeAutoCombine_Struct { - uint32 object_type; - uint32 some_id; - uint32 unknown1; //echoed in reply - uint32 recipe_id; - uint32 reply_code; // 93 64 e1 00 (junk) in request - // 00 00 00 00 in successful reply - // f5 ff ff ff in 'you dont have all the stuff' reply -}; - -struct LevelAppearance_Struct { //Sends a little graphic on level up - uint32 spawn_id; - uint32 parm1; - uint32 value1a; - uint32 value1b; - uint32 parm2; - uint32 value2a; - uint32 value2b; - uint32 parm3; - uint32 value3a; - uint32 value3b; - uint32 parm4; - uint32 value4a; - uint32 value4b; - uint32 parm5; - uint32 value5a; - uint32 value5b; -/*64*/ -}; -struct MerchantList{ - uint32 id; - uint32 slot; - uint32 item; -}; -struct TempMerchantList{ - uint32 npcid; - uint32 slot; - uint32 item; - uint32 charges; //charges/quantity - uint32 origslot; -}; - - -struct FindPerson_Point { - float y; - float x; - float z; -}; - -struct FindPersonRequest_Struct { - uint32 npc_id; - FindPerson_Point client_pos; -}; - -//variable length packet of points -struct FindPersonResult_Struct { - FindPerson_Point dest; - FindPerson_Point path[0]; //last element must be the same as dest -}; - -struct MobRename_Struct { -/*000*/ char old_name[64]; -/*064*/ char old_name_again[64]; //not sure what the difference is -/*128*/ char new_name[64]; -/*192*/ uint32 unknown192; //set to 0 -/*196*/ uint32 unknown196; //set to 1 -/*200*/ -}; - -struct PlayMP3_Struct { - char filename[0]; -}; - -//this is for custom title display in the skill window -struct TitleEntry_Struct { - uint32 skill_id; - uint32 skill_value; - char title[1]; -}; - -struct Titles_Struct { - uint32 title_count; - TitleEntry_Struct titles[0]; -}; - -//this is for title selection by the client -struct TitleListEntry_Struct { - uint32 unknown0; //title ID - char prefix[1]; //variable length, null terminated - char postfix[1]; //variable length, null terminated -}; - -struct TitleList_Struct { - uint32 title_count; - TitleListEntry_Struct titles[0]; //list of title structs - //uint32 unknown_ending; seen 0x7265, 0 -}; - -struct SetTitle_Struct { - uint32 is_suffix; //guessed: 0 = prefix, 1 = suffix - uint32 title_id; -}; - -struct SetTitleReply_Struct { - uint32 is_suffix; //guessed: 0 = prefix, 1 = suffix - char title[32]; - uint32 entity_id; -}; - -struct TaskDescription_Struct { -/*000*/ uint32 activity_count; //not right. -/*004*/ uint32 taskid; -/*008*/ uint8 unk; -/*009*/ uint32 id3; -/*013*/ uint32 unknown13; -/*017*/ char name[1]; //variable length, 0 terminated -/*018*/ uint32 unknown18; -/*022*/ uint32 unknown22; -/*026*/ char desc[1]; //variable length, 0 terminated -/*027*/ uint32 reward_count; //not sure -/*031*/ uint32 unknown31; -/*035*/ uint32 unknown35; -/*039*/ uint16 unknown39; -/*041*/ char reward_link[1]; //variable length, 0 terminated -/*042*/ uint32 unknown43; //maybe crystal count? -}; - -struct TaskMemberList_Struct { -/*00*/ uint32 gopher_id; -/*04*/ uint32 unknown04; -/*08*/ uint32 member_count; //1 less than the number of members -/*12*/ char list_pointer[0]; -/* list is of the form: - char member_name[1] //null terminated string - uint8 task_leader //boolean flag -*/ -}; - - -struct TaskActivity_Struct { -/*000*/ uint32 activity_count; //not right -/*004*/ uint32 id3; -/*008*/ uint32 taskid; -/*012*/ uint32 activity_id; -/*016*/ uint32 unknown016; -/*020*/ uint32 activity_type; -/*024*/ uint32 unknown024; -/*028*/ uint32 unknown28; -/*032*/ char mob_name[1]; //variable length, 0 terminated -/*033*/ char item_name[1]; //variable length, 0 terminated -/*034*/ uint32 goal_count; -/*038*/ uint32 unknown38; //0xFFFFFFFF -/*042*/ uint32 unknown42; //0xFFFFFFFF -/*046*/ uint32 unknown46; //saw 0x151,0x156 -/*050*/ uint32 unknown50; //saw 0x404,0 -/*054*/ char activity_name[1]; //variable length, 0 terminated... commonly empty -/*055*/ uint32 done_count; -/*059*/ uint32 unknown59; //=1 except on unknown and terminal activities? -/*063*/ -}; - -struct TaskHistoryEntry_Struct { - uint32 task_id; - char name[1]; - uint32 completed_time; -}; -struct TaskHistory_Struct { - uint32 completed_count; - TaskHistoryEntry_Struct entries[0]; -}; - -struct AcceptNewTask_Struct { - uint32 task_id; //set to 0 for 'decline' - uint32 task_master_id; //entity ID -}; - -//was all 0's from client, server replied with same op, all 0's -struct CancelTask_Struct { - uint32 unknown0; - uint32 unknown4; -}; - -struct AvaliableTask_Struct { - uint32 task_index; //no idea, seen 0x1 - uint32 task_master_id; //entity ID - uint32 task_id; - uint32 unknown012; - uint32 activity_count; //not sure, seen 2 - char desc[1]; //variable length, 0 terminated - uint32 reward_platinum;//not sure on these - uint32 reward_gold; - uint32 reward_silver; - uint32 reward_copper; - char some_name[1]; //variable length, 0 terminated - uint8 unknown1; - uint32 unknown2; //0xFFFFFFFF - uint32 unknown3; //0xFFFFFFFF - uint32 unknown4; //seen 0x16 - uint8 unknown5; -}; - - -struct BankerChange_Struct { - uint32 platinum; - uint32 gold; - uint32 silver; - uint32 copper; - uint32 platinum_bank; - uint32 gold_bank; - uint32 silver_bank; - uint32 copper_bank; -}; - -struct LeadershipExpUpdate_Struct { -/*00*/ uint32 group_leadership_exp; -/*04*/ uint32 group_leadership_points; -/*08*/ uint32 raid_leadership_exp; -/*12*/ uint32 raid_leadership_points; -}; - -struct UpdateLeadershipAA_Struct { -/*00*/ uint32 ability_id; -/*04*/ uint32 new_rank; -/*08*/ uint32 pointsleft; -/*12*/ -}; - - -struct RaidGeneral_Struct { -/*00*/ uint32 action; //=10 -/*04*/ char player_name[64]; //should both be the player's name -/*04*/ char leader_name[64]; -/*132*/ uint32 parameter; -}; - -struct RaidAdd_Struct { -/*000*/ uint32 action; //=0 -/*004*/ char player_name[64]; //should both be the player's name -/*068*/ char leader_name[64]; -/*132*/ uint8 _class; -/*133*/ uint8 level; -/*134*/ uint8 has_group; -/*135*/ uint8 unknown135; //seems to be 0x42 or 0 -}; - -struct RaidCreate_Struct { -/*00*/ uint32 action; //=8 -/*04*/ char leader_name[64]; -/*68*/ uint32 leader_id; -}; - -struct RaidMemberInfo_Struct { -/*00*/ uint8 group_number; -/*01*/ char member_name[1]; //dyanmic length, null terminated '\0' -/*00*/ uint8 unknown00; -/*01*/ uint8 _class; -/*02*/ uint8 level; -/*03*/ uint8 is_raid_leader; -/*04*/ uint8 is_group_leader; -/*05*/ uint8 main_tank; //not sure -/*06*/ uint8 unknown06[5]; //prolly more flags -}; - -struct RaidDetails_Struct { -/*000*/ uint32 action; //=6,20 -/*004*/ char leader_name[64]; -/*068*/ uint32 unknown68[4]; -/*084*/ LeadershipAA_Struct abilities; //ranks in backwards byte order -/*128*/ uint8 unknown128[142]; -/*354*/ uint32 leader_id; -}; - -struct RaidMembers_Struct { -/*000*/ RaidDetails_Struct details; -/*358*/ uint32 member_count; //including leader -/*362*/ RaidMemberInfo_Struct members[1]; -/*...*/ RaidMemberInfo_Struct empty; //seem to have an extra member with a 0 length name on the end -}; - -struct DynamicWall_Struct { -/*00*/ char name[32]; -/*32*/ float y; -/*36*/ float x; -/*40*/ float z; -/*44*/ uint32 something; -/*48*/ uint32 unknown48; //0 -/*52*/ uint32 one_hundred; //0x64 -/*56*/ uint32 unknown56; //0 -/*60*/ uint32 something2; -/*64*/ int32 unknown64; //-1 -/*68*/ uint32 unknown68; //0 -/*72*/ uint32 unknown72; //0 -/*76*/ uint32 unknown76; //0x100 -/*80*/ -}; - -enum { //bandolier actions - BandolierCreate = 0, - BandolierRemove = 1, - BandolierSet = 2 -}; - -struct BandolierCreate_Struct { -/*00*/ uint32 action; //0 for create -/*04*/ uint8 number; -/*05*/ char name[32]; -/*37*/ uint16 unknown37; //seen 0x93FD -/*39*/ uint8 unknown39; //0 -}; - -struct BandolierDelete_Struct { -/*00*/ uint32 action; -/*04*/ uint8 number; -/*05*/ uint8 unknown05[35]; -}; - -struct BandolierSet_Struct { -/*00*/ uint32 action; -/*04*/ uint8 number; -/*05*/ uint8 unknown05[35]; -}; - -struct Arrow_Struct { -/*000*/ uint32 type; //unsure on name, seems to be 0x1, dosent matter -/*005*/ uint8 unknown004[12]; -/*016*/ float src_y; -/*020*/ float src_x; -/*024*/ float src_z; -/*028*/ uint8 unknown028[12]; -/*040*/ float velocity; //4 is normal, 20 is quite fast -/*044*/ float launch_angle; //0-450ish, not sure the units, 140ish is straight -/*048*/ float tilt; //on the order of 125 -/*052*/ uint8 unknown052[8]; -/*060*/ float arc; -/*064*/ uint8 unknown064[12]; -/*076*/ uint32 source_id; -/*080*/ uint32 target_id; //entity ID -/*084*/ uint32 item_id; //1 to about 150ish -/*088*/ uint32 unknown088; //seen 125, dosent seem to change anything.. -/*092*/ uint32 unknown092; //seen 16, dosent seem to change anything -/*096*/ uint8 unknown096[5]; -/*101*/ char model_name[16]; -/*117*/ uint8 unknown117[19]; -}; - -//made a bunch of trivial structs for stuff for opcode finder to use -struct Consent_Struct { - char name[1]; //always at least a null -}; - -struct AdventureMerchant_Struct { - uint32 unknown_flag; //seems to be 1 - uint32 entity_id; -}; - -struct Save_Struct { - uint8 unknown00[192]; -}; - -struct GMToggle_Struct { - uint8 unknown0[64]; - uint32 toggle; -}; - -struct GroupInvite_Struct { - char invitee_name[64]; - char inviter_name[64]; -// uint8 unknown128[65]; -}; - -struct ColoredText_Struct { - uint32 color; - char msg[1]; -}; - -struct UseAA_Struct { - uint32 begin; - uint32 ability; - uint32 end; -}; - -struct AA_Ability { -/*00*/ uint32 skill_id; -/*04*/ uint32 base1; -/*08*/ uint32 base2; -/*12*/ uint32 slot; -}; - -struct SendAA_Struct { -/*0000*/ uint32 id; -/*0004*/ uint32 hotkey_sid; -/*0008*/ uint32 hotkey_sid2; -/*0012*/ uint32 title_sid; -/*0016*/ uint32 desc_sid; -/*0020*/ uint32 class_type; -/*0024*/ uint32 cost; -/*0028*/ uint32 seq; -/*0032*/ uint32 current_level; //1s, MQ2 calls this AARankRequired -/*0036*/ uint32 prereq_skill; //is < 0, abs() is category # -/*0040*/ uint32 prereq_minpoints; //min points in the prereq -/*0044*/ uint32 type; -/*0048*/ uint32 spellid; -/*0052*/ uint32 spell_type; -/*0056*/ uint32 spell_refresh; -/*0060*/ uint16 classes; -/*0062*/ uint16 berserker; //seems to be 1 if its a berserker ability -/*0064*/ uint32 max_level; -/*0068*/ uint32 last_id; -/*0072*/ uint32 next_id; -/*0076*/ uint32 cost2; -/*0080*/ uint32 unknown80[2]; //0s -/*0084*/ uint32 total_abilities; -/*0088*/ AA_Ability abilities[0]; -}; - -struct AA_List { - SendAA_Struct* aa[0]; -}; - -struct AA_Action { -/*00*/ uint32 action; -/*04*/ uint32 ability; -/*08*/ uint32 unknown08; -/*12*/ uint32 exp_value; -}; - -struct AA_Skills { //this should be removed and changed to AA_Array -/*00*/ uint32 aa_skill; -/*04*/ uint32 aa_value; -}; - -struct AAExpUpdate_Struct { -/*00*/ uint32 unknown00; //seems to be a value from AA_Action.ability -/*04*/ uint32 aapoints_unspent; -/*08*/ uint8 aaxp_percent; //% of exp that goes to AAs -/*09*/ uint8 unknown09[3]; //live dosent always zero these, so they arnt part of aaxp_percent -}; - - -struct AltAdvStats_Struct { -/*000*/ uint32 experience; -/*004*/ uint16 unspent; -/*006*/ uint16 unknown006; -/*008*/ uint8 percentage; -/*009*/ uint8 unknown009[3]; -}; - -struct PlayerAA_Struct { - AA_Skills aa_list[MAX_PP_AA_ARRAY]; -}; - -struct AATable_Struct { - AA_Skills aa_list[MAX_PP_AA_ARRAY]; -}; - -struct Weather_Struct { - uint32 val1; //generall 0x000000FF - uint32 type; //0x31=rain, 0x02=snow(i think), 0 = normal - uint32 mode; -}; - -struct ZoneInUnknown_Struct { - uint32 val1; - uint32 val2; - uint32 val3; -}; - -struct MobHealth_Struct { - uint16 entity_id; - uint8 hp; -}; - -struct AnnoyingZoneUnknown_Struct { - uint32 entity_id; - uint32 value; //always 4 -}; - -struct ApplyPoison_Struct { - uint32 inventorySlot; - uint32 success; -}; - -struct GuildMemberUpdate_Struct { -/*00*/ uint32 guild_id; //not sure -/*04*/ char member_name[64]; -/*68*/ uint16 zone_id; -/*70*/ uint16 instance_id; -/*72*/ uint32 unknown072; -}; - - }; //end namespace structs -}; //end namespace Client62 - -#endif /*CLIENT62_STRUCTS_H_*/ - - - - - - - - - - diff --git a/common/patches/patches.cpp b/common/patches/patches.cpp index 50d77a43f..b993b57dd 100644 --- a/common/patches/patches.cpp +++ b/common/patches/patches.cpp @@ -2,7 +2,6 @@ #include "../debug.h" #include "patches.h" -#include "client62.h" #include "titanium.h" #include "underfoot.h" #include "sof.h" @@ -11,7 +10,6 @@ #include "rof2.h" void RegisterAllPatches(EQStreamIdentifier &into) { - Client62::Register(into); Titanium::Register(into); SoF::Register(into); SoD::Register(into); @@ -21,7 +19,6 @@ void RegisterAllPatches(EQStreamIdentifier &into) { } void ReloadAllPatches() { - Client62::Reload(); Titanium::Reload(); SoF::Reload(); SoD::Reload(); diff --git a/utils/patches/patch_6.2.conf b/utils/patches/patch_6.2.conf deleted file mode 100644 index 8eca3dd4e..000000000 --- a/utils/patches/patch_6.2.conf +++ /dev/null @@ -1,539 +0,0 @@ -#ShowEQ Import Notes: -# ZERO THE FILE first -# sed 's/0x[0-9a-fA-F]{4}/0x0000/g' -#Unknown Mapping: -#OP_Action2 -> OP_Damage -#OP_EnvDamage -> OP_Damage ---> might have been a one time mistake -#Name Differences: -#OP_CancelInvite -> OP_GroupCancelInvite -#OP_GMFind -> OP_FindPersonRequest - -OP_Unknown=0x0000 -OP_ExploreUnknown=0x0292 #used for unknown explorer -#world packets -OP_ApproveWorld=0x41b1 # ShowEQ 06/29/05 -OP_LogServer=0x4668 # EQEmu 06/29/05 -OP_MOTD=0x7fea # EQEmu 06/29/05 -OP_SendLoginInfo=0x2792 # EQEmu 06/29/05 -OP_DeleteCharacter=0x0920 # ShowEQ 06/29/05 -OP_SendCharInfo=0x732c # EQEmu 06/29/05 -OP_ExpansionInfo=0x5c78 # EQEmu 06/29/05 -OP_CharacterCreate=0x6160 # EQEmu 06/29/05 -OP_RandomNameGenerator=0x23d4 # ShowEQ 06/29/05 -OP_GuildsList=0x6957 # ShowEQ 06/29/05 -OP_ApproveName=0x46b1 # EQEmu 06/29/05 -OP_EnterWorld=0x7262 # EQEmu 06/29/05 -OP_PostEnterWorld=0x0df0 # EQEmu 06/29/05 -OP_World_Client_CRC1=0x254d # ShowEQ 06/29/05 -OP_World_Client_CRC2=0x16c9 # ShowEQ 06/29/05 -OP_SetChatServer=0x6238 # EQEmu 06/29/05 -OP_SetChatServer2=0x6536 # EQEmu 06/29/05 -OP_ZoneServerInfo=0x407c # EQEmu 06/29/05 -OP_WorldComplete=0x509d # EQEmu 06/29/05 -OP_WorldClientReady=0x5e99 # EQEmu 06/29/05 (Guess - Doodman) -OP_WorldUnknown001=0x7510 # EQEmu 06/29/05 (New to 6/29) -OP_SendSystemStats=0x681b # anonymous system stats reporting -OP_WorldLogout=0x7186 -OP_ZoneUnavail=0x6d95 -OP_WorldLevelTooHigh=0x583b # world->client. Cancels zone in. -OP_CharInacessable=0x28aa # world->client. Cancels zone in. -#OP_InvalidLoginPassword=0x52A4 - -#Zone in opcodes -OP_ZoneEntry=0x2ec9 # ShowEQ 06/29/05 -OP_ZoneInUnknown=0x0000 -OP_AckPacket=0x7752 # ShowEQ 06/29/05 -OP_NewZone=0x7ac5 # ShowEQ 06/29/05 -OP_ReqClientSpawn=0x0e76 # ShowEQ 06/29/05 -OP_ZoneSpawns=0x5ee8 # ShowEQ 06/29/05 -OP_CharInventory=0x15ff # EQEmu 06/29/05 -OP_SetServerFilter=0x7709 # ShowEQ 06/29/05 -OP_LockoutTimerInfo=0x7c12 # EQEmu 06/29/05 -OP_SendZonepoints=0x775d # EQEmu 06/29/05 -OP_SpawnDoor=0x4c24 # ShowEQ 06/29/05 -OP_ReqNewZone=0x47c9 # ShowEQ 06/29/05 -OP_PlayerProfile=0x75df # ShowEQ 06/29/05 -OP_TimeOfDay=0x1580 # ShowEQ 06/29/05 -OP_SendAATable=0x367d # ShowEQ 06/29/05 -OP_ZoneServerReady=0x0000 #dosent exist in this version - - -OP_Logout=0x0701 # EQEmu 06/29/05 -OP_LogoutReply=0x48c2 # ShowEQ 06/29/05 (OP_Logout) -OP_PreLogoutReply=0x711e #0 len packet sent during logout/zoning -OP_LevelUpdate=0x6d44 # ShowEQ 06/29/05 -OP_MobUpdate=0x0000 -OP_Stamina=0x74ab # ShowEQ 06/29/05 - -#Petition Opcodes -OP_PetitionSearch=0x2aec #search term for petition -OP_PetitionSearchResults=0x2aec #(list of?) matches from search -OP_PetitionSearchText=0x0000 #text results of search -OP_Petition=0x251f #0x73cb -OP_PetitionUpdate=0x3813 #guess -OP_PetitionCheckout=0x0000 -OP_PetitionCheckIn=0x0000 -OP_PetitionQue=0x0000 -OP_PetitionUnCheckout=0x0000 -OP_PetitionDelete=0x0000 -OP_DeletePetition=0x0000 -OP_PetitionResolve=0x6ea9 #0x688f # ShowEQ 5/11/05 -OP_PDeletePetition=0x0000 -OP_PetitionBug=0x0000 -OP_PetitionRefresh=0x0000 -OP_PetitionCheckout2=0x0000 -OP_PetitionViewPetition=0x0000 - -#Guild Opcodes -OP_ZoneGuildList=0x68AC -OP_GuildMemberList=0x147d # ShowEQ 06/29/05 -OP_GuildMemberUpdate=0x4cc7 # ShowEQ 06/29/05 -OP_GuildMemberLevelUpdate=0x0000 #dosent exist in this version. -OP_GuildRemove=0x6cce # EQEmu - Doodman (found 8/26/05 -OP_GuildPeace=0x0e37 # EQEmu - Doodman (found 8/26/05 -OP_GuildWar=0x186d # EQEmu - Doodman (found 8/26/05 -OP_GuildLeader=0x1ef1 # EQEmu - Doodman (found 8/26/05) -OP_GuildDemote=0x1f46 # EQEmu - Doodman (found 8/26/05) -OP_GuildMOTD=0x21ed # ShowEQ 06/29/05 -OP_SetGuildMOTD=0x475a # EQEmu - Doodman (found 8/26/05) -OP_GetGuildsList=0x7fec # ShowEQ 06/29/05 -OP_GuildInvite=0x61d0 # EQEmu - Doodman (found 8/26/05) -OP_GuildPublicNote=0x17a2 # EQEmu - Doodman (found 8/26/05) -OP_GuildDelete=0x5a4d # EQEmu - Doodman (found 8/26/05 -OP_GuildInviteAccept=0x0179 # EQEmu - Doodman (found 8/26/05) -OP_GetGuildMOTD=0x3246 -OP_GetGuildMOTDReply=0x5B14 -OP_GuildManageBanker=0x3d1e -OP_GuildBank=0x0000 -#guild opcodes: 549F (clear guild?), 0x0695, 0x0AC0, 0x1864, 0x32cf, 0x4cc7, -# 0x461A, 0x6966, 0x7085 - - -#GM/guide opcodes -OP_GMServers=0x3387 #/servers -OP_GMBecomeNPC=0x7864 #/becomenpc -OP_GMZoneRequest=0x61ff #/zone -OP_GMSearchCorpse=0x7f3e #/searchcorpse -OP_GMHideMe=0x0581 #/hideme -OP_GMGoto=0x69c8 #/goto -OP_GMDelCorpse=0x727a #/delcorpse -OP_GMApproval=0x0000 -OP_GMToggle=0x5ce2 #/toggle -OP_GMZoneRequest2=0x0000 -OP_GMSummon=0x3383 #/summon -OP_GMEmoteZone=0x3905 #/emotezone -OP_GMFind=0x5e6a #/find -OP_GMKick=0x1cee #/kick -OP_GMNameChange=0x0000 - -OP_SafePoint=0x0000 -OP_Bind_Wound=0x4796 -OP_GMTraining=0x613d -OP_GMEndTraining=0x181c -OP_GMTrainSkill=0x3838 -OP_GMEndTrainingResponse=0x0a94 -OP_Animation=0x0b71 # EQEmu 06/29/05 -OP_Taunt=0x5306 -OP_Stun=0x7DCF -OP_MoneyUpdate=0x425c -OP_SendAAStats=0x5966 # EQEmu 06/29/05 -OP_SendExpZonein=0x0587 # ShowEQ 06/29/05 -OP_RespondAA=0x35e8 -OP_UpdateAA=0x0000 -OP_IncreaseStats=0x0000 -OP_ReadBook=0x1496 -OP_CombatAbility=0x5e55 -OP_Dye=0x773f # ShowEQ 06/29/05 -OP_Consume=0x7a83 # ShowEQ 06/29/05 -OP_Begging=0x2c81 # ShowEQ 06/29/05 -OP_InspectRequest=0x2403 -OP_Action2=0x0000 # ShowEQ 06/29/05 -OP_BeginCast=0x3990 # ShowEQ 06/29/05 -OP_WhoAllRequest=0x5cdd # ShowEQ 06/29/05 -OP_ColoredText=0x4bc6 # ShowEQ 06/29/05 -OP_Consent=0x1081 # ShowEQ 06/29/05 -OP_LFGCommand=0x022f # ShowEQ 06/29/05 -OP_LFGGetMatchesRequest=0x6f82 # ShowEQ 06/29/05 -OP_LFGAppearance=0x024d -OP_LFGResponse=0x1fe1 # ShowEQ 5/11/05 -OP_LFGGetMatchesResponse=0x06c5 # ShowEQ 06/29/05 -OP_LootItem=0x2acf # ShowEQ 06/29/05 -OP_Bug=0x3eba # ShowEQ 06/29/05 -OP_BoardBoat=0x67c9 # ShowEQ 06/29/05 -OP_Save=0x6d9b # ShowEQ 06/29/05 -OP_Camp=0x2844 # ShowEQ 06/29/05 -OP_EndLootRequest=0x7fe4 # ShowEQ 06/29/05 -OP_LoadSpellSet=0x403e # ShowEQ 06/29/05 -OP_AutoAttack=0x6c47 # ShowEQ 06/29/05 -OP_AutoFire=0x6c53 -OP_Consider=0x2717 # ShowEQ 06/29/05 -OP_Emote=0x55bc # ShowEQ 06/29/05 -OP_PetCommands=0x58b2 # ShowEQ 06/29/05 -OP_PetBuffWindow=0x4e31 -OP_SpawnAppearance=0x18b7 # ShowEQ 06/29/05 -OP_DeleteSpawn=0x1a64 # ShowEQ 06/29/05 -OP_FormattedMessage=0x42cd # ShowEQ 06/29/05 -OP_WhoAllResponse=0x6686 # ShowEQ 06/29/05 -OP_AutoAttack2=0x0fa6 # ShowEQ 06/29/05 -OP_SetRunMode=0x0342 # ShowEQ 06/29/05 -OP_SimpleMessage=0x5a48 # ShowEQ 06/29/05 -OP_SaveOnZoneReq=0x2baf # ShowEQ 06/29/05 -OP_MoveDoor=0x0ef7 # ShowEQ 06/29/05 -OP_SenseHeading=0x5666 # ShowEQ 06/29/05 -OP_Buff=0x33dc # ShowEQ 06/29/05 -OP_LootComplete=0x20b2 # ShowEQ 06/29/05 -OP_EnvDamage=0x0990 -OP_Split=0x6a53 # ShowEQ 06/29/05 -OP_Surname=0x48fe # ShowEQ 06/29/05 -OP_ClearSurname=0x0000 -OP_MoveItem=0x7657 # ShowEQ 06/29/05 -OP_FaceChange=0x763b # ShowEQ 06/29/05 -OP_ItemPacket=0x3397 # ShowEQ 06/29/05 -OP_ItemLinkResponse=0x1d43 # ShowEQ 06/29/05 -OP_ClientReady=0x5e20 # ShowEQ 06/29/05 -OP_ZoneChange=0x60ef # ShowEQ 06/29/05 -OP_MemorizeSpell=0x05ac # ShowEQ 06/29/05 -OP_ItemLinkClick=0x53e5 # ShowEQ 06/29/05 -OP_SwapSpell=0x36b2 # ShowEQ 06/29/05 -OP_Forage=0x7c32 # ShowEQ 06/29/05 -OP_ConsentResponse=0x6380 # ShowEQ 06/29/05 -OP_BazaarSearch=0x524e # ShowEQ 06/29/05 -OP_NewSpawn=0x4f11 # ShowEQ 06/29/05 -OP_WearChange=0x601d # ShowEQ 06/29/05 -OP_Action=0x4513 # ShowEQ 06/29/05 -OP_SpecialMesg=0x5ef7 # ShowEQ 06/29/05 -OP_Bazaar=0x0000 -OP_LeaveBoat=0x7187 # ShowEQ 06/29/05 -OP_Weather=0x65ca # ShowEQ 06/29/05 -OP_LFPGetMatchesRequest=0x45d0 # ShowEQ 06/29/05 -OP_Illusion=0x7441 # ShowEQ 06/29/05 -OP_TargetMouse=0x2274 # ShowEQ 06/29/05 -OP_InspectAnswer=0x2dd6 # ShowEQ 06/29/05 -OP_GMKill=0x692c # ShowEQ 06/29/05 -OP_MoneyOnCorpse=0x2fca # ShowEQ 06/29/05 -OP_ClickDoor=0x700d # ShowEQ 06/29/05 -OP_LootRequest=0x2316 # ShowEQ 06/29/05 -OP_YellForHelp=0x2e20 # ShowEQ 06/29/05 -OP_ManaChange=0x0b2d # ShowEQ 06/29/05 -OP_ConsentDeny=0x4e8c # ShowEQ 06/29/05 -OP_LFPCommand=0x35a6 # ShowEQ 06/29/05 -OP_RandomReply=0x6cd5 # ShowEQ 06/29/05 -OP_DenyResponse=0x7c66 # ShowEQ 06/29/05 -OP_ConsiderCorpse=0x673c # ShowEQ 06/29/05 -OP_CorpseDrag=0x50c0 # -OP_CorpseDrop=0x7c7c # -OP_ConfirmDelete=0x28f2 # ShowEQ 06/29/05 -OP_MobHealth=0x3d2d # ShowEQ 06/29/05 -OP_SkillUpdate=0x6a93 # ShowEQ 06/29/05 -OP_RandomReq=0x21e0 # ShowEQ 06/29/05 -OP_CastSpell=0x4839 # ShowEQ 06/29/05 -OP_ClientUpdate=0x14cb # ShowEQ 06/29/05 -OP_MobUpdate=0x0000 #not used anymore, here for backwards compat -OP_Report=0x0375 # ShowEQ 06/29/05 -OP_GroundSpawn=0x736b # ShowEQ 06/29/05 -OP_TargetCommand=0x6563 #0x0dfe # ShowEQ 06/29/05 -OP_TargetHoTT=0x3ef6 -OP_LFPGetMatchesResponse=0x63fe # ShowEQ 06/29/05 -OP_Jump=0x4dbc # ShowEQ 06/29/05 -OP_ExpUpdate=0x5ecd # ShowEQ 06/29/05 -OP_AAAction=0x3af4 # ShowEQ 06/29/05 -OP_Death=0x5188 # ShowEQ 06/29/05 -OP_BecomeCorpse=0x128c -OP_GMLastName=0x0c81 # ShowEQ 06/29/05 -OP_InitialMobHealth=0x2ecc # ShowEQ 06/29/05 -OP_Mend=0x14ef # ShowEQ 06/29/05 -OP_MendHPUpdate=0x1ffa # ShowEQ 5/11/05 -OP_Feedback=0x224d # ShowEQ 06/29/05 -OP_TGB=0x5e51 # ShowEQ 06/29/05 -OP_InterruptCast=0x0db3 -OP_Damage=0x1848 # ShowEQ 06/29/05 (OP_Action2) -OP_ChannelMessage=0x1004 # ShowEQ 06/29/05 (OP_CommonMessage) -OP_LevelAppearance=0x358e -OP_MultiLineMsg=0x0000 -OP_Charm=0x10a1 -OP_DeleteSpell=0x3fe6 -OP_ApproveZone=0x0000 -OP_Assist=0x5D02 -OP_AugmentItem=0x539b -OP_BazaarInspect=0x0000 -OP_AAExpUpdate=0x6dd8 # ShowEQ 06/29/05 -OP_ClientError=0x0000 -OP_DeleteItem=0x1c4a -OP_DeleteCharge=0x0841 -OP_ControlBoat=0x0000 -OP_DumpName=0x0000 -OP_FeignDeath=0x2ad8 -OP_Fishing=0x0b36 -OP_Heartbeat=0x0000 -OP_InstillDoubt=0x389e -OP_ItemName=0x0000 -OP_LDoNButton=0x0000 -OP_LDoNOpen=0x083b -OP_MoveCoin=0x1dd9 -OP_ReloadUI=0x0000 -OP_ZonePlayerToBind=0x385e # FNW Discovered on Feb 9, 2007 -OP_Translocate=0x78c1 -OP_Sacrifice=0x5f62 -OP_ApplyPoison=0x4298 - -#bazaar trader stuff stuff: -#become and buy from -#Server->Client: [ Opcode: OP_Unknown (0x2403) Size: 8 ] -# 0: 46 01 00 00 39 01 00 00 | F...9... -OP_TraderDelItem=0x0da9 -OP_BecomeTrader=0x66f9 -OP_TraderShop=0x19d8 -OP_TraderItemUpdate=0x0000 -OP_Trader=0x0681 -OP_ShopItem=0x0000 -OP_TraderBuy=0x0f8e # ShowEQ 06/29/05 -OP_Barter=0x7460 - -#pc/npc trading -OP_TradeRequest=0x372f # ShowEQ 06/29/05 -OP_TradeAcceptClick=0x0065 # ShowEQ 06/29/05 -OP_TradeRequestAck=0x4048 # ShowEQ 06/29/05 -OP_TradeCoins=0x34c1 -OP_FinishTrade=0x6014 -OP_CancelTrade=0x2dc1 # ShowEQ 06/29/05 -OP_TradeMoneyUpdate=0x3e63 #not sure - -#merchant crap -OP_ShopPlayerSell=0x0e13 # ShowEQ 06/29/05 -OP_ShopEnd=0x7e03 # ShowEQ 06/29/05 -OP_ShopEndConfirm=0x0000 -OP_ShopPlayerBuy=0x221e -OP_ShopRequest=0x3c4b # ShowEQ 06/29/05 -OP_ShopDelItem=0x0000 #0x0da9 maybe, 16 bytes though - -#tradeskill stuff: -OP_ClickObject=0x0f47 # ShowEQ 06/29/05 -OP_ClickObjectAction=0x6937 # EQEMu 06/29/05 -OP_RecipeDetails=0x0353 # EQEMu 06/29/05 -OP_RecipesFavorite=0x23f0 -OP_RecipesSearch=0x31f8 # EQEmu 06/29/05 -OP_RecipeReply=0x4ea2 # EQEmu 06/29/05 -OP_RecipeAutoCombine=0x7822 -OP_TradeSkillCombine=0x0b40 # ShowEQ 06/29/05 - -OP_RequestDuel=0x28e1 -OP_DuelResponse=0x2e78 -OP_DuelResponse2=0x3bad #when accepted - -OP_RezzComplete=0x60fa -OP_RezzRequest=0x417a -OP_RezzAnswer=0x6219 -OP_SafeFallSuccess=0x5309 -OP_Shielding=0x0000 -OP_TargetReject=0x0000 -OP_TestBuff=0x0000 -OP_Track=0x5205 # ShowEQ 06/29/05 -OP_TrackTarget=0x71ae -OP_TrackUnknown=0x74e1 #size 0 right after OP_Track - -#Tribute Packets: -OP_OpenGuildTributeMaster=0x60b6 #open guild tribute master window -OP_OpenTributeMaster=0x512e #open tribute master window -OP_OpenTributeReply=0x0000 #reply to open request -OP_SelectTribute=0x625d #clicking on a tribute, and text reply -OP_TributeItem=0x6f6c #donating an item -OP_TributeMoney=0x27b3 #donating money -OP_TributeNPC=0x0000 #seems to be missing now -OP_TributeToggle=0x2688 #activating/deactivating tribute -OP_TributeTimer=0x4665 #a 4 byte tier update, 10 minutes for seconds -OP_TributePointUpdate=0x6463 #16 byte point packet -OP_TributeUpdate=0x5639 # ShowEQ 06/29/05 -OP_GuildTributeInfo=0x5e3d # EQEmu 06/29/05 -OP_TributeInfo=0x152d # EQEmu 06/29/05 -OP_SendGuildTributes=0x5e3a # request packet, 4 bytes -OP_SendTributes=0x067a # request packet, 4 bytes, migth be backwards -OP_CloseTributeMaster=0x7f25 #sent by client when they close window - -#Adventure packets: -OP_LeaveAdventure=0x0c0d -OP_AdventureFinish=0x3906 -OP_AdventureInfoRequest=0x2aaf #right click adventure recruiter -OP_AdventureInfo=0x1db5 #text reply to right click -OP_AdventureRequest=0x43fd -OP_AdventureDetails=0x3f26 -OP_AdventureData=0x0677 -OP_AdventureUpdate=0x64ac -OP_AdventureMerchantRequest=0x0950 -OP_AdventureMerchantResponse=0x4416 -OP_AdventureMerchantPurchase=0x413d -OP_AdventureMerchantSell=0x0097 -OP_AdventurePointsUpdate=0x420a #not sure, followed purchase -OP_AdventureStatsRequest=0x5fc7 -OP_AdventureStatsReply=0x56cd -OP_AdventureLeaderboardRequest=0x230a -OP_AdventureLeaderboardReply=0x0d0f -# request stats: 0x5fc7, reply 0x56cd -# request leaderboard: 0x230a, reply 0x0d0f - -#Group Opcodes -OP_GroupDisband=0x4033 # ShowEQ 06/29/05 -OP_GroupInvite=0x3853 # ShowEQ 06/29/05 -OP_GroupFollow=0x1b48 # ShowEQ 06/29/05 -OP_GroupUpdate=0x66ba # ShowEQ 06/29/05 -OP_GroupAcknowledge=0x0797 -OP_GroupCancelInvite=0x42c9 # ShowEQ 06/29/05 -OP_GroupDelete=0x0000 -OP_GroupFollow2=0x0000 #used with GroupInvite2 -OP_GroupInvite2=0x1f27 #this is sometimes sent instead of OP_GroupInvite -OP_CancelInvite=0x0000 - -OP_RaidJoin=0x0000 # ShowEQ 06/29/05 -OP_RaidInvite=0x1f21 # ShowEQ 06/29/05 -OP_RaidUpdate=0x1974 # EQEmu 06/29/05 - - -OP_ZoneComplete=0x0000 -OP_ItemLinkText=0x0000 -OP_ClearObject=0x8258 -OP_DisciplineUpdate=0x7180 -OP_DisciplineTimer=0x53df -OP_LocInfo=0x0000 -OP_FindPersonRequest=0x3c41 # ShowEQ 06/29/05 -OP_FindPersonReply=0x5711 -OP_ForceFindPerson=0x0000 -OP_LoginComplete=0x0000 -OP_Sound=0x4a1d -#OP_Zone_MissingName01=0x0000 #remove on recompile -OP_MobRename=0x3230 -OP_BankerChange=0x6a5b - -#Rogue packets -OP_SenseTraps=0x24ab # ShowEQ 06/29/05 -OP_PickPocket=0x4a2a -OP_DisarmTraps=0x0000 -OP_Disarm=0x17d9 -OP_Hide=0x6f64 # ShowEQ 06/29/05 -OP_Sneak=0x4312 # ShowEQ 06/29/05 - -#Task packets -#task complete related: 0x54eb (24 bytes), 0x4c8c (8 bytes), 0x6a1d (4 bytes) -OP_TaskActivityComplete=0x54eb -OP_CompletedTasks=0x53c4 # ShowEQ 06/29/05 -OP_TaskDescription=0x682d # ShowEQ 06/29/05 -OP_TaskActivity=0x3ba8 # ShowEQ 06/29/05 -OP_TaskMemberList=0x09b6 #not sure -OP_OpenNewTasksWindow=0x5e7c #combined with OP_AvaliableTask I think -OP_AvaliableTask=0x0000 -OP_AcceptNewTask=0x207f -OP_TaskHistoryRequest=0x3274 -OP_TaskHistoryReply=0x009c -OP_CancelTask=0x4c8c -OP_DeclineAllTasks=0x207f #not sure, 12 bytes - - -OP_RequestClientZoneChange=0x1235 -OP_PurchaseLeadershipAA=0x07f1 -OP_UpdateLeadershipAA=0x3eec -OP_LeadershipExpUpdate=0x7416 -OP_LeadershipExpToggle=0x17bf -OP_GroupUpdateLeaderAA=0x4c3f -OP_MarkNPC=0x5b37 -OP_ClearNPCMarks=0x1794 -OP_DoGroupLeadershipAbility=0x4ffe -OP_DelegateAbility=0x56eb - -#The following 4 Opcodes are for SoF only: -OP_FinishWindow=0x0000 #Trevius 03/15/09 -OP_FinishWindow2=0x0000 #Trevius 03/15/09 -OP_ItemVerifyRequest=0x0000 #Trevius 03/15/09 -OP_ItemVerifyReply=0x0000 #Trevius 03/15/09 - -#discovered opcodes not yet used: -OP_CrashDump=0x6d5d -OP_PlayMP3=0x0000 -OP_FriendsWho=0x41db -OP_MoveLogRequest=0x78e8 #gone I think -OP_MoveLogDisregard=0x0000 #gone I think -OP_ReclaimCrystals=0x12fd -OP_CrystalCountUpdate=0x0000 -OP_DynamicWall=0x0000 -OP_CustomTitles=0x2a28 # ShowEQ 06/29/05 -OP_RequestTitles=0x5eba # EQEmu 06/29/05 -OP_SendTitleList=0x3e89 # EQEmu 06/29/05 -OP_SetTitle=0x1f22 # EQEmu 06/29/05 -OP_SetTitleReply=0x5eab # EQEmu 06/29/05 -OP_Bandolier=0x6f0c -OP_PotionBelt=0x0719 -OP_OpenDiscordMerchant=0x0000 #8 bytes -OP_DiscordMerchantInventory=0x0000 #long item packet -OP_GiveMoney=0x56d4 #16 bytes, pp, gp, sp, cp. -OP_OnLevelMessage=0x1dde -OP_PopupResponse=0x3816 -OP_RequestKnowledgeBase=0x7584 -OP_KnowledgeBase=0x4a52 -OP_PlayerUnderWorld=0x46d9 -OP_PVPStats=0x5cc0 -OP_PVPLeaderBoardRequest=0x61d2 -OP_PVPLeaderBoardReply=0x1a59 -OP_PVPLeaderBoardDetailsRequest=0x06a2 -OP_PVPLeaderBoardDetailsReply=0x246a -OP_WeaponEquip1=0x6c5e -OP_WeaponEquip2=0x63da -OP_WeaponUnequip2=0x381d -OP_VoiceMacroIn=0x2866 -OP_VoiceMacroOut=0x2ec6 - -#named unknowns, to make looking for real unknown easier -OP_AnnoyingZoneUnknown=0x0000 # EQEmu 06/29/05 -OP_Some6ByteHPUpdate=0x0000 #seems to happen when you target group members -OP_SomeItemPacketMaybe=0x497c # EQEmu 06/29/05 -OP_QueryResponseThing=0x6379 -OP_FloatListThing=0x7510 # EQEmu 06/29/05 - -#Login opcodes -OP_SessionReady=0x0001 -OP_Login=0x0002 -OP_ServerListRequest=0x0004 -OP_PlayEverquestRequest=0x000d -OP_PlayEverquestResponse=0x0021 -OP_ChatMessage=0x0016 -OP_LoginAccepted=0x0017 -OP_ServerListResponse=0x0018 -OP_Poll=0x0029 -OP_EnterChat=0x000f -OP_PollResponse=0x0011 - -#raw opcodes -OP_RAWSessionRequest=0x0000 -OP_RAWSessionResponse=0x0000 -OP_RAWCombined=0x0000 -OP_RAWSessionDisconnect=0x0000 -OP_RAWKeepAlive=0x0000 -OP_RAWSessionStatRequest=0x0000 -OP_RAWSessionStatResponse=0x0000 -OP_RAWPacket=0x0000 -OP_RAWFragment=0x0000 -OP_RAWOutOfOrderAck=0x0000 -OP_RAWAck=0x0000 -OP_RAWAppCombined=0x0000 -OP_RAWOutOfSession=0x0000 - -#mail opcodes -OP_Command=0x0000 -OP_MailboxHeader=0x0000 -OP_MailHeader=0x0000 -OP_MailBody=0x0000 -OP_NewMail=0x0000 -OP_SentConfirm=0x0000 - - -#we need to document the differences between these packets to make identifying them easier -OP_MobHealth=0x3d2d # ShowEQ 06/29/05 -OP_HPUpdate=0x217b # ShowEQ 06/29/05 -OP_Some3ByteHPUpdate=0x0000 #initial HP update for mobs -OP_InitialHPUpdate=0x7ac2 # ShowEQ 06/29/05 - -#remove these -#junk -OP_0x0193=0x0000 -OP_0x0347=0x0000 -OP_ConsumeAmmo=0x0000 -OP_EmoteAnim=0x0000 -OP_Deny=0x0000 -OP_SetDataRate=0x0000 - diff --git a/world/clientlist.cpp b/world/clientlist.cpp index a18a9cafc..d0b90a266 100644 --- a/world/clientlist.cpp +++ b/world/clientlist.cpp @@ -1296,7 +1296,6 @@ void ClientList::GetClients(const char *zone_name, std::vector(EQClientUnknown)), - luabind::value("62", static_cast(EQClient62)), luabind::value("Titanium", static_cast(EQClientTitanium)), luabind::value("SoF", static_cast(EQClientSoF)), luabind::value("SoD", static_cast(EQClientSoD)), diff --git a/zone/tasks.cpp b/zone/tasks.cpp index f8f3ba9b2..1e73e3150 100644 --- a/zone/tasks.cpp +++ b/zone/tasks.cpp @@ -2773,13 +2773,6 @@ void TaskManager::SendActiveTaskDescription(Client *c, int TaskID, int SequenceN if(strlen(Tasks[TaskID]->Reward) != 0) { switch(c->GetClientVersion()) { - - case EQClient62: - { - MakeAnyLenString(&RewardTmp, "%c%07i-00001-00001-00001-00001-000013E0ABA6B%s%c", - 0x12, ItemID, Tasks[TaskID]->Reward,0x12); - break; - } case EQClientTitanium: { MakeAnyLenString(&RewardTmp, "%c%06X000000000000000000000000000000014505DC2%s%c", @@ -2807,13 +2800,6 @@ void TaskManager::SendActiveTaskDescription(Client *c, int TaskID, int SequenceN if(Item) { switch(c->GetClientVersion()) { - - case EQClient62: - { - MakeAnyLenString(&RewardTmp, "%c%07i-00001-00001-00001-00001-000013E0ABA6B%s%c", - 0x12, ItemID, Item->Name,0x12); - break; - } case EQClientTitanium: { MakeAnyLenString(&RewardTmp, "%c%06X000000000000000000000000000000014505DC2%s%c",