mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-12 17:51:28 +00:00
Merge git://github.com/EQEmu/Server into Development
Conflicts: changelog.txt
This commit is contained in:
commit
b9b92762b5
@ -1,5 +1,8 @@
|
|||||||
EQEMu Changelog (Started on Sept 24, 2003 15:50)
|
EQEMu Changelog (Started on Sept 24, 2003 15:50)
|
||||||
-------------------------------------------------------
|
-------------------------------------------------------
|
||||||
|
== 09/24/2014 ==
|
||||||
|
Uleat: Re-ordered server opcodes and handlers to give them some predictability of location (I need this for the inventory re-enumeration.)
|
||||||
|
|
||||||
== 09/23/2014 ==
|
== 09/23/2014 ==
|
||||||
Kayen: Spell recourse effects will now be applied AFTER the base spells effects have been applied (consistent with live).
|
Kayen: Spell recourse effects will now be applied AFTER the base spells effects have been applied (consistent with live).
|
||||||
Kayen: SE_ApplySpell and SE_TriggerSpell will now be applied based on which effect slot they are used in (instead of always before all spell effects are checked).
|
Kayen: SE_ApplySpell and SE_TriggerSpell will now be applied based on which effect slot they are used in (instead of always before all spell effects are checked).
|
||||||
|
|||||||
43
common/data_verification.h
Normal file
43
common/data_verification.h
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
/* 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 COMMON_DATA_VERIFICATION_H
|
||||||
|
#define COMMON_DATA_VERIFICATION_H
|
||||||
|
|
||||||
|
#include <algorithm>
|
||||||
|
|
||||||
|
namespace EQEmu
|
||||||
|
{
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
T Clamp(const T& value, const T& lower, const T& upper) {
|
||||||
|
return std::max(lower, std::min(value, upper));
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
T ClampLower(const T& value, const T& lower) {
|
||||||
|
return std::max(lower, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
T ClampUpper(const T& value, const T& upper) {
|
||||||
|
return std::min(value, upper);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
@ -924,9 +924,9 @@ bool Database::CheckDatabaseConversions() {
|
|||||||
int runconvert = 0;
|
int runconvert = 0;
|
||||||
|
|
||||||
/* Check For Legacy Storage Method */
|
/* Check For Legacy Storage Method */
|
||||||
std::string rquery = StringFormat("SELECT `profile` FROM `character_` LIMIT 1");
|
std::string rquery = StringFormat("SHOW TABLES LIKE 'character_'");
|
||||||
auto results = QueryDatabase(rquery);
|
auto results = QueryDatabase(rquery);
|
||||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
if (results.RowCount() == 1){
|
||||||
runconvert = 1;
|
runconvert = 1;
|
||||||
printf("\n\n::: Legacy Character Data Binary Blob Storage Detected... \n");
|
printf("\n\n::: Legacy Character Data Binary Blob Storage Detected... \n");
|
||||||
printf("----------------------------------------------------------\n\n");
|
printf("----------------------------------------------------------\n\n");
|
||||||
@ -1857,7 +1857,7 @@ bool Database::CheckDatabaseConversions() {
|
|||||||
/* Run Tribute Convert */
|
/* Run Tribute Convert */
|
||||||
first_entry = 0; rquery = "";
|
first_entry = 0; rquery = "";
|
||||||
for (i = 0; i < EmuConstants::TRIBUTE_SIZE; i++){
|
for (i = 0; i < EmuConstants::TRIBUTE_SIZE; i++){
|
||||||
if (pp->tributes[i].tribute > 0){
|
if (pp->tributes[i].tribute > 0 && pp->tributes[i].tribute != 4294967295){
|
||||||
if (first_entry != 1){
|
if (first_entry != 1){
|
||||||
rquery = StringFormat("REPLACE INTO `character_tribute` (id, tier, tribute) VALUES (%u, %u, %u)", character_id, pp->tributes[i].tier, pp->tributes[i].tribute);
|
rquery = StringFormat("REPLACE INTO `character_tribute` (id, tier, tribute) VALUES (%u, %u, %u)", character_id, pp->tributes[i].tier, pp->tributes[i].tribute);
|
||||||
first_entry = 1;
|
first_entry = 1;
|
||||||
@ -2467,7 +2467,7 @@ bool Database::MoveCharacterToZone(const char* charname, const char* zonename, u
|
|||||||
if(zonename == nullptr || strlen(zonename) == 0)
|
if(zonename == nullptr || strlen(zonename) == 0)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
std::string query = StringFormat("UPDATE `character_data` SET `zoneid` = %i, `x` = -1, `y` = -1, `z` = -1 WHERE `name` = '%s'", zoneid, charname);
|
std::string query = StringFormat("UPDATE `character_data` SET `zone_id` = %i, `x` = -1, `y` = -1, `z` = -1 WHERE `name` = '%s'", zoneid, charname);
|
||||||
auto results = QueryDatabase(query);
|
auto results = QueryDatabase(query);
|
||||||
|
|
||||||
if (!results.Success()) {
|
if (!results.Success()) {
|
||||||
@ -2486,7 +2486,7 @@ bool Database::MoveCharacterToZone(const char* charname, const char* zonename) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool Database::MoveCharacterToZone(uint32 iCharID, const char* iZonename) {
|
bool Database::MoveCharacterToZone(uint32 iCharID, const char* iZonename) {
|
||||||
std::string query = StringFormat("UPDATE `character_data` SET `zoneid` = %i, `x` = -1, `y` = -1, `z` = -1 WHERE `id` = %i", iZonename, GetZoneID(iZonename), iCharID);
|
std::string query = StringFormat("UPDATE `character_data` SET `zone_id` = %i, `x` = -1, `y` = -1, `z` = -1 WHERE `id` = %i", iZonename, GetZoneID(iZonename), iCharID);
|
||||||
auto results = QueryDatabase(query);
|
auto results = QueryDatabase(query);
|
||||||
|
|
||||||
if (!results.Success()) {
|
if (!results.Success()) {
|
||||||
|
|||||||
1006
common/emu_oplist.h
1006
common/emu_oplist.h
File diff suppressed because it is too large
Load Diff
@ -97,16 +97,15 @@ protected:
|
|||||||
};
|
};
|
||||||
|
|
||||||
class EQApplicationPacket : public EQPacket {
|
class EQApplicationPacket : public EQPacket {
|
||||||
// friend class EQProtocolPacket;
|
|
||||||
friend class EQStream;
|
friend class EQStream;
|
||||||
public:
|
public:
|
||||||
EQApplicationPacket() : EQPacket(OP_Unknown,nullptr,0)
|
EQApplicationPacket() : EQPacket(OP_Unknown, nullptr, 0), opcode_bypass(0)
|
||||||
{ app_opcode_size = GetExecutablePlatform() == ExePlatformUCS ? 1 : 2; }
|
{ app_opcode_size = GetExecutablePlatform() == ExePlatformUCS ? 1 : 2; }
|
||||||
EQApplicationPacket(const EmuOpcode op) : EQPacket(op,nullptr,0)
|
EQApplicationPacket(const EmuOpcode op) : EQPacket(op, nullptr, 0), opcode_bypass(0)
|
||||||
{ app_opcode_size = GetExecutablePlatform() == ExePlatformUCS ? 1 : 2; }
|
{ app_opcode_size = GetExecutablePlatform() == ExePlatformUCS ? 1 : 2; }
|
||||||
EQApplicationPacket(const EmuOpcode op, const uint32 len) : EQPacket(op,nullptr,len)
|
EQApplicationPacket(const EmuOpcode op, const uint32 len) : EQPacket(op, nullptr, len), opcode_bypass(0)
|
||||||
{ app_opcode_size = GetExecutablePlatform() == ExePlatformUCS ? 1 : 2; }
|
{ app_opcode_size = GetExecutablePlatform() == ExePlatformUCS ? 1 : 2; }
|
||||||
EQApplicationPacket(const EmuOpcode op, const unsigned char *buf, const uint32 len) : EQPacket(op,buf,len)
|
EQApplicationPacket(const EmuOpcode op, const unsigned char *buf, const uint32 len) : EQPacket(op, buf, len), opcode_bypass(0)
|
||||||
{ app_opcode_size = GetExecutablePlatform() == ExePlatformUCS ? 1 : 2; }
|
{ app_opcode_size = GetExecutablePlatform() == ExePlatformUCS ? 1 : 2; }
|
||||||
bool combine(const EQApplicationPacket *rhs);
|
bool combine(const EQApplicationPacket *rhs);
|
||||||
uint32 serialize (uint16 opcode, unsigned char *dest) const;
|
uint32 serialize (uint16 opcode, unsigned char *dest) const;
|
||||||
@ -119,12 +118,16 @@ public:
|
|||||||
virtual void DumpRawHeader(uint16 seq=0xffff, FILE *to = stdout) const;
|
virtual void DumpRawHeader(uint16 seq=0xffff, FILE *to = stdout) const;
|
||||||
virtual void DumpRawHeaderNoTime(uint16 seq=0xffff, FILE *to = stdout) const;
|
virtual void DumpRawHeaderNoTime(uint16 seq=0xffff, FILE *to = stdout) const;
|
||||||
|
|
||||||
|
uint16 GetOpcodeBypass() { return opcode_bypass; }
|
||||||
|
void SetOpcodeBypass(uint16 v) { opcode_bypass = v; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
uint8 app_opcode_size;
|
uint8 app_opcode_size;
|
||||||
|
uint16 opcode_bypass;
|
||||||
private:
|
private:
|
||||||
|
|
||||||
EQApplicationPacket(const EQApplicationPacket &p) : EQPacket(p.emu_opcode, p.pBuffer, p.size) { app_opcode_size = p.app_opcode_size; }
|
EQApplicationPacket(const EQApplicationPacket &p) : EQPacket(p.emu_opcode, p.pBuffer, p.size), opcode_bypass(p.opcode_bypass) { app_opcode_size = p.app_opcode_size; }
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -4067,7 +4067,7 @@ struct GroupInvite_Struct {
|
|||||||
// uint8 unknown128[65];
|
// uint8 unknown128[65];
|
||||||
};
|
};
|
||||||
|
|
||||||
struct BuffFadeMsg_Struct {
|
struct ColoredText_Struct {
|
||||||
uint32 color;
|
uint32 color;
|
||||||
char msg[1];
|
char msg[1];
|
||||||
};
|
};
|
||||||
|
|||||||
@ -532,9 +532,12 @@ void EQStream::FastQueuePacket(EQApplicationPacket **p, bool ack_req)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint16 opcode = (*OpMgr)->EmuToEQ(pack->emu_opcode);
|
uint16 opcode = 0;
|
||||||
|
if(pack->GetOpcodeBypass() != 0) {
|
||||||
//_log(NET__APP_TRACE, "Queueing %sacked packet with opcode 0x%x (%s) and length %d", ack_req?"":"non-", opcode, OpcodeManager::EmuToName(pack->emu_opcode), pack->size);
|
opcode = pack->GetOpcodeBypass();
|
||||||
|
} else {
|
||||||
|
opcode = (*OpMgr)->EmuToEQ(pack->emu_opcode);
|
||||||
|
}
|
||||||
|
|
||||||
if (!ack_req) {
|
if (!ack_req) {
|
||||||
NonSequencedPush(new EQProtocolPacket(opcode, pack->pBuffer, pack->size));
|
NonSequencedPush(new EQProtocolPacket(opcode, pack->pBuffer, pack->size));
|
||||||
@ -877,43 +880,6 @@ sockaddr_in address;
|
|||||||
AddBytesSent(length);
|
AddBytesSent(length);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
commented out since im not sure theres a lot of merit in it.
|
|
||||||
Really it was bitterness towards allocating a 2k buffer on the stack each call.
|
|
||||||
Im sure the thought was client side, but even then, they will
|
|
||||||
likely need a whole thread to call this method, in which case, they should
|
|
||||||
supply the buffer so we dont re-allocate it each time.
|
|
||||||
EQProtocolPacket *EQStream::Read(int eq_fd, sockaddr_in *from)
|
|
||||||
{
|
|
||||||
int socklen;
|
|
||||||
int length=0;
|
|
||||||
EQProtocolPacket *p=nullptr;
|
|
||||||
char temp[15];
|
|
||||||
|
|
||||||
socklen=sizeof(sockaddr);
|
|
||||||
#ifdef _WINDOWS
|
|
||||||
length=recvfrom(eq_fd, (char *)_tempBuffer, 2048, 0, (struct sockaddr*)from, (int *)&socklen);
|
|
||||||
#else
|
|
||||||
length=recvfrom(eq_fd, _tempBuffer, 2048, 0, (struct sockaddr*)from, (socklen_t *)&socklen);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (length>=2) {
|
|
||||||
p=new EQProtocolPacket(_tempBuffer[1],&_tempBuffer[2],length-2);
|
|
||||||
|
|
||||||
uint32 ip=from->sin_addr.s_addr;
|
|
||||||
sprintf(temp,"%d.%d.%d.%d:%d",
|
|
||||||
*(unsigned char *)&ip,
|
|
||||||
*((unsigned char *)&ip+1),
|
|
||||||
*((unsigned char *)&ip+2),
|
|
||||||
*((unsigned char *)&ip+3),
|
|
||||||
ntohs(from->sin_port));
|
|
||||||
//std::cout << timestamp() << "Data from: " << temp << " OpCode 0x" << std::hex << std::setw(2) << std::setfill('0') << (int)p->opcode << std::dec << std::endl;
|
|
||||||
//dump_message(p->pBuffer,p->size,timestamp());
|
|
||||||
|
|
||||||
}
|
|
||||||
return p;
|
|
||||||
}*/
|
|
||||||
|
|
||||||
void EQStream::SendSessionResponse()
|
void EQStream::SendSessionResponse()
|
||||||
{
|
{
|
||||||
EQProtocolPacket *out=new EQProtocolPacket(OP_SessionResponse,nullptr,sizeof(SessionResponse));
|
EQProtocolPacket *out=new EQProtocolPacket(OP_SessionResponse,nullptr,sizeof(SessionResponse));
|
||||||
@ -1101,14 +1067,6 @@ EQProtocolPacket *p=nullptr;
|
|||||||
SequencedQueue.clear();
|
SequencedQueue.clear();
|
||||||
}
|
}
|
||||||
MOutboundQueue.unlock();
|
MOutboundQueue.unlock();
|
||||||
|
|
||||||
/*if(uint16(SequencedBase + SequencedQueue.size()) != NextOutSeq) {
|
|
||||||
_log(NET__ERROR, _L "Out-bound Invalid Sequenced queue: BS %d + SQ %d != NOS %d" __L, SequencedBase, SequencedQueue.size(), NextOutSeq);
|
|
||||||
}
|
|
||||||
if(NextSequencedSend > SequencedQueue.size()) {
|
|
||||||
_log(NET__ERROR, _L "Out-bound Next Send Sequence is beyond the end of the queue NSS %d > SQ %d" __L, NextSequencedSend, SequencedQueue.size());
|
|
||||||
}*/
|
|
||||||
//NOTE: we prolly want to reset counters if we are stupposed to do anything after this.
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void EQStream::PacketQueueClear()
|
void EQStream::PacketQueueClear()
|
||||||
|
|||||||
@ -1,13 +1,13 @@
|
|||||||
//Mail and Chat Channels
|
//Mail and Chat Channels
|
||||||
N(OP_MailLogin),
|
N(OP_Buddy),
|
||||||
N(OP_Mail),
|
|
||||||
N(OP_ChannelAnnounceJoin),
|
N(OP_ChannelAnnounceJoin),
|
||||||
N(OP_ChannelAnnounceLeave),
|
N(OP_ChannelAnnounceLeave),
|
||||||
N(OP_Buddy),
|
|
||||||
N(OP_MailHeaderCount),
|
|
||||||
N(OP_MailHeader),
|
|
||||||
N(OP_MailSendBody),
|
|
||||||
N(OP_MailNew),
|
|
||||||
N(OP_MailDeliveryStatus),
|
|
||||||
N(OP_MailboxChange),
|
|
||||||
N(OP_Ignore),
|
N(OP_Ignore),
|
||||||
|
N(OP_Mail),
|
||||||
|
N(OP_MailboxChange),
|
||||||
|
N(OP_MailDeliveryStatus),
|
||||||
|
N(OP_MailHeader),
|
||||||
|
N(OP_MailHeaderCount),
|
||||||
|
N(OP_MailLogin),
|
||||||
|
N(OP_MailNew),
|
||||||
|
N(OP_MailSendBody),
|
||||||
|
|||||||
@ -305,7 +305,7 @@ OUTz(OP_FinishWindow2);
|
|||||||
//OUTv(OP_AdventureInfo, strlen(p)+1);
|
//OUTv(OP_AdventureInfo, strlen(p)+1);
|
||||||
//OUTv(OP_AdventureMerchantResponse, strlen(msg)+2);
|
//OUTv(OP_AdventureMerchantResponse, strlen(msg)+2);
|
||||||
OUTv(OP_ItemPacket, ItemPacket_Struct);
|
OUTv(OP_ItemPacket, ItemPacket_Struct);
|
||||||
OUTv(OP_BuffFadeMsg, BuffFadeMsg_Struct);
|
OUTv(OP_ColoredText, ColoredText_Struct);
|
||||||
OUTv(OP_FormattedMessage, FormattedMessage_Struct);
|
OUTv(OP_FormattedMessage, FormattedMessage_Struct);
|
||||||
OUTv(OP_GuildMemberList, uint32); //variable length, but nasty
|
OUTv(OP_GuildMemberList, uint32); //variable length, but nasty
|
||||||
OUTv(OP_InterruptCast, InterruptCast_Struct);
|
OUTv(OP_InterruptCast, InterruptCast_Struct);
|
||||||
|
|||||||
@ -160,7 +160,7 @@ void load_opcode_names()
|
|||||||
opcode_map[0x0192]="LiveOP_YellForHelp";
|
opcode_map[0x0192]="LiveOP_YellForHelp";
|
||||||
opcode_map[0x00ef]="LiveOP_SafePoint";
|
opcode_map[0x00ef]="LiveOP_SafePoint";
|
||||||
opcode_map[0x0157]="LiveOP_Buff";
|
opcode_map[0x0157]="LiveOP_Buff";
|
||||||
opcode_map[0x00c0]="LiveOP_BuffFadeMsg";
|
opcode_map[0x00c0]="LiveOP_ColoredText";
|
||||||
opcode_map[0x0440]="LiveOP_MultiLineMsg";
|
opcode_map[0x0440]="LiveOP_MultiLineMsg";
|
||||||
opcode_map[0x021c]="LiveOP_SpecialMesg";
|
opcode_map[0x021c]="LiveOP_SpecialMesg";
|
||||||
opcode_map[0x0013]="LiveOP_Consent";
|
opcode_map[0x0013]="LiveOP_Consent";
|
||||||
|
|||||||
@ -2969,7 +2969,7 @@ struct GroupInvite_Struct {
|
|||||||
// uint8 unknown128[65];
|
// uint8 unknown128[65];
|
||||||
};
|
};
|
||||||
|
|
||||||
struct BuffFadeMsg_Struct {
|
struct ColoredText_Struct {
|
||||||
uint32 color;
|
uint32 color;
|
||||||
char msg[1];
|
char msg[1];
|
||||||
};
|
};
|
||||||
|
|||||||
@ -4106,7 +4106,7 @@ struct GMToggle_Struct {
|
|||||||
uint32 toggle;
|
uint32 toggle;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct BuffFadeMsg_Struct {
|
struct ColoredText_Struct {
|
||||||
uint32 color;
|
uint32 color;
|
||||||
char msg[1]; //was 1
|
char msg[1]; //was 1
|
||||||
/*0???*/ uint8 paddingXXX[3]; // always 0's
|
/*0???*/ uint8 paddingXXX[3]; // always 0's
|
||||||
|
|||||||
@ -3693,7 +3693,7 @@ struct GMToggle_Struct {
|
|||||||
uint32 toggle;
|
uint32 toggle;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct BuffFadeMsg_Struct {
|
struct ColoredText_Struct {
|
||||||
uint32 color;
|
uint32 color;
|
||||||
char msg[1]; //was 1
|
char msg[1]; //was 1
|
||||||
/*0???*/ uint8 paddingXXX[3]; // always 0's
|
/*0???*/ uint8 paddingXXX[3]; // always 0's
|
||||||
|
|||||||
@ -187,7 +187,7 @@
|
|||||||
0x1ee9,
|
0x1ee9,
|
||||||
0x7f5d, OP_CastSpell
|
0x7f5d, OP_CastSpell
|
||||||
0x0659, OP_ManaChange
|
0x0659, OP_ManaChange
|
||||||
0x3bc7, OP_BuffFadeMsg
|
0x3bc7, OP_ColoredText
|
||||||
0x3209,
|
0x3209,
|
||||||
0x6a93, OP_MemorizeSpell
|
0x6a93, OP_MemorizeSpell
|
||||||
0x1237,
|
0x1237,
|
||||||
|
|||||||
@ -3556,7 +3556,7 @@ struct GMToggle_Struct {
|
|||||||
uint32 toggle;
|
uint32 toggle;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct BuffFadeMsg_Struct {
|
struct ColoredText_Struct {
|
||||||
uint32 color;
|
uint32 color;
|
||||||
char msg[1]; //was 1
|
char msg[1]; //was 1
|
||||||
/*0???*/ uint8 paddingXXX[3]; // always 0's
|
/*0???*/ uint8 paddingXXX[3]; // always 0's
|
||||||
|
|||||||
@ -3046,7 +3046,7 @@ struct GroupInvite_Struct {
|
|||||||
// uint8 unknown128[65];
|
// uint8 unknown128[65];
|
||||||
};
|
};
|
||||||
|
|
||||||
struct BuffFadeMsg_Struct {
|
struct ColoredText_Struct {
|
||||||
uint32 color;
|
uint32 color;
|
||||||
char msg[1];
|
char msg[1];
|
||||||
};
|
};
|
||||||
|
|||||||
@ -3735,7 +3735,7 @@ struct GMToggle_Struct {
|
|||||||
uint32 toggle;
|
uint32 toggle;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct BuffFadeMsg_Struct {
|
struct ColoredText_Struct {
|
||||||
uint32 color;
|
uint32 color;
|
||||||
char msg[1]; //was 1
|
char msg[1]; //was 1
|
||||||
/*0???*/ uint8 paddingXXX[3]; // always 0's
|
/*0???*/ uint8 paddingXXX[3]; // always 0's
|
||||||
|
|||||||
@ -17,6 +17,11 @@ StructStrategy::StructStrategy() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void StructStrategy::Encode(EQApplicationPacket **p, EQStream *dest, bool ack_req) const {
|
void StructStrategy::Encode(EQApplicationPacket **p, EQStream *dest, bool ack_req) const {
|
||||||
|
if((*p)->GetOpcodeBypass() != 0) {
|
||||||
|
PassEncoder(p, dest, ack_req);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
EmuOpcode op = (*p)->GetOpcode();
|
EmuOpcode op = (*p)->GetOpcode();
|
||||||
Encoder proc = encoders[op];
|
Encoder proc = encoders[op];
|
||||||
proc(p, dest, ack_req);
|
proc(p, dest, ack_req);
|
||||||
|
|||||||
@ -8,6 +8,7 @@ SET(tests_sources
|
|||||||
|
|
||||||
SET(tests_headers
|
SET(tests_headers
|
||||||
atobool_test.h
|
atobool_test.h
|
||||||
|
data_verification_test.h
|
||||||
fixed_memory_test.h
|
fixed_memory_test.h
|
||||||
fixed_memory_variable_test.h
|
fixed_memory_variable_test.h
|
||||||
hextoi_32_64_test.h
|
hextoi_32_64_test.h
|
||||||
@ -20,6 +21,8 @@ ADD_EXECUTABLE(tests ${tests_sources} ${tests_headers})
|
|||||||
|
|
||||||
TARGET_LINK_LIBRARIES(tests common cppunit)
|
TARGET_LINK_LIBRARIES(tests common cppunit)
|
||||||
|
|
||||||
|
INSTALL(TARGETS tests RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX})
|
||||||
|
|
||||||
IF(MSVC)
|
IF(MSVC)
|
||||||
SET_TARGET_PROPERTIES(tests PROPERTIES LINK_FLAGS_RELEASE "/OPT:REF /OPT:ICF")
|
SET_TARGET_PROPERTIES(tests PROPERTIES LINK_FLAGS_RELEASE "/OPT:REF /OPT:ICF")
|
||||||
TARGET_LINK_LIBRARIES(tests "Ws2_32.lib")
|
TARGET_LINK_LIBRARIES(tests "Ws2_32.lib")
|
||||||
|
|||||||
94
tests/data_verification_test.h
Normal file
94
tests/data_verification_test.h
Normal file
@ -0,0 +1,94 @@
|
|||||||
|
/* 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 __EQEMU_TESTS_DATA_VERIFICATION_H
|
||||||
|
#define __EQEMU_TESTS_DATA_VERIFICATION_H
|
||||||
|
|
||||||
|
#include "cppunit/cpptest.h"
|
||||||
|
#include "../common/data_verification.h"
|
||||||
|
|
||||||
|
class DataVerificationTest : public Test::Suite {
|
||||||
|
typedef void(DataVerificationTest::*TestFunction)(void);
|
||||||
|
public:
|
||||||
|
DataVerificationTest() {
|
||||||
|
TEST_ADD(DataVerificationTest::Clamp);
|
||||||
|
TEST_ADD(DataVerificationTest::ClampUpper);
|
||||||
|
TEST_ADD(DataVerificationTest::ClampLower);
|
||||||
|
}
|
||||||
|
|
||||||
|
~DataVerificationTest() {
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
void Clamp() {
|
||||||
|
float value_f = 500.0f;
|
||||||
|
int value_i = 500;
|
||||||
|
|
||||||
|
float vf1 = EQEmu::Clamp(value_f, 0.0f, 1000.0f);
|
||||||
|
float vf2 = EQEmu::Clamp(value_f, 0.0f, 250.0f);
|
||||||
|
float vf3 = EQEmu::Clamp(value_f, 750.0f, 1000.0f);
|
||||||
|
|
||||||
|
int vi1 = EQEmu::Clamp(value_i, 0, 1000);
|
||||||
|
int vi2 = EQEmu::Clamp(value_i, 0, 250);
|
||||||
|
int vi3 = EQEmu::Clamp(value_i, 750, 1000);
|
||||||
|
|
||||||
|
TEST_ASSERT_EQUALS(vf1, 500.0f);
|
||||||
|
TEST_ASSERT_EQUALS(vf2, 250.0f);
|
||||||
|
TEST_ASSERT_EQUALS(vf3, 750.0f);
|
||||||
|
|
||||||
|
TEST_ASSERT_EQUALS(vi1, 500);
|
||||||
|
TEST_ASSERT_EQUALS(vi2, 250);
|
||||||
|
TEST_ASSERT_EQUALS(vi3, 750);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ClampUpper() {
|
||||||
|
float value_f = 500.0f;
|
||||||
|
int value_i = 500;
|
||||||
|
|
||||||
|
float vf1 = EQEmu::ClampUpper(value_f, 1000.0f);
|
||||||
|
float vf2 = EQEmu::ClampUpper(value_f, 250.0f);
|
||||||
|
|
||||||
|
int vi1 = EQEmu::ClampUpper(value_i, 1000);
|
||||||
|
int vi2 = EQEmu::ClampUpper(value_i, 250);
|
||||||
|
|
||||||
|
TEST_ASSERT_EQUALS(vf1, 500.0f);
|
||||||
|
TEST_ASSERT_EQUALS(vf2, 250.0f);
|
||||||
|
|
||||||
|
TEST_ASSERT_EQUALS(vi1, 500);
|
||||||
|
TEST_ASSERT_EQUALS(vi2, 250);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ClampLower() {
|
||||||
|
float value_f = 500.0f;
|
||||||
|
int value_i = 500;
|
||||||
|
|
||||||
|
float vf1 = EQEmu::ClampLower(value_f, 0.0f);
|
||||||
|
float vf2 = EQEmu::ClampLower(value_f, 750.0f);
|
||||||
|
|
||||||
|
int vi1 = EQEmu::ClampLower(value_i, 0);
|
||||||
|
int vi2 = EQEmu::ClampLower(value_i, 750);
|
||||||
|
|
||||||
|
TEST_ASSERT_EQUALS(vf1, 500.0f);
|
||||||
|
TEST_ASSERT_EQUALS(vf2, 750.0f);
|
||||||
|
|
||||||
|
TEST_ASSERT_EQUALS(vi1, 500);
|
||||||
|
TEST_ASSERT_EQUALS(vi2, 750);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
@ -27,6 +27,7 @@
|
|||||||
#include "atobool_test.h"
|
#include "atobool_test.h"
|
||||||
#include "hextoi_32_64_test.h"
|
#include "hextoi_32_64_test.h"
|
||||||
#include "string_util_test.h"
|
#include "string_util_test.h"
|
||||||
|
#include "data_verification_test.h"
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
try {
|
try {
|
||||||
@ -40,6 +41,7 @@ int main() {
|
|||||||
tests.add(new atoboolTest());
|
tests.add(new atoboolTest());
|
||||||
tests.add(new hextoi_32_64_Test());
|
tests.add(new hextoi_32_64_Test());
|
||||||
tests.add(new StringUtilTest());
|
tests.add(new StringUtilTest());
|
||||||
|
tests.add(new DataVerificationTest());
|
||||||
tests.run(*output, true);
|
tests.run(*output, true);
|
||||||
} catch(...) {
|
} catch(...) {
|
||||||
return -1;
|
return -1;
|
||||||
|
|||||||
@ -23,7 +23,7 @@
|
|||||||
#include "../common/string_util.h"
|
#include "../common/string_util.h"
|
||||||
|
|
||||||
class StringUtilTest : public Test::Suite {
|
class StringUtilTest : public Test::Suite {
|
||||||
typedef void(IPCMutexTest::*TestFunction)(void);
|
typedef void(StringUtilTest::*TestFunction)(void);
|
||||||
public:
|
public:
|
||||||
StringUtilTest() {
|
StringUtilTest() {
|
||||||
TEST_ADD(StringUtilTest::StringFormatTest);
|
TEST_ADD(StringUtilTest::StringFormatTest);
|
||||||
@ -35,7 +35,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void StringFormatTest() {
|
void StringFormatTest() {
|
||||||
const char* fmt = "Test: %c %d %4.2f";
|
const char* fmt = "Test: %c %d %4.2f";
|
||||||
char c = 'a';
|
char c = 'a';
|
||||||
int i = 2014;
|
int i = 2014;
|
||||||
|
|||||||
@ -147,7 +147,7 @@ OP_Begging=0x13e7 # ShowEQ 10/27/05
|
|||||||
OP_InspectRequest=0x775d # ShowEQ 10/27/05
|
OP_InspectRequest=0x775d # ShowEQ 10/27/05
|
||||||
OP_Action2=0x0000
|
OP_Action2=0x0000
|
||||||
OP_BeginCast=0x3990 # ShowEQ 10/27/05
|
OP_BeginCast=0x3990 # ShowEQ 10/27/05
|
||||||
OP_BuffFadeMsg=0x0b2d # ShowEQ 10/27/05
|
OP_ColoredText=0x0b2d # ShowEQ 10/27/05
|
||||||
OP_Consent=0x1081 # ShowEQ 10/27/05
|
OP_Consent=0x1081 # ShowEQ 10/27/05
|
||||||
OP_LFGCommand=0x68ac # ShowEQ 10/27/05
|
OP_LFGCommand=0x68ac # ShowEQ 10/27/05
|
||||||
OP_LFGGetMatchesRequest=0x022f # ShowEQ 10/27/05
|
OP_LFGGetMatchesRequest=0x022f # ShowEQ 10/27/05
|
||||||
|
|||||||
@ -150,7 +150,7 @@ OP_InspectRequest=0x2403
|
|||||||
OP_Action2=0x0000 # ShowEQ 06/29/05
|
OP_Action2=0x0000 # ShowEQ 06/29/05
|
||||||
OP_BeginCast=0x3990 # ShowEQ 06/29/05
|
OP_BeginCast=0x3990 # ShowEQ 06/29/05
|
||||||
OP_WhoAllRequest=0x5cdd # ShowEQ 06/29/05
|
OP_WhoAllRequest=0x5cdd # ShowEQ 06/29/05
|
||||||
OP_BuffFadeMsg=0x4bc6 # ShowEQ 06/29/05
|
OP_ColoredText=0x4bc6 # ShowEQ 06/29/05
|
||||||
OP_Consent=0x1081 # ShowEQ 06/29/05
|
OP_Consent=0x1081 # ShowEQ 06/29/05
|
||||||
OP_LFGCommand=0x022f # ShowEQ 06/29/05
|
OP_LFGCommand=0x022f # ShowEQ 06/29/05
|
||||||
OP_LFGGetMatchesRequest=0x6f82 # ShowEQ 06/29/05
|
OP_LFGGetMatchesRequest=0x6f82 # ShowEQ 06/29/05
|
||||||
|
|||||||
@ -166,7 +166,7 @@ OP_InspectRequest=0x23f1
|
|||||||
OP_InspectAnswer=0x5794
|
OP_InspectAnswer=0x5794
|
||||||
OP_InspectMessageUpdate=0x3064
|
OP_InspectMessageUpdate=0x3064
|
||||||
OP_BeginCast=0x17ff
|
OP_BeginCast=0x17ff
|
||||||
OP_BuffFadeMsg=0x41cb
|
OP_ColoredText=0x41cb
|
||||||
OP_ConsentResponse=0x183d
|
OP_ConsentResponse=0x183d
|
||||||
OP_MemorizeSpell=0x2fac
|
OP_MemorizeSpell=0x2fac
|
||||||
OP_SwapSpell=0x4736
|
OP_SwapSpell=0x4736
|
||||||
|
|||||||
@ -168,7 +168,7 @@ OP_GMLastName=0x3563 # C
|
|||||||
OP_InspectAnswer=0x4938 # C
|
OP_InspectAnswer=0x4938 # C
|
||||||
OP_Action2=0x7e4d # C OP_Damage?
|
OP_Action2=0x7e4d # C OP_Damage?
|
||||||
OP_BeginCast=0x0d5a # C
|
OP_BeginCast=0x0d5a # C
|
||||||
OP_BuffFadeMsg=0x569a # C
|
OP_ColoredText=0x569a # C
|
||||||
OP_ConsentResponse=0x6e47 # C
|
OP_ConsentResponse=0x6e47 # C
|
||||||
OP_MemorizeSpell=0x8543 # C
|
OP_MemorizeSpell=0x8543 # C
|
||||||
OP_SwapSpell=0x3fd2 # C
|
OP_SwapSpell=0x3fd2 # C
|
||||||
|
|||||||
@ -164,7 +164,7 @@ OP_GMLastName=0x0375 #/lastname <Name> <New Surname>
|
|||||||
OP_InspectAnswer=0x084F #SEQ 12/04/08
|
OP_InspectAnswer=0x084F #SEQ 12/04/08
|
||||||
OP_Action2=0x0EF2 #SEQ 12/04/08
|
OP_Action2=0x0EF2 #SEQ 12/04/08
|
||||||
OP_BeginCast=0x5A50 #SEQ 12/04/08
|
OP_BeginCast=0x5A50 #SEQ 12/04/08
|
||||||
OP_BuffFadeMsg=0x3BC7 #SEQ 12/04/08
|
OP_ColoredText=0x3BC7 #SEQ 12/04/08
|
||||||
OP_ConsentResponse=0x4D30 #SEQ 12/04/08
|
OP_ConsentResponse=0x4D30 #SEQ 12/04/08
|
||||||
OP_MemorizeSpell=0x6A93 #SEQ 12/04/08
|
OP_MemorizeSpell=0x6A93 #SEQ 12/04/08
|
||||||
OP_SwapSpell=0x1418 #SEQ 12/04/08
|
OP_SwapSpell=0x1418 #SEQ 12/04/08
|
||||||
|
|||||||
@ -154,7 +154,7 @@ OP_InspectRequest=0x775d # ShowEQ 10/27/05
|
|||||||
OP_InspectAnswer=0x2403 # ShowEQ 10/27/05
|
OP_InspectAnswer=0x2403 # ShowEQ 10/27/05
|
||||||
OP_Action2=0x0000
|
OP_Action2=0x0000
|
||||||
OP_BeginCast=0x3990 # ShowEQ 10/27/05
|
OP_BeginCast=0x3990 # ShowEQ 10/27/05
|
||||||
OP_BuffFadeMsg=0x0b2d # ShowEQ 10/27/05
|
OP_ColoredText=0x0b2d # ShowEQ 10/27/05
|
||||||
OP_Consent=0x1081 # ShowEQ 10/27/05
|
OP_Consent=0x1081 # ShowEQ 10/27/05
|
||||||
OP_ConsentDeny=0x4e8c # ShowEQ 10/27/05
|
OP_ConsentDeny=0x4e8c # ShowEQ 10/27/05
|
||||||
OP_ConsentResponse=0x6380 # ShowEQ 10/27/05
|
OP_ConsentResponse=0x6380 # ShowEQ 10/27/05
|
||||||
|
|||||||
@ -168,7 +168,7 @@ OP_GMLastName=0x7bfb # C
|
|||||||
|
|
||||||
OP_InspectAnswer=0x0c2b # C
|
OP_InspectAnswer=0x0c2b # C
|
||||||
OP_BeginCast=0x0d5a # C
|
OP_BeginCast=0x0d5a # C
|
||||||
OP_BuffFadeMsg=0x71bf # C
|
OP_ColoredText=0x71bf # C
|
||||||
OP_ConsentResponse=0x0e87 # C
|
OP_ConsentResponse=0x0e87 # C
|
||||||
OP_MemorizeSpell=0x3887 # C
|
OP_MemorizeSpell=0x3887 # C
|
||||||
OP_SwapSpell=0x5805 # C
|
OP_SwapSpell=0x5805 # C
|
||||||
|
|||||||
@ -701,14 +701,10 @@ void Client::QueuePacket(const EQApplicationPacket* app, bool ack_req, CLIENT_CO
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Client::FastQueuePacket(EQApplicationPacket** app, bool ack_req, CLIENT_CONN_STATUS required_state) {
|
void Client::FastQueuePacket(EQApplicationPacket** app, bool ack_req, CLIENT_CONN_STATUS required_state) {
|
||||||
|
|
||||||
//std::cout << "Sending: 0x" << std::hex << std::setw(4) << std::setfill('0') << (*app)->GetOpcode() << std::dec << ", size=" << (*app)->size << std::endl;
|
|
||||||
|
|
||||||
// if the program doesnt care about the status or if the status isnt what we requested
|
// if the program doesnt care about the status or if the status isnt what we requested
|
||||||
if (required_state != CLIENT_CONNECTINGALL && client_state != required_state) {
|
if (required_state != CLIENT_CONNECTINGALL && client_state != required_state) {
|
||||||
// todo: save packets for later use
|
// todo: save packets for later use
|
||||||
AddPacket(app, ack_req);
|
AddPacket(app, ack_req);
|
||||||
// LogFile->write(EQEMuLog::Normal, "Adding Packet to list (%d) (%d)", (*app)->GetOpcode(), (int)required_state);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@ -8317,3 +8313,18 @@ float Client::GetQuiverHaste()
|
|||||||
quiver_haste = 1.0f / (1.0f + static_cast<float>(quiver_haste) / 100.0f);
|
quiver_haste = 1.0f / (1.0f + static_cast<float>(quiver_haste) / 100.0f);
|
||||||
return quiver_haste;
|
return quiver_haste;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Client::SendColoredText(uint32 color, std::string message)
|
||||||
|
{
|
||||||
|
// arbitrary size limit
|
||||||
|
if (message.size() > 512) // live does send this with empty strings sometimes ...
|
||||||
|
return;
|
||||||
|
EQApplicationPacket *outapp = new EQApplicationPacket(OP_ColoredText,
|
||||||
|
sizeof(ColoredText_Struct) + message.size());
|
||||||
|
ColoredText_Struct *cts = (ColoredText_Struct *)outapp->pBuffer;
|
||||||
|
cts->color = color;
|
||||||
|
strcpy(cts->msg, message.c_str());
|
||||||
|
QueuePacket(outapp);
|
||||||
|
safe_delete(outapp);
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@ -255,6 +255,7 @@ public:
|
|||||||
const char *message7 = nullptr, const char *message8 = nullptr,
|
const char *message7 = nullptr, const char *message8 = nullptr,
|
||||||
const char *message9 = nullptr);
|
const char *message9 = nullptr);
|
||||||
void Tell_StringID(uint32 string_id, const char *who, const char *message);
|
void Tell_StringID(uint32 string_id, const char *who, const char *message);
|
||||||
|
void SendColoredText(uint32 color, std::string message);
|
||||||
void SendBazaarResults(uint32 trader_id,uint32 class_,uint32 race,uint32 stat,uint32 slot,uint32 type,char name[64],uint32 minprice,uint32 maxprice);
|
void SendBazaarResults(uint32 trader_id,uint32 class_,uint32 race,uint32 stat,uint32 slot,uint32 type,char name[64],uint32 minprice,uint32 maxprice);
|
||||||
void SendTraderItem(uint32 item_id,uint16 quantity);
|
void SendTraderItem(uint32 item_id,uint16 quantity);
|
||||||
uint16 FindTraderItem(int32 SerialNumber,uint16 Quantity);
|
uint16 FindTraderItem(int32 SerialNumber,uint16 Quantity);
|
||||||
|
|||||||
23196
zone/client_packet.cpp
23196
zone/client_packet.cpp
File diff suppressed because it is too large
Load Diff
@ -1,292 +1,294 @@
|
|||||||
void Handle_Connect_OP_SetDataRate(const EQApplicationPacket *app);
|
// connecting opcode handlers
|
||||||
void Handle_Connect_OP_ZoneEntry(const EQApplicationPacket *app);
|
|
||||||
void Handle_Connect_OP_SetServerFilter(const EQApplicationPacket *app);
|
|
||||||
void Handle_Connect_OP_SendAATable(const EQApplicationPacket *app);
|
|
||||||
void Handle_Connect_OP_SendTributes(const EQApplicationPacket *app);
|
|
||||||
void Handle_Connect_OP_SendGuildTributes(const EQApplicationPacket *app);
|
|
||||||
void Handle_Connect_OP_SendAAStats(const EQApplicationPacket *app);
|
|
||||||
void Handle_Connect_0x3e33(const EQApplicationPacket *app);
|
void Handle_Connect_0x3e33(const EQApplicationPacket *app);
|
||||||
|
void Handle_Connect_OP_ApproveZone(const EQApplicationPacket *app);
|
||||||
|
void Handle_Connect_OP_ClientError(const EQApplicationPacket *app);
|
||||||
|
void Handle_Connect_OP_ClientReady(const EQApplicationPacket *app);
|
||||||
|
void Handle_Connect_OP_ClientUpdate(const EQApplicationPacket *app);
|
||||||
void Handle_Connect_OP_ReqClientSpawn(const EQApplicationPacket *app);
|
void Handle_Connect_OP_ReqClientSpawn(const EQApplicationPacket *app);
|
||||||
|
void Handle_Connect_OP_ReqNewZone(const EQApplicationPacket *app);
|
||||||
|
void Handle_Connect_OP_SendAAStats(const EQApplicationPacket *app);
|
||||||
|
void Handle_Connect_OP_SendAATable(const EQApplicationPacket *app);
|
||||||
void Handle_Connect_OP_SendExpZonein(const EQApplicationPacket *app);
|
void Handle_Connect_OP_SendExpZonein(const EQApplicationPacket *app);
|
||||||
|
void Handle_Connect_OP_SendGuildTributes(const EQApplicationPacket *app);
|
||||||
|
void Handle_Connect_OP_SendTributes(const EQApplicationPacket *app);
|
||||||
|
void Handle_Connect_OP_SetDataRate(const EQApplicationPacket *app);
|
||||||
|
void Handle_Connect_OP_SetServerFilter(const EQApplicationPacket *app);
|
||||||
|
void Handle_Connect_OP_SpawnAppearance(const EQApplicationPacket *app);
|
||||||
|
void Handle_Connect_OP_TGB(const EQApplicationPacket *app);
|
||||||
|
void Handle_Connect_OP_UpdateAA(const EQApplicationPacket *app);
|
||||||
|
void Handle_Connect_OP_WearChange(const EQApplicationPacket *app);
|
||||||
void Handle_Connect_OP_WorldObjectsSent(const EQApplicationPacket *app);
|
void Handle_Connect_OP_WorldObjectsSent(const EQApplicationPacket *app);
|
||||||
void Handle_Connect_OP_ZoneComplete(const EQApplicationPacket *app);
|
void Handle_Connect_OP_ZoneComplete(const EQApplicationPacket *app);
|
||||||
void Handle_Connect_OP_ReqNewZone(const EQApplicationPacket *app);
|
void Handle_Connect_OP_ZoneEntry(const EQApplicationPacket *app);
|
||||||
void Handle_Connect_OP_SpawnAppearance(const EQApplicationPacket *app);
|
// connected opcode handlers
|
||||||
void Handle_Connect_OP_WearChange(const EQApplicationPacket *app);
|
|
||||||
void Handle_Connect_OP_ClientUpdate(const EQApplicationPacket *app);
|
|
||||||
void Handle_Connect_OP_ClientError(const EQApplicationPacket *app);
|
|
||||||
void Handle_Connect_OP_ApproveZone(const EQApplicationPacket *app);
|
|
||||||
void Handle_Connect_OP_ClientReady(const EQApplicationPacket *app);
|
|
||||||
void Handle_Connect_OP_UpdateAA(const EQApplicationPacket *app);
|
|
||||||
void Handle_Connect_OP_TGB(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_ClientUpdate(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_AutoAttack(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_AutoAttack2(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_Consent(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_ConsentDeny(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_TargetMouse(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_TargetCommand(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_Shielding(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_Jump(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_AdventureInfoRequest(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_AdventureRequest(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_LDoNButton(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_LeaveAdventure(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_Consume(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_ItemVerifyRequest(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_AdventureMerchantRequest(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_AdventureMerchantPurchase(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_ConsiderCorpse(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_Consider(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_Begging(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_TestBuff(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_Surname(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_ClearSurname(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_YellForHelp(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_Assist(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_AssistGroup(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_GMTraining(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_GMEndTraining(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_GMTrainSkill(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_DuelResponse(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_DuelResponse2(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_RequestDuel(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_SpawnAppearance(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_BazaarInspect(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_Death(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_MoveCoin(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_ItemLinkClick(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_ItemLinkResponse(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_MoveItem(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_Camp(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_Logout(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_SenseHeading(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_LDoNOpen(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_LDoNDisarmTraps(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_LDoNSenseTraps(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_LDoNInspect(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_LDoNPickLock(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_FeignDeath(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_Sneak(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_Hide(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_ChannelMessage(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_WearChange(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_ZoneChange(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_DeleteSpawn(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_SaveOnZoneReq(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_Save(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_WhoAllRequest(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_GMZoneRequest(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_GMZoneRequest2(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_EndLootRequest(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_LootRequest(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_Dye(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_LootItem(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_GuildDelete(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_GuildPublicNote(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_GetGuildsList(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_SetGuildMOTD(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_GuildPeace(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_GuildWar(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_GuildLeader(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_GuildDemote(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_GuildPromote(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_GuildInvite(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_GuildRemove(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_GetGuildMOTD(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_GuildManageBanker(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_GuildInviteAccept(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_ManaChange(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_MemorizeSpell(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_SwapSpell(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_CastSpell(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_DeleteItem(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_CombatAbility(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_Taunt(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_InstillDoubt(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_RezzAnswer(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_GMSummon(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_TradeRequest(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_TradeRequestAck(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_CancelTrade(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_TradeAcceptClick(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_BoardBoat(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_LeaveBoat(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_RandomReq(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_Buff(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_GMHideMe(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_GMNameChange(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_GMKill(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_GMLastName(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_GMToggle(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_LFGCommand(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_GMGoto(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_TraderShop(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_ShopRequest(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_BazaarSearch(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_ShopPlayerBuy(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_ShopPlayerSell(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_ShopEnd(const EQApplicationPacket *app);
|
|
||||||
// void Handle_OP_CloseContainer(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_ClickObjectAction(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_ClickObject(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_RecipesFavorite(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_RecipesSearch(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_RecipeDetails(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_RecipeAutoCombine(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_TradeSkillCombine(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_ItemName(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_AugmentItem(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_ClickDoor(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_CreateObject(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_FaceChange(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_GroupInvite(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_GroupInvite2(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_GroupAcknowledge(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_GroupCancelInvite(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_GroupFollow(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_GroupFollow2(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_GroupDisband(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_GroupDelete(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_GMEmoteZone(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_InspectRequest(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_InspectAnswer(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_InspectMessageUpdate(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_Medding(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_DeleteSpell(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_PetitionBug(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_Bug(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_Petition(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_PetitionCheckIn(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_PetitionResolve(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_PetitionDelete(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_PetCommands(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_PetitionUnCheckout(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_PetitionQue(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_PDeletePetition(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_PetitionCheckout(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_PetitionRefresh(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_ReadBook(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_Emote(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_Animation(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_SetServerFilter(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_GMDelCorpse(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_GMKick(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_GMServers(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_Illusion(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_GMBecomeNPC(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_Fishing(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_Forage(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_Mend(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_EnvDamage(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_Damage(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_AAAction(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_TraderBuy(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_Trader(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_GMFind(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_PickPocket(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_Bind_Wound(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_TrackTarget(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_Track(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_TrackUnknown(const EQApplicationPacket *app);
|
|
||||||
void Handle_0x0193(const EQApplicationPacket *app);
|
void Handle_0x0193(const EQApplicationPacket *app);
|
||||||
void Handle_0x01e7(const EQApplicationPacket *app);
|
void Handle_0x01e7(const EQApplicationPacket *app);
|
||||||
void Handle_OP_ClientError(const EQApplicationPacket *app);
|
void Handle_OP_AAAction(const EQApplicationPacket *app);
|
||||||
void Handle_OP_ReloadUI(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_TGB(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_Split(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_SenseTraps(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_DisarmTraps(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_OpenTributeMaster(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_OpenGuildTributeMaster(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_TributeItem(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_TributeMoney(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_SelectTribute(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_TributeUpdate(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_TributeToggle(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_TributeNPC(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_ConfirmDelete(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_CrashDump(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_ControlBoat(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_DumpName(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_SetRunMode(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_SafeFallSuccess(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_Heartbeat(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_SafePoint(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_FindPersonRequest(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_BankerChange(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_LeadershipExpToggle(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_SetTitle(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_RequestTitles(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_PurchaseLeadershipAA(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_Ignore(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_LoadSpellSet(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_AutoFire(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_Rewind(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_RaidCommand(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_Translocate(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_Sacrifice(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_AcceptNewTask(const EQApplicationPacket *app);
|
void Handle_OP_AcceptNewTask(const EQApplicationPacket *app);
|
||||||
void Handle_OP_CancelTask(const EQApplicationPacket *app);
|
void Handle_OP_AdventureInfoRequest(const EQApplicationPacket *app);
|
||||||
void Handle_OP_TaskHistoryRequest(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_KeyRing(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_FriendsWho(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_Bandolier(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_PopupResponse(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_PotionBelt(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_LFGGetMatchesRequest(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_LFPCommand(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_LFPGetMatchesRequest(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_Barter(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_VoiceMacroIn(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_DoGroupLeadershipAbility(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_ClearNPCMarks(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_DelegateAbility(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_ApplyPoison(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_AugmentInfo(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_PVPLeaderBoardRequest(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_PVPLeaderBoardDetailsRequest(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_AdventureMerchantSell(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_AdventureStatsRequest(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_AdventureLeaderboardRequest(const EQApplicationPacket *app);
|
void Handle_OP_AdventureLeaderboardRequest(const EQApplicationPacket *app);
|
||||||
void Handle_OP_RespawnWindow(const EQApplicationPacket *app);
|
void Handle_OP_AdventureMerchantPurchase(const EQApplicationPacket *app);
|
||||||
void Handle_OP_GroupUpdate(const EQApplicationPacket *app);
|
void Handle_OP_AdventureMerchantRequest(const EQApplicationPacket *app);
|
||||||
void Handle_OP_SetStartCity(const EQApplicationPacket *app);
|
void Handle_OP_AdventureMerchantSell(const EQApplicationPacket *app);
|
||||||
void Handle_OP_Report(const EQApplicationPacket *app);
|
void Handle_OP_AdventureRequest(const EQApplicationPacket *app);
|
||||||
void Handle_OP_VetClaimRequest(const EQApplicationPacket *app);
|
void Handle_OP_AdventureStatsRequest(const EQApplicationPacket *app);
|
||||||
void Handle_OP_GMSearchCorpse(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_GuildBank(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_GroupRoles(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_HideCorpse(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_TradeBusy(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_GuildUpdateURLAndChannel(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_GuildStatus(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_BlockedBuffs(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_RemoveBlockedBuffs(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_ClearBlockedBuffs(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_BuffRemoveRequest(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_CorpseDrag(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_CorpseDrop(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_GroupMakeLeader(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_GuildCreate(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_AltCurrencyMerchantRequest(const EQApplicationPacket *app);
|
void Handle_OP_AltCurrencyMerchantRequest(const EQApplicationPacket *app);
|
||||||
void Handle_OP_AltCurrencySellSelection(const EQApplicationPacket *app);
|
|
||||||
void Handle_OP_AltCurrencyPurchase(const EQApplicationPacket *app);
|
void Handle_OP_AltCurrencyPurchase(const EQApplicationPacket *app);
|
||||||
void Handle_OP_AltCurrencyReclaim(const EQApplicationPacket *app);
|
void Handle_OP_AltCurrencyReclaim(const EQApplicationPacket *app);
|
||||||
void Handle_OP_AltCurrencySell(const EQApplicationPacket *app);
|
void Handle_OP_AltCurrencySell(const EQApplicationPacket *app);
|
||||||
void Handle_OP_CrystalReclaim(const EQApplicationPacket *app);
|
void Handle_OP_AltCurrencySellSelection(const EQApplicationPacket *app);
|
||||||
void Handle_OP_CrystalCreate(const EQApplicationPacket *app);
|
void Handle_OP_Animation(const EQApplicationPacket *app);
|
||||||
void Handle_OP_LFGuild(const EQApplicationPacket *app);
|
void Handle_OP_ApplyPoison(const EQApplicationPacket *app);
|
||||||
void Handle_OP_XTargetRequest(const EQApplicationPacket *app);
|
void Handle_OP_Assist(const EQApplicationPacket *app);
|
||||||
void Handle_OP_XTargetAutoAddHaters(const EQApplicationPacket *app);
|
void Handle_OP_AssistGroup(const EQApplicationPacket *app);
|
||||||
void Handle_OP_ItemPreview(const EQApplicationPacket *app);
|
void Handle_OP_AugmentInfo(const EQApplicationPacket *app);
|
||||||
void Handle_OP_MercenaryDataRequest(const EQApplicationPacket *app);
|
void Handle_OP_AugmentItem(const EQApplicationPacket *app);
|
||||||
void Handle_OP_MercenaryHire(const EQApplicationPacket *app);
|
void Handle_OP_AutoAttack(const EQApplicationPacket *app);
|
||||||
void Handle_OP_MercenaryCommand(const EQApplicationPacket *app);
|
void Handle_OP_AutoAttack2(const EQApplicationPacket *app);
|
||||||
void Handle_OP_MercenaryDataUpdateRequest(const EQApplicationPacket *app);
|
void Handle_OP_AutoFire(const EQApplicationPacket *app);
|
||||||
void Handle_OP_MercenarySuspendRequest(const EQApplicationPacket *app);
|
void Handle_OP_Bandolier(const EQApplicationPacket *app);
|
||||||
void Handle_OP_MercenaryDismiss(const EQApplicationPacket *app);
|
void Handle_OP_BankerChange(const EQApplicationPacket *app);
|
||||||
void Handle_OP_MercenaryTimerRequest(const EQApplicationPacket *app);
|
void Handle_OP_Barter(const EQApplicationPacket *app);
|
||||||
void Handle_OP_OpenInventory(const EQApplicationPacket *app);
|
void Handle_OP_BazaarInspect(const EQApplicationPacket *app);
|
||||||
void Handle_OP_OpenContainer(const EQApplicationPacket *app);
|
void Handle_OP_BazaarSearch(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_Begging(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_Bind_Wound(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_BlockedBuffs(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_BoardBoat(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_Buff(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_BuffRemoveRequest(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_Bug(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_Camp(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_CancelTask(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_CancelTrade(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_CastSpell(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_ChannelMessage(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_ClearBlockedBuffs(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_ClearNPCMarks(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_ClearSurname(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_ClickDoor(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_ClickObject(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_ClickObjectAction(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_ClientError(const EQApplicationPacket *app);
|
||||||
void Handle_OP_ClientTimeStamp(const EQApplicationPacket *app);
|
void Handle_OP_ClientTimeStamp(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_ClientUpdate(const EQApplicationPacket *app);
|
||||||
|
// void Handle_OP_CloseContainer(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_CombatAbility(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_ConfirmDelete(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_Consent(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_ConsentDeny(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_Consider(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_ConsiderCorpse(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_Consume(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_ControlBoat(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_CorpseDrag(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_CorpseDrop(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_CrashDump(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_CreateObject(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_CrystalCreate(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_CrystalReclaim(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_Damage(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_Death(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_DelegateAbility(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_DeleteItem(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_DeleteSpawn(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_DeleteSpell(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_DisarmTraps(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_DoGroupLeadershipAbility(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_DuelResponse(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_DuelResponse2(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_DumpName(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_Dye(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_Emote(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_EndLootRequest(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_EnvDamage(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_FaceChange(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_FeignDeath(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_FindPersonRequest(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_Fishing(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_Forage(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_FriendsWho(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_GetGuildMOTD(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_GetGuildsList(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_GMBecomeNPC(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_GMDelCorpse(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_GMEmoteZone(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_GMEndTraining(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_GMFind(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_GMGoto(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_GMHideMe(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_GMKick(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_GMKill(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_GMLastName(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_GMNameChange(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_GMSearchCorpse(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_GMServers(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_GMSummon(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_GMToggle(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_GMTraining(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_GMTrainSkill(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_GMZoneRequest(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_GMZoneRequest2(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_GroupAcknowledge(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_GroupCancelInvite(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_GroupDelete(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_GroupDisband(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_GroupFollow(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_GroupFollow2(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_GroupInvite(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_GroupInvite2(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_GroupMakeLeader(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_GroupRoles(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_GroupUpdate(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_GuildBank(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_GuildCreate(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_GuildDelete(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_GuildDemote(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_GuildInvite(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_GuildInviteAccept(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_GuildLeader(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_GuildManageBanker(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_GuildPeace(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_GuildPromote(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_GuildPublicNote(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_GuildRemove(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_GuildStatus(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_GuildUpdateURLAndChannel(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_GuildWar(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_Heartbeat(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_Hide(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_HideCorpse(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_Ignore(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_Illusion(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_InspectAnswer(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_InspectMessageUpdate(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_InspectRequest(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_InstillDoubt(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_ItemLinkClick(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_ItemLinkResponse(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_ItemName(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_ItemPreview(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_ItemVerifyRequest(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_Jump(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_KeyRing(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_LDoNButton(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_LDoNDisarmTraps(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_LDoNInspect(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_LDoNOpen(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_LDoNPickLock(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_LDoNSenseTraps(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_LeadershipExpToggle(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_LeaveAdventure(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_LeaveBoat(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_LFGCommand(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_LFGGetMatchesRequest(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_LFGuild(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_LFPCommand(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_LFPGetMatchesRequest(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_LoadSpellSet(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_Logout(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_LootItem(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_LootRequest(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_ManaChange(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_Medding(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_MemorizeSpell(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_Mend(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_MercenaryCommand(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_MercenaryDataRequest(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_MercenaryDataUpdateRequest(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_MercenaryDismiss(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_MercenaryHire(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_MercenarySuspendRequest(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_MercenaryTimerRequest(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_MoveCoin(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_MoveItem(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_OpenContainer(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_OpenGuildTributeMaster(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_OpenInventory(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_OpenTributeMaster(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_PDeletePetition(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_PetCommands(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_Petition(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_PetitionBug(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_PetitionCheckIn(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_PetitionCheckout(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_PetitionDelete(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_PetitionQue(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_PetitionRefresh(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_PetitionResolve(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_PetitionUnCheckout(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_PickPocket(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_PopupResponse(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_PotionBelt(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_PurchaseLeadershipAA(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_PVPLeaderBoardDetailsRequest(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_PVPLeaderBoardRequest(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_RaidCommand(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_RandomReq(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_ReadBook(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_RecipeAutoCombine(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_RecipeDetails(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_RecipesFavorite(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_RecipesSearch(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_ReloadUI(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_RemoveBlockedBuffs(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_Report(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_RequestDuel(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_RequestTitles(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_RespawnWindow(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_Rewind(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_RezzAnswer(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_Sacrifice(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_SafeFallSuccess(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_SafePoint(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_Save(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_SaveOnZoneReq(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_SelectTribute(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_SenseHeading(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_SenseTraps(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_SetGuildMOTD(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_SetRunMode(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_SetServerFilter(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_SetStartCity(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_SetTitle(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_Shielding(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_ShopEnd(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_ShopPlayerBuy(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_ShopPlayerSell(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_ShopRequest(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_Sneak(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_SpawnAppearance(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_Split(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_Surname(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_SwapSpell(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_TargetCommand(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_TargetMouse(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_TaskHistoryRequest(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_Taunt(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_TestBuff(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_TGB(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_Track(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_TrackTarget(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_TrackUnknown(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_TradeAcceptClick(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_TradeBusy(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_Trader(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_TraderBuy(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_TradeRequest(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_TradeRequestAck(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_TraderShop(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_TradeSkillCombine(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_Translocate(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_TributeItem(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_TributeMoney(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_TributeNPC(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_TributeToggle(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_TributeUpdate(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_VetClaimRequest(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_VoiceMacroIn(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_WearChange(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_WhoAllRequest(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_XTargetAutoAddHaters(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_XTargetRequest(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_YellForHelp(const EQApplicationPacket *app);
|
||||||
|
void Handle_OP_ZoneChange(const EQApplicationPacket *app);
|
||||||
|
|||||||
@ -14,14 +14,31 @@ Lua_Packet::Lua_Packet(int opcode, int size) {
|
|||||||
owned_ = true;
|
owned_ = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Lua_Packet::Lua_Packet(int opcode, int size, bool raw) {
|
||||||
|
if(raw) {
|
||||||
|
SetLuaPtrData(new EQApplicationPacket(OP_Unknown, size));
|
||||||
|
owned_ = true;
|
||||||
|
|
||||||
|
EQApplicationPacket *self = reinterpret_cast<EQApplicationPacket*>(d_);
|
||||||
|
self->SetOpcodeBypass(opcode);
|
||||||
|
} else {
|
||||||
|
SetLuaPtrData(new EQApplicationPacket(static_cast<EmuOpcode>(opcode), size));
|
||||||
|
owned_ = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Lua_Packet& Lua_Packet::operator=(const Lua_Packet& o) {
|
Lua_Packet& Lua_Packet::operator=(const Lua_Packet& o) {
|
||||||
if(o.owned_) {
|
if(o.owned_) {
|
||||||
owned_ = true;
|
owned_ = true;
|
||||||
EQApplicationPacket *app = reinterpret_cast<EQApplicationPacket*>(o.d_);
|
EQApplicationPacket *app = reinterpret_cast<EQApplicationPacket*>(o.d_);
|
||||||
if(app)
|
if(app) {
|
||||||
d_ = new EQApplicationPacket(app->GetOpcode(), app->pBuffer, app->size);
|
d_ = new EQApplicationPacket(app->GetOpcode(), app->pBuffer, app->size);
|
||||||
else
|
|
||||||
|
EQApplicationPacket *self = reinterpret_cast<EQApplicationPacket*>(d_);
|
||||||
|
self->SetOpcodeBypass(app->GetOpcodeBypass());
|
||||||
|
} else {
|
||||||
d_ = nullptr;
|
d_ = nullptr;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
owned_ = false;
|
owned_ = false;
|
||||||
d_ = o.d_;
|
d_ = o.d_;
|
||||||
@ -33,10 +50,14 @@ Lua_Packet::Lua_Packet(const Lua_Packet& o) {
|
|||||||
if(o.owned_) {
|
if(o.owned_) {
|
||||||
owned_ = true;
|
owned_ = true;
|
||||||
EQApplicationPacket *app = reinterpret_cast<EQApplicationPacket*>(o.d_);
|
EQApplicationPacket *app = reinterpret_cast<EQApplicationPacket*>(o.d_);
|
||||||
if(app)
|
if(app) {
|
||||||
d_ = new EQApplicationPacket(app->GetOpcode(), app->pBuffer, app->size);
|
d_ = new EQApplicationPacket(app->GetOpcode(), app->pBuffer, app->size);
|
||||||
else
|
|
||||||
|
EQApplicationPacket *self = reinterpret_cast<EQApplicationPacket*>(d_);
|
||||||
|
self->SetOpcodeBypass(app->GetOpcodeBypass());
|
||||||
|
} else {
|
||||||
d_ = nullptr;
|
d_ = nullptr;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
owned_ = false;
|
owned_ = false;
|
||||||
d_ = o.d_;
|
d_ = o.d_;
|
||||||
@ -54,6 +75,16 @@ int Lua_Packet::GetOpcode() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Lua_Packet::SetOpcode(int op) {
|
void Lua_Packet::SetOpcode(int op) {
|
||||||
|
Lua_Safe_Call_Void();
|
||||||
|
self->SetOpcodeBypass(static_cast<uint16>(op));
|
||||||
|
}
|
||||||
|
|
||||||
|
int Lua_Packet::GetRawOpcode() {
|
||||||
|
Lua_Safe_Call_Int();
|
||||||
|
return static_cast<int>(self->GetOpcodeBypass());
|
||||||
|
}
|
||||||
|
|
||||||
|
void Lua_Packet::SetRawOpcode(int op) {
|
||||||
Lua_Safe_Call_Void();
|
Lua_Safe_Call_Void();
|
||||||
self->SetOpcode(static_cast<EmuOpcode>(op));
|
self->SetOpcode(static_cast<EmuOpcode>(op));
|
||||||
}
|
}
|
||||||
@ -244,11 +275,14 @@ luabind::scope lua_register_packet() {
|
|||||||
return luabind::class_<Lua_Packet>("Packet")
|
return luabind::class_<Lua_Packet>("Packet")
|
||||||
.def(luabind::constructor<>())
|
.def(luabind::constructor<>())
|
||||||
.def(luabind::constructor<int,int>())
|
.def(luabind::constructor<int,int>())
|
||||||
|
.def(luabind::constructor<int,int,bool>())
|
||||||
.property("null", &Lua_Packet::Null)
|
.property("null", &Lua_Packet::Null)
|
||||||
.property("valid", &Lua_Packet::Valid)
|
.property("valid", &Lua_Packet::Valid)
|
||||||
.def("GetSize", &Lua_Packet::GetSize)
|
.def("GetSize", &Lua_Packet::GetSize)
|
||||||
.def("GetOpcode", &Lua_Packet::GetOpcode)
|
.def("GetOpcode", &Lua_Packet::GetOpcode)
|
||||||
.def("SetOpcode", &Lua_Packet::SetOpcode)
|
.def("SetOpcode", &Lua_Packet::SetOpcode)
|
||||||
|
.def("GetRawOpcode", &Lua_Packet::GetRawOpcode)
|
||||||
|
.def("SetRawOpcode", &Lua_Packet::SetRawOpcode)
|
||||||
.def("WriteInt8", &Lua_Packet::WriteInt8)
|
.def("WriteInt8", &Lua_Packet::WriteInt8)
|
||||||
.def("WriteInt16", &Lua_Packet::WriteInt16)
|
.def("WriteInt16", &Lua_Packet::WriteInt16)
|
||||||
.def("WriteInt32", &Lua_Packet::WriteInt32)
|
.def("WriteInt32", &Lua_Packet::WriteInt32)
|
||||||
@ -412,7 +446,7 @@ luabind::scope lua_register_packet_opcodes() {
|
|||||||
luabind::value("YellForHelp", static_cast<int>(OP_YellForHelp)),
|
luabind::value("YellForHelp", static_cast<int>(OP_YellForHelp)),
|
||||||
luabind::value("SafePoint", static_cast<int>(OP_SafePoint)),
|
luabind::value("SafePoint", static_cast<int>(OP_SafePoint)),
|
||||||
luabind::value("Buff", static_cast<int>(OP_Buff)),
|
luabind::value("Buff", static_cast<int>(OP_Buff)),
|
||||||
luabind::value("BuffFadeMsg", static_cast<int>(OP_BuffFadeMsg)),
|
luabind::value("ColoredText", static_cast<int>(OP_ColoredText)),
|
||||||
luabind::value("SpecialMesg", static_cast<int>(OP_SpecialMesg)),
|
luabind::value("SpecialMesg", static_cast<int>(OP_SpecialMesg)),
|
||||||
luabind::value("Consent", static_cast<int>(OP_Consent)),
|
luabind::value("Consent", static_cast<int>(OP_Consent)),
|
||||||
luabind::value("ConsentResponse", static_cast<int>(OP_ConsentResponse)),
|
luabind::value("ConsentResponse", static_cast<int>(OP_ConsentResponse)),
|
||||||
@ -809,7 +843,10 @@ luabind::scope lua_register_packet_opcodes() {
|
|||||||
luabind::value("MercenaryDismiss", static_cast<int>(OP_MercenaryDismiss)),
|
luabind::value("MercenaryDismiss", static_cast<int>(OP_MercenaryDismiss)),
|
||||||
luabind::value("MercenaryTimerRequest", static_cast<int>(OP_MercenaryTimerRequest)),
|
luabind::value("MercenaryTimerRequest", static_cast<int>(OP_MercenaryTimerRequest)),
|
||||||
luabind::value("OpenInventory", static_cast<int>(OP_OpenInventory)),
|
luabind::value("OpenInventory", static_cast<int>(OP_OpenInventory)),
|
||||||
luabind::value("OpenContainer", static_cast<int>(OP_OpenContainer))
|
luabind::value("OpenContainer", static_cast<int>(OP_OpenContainer)),
|
||||||
|
luabind::value("Marquee", static_cast<int>(OP_Marquee)),
|
||||||
|
luabind::value("ClientTimeStamp", static_cast<int>(OP_ClientTimeStamp)),
|
||||||
|
luabind::value("GuildPromote", static_cast<int>(OP_GuildPromote))
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -21,6 +21,7 @@ public:
|
|||||||
Lua_Packet() : Lua_Ptr(nullptr), owned_(false) { }
|
Lua_Packet() : Lua_Ptr(nullptr), owned_(false) { }
|
||||||
Lua_Packet(EQApplicationPacket *d) : Lua_Ptr(d), owned_(false) { }
|
Lua_Packet(EQApplicationPacket *d) : Lua_Ptr(d), owned_(false) { }
|
||||||
Lua_Packet(int opcode, int size);
|
Lua_Packet(int opcode, int size);
|
||||||
|
Lua_Packet(int opcode, int size, bool raw);
|
||||||
Lua_Packet& operator=(const Lua_Packet& o);
|
Lua_Packet& operator=(const Lua_Packet& o);
|
||||||
Lua_Packet(const Lua_Packet& o);
|
Lua_Packet(const Lua_Packet& o);
|
||||||
virtual ~Lua_Packet() { if(owned_) { EQApplicationPacket *ptr = GetLuaPtrData(); if(ptr) { delete ptr; } } }
|
virtual ~Lua_Packet() { if(owned_) { EQApplicationPacket *ptr = GetLuaPtrData(); if(ptr) { delete ptr; } } }
|
||||||
@ -28,6 +29,8 @@ public:
|
|||||||
int GetSize();
|
int GetSize();
|
||||||
int GetOpcode();
|
int GetOpcode();
|
||||||
void SetOpcode(int op);
|
void SetOpcode(int op);
|
||||||
|
int GetRawOpcode();
|
||||||
|
void SetRawOpcode(int op);
|
||||||
void WriteInt8(int offset, int value);
|
void WriteInt8(int offset, int value);
|
||||||
void WriteInt16(int offset, int value);
|
void WriteInt16(int offset, int value);
|
||||||
void WriteInt32(int offset, int value);
|
void WriteInt32(int offset, int value);
|
||||||
|
|||||||
@ -526,7 +526,7 @@ public:
|
|||||||
|
|
||||||
|
|
||||||
//More stuff to sort:
|
//More stuff to sort:
|
||||||
virtual bool IsRaidTarget() { return false; };
|
virtual bool IsRaidTarget() const { return false; };
|
||||||
virtual bool IsAttackAllowed(Mob *target, bool isSpellAttack = false);
|
virtual bool IsAttackAllowed(Mob *target, bool isSpellAttack = false);
|
||||||
bool IsTargeted() const { return (targeted > 0); }
|
bool IsTargeted() const { return (targeted > 0); }
|
||||||
inline void IsTargeted(int in_tar) { targeted += in_tar; if(targeted < 0) targeted = 0;}
|
inline void IsTargeted(int in_tar) { targeted += in_tar; if(targeted < 0) targeted = 0;}
|
||||||
|
|||||||
@ -2860,7 +2860,6 @@ bool Mob::SpellEffect(Mob* caster, uint16 spell_id, float partial)
|
|||||||
case SE_HealRate:
|
case SE_HealRate:
|
||||||
case SE_SkillDamageTaken:
|
case SE_SkillDamageTaken:
|
||||||
case SE_FcSpellVulnerability:
|
case SE_FcSpellVulnerability:
|
||||||
case SE_SpellTrigger:
|
|
||||||
case SE_FcTwincast:
|
case SE_FcTwincast:
|
||||||
case SE_DelayDeath:
|
case SE_DelayDeath:
|
||||||
case SE_CastOnFadeEffect:
|
case SE_CastOnFadeEffect:
|
||||||
|
|||||||
@ -4720,8 +4720,8 @@ void Client::MakeBuffFadePacket(uint16 spell_id, int slot_id, bool send_message)
|
|||||||
if(send_message)
|
if(send_message)
|
||||||
{
|
{
|
||||||
const char *fadetext = spells[spell_id].spell_fades;
|
const char *fadetext = spells[spell_id].spell_fades;
|
||||||
outapp = new EQApplicationPacket(OP_BuffFadeMsg, sizeof(BuffFadeMsg_Struct) + strlen(fadetext));
|
outapp = new EQApplicationPacket(OP_ColoredText, sizeof(ColoredText_Struct) + strlen(fadetext));
|
||||||
BuffFadeMsg_Struct *bfm = (BuffFadeMsg_Struct *) outapp->pBuffer;
|
ColoredText_Struct *bfm = (ColoredText_Struct *) outapp->pBuffer;
|
||||||
bfm->color = MT_Spells;
|
bfm->color = MT_Spells;
|
||||||
memcpy(bfm->msg, fadetext, strlen(fadetext));
|
memcpy(bfm->msg, fadetext, strlen(fadetext));
|
||||||
QueuePacket(outapp);
|
QueuePacket(outapp);
|
||||||
|
|||||||
@ -1034,8 +1034,11 @@ bool ZoneDatabase::LoadCharacterDisciplines(uint32 character_id, PlayerProfile_S
|
|||||||
"disc_id "
|
"disc_id "
|
||||||
"FROM "
|
"FROM "
|
||||||
"`character_disciplines`"
|
"`character_disciplines`"
|
||||||
"WHERE `id` = %u ORDER BY `disc_id`", character_id);
|
"WHERE `id` = %u ORDER BY `slot_id`", character_id);
|
||||||
auto results = database.QueryDatabase(query); int i = 0;
|
auto results = database.QueryDatabase(query);
|
||||||
|
int i = 0;
|
||||||
|
/* Initialize Disciplines */
|
||||||
|
memset(pp->disciplines.values, 0, (sizeof(pp->disciplines.values[0]) * MAX_PP_DISCIPLINES));
|
||||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||||
if (i < MAX_PP_DISCIPLINES){
|
if (i < MAX_PP_DISCIPLINES){
|
||||||
pp->disciplines.values[i] = atoi(row[0]);
|
pp->disciplines.values[i] = atoi(row[0]);
|
||||||
@ -1148,14 +1151,19 @@ bool ZoneDatabase::LoadCharacterBandolier(uint32 character_id, PlayerProfile_Str
|
|||||||
|
|
||||||
bool ZoneDatabase::LoadCharacterTribute(uint32 character_id, PlayerProfile_Struct* pp){
|
bool ZoneDatabase::LoadCharacterTribute(uint32 character_id, PlayerProfile_Struct* pp){
|
||||||
std::string query = StringFormat("SELECT `tier`, `tribute` FROM `character_tribute` WHERE `id` = %u", character_id);
|
std::string query = StringFormat("SELECT `tier`, `tribute` FROM `character_tribute` WHERE `id` = %u", character_id);
|
||||||
auto results = database.QueryDatabase(query); int i = 0;
|
auto results = database.QueryDatabase(query);
|
||||||
|
int i = 0;
|
||||||
for (i = 0; i < EmuConstants::TRIBUTE_SIZE; i++){
|
for (i = 0; i < EmuConstants::TRIBUTE_SIZE; i++){
|
||||||
pp->tributes[i].tribute = 0;
|
pp->tributes[i].tribute = 0xFFFFFFFF;
|
||||||
pp->tributes[i].tier = 0;
|
pp->tributes[i].tier = 0;
|
||||||
}
|
}
|
||||||
|
i = 0;
|
||||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||||
pp->tributes[i].tier = atoi(row[0]);
|
if(atoi(row[1]) != TRIBUTE_NONE){
|
||||||
pp->tributes[i].tribute = atoi(row[1]);
|
pp->tributes[i].tier = atoi(row[0]);
|
||||||
|
pp->tributes[i].tribute = atoi(row[1]);
|
||||||
|
i++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -1239,18 +1247,21 @@ bool ZoneDatabase::SaveCharacterSkill(uint32 character_id, uint32 skill_id, uint
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool ZoneDatabase::SaveCharacterDisc(uint32 character_id, uint32 slot_id, uint32 disc_id){
|
bool ZoneDatabase::SaveCharacterDisc(uint32 character_id, uint32 slot_id, uint32 disc_id){
|
||||||
std::string query = StringFormat("REPLACE INTO `character_disciplines` (id, slot_id, disc_id) VALUES (%u, %u, %u)", character_id, slot_id, disc_id); auto results = QueryDatabase(query);
|
std::string query = StringFormat("REPLACE INTO `character_disciplines` (id, slot_id, disc_id) VALUES (%u, %u, %u)", character_id, slot_id, disc_id);
|
||||||
|
auto results = QueryDatabase(query);
|
||||||
LogFile->write(EQEMuLog::Debug, "ZoneDatabase::SaveCharacterDisc for character ID: %i, slot:%u disc_id:%u done", character_id, slot_id, disc_id);
|
LogFile->write(EQEMuLog::Debug, "ZoneDatabase::SaveCharacterDisc for character ID: %i, slot:%u disc_id:%u done", character_id, slot_id, disc_id);
|
||||||
ThrowDBError(results.ErrorMessage(), "ZoneDatabase::SaveCharacterDisc", query);
|
ThrowDBError(results.ErrorMessage(), "ZoneDatabase::SaveCharacterDisc", query);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ZoneDatabase::SaveCharacterTribute(uint32 character_id, PlayerProfile_Struct* pp){
|
bool ZoneDatabase::SaveCharacterTribute(uint32 character_id, PlayerProfile_Struct* pp){
|
||||||
std::string query = StringFormat("DELETE FROM `character_tribute` WHERE `id` = %u", character_id); QueryDatabase(query);
|
std::string query = StringFormat("DELETE FROM `character_tribute` WHERE `id` = %u", character_id);
|
||||||
|
QueryDatabase(query);
|
||||||
/* Save Tributes only if we have values... */
|
/* Save Tributes only if we have values... */
|
||||||
for (int i = 0; i < EmuConstants::TRIBUTE_SIZE; i++){
|
for (int i = 0; i < EmuConstants::TRIBUTE_SIZE; i++){
|
||||||
if (pp->tributes[i].tribute > 0 && pp->tributes[i].tribute != 0xffffffffu){
|
if (pp->tributes[i].tribute > 0 && pp->tributes[i].tribute != TRIBUTE_NONE){
|
||||||
std::string query = StringFormat("REPLACE INTO `character_tribute` (id, tier, tribute) VALUES (%u, %u, %u)", character_id, pp->tributes[i].tier, pp->tributes[i].tribute); QueryDatabase(query);
|
std::string query = StringFormat("REPLACE INTO `character_tribute` (id, tier, tribute) VALUES (%u, %u, %u)", character_id, pp->tributes[i].tier, pp->tributes[i].tribute);
|
||||||
|
QueryDatabase(query);
|
||||||
LogFile->write(EQEMuLog::Debug, "ZoneDatabase::SaveCharacterTribute for character ID: %i, tier:%u tribute:%u done", character_id, pp->tributes[i].tier, pp->tributes[i].tribute);
|
LogFile->write(EQEMuLog::Debug, "ZoneDatabase::SaveCharacterTribute for character ID: %i, tier:%u tribute:%u done", character_id, pp->tributes[i].tier, pp->tributes[i].tribute);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user