Merge conflicts

This commit is contained in:
KimLS
2013-05-15 13:22:46 -07:00
616 changed files with 38180 additions and 38954 deletions
+115 -115
View File
@@ -22,7 +22,7 @@ static OpcodeManager *opcodes = nullptr;
static Strategy struct_strategy;
char* SerializeItem(const ItemInst *inst, int16 slot_id, uint32 *length, uint8 depth);
void Register(EQStreamIdentifier &into) {
//create our opcode manager if we havent already
if(opcodes == nullptr) {
@@ -38,37 +38,37 @@ void Register(EQStreamIdentifier &into) {
return;
}
}
//ok, now we have what we need to register.
EQStream::Signature signature;
string pname;
//register our world signature.
pname = 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 = 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
string opfile = "patch_";
@@ -103,7 +103,7 @@ const EQClientVersion Strategy::ClientVersion() const
{
return EQClientRoF;
}
#include "SSDefine.h"
// Converts Titanium Slot IDs to RoF Slot IDs for use in Encodes
@@ -134,7 +134,7 @@ static inline structs::ItemSlotStruct TitaniumToRoFSlot(uint32 TitaniumSlot)
{
RoFSlot.MainSlot += 1;
}
}
/*else if (TitaniumSlot < 51) // Cursor Buffer
{
@@ -430,13 +430,13 @@ ENCODE(OP_TaskHistoryReply)
// Skip past Text2
while(in->ReadUInt8())
++Text2Length;
in->ReadUInt32();
in->ReadUInt32();
in->ReadUInt32();
uint32 ZoneID = in->ReadUInt32();
in->ReadUInt32();
// Skip past Text3
while(in->ReadUInt8())
++Text3Length;
@@ -444,7 +444,7 @@ ENCODE(OP_TaskHistoryReply)
char ZoneNumber[10];
sprintf(ZoneNumber, "%i", ZoneID);
OutboundPacketSize += (24 + Text1Length + 1 + Text2Length + Text3Length + 1 + 7 + (strlen(ZoneNumber) * 2));
}
@@ -478,7 +478,7 @@ ENCODE(OP_TaskHistoryReply)
outapp->WriteUInt32(Text2Length);
in->SetReadPosition(CurrentPosition);
// Copy Text2
while(uint8 c = in->ReadUInt8())
outapp->WriteUInt8(c);
@@ -494,11 +494,11 @@ ENCODE(OP_TaskHistoryReply)
sprintf(ZoneNumber, "%i", ZoneID);
outapp->WriteUInt32(2);
outapp->WriteUInt8(0x2d); // "-"
outapp->WriteUInt8(0x2d); // "-"
outapp->WriteUInt8(0x31); // "1"
outapp->WriteUInt32(2);
outapp->WriteUInt8(0x2d); // "-"
outapp->WriteUInt8(0x2d); // "-"
outapp->WriteUInt8(0x31); // "1"
outapp->WriteString(ZoneNumber);
@@ -509,7 +509,7 @@ ENCODE(OP_TaskHistoryReply)
outapp->WriteUInt8(c);
outapp->WriteUInt8(0); // Text3 has a null terminator
outapp->WriteUInt8(0x31); // "1"
outapp->WriteString(ZoneNumber);
}
@@ -565,7 +565,7 @@ ENCODE(OP_OpenNewTasksWindow) {
EQApplicationPacket *in = *p;
*p = nullptr;
unsigned char *__emu_buffer = in->pBuffer;
__emu_AvailableTaskHeader = (AvailableTaskHeader_Struct*)__emu_buffer;
@@ -601,7 +601,7 @@ ENCODE(OP_OpenNewTasksWindow) {
__eq_AvailableTaskData1->TaskID = __emu_AvailableTaskData1->TaskID;
// This next unknown seems to affect the colour of the task title. 0x3f80000 is what I have seen
// in RoF packets. Changing it to 0x3f000000 makes the title red.
__eq_AvailableTaskData1->unknown1 = 0x3f800000;
__eq_AvailableTaskData1->unknown1 = 0x3f800000;
__eq_AvailableTaskData1->TimeLimit = __emu_AvailableTaskData1->TimeLimit;
__eq_AvailableTaskData1->unknown2 = __emu_AvailableTaskData1->unknown2;
@@ -660,7 +660,7 @@ ENCODE(OP_OpenNewTasksWindow) {
}
delete[] __emu_buffer;
dest->FastQueuePacket(&in, ack_req);
}
*/
@@ -668,8 +668,8 @@ ENCODE(OP_OpenNewTasksWindow) {
ENCODE(OP_SendCharInfo) {
ENCODE_LENGTH_EXACT(CharacterSelect_Struct);
SETUP_VAR_ENCODE(CharacterSelect_Struct);
//EQApplicationPacket *packet = *p;
//const CharacterSelect_Struct *emu = (CharacterSelect_Struct *) packet->pBuffer;
@@ -688,10 +688,10 @@ ENCODE(OP_SendCharInfo) {
+ namelen;
ALLOC_VAR_ENCODE(structs::CharacterSelect_Struct, total_length);
//unsigned char *eq_buffer = new unsigned char[total_length];
//structs::CharacterSelect_Struct *eq_head = (structs::CharacterSelect_Struct *) eq_buffer;
eq->char_count = char_count;
//eq->total_chars = 10;
@@ -747,9 +747,9 @@ ENCODE(OP_SendCharInfo) {
}
bufptr += sizeof(structs::CharacterSelectEntry_Struct);
}
FINISH_ENCODE();
}
ENCODE(OP_ZoneServerInfo) {
@@ -780,10 +780,10 @@ ENCODE(OP_SendZonepoints) {
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 5 is for Live
if (emu->clientver <= 5 )
@@ -869,9 +869,9 @@ ENCODE(OP_PlayerProfile)
outapp->WriteUInt8(emu->level); // Level
outapp->WriteUInt8(emu->level); // Level1
outapp->WriteUInt32(5); // Bind count
for(int r = 0; r < 5; r++)
{
outapp->WriteUInt32(emu->binds[r].zoneId);
@@ -885,7 +885,7 @@ ENCODE(OP_PlayerProfile)
outapp->WriteUInt32(emu->intoxication);
outapp->WriteUInt32(10); // Unknown count
for(int r = 0; r < 10; r++)
{
outapp->WriteUInt32(0); // Unknown
@@ -1072,7 +1072,7 @@ ENCODE(OP_PlayerProfile)
}
outapp->WriteUInt32(structs::MAX_PP_SPELLBOOK); // Spellbook slots
for(uint32 r = 0; r < MAX_PP_SPELLBOOK; r++)
{
outapp->WriteUInt32(emu->spell_book[r]);
@@ -1469,7 +1469,7 @@ ENCODE(OP_PlayerProfile)
outapp->WriteUInt32(emu->air_remaining); // ?
// PVP Stats
outapp->WriteUInt32(emu->PVPKills);
outapp->WriteUInt32(emu->PVPDeaths);
outapp->WriteUInt32(emu->PVPCurrentPoints);
@@ -1479,7 +1479,7 @@ ENCODE(OP_PlayerProfile)
outapp->WriteUInt32(emu->PVPCurrentKillStreak);
// Last PVP Kill
outapp->WriteString(emu->PVPLastKill.Name);
outapp->WriteUInt32(emu->PVPLastKill.Level);
outapp->WriteUInt32(emu->PVPLastKill.Race);
@@ -1489,7 +1489,7 @@ ENCODE(OP_PlayerProfile)
outapp->WriteUInt32(emu->PVPLastKill.Points);
// Last PVP Death
outapp->WriteString(emu->PVPLastDeath.Name);
outapp->WriteUInt32(emu->PVPLastDeath.Level);
outapp->WriteUInt32(emu->PVPLastDeath.Race);
@@ -1555,7 +1555,7 @@ ENCODE(OP_PlayerProfile)
outapp->size = outapp->GetWritePosition();
outapp->SetWritePosition(4);
outapp->WriteUInt32(outapp->size - 9);
CRC32::SetEQChecksum(outapp->pBuffer, outapp->size - 1, 8);
//_hex(NET__ERROR, outapp->pBuffer, outapp->size);
@@ -1601,7 +1601,7 @@ ENCODE(OP_NewZone) {
OUT(SuspendBuffs);
eq->FogDensity = emu->fog_density;
/*fill in some unknowns with observed values, hopefully it will help */
eq->unknown800 = -1;
eq->unknown844 = 600;
@@ -1684,7 +1684,7 @@ ENCODE(OP_PetBuffWindow)
__packet->size = sz;
__packet->pBuffer = new unsigned char[sz];
memset(__packet->pBuffer, 0, sz);
__packet->WriteUInt32(emu->petid);
__packet->WriteUInt32(0); // PlayerID ?
__packet->WriteUInt8(1); // 1 indicates all buffs on the pet (0 to add or remove a single buff)
@@ -1698,7 +1698,7 @@ ENCODE(OP_PetBuffWindow)
__packet->WriteUInt32(emu->spellid[i]);
__packet->WriteUInt32(emu->ticsremaining[i]);
__packet->WriteUInt32(0); // Unknown
__packet->WriteString("");
__packet->WriteString("");
}
}
__packet->WriteUInt8(0); // Unknown
@@ -1744,7 +1744,7 @@ ENCODE(OP_Barter)
delete[] __emu_buffer;
dest->FastQueuePacket(&in, ack_req);
}
ENCODE(OP_BazaarSearch)
@@ -1808,11 +1808,11 @@ 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) {
@@ -1821,7 +1821,7 @@ ENCODE(OP_ZoneSpawns)
return;
}
//_log(NET__STRUCTS, "Spawn name is [%s]", emu->name);
emu = (Spawn_Struct *) __emu_buffer;
@@ -1830,7 +1830,7 @@ ENCODE(OP_ZoneSpawns)
char *Buffer = (char *) in->pBuffer, *BufferStart;
int r;
int k;
for(r = 0; r < entrycount; r++, emu++) {
@@ -1848,7 +1848,7 @@ ENCODE(OP_ZoneSpawns)
if(strlen(emu->suffix))
PacketSize += strlen(emu->suffix) + 1;
bool ShowName = 1;
if(emu->bodytype >= 66)
{
@@ -1902,7 +1902,7 @@ ENCODE(OP_ZoneSpawns)
Bitfields->targetable = 1;
Bitfields->targetable_with_hotkey = (emu->IsMercenary ? 0 : 1);
Bitfields->showname = ShowName;
// Not currently found
// Bitfields->statue = 0;
// Bitfields->buyer = 0;
@@ -1912,7 +1912,7 @@ ENCODE(OP_ZoneSpawns)
uint8 OtherData = 0;
if(strlen(emu->title))
OtherData = OtherData | 16;
OtherData = OtherData | 16;
if(strlen(emu->suffix))
OtherData = OtherData | 32;
@@ -1949,7 +1949,7 @@ ENCODE(OP_ZoneSpawns)
VARSTRUCT_ENCODE_TYPE(float, Buffer, emu->runspeed);
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, emu->race);
VARSTRUCT_ENCODE_TYPE(uint8, Buffer, 0); // ShowEQ calls this 'Holding'
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, emu->deity);
if(emu->NPC)
@@ -2041,7 +2041,7 @@ ENCODE(OP_ZoneSpawns)
Position->deltaZ = emu->deltaZ;
Buffer += sizeof(structs::Spawn_Struct_Position);
if(strlen(emu->title))
{
VARSTRUCT_ENCODE_STRING(Buffer, emu->title);
@@ -2052,7 +2052,7 @@ ENCODE(OP_ZoneSpawns)
VARSTRUCT_ENCODE_STRING(Buffer, emu->suffix);
}
Buffer += 8;
Buffer += 8;
VARSTRUCT_ENCODE_TYPE(uint8, Buffer, emu->IsMercenary);
VARSTRUCT_ENCODE_STRING(Buffer, "0000000000000000");
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, 0xffffffff);
@@ -2067,7 +2067,7 @@ ENCODE(OP_ZoneSpawns)
//_hex(NET__ERROR, outapp->pBuffer, outapp->size);
dest->FastQueuePacket(&outapp, ack_req);
}
delete in;
}
@@ -2075,7 +2075,7 @@ ENCODE(OP_MercenaryDataResponse) {
//consume the packet
EQApplicationPacket *in = *p;
*p = nullptr;
//store away the emu struct
unsigned char *__emu_buffer = in->pBuffer;
MercenaryMerchantList_Struct *emu = (MercenaryMerchantList_Struct *) __emu_buffer;
@@ -2139,7 +2139,7 @@ ENCODE(OP_MercenaryDataUpdate) {
//consume the packet
EQApplicationPacket *in = *p;
*p = nullptr;
//store away the emu struct
unsigned char *__emu_buffer = in->pBuffer;
MercenaryDataUpdate_Struct *emu = (MercenaryDataUpdate_Struct *) __emu_buffer;
@@ -2219,7 +2219,7 @@ ENCODE(OP_ItemPacket) {
//consume the packet
EQApplicationPacket *in = *p;
*p = nullptr;
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);
@@ -2261,7 +2261,7 @@ ENCODE(OP_CharInventory) {
return;
}
//store away the emu struct
unsigned char *__emu_buffer = in->pBuffer;
@@ -2269,7 +2269,7 @@ ENCODE(OP_CharInventory) {
if(ItemCount == 0 || (in->size % sizeof(InternalSerializedItem_Struct)) != 0) {
_log(NET__STRUCTS, "Wrong size on outbound %s: Got %d, expected multiple of %d",
_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;
@@ -2282,7 +2282,7 @@ ENCODE(OP_CharInventory) {
in->pBuffer = new uchar[4];
*(uint32 *)in->pBuffer = ItemCount;
in->size = 4;
for(int r = 0; r < ItemCount; r++, eq++) {
@@ -2326,42 +2326,42 @@ 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 +
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++;
// Guild ID
buffer += sizeof(uint32);
//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 +
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
);
@@ -2369,12 +2369,12 @@ ENCODE(OP_GuildMemberList) {
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
@@ -2387,7 +2387,7 @@ ENCODE(OP_GuildMemberList) {
}
#define PutFieldN(field) \
e->field = htonl(emu_e->field)
SlideStructString( name, emu_name );
PutFieldN(level);
PutFieldN(banker);
@@ -2404,15 +2404,15 @@ ENCODE(OP_GuildMemberList) {
e->zone_id = htons(emu_e->zone_id);
e->unknown_one2 = htonl(1);
e->unknown04 = 0;
#undef SlideStructString
#undef PutFieldN
e++;
}
}
delete[] __emu_buffer;
@@ -2465,7 +2465,7 @@ ENCODE(OP_GroundSpawn)
in->size = strlen(emu->object_name) + sizeof(Object_Struct) - 1;
in->pBuffer = new unsigned char[in->size];
char *OutBuffer = (char *)in->pBuffer;
VARSTRUCT_ENCODE_TYPE(uint32, OutBuffer, emu->drop_id);
@@ -2484,7 +2484,7 @@ ENCODE(OP_GroundSpawn)
VARSTRUCT_ENCODE_TYPE(int32, OutBuffer, emu->object_type); // Unknown, observed 0x00000014
delete[] __emu_buffer;
dest->FastQueuePacket(&in, ack_req);
}
@@ -2504,7 +2504,7 @@ ENCODE(OP_ClickObjectAction) {
ENCODE(OP_SendMembership) {
ENCODE_LENGTH_EXACT(Membership_Struct);
SETUP_DIRECT_ENCODE(Membership_Struct, structs::Membership_Struct);
eq->membership = emu->membership;
eq->races = emu->races;
eq->classes = emu->classes;
@@ -2677,7 +2677,7 @@ ENCODE(OP_LogServer) {
ENCODE_LENGTH_EXACT(LogServer_Struct);
SETUP_DIRECT_ENCODE(LogServer_Struct, structs::LogServer_Struct);
strncpy(eq->worldshortname, emu->worldshortname, sizeof(eq->worldshortname));
//OUT(enablevoicemacros); // These two are lost, but must be one of the 1s in unknown[249]
//OUT(enablemail);
OUT(enable_pvp);
@@ -3030,7 +3030,7 @@ ENCODE(OP_Stun) {
FINISH_ENCODE();
}
ENCODE(OP_ZonePlayerToBind)
ENCODE(OP_ZonePlayerToBind)
{
ENCODE_LENGTH_ATLEAST(ZonePlayerToBind_Struct);
ZonePlayerToBind_Struct *zps = (ZonePlayerToBind_Struct*)(*p)->pBuffer;
@@ -3083,7 +3083,7 @@ ENCODE(OP_AdventureMerchantSell) {
FINISH_ENCODE();
}
ENCODE(OP_RaidUpdate)
ENCODE(OP_RaidUpdate)
{
EQApplicationPacket *inapp = *p;
*p = nullptr;
@@ -3096,7 +3096,7 @@ ENCODE(OP_RaidUpdate)
EQApplicationPacket *outapp = new EQApplicationPacket(OP_RaidUpdate, sizeof(structs::RaidAddMember_Struct));
structs::RaidAddMember_Struct *add_member = (structs::RaidAddMember_Struct*)outapp->pBuffer;
add_member->raidGen.action = in_add_member->raidGen.action;
add_member->raidGen.parameter = in_add_member->raidGen.parameter;
strn0cpy(add_member->raidGen.leader_name, in_add_member->raidGen.leader_name, 64);
@@ -3173,7 +3173,7 @@ ENCODE(OP_VetRewardsAvaliable)
old_data += sizeof(InternalVeteranReward);
data += sizeof(structs::VeteranReward);
}
dest->FastQueuePacket(&outapp_create);
delete inapp;
}
@@ -3331,7 +3331,7 @@ ENCODE(OP_GroupUpdate)
EQApplicationPacket *in = *p;
GroupJoin_Struct *gjs = (GroupJoin_Struct*)in->pBuffer;
//_log(NET__ERROR, "Received outgoing OP_GroupUpdate with action code %i", gjs->action);
if((gjs->action == groupActLeave) || (gjs->action == groupActDisband))
{
@@ -3377,10 +3377,10 @@ ENCODE(OP_GroupUpdate)
{
// Group Update2
//_log(NET__ERROR, "Struct is GroupUpdate2");
unsigned char *__emu_buffer = in->pBuffer;
GroupUpdate2_Struct *gu2 = (GroupUpdate2_Struct*) __emu_buffer;
//_log(NET__ERROR, "Yourname is %s", gu2->yourname);
int MemberCount = 1;
@@ -3402,7 +3402,7 @@ ENCODE(OP_GroupUpdate)
EQApplicationPacket *outapp = new EQApplicationPacket(OP_GroupUpdateB, PacketLength);
char *Buffer = (char *)outapp->pBuffer;
// Header
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, 0); // Think this should be SpawnID, but it doesn't seem to matter
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, MemberCount);
@@ -3410,7 +3410,7 @@ ENCODE(OP_GroupUpdate)
// Leader
//
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, 0);
VARSTRUCT_ENCODE_STRING(Buffer, gu2->yourname);
VARSTRUCT_ENCODE_TYPE(uint8, Buffer, 0);
@@ -3452,7 +3452,7 @@ ENCODE(OP_GroupUpdate)
GLAAus->NPCMarkerID = gu2->NPCMarkerID;
memcpy(&GLAAus->LeaderAAs, &gu2->leader_aas, sizeof(GLAAus->LeaderAAs));
dest->FastQueuePacket(&outapp);
delete in;
@@ -3490,7 +3490,7 @@ ENCODE(OP_ChannelMessage)
in->size = strlen(emu->sender) + 1 + strlen(emu->targetname) + 1 + strlen(emu->message) + 1 + 36;
in->pBuffer = new unsigned char[in->size];
char *OutBuffer = (char *)in->pBuffer;
VARSTRUCT_ENCODE_STRING(OutBuffer, emu->sender);
@@ -3538,7 +3538,7 @@ ENCODE(OP_GuildsList)
}
InBuffer += 64;
}
PacketSize++; // Appears to be an extra 0x00 at the very end.
in->size = PacketSize;
@@ -3625,7 +3625,7 @@ ENCODE(OP_DzMemberList)
ss.write((const char*)&null_term, sizeof(char));
ss.write((const char*)&emu->entries[i].status, sizeof(char));
}
__packet->size = ss.str().length();
__packet->pBuffer = new unsigned char[__packet->size];
memcpy(__packet->pBuffer, ss.str().c_str(), __packet->size);
@@ -3682,7 +3682,7 @@ ENCODE(OP_DzLeaderStatus)
ss.write((const char*)&client_id, sizeof(uint32));
ss.write((const char*)&client_id, sizeof(uint32));//1
ss.write((const char*)&client_id, sizeof(uint32));
__packet->size = ss.str().length();
__packet->pBuffer = new unsigned char[__packet->size];
memcpy(__packet->pBuffer, ss.str().c_str(), __packet->size);
@@ -3708,7 +3708,7 @@ ENCODE(OP_BuffCreate)
__packet->size = sz;
__packet->pBuffer = new unsigned char[sz];
memset(__packet->pBuffer, 0, sz);
__packet->WriteUInt32(emu->entity_id);
__packet->WriteUInt32(0); // PlayerID ?
__packet->WriteUInt8(1); // 1 indicates all buffs on the player (0 to add or remove a single buff)
@@ -3727,7 +3727,7 @@ ENCODE(OP_BuffCreate)
__packet->WriteUInt32(emu->entries[i].spell_id);
__packet->WriteUInt32(emu->entries[i].tics_remaining);
__packet->WriteUInt32(0); // Unknown
__packet->WriteString("");
__packet->WriteString("");
}
__packet->WriteUInt8(0); // Unknown
@@ -3779,7 +3779,7 @@ ENCODE(OP_SpawnAppearance)
dest->FastQueuePacket(&in, ack_req);
return;
}
EQApplicationPacket *outapp = new EQApplicationPacket(OP_ChangeSize, sizeof(ChangeSize_Struct));
ChangeSize_Struct *css = (ChangeSize_Struct *)outapp->pBuffer;
@@ -3790,7 +3790,7 @@ ENCODE(OP_SpawnAppearance)
css->Unknown12 = 1.0f;
dest->FastQueuePacket(&outapp, ack_req);
delete in;
}
@@ -3857,7 +3857,7 @@ ENCODE(OP_RespondAA) {
FINISH_ENCODE();
}
ENCODE(OP_AltCurrencySell)
ENCODE(OP_AltCurrencySell)
{
ENCODE_LENGTH_EXACT(AltCurrencySellItem_Struct);
SETUP_DIRECT_ENCODE(AltCurrencySellItem_Struct, structs::AltCurrencySellItem_Struct);
@@ -3880,7 +3880,7 @@ ENCODE(OP_AltCurrency)
if(opcode == 8) {
AltCurrencyPopulate_Struct *populate = (AltCurrencyPopulate_Struct*)emu_buffer;
EQApplicationPacket *outapp = new EQApplicationPacket(OP_AltCurrency, sizeof(structs::AltCurrencyPopulate_Struct)
EQApplicationPacket *outapp = new EQApplicationPacket(OP_AltCurrency, sizeof(structs::AltCurrencyPopulate_Struct)
+ sizeof(structs::AltCurrencyPopulateEntry_Struct) * populate->count);
structs::AltCurrencyPopulate_Struct *out_populate = (structs::AltCurrencyPopulate_Struct*)outapp->pBuffer;
@@ -4064,7 +4064,7 @@ DECODE(OP_PetCommands)
FINISH_DIRECT_DECODE();
}
DECODE(OP_AltCurrencySellSelection)
DECODE(OP_AltCurrencySellSelection)
{
DECODE_LENGTH_EXACT(structs::AltCurrencySelectItem_Struct);
SETUP_DIRECT_DECODE(AltCurrencySelectItem_Struct, structs::AltCurrencySelectItem_Struct);
@@ -4073,7 +4073,7 @@ DECODE(OP_AltCurrencySellSelection)
FINISH_DIRECT_DECODE();
}
DECODE(OP_AltCurrencySell)
DECODE(OP_AltCurrencySell)
{
DECODE_LENGTH_EXACT(structs::AltCurrencySellItem_Struct);
SETUP_DIRECT_DECODE(AltCurrencySellItem_Struct, structs::AltCurrencySellItem_Struct);
@@ -4094,7 +4094,7 @@ DECODE(OP_ShopRequest) {
FINISH_DIRECT_DECODE();
}
DECODE(OP_GuildRemove)
DECODE(OP_GuildRemove)
{
DECODE_LENGTH_EXACT(structs::GuildCommand_Struct);
SETUP_DIRECT_DECODE(GuildCommand_Struct, structs::GuildCommand_Struct);
@@ -4105,7 +4105,7 @@ DECODE(OP_GuildRemove)
FINISH_DIRECT_DECODE();
}
DECODE(OP_GuildDemote)
DECODE(OP_GuildDemote)
{
DECODE_LENGTH_EXACT(structs::GuildDemoteStruct);
SETUP_DIRECT_DECODE(GuildDemoteStruct, structs::GuildDemoteStruct);
@@ -4144,7 +4144,7 @@ DECODE(OP_InspectRequest) {
/*DECODE(OP_InspectAnswer) {
DECODE_LENGTH_EXACT(structs::InspectResponse_Struct);
SETUP_DIRECT_DECODE(InspectResponse_Struct, structs::InspectResponse_Struct);
IN(TargetID);
IN(playerid);
@@ -4278,7 +4278,7 @@ 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++) {
@@ -4287,7 +4287,7 @@ DECODE(OP_ItemLinkClick) {
// Max Augs is now 6, but no code to support that many yet
IN(link_hash);
IN(icon);
FINISH_DIRECT_DECODE();
}
@@ -4331,7 +4331,7 @@ DECODE(OP_ShopPlayerBuy)
}
DECODE(OP_ClientUpdate) {
// for some odd reason, there is an extra byte on the end of this on occasion..
// for some odd reason, there is an extra byte on the end of this on occasion..
DECODE_LENGTH_ATLEAST(structs::PlayerPositionUpdateClient_Struct);
SETUP_DIRECT_DECODE(PlayerPositionUpdateClient_Struct, structs::PlayerPositionUpdateClient_Struct);
IN(spawn_id);
@@ -4351,7 +4351,7 @@ DECODE(OP_ClientUpdate) {
DECODE(OP_CharacterCreate) {
DECODE_LENGTH_EXACT(structs::CharCreate_Struct);
SETUP_DIRECT_DECODE(CharCreate_Struct, structs::CharCreate_Struct);
IN(gender);
IN(race);
IN(class_);
@@ -4361,7 +4361,7 @@ DECODE(OP_CharacterCreate) {
emu->start_zone = RuleI(World, TutorialZoneID);
else
emu->start_zone = eq->start_zone;
IN(haircolor);
IN(beard);
IN(beardcolor);
@@ -4396,7 +4396,7 @@ DECODE(OP_WhoAllRequest) {
IN(gmlookup);
IN(guildid);
IN(type);
FINISH_DIRECT_DECODE();
}
@@ -4842,7 +4842,7 @@ char* SerializeItem(const ItemInst *inst, int16 slot_id_in, uint32 *length, uint
const Item_Struct *item = inst->GetItem();
//_log(NET__ERROR, "Serialize called for: %s", item->Name);
RoF::structs::ItemSerializationHeader hdr;
//sprintf(hdr.unknown000, "06e0002Y1W00");
@@ -5090,7 +5090,7 @@ char* SerializeItem(const ItemInst *inst, int16 slot_id_in, uint32 *length, uint
//_log(NET__ERROR, "ItemBody tertiary struct is %i bytes", sizeof(RoF::structs::ItemTertiaryBodyStruct));
RoF::structs::ItemTertiaryBodyStruct itbs;
memset(&itbs, 0, sizeof(RoF::structs::ItemTertiaryBodyStruct));
itbs.loregroup = item->LoreGroup;
itbs.artifact = item->ArtifactFlag;
itbs.summonedflag = item->SummonedFlag;
@@ -5306,7 +5306,7 @@ char* SerializeItem(const ItemInst *inst, int16 slot_id_in, uint32 *length, uint
uint32 SubLengths[10];
for(int x = 0; x < 10; ++x) {
SubSerializations[x] = nullptr;
const ItemInst* subitem = ((const ItemInst*)inst)->GetItem(x);