Add decoder for OP_Animation for RoF/RoF2

This commit is contained in:
Michael Cook (mackal) 2015-04-06 21:46:37 -04:00
parent 979590db9f
commit 739a7b6f75
4 changed files with 37 additions and 11 deletions

View File

@ -479,7 +479,7 @@ namespace RoF
eq->slot = 13; eq->slot = 13;
else else
OUT(slot); OUT(slot);
OUT(spell_id); OUT(spell_id);
eq->inventoryslot = ServerToRoFSlot(emu->inventoryslot); eq->inventoryslot = ServerToRoFSlot(emu->inventoryslot);
//OUT(inventoryslot); //OUT(inventoryslot);
@ -702,7 +702,7 @@ namespace RoF
{ {
SETUP_VAR_ENCODE(ExpeditionCompass_Struct); SETUP_VAR_ENCODE(ExpeditionCompass_Struct);
ALLOC_VAR_ENCODE(structs::ExpeditionCompass_Struct, sizeof(structs::ExpeditionInfo_Struct) + sizeof(structs::ExpeditionCompassEntry_Struct) * emu->count); ALLOC_VAR_ENCODE(structs::ExpeditionCompass_Struct, sizeof(structs::ExpeditionInfo_Struct) + sizeof(structs::ExpeditionCompassEntry_Struct) * emu->count);
OUT(count); OUT(count);
for (uint32 i = 0; i < emu->count; ++i) for (uint32 i = 0; i < emu->count; ++i)
@ -1249,7 +1249,7 @@ namespace RoF
switch (emu_e->rank) { switch (emu_e->rank) {
case 0: { e->rank = htonl(5); break; } // GUILD_MEMBER 0 case 0: { e->rank = htonl(5); break; } // GUILD_MEMBER 0
case 1: { e->rank = htonl(3); break; } // GUILD_OFFICER 1 case 1: { e->rank = htonl(3); break; } // GUILD_OFFICER 1
case 2: { e->rank = htonl(1); break; } // GUILD_LEADER 2 case 2: { e->rank = htonl(1); break; } // GUILD_LEADER 2
default: { e->rank = htonl(emu_e->rank); break; } // GUILD_NONE default: { e->rank = htonl(emu_e->rank); break; } // GUILD_NONE
} }
@ -2989,7 +2989,7 @@ namespace RoF
eq_cse->Enabled = emu_cse->Enabled; eq_cse->Enabled = emu_cse->Enabled;
eq_cse->LastLogin = emu_cse->LastLogin; eq_cse->LastLogin = emu_cse->LastLogin;
eq_cse->Unknown2 = emu_cse->Unknown2; eq_cse->Unknown2 = emu_cse->Unknown2;
emu_ptr += sizeof(CharacterSelectEntry_Struct); emu_ptr += sizeof(CharacterSelectEntry_Struct);
eq_ptr += sizeof(structs::CharacterSelectEntry_Struct); eq_ptr += sizeof(structs::CharacterSelectEntry_Struct);
} }
@ -3046,7 +3046,7 @@ namespace RoF
switch (emu->Rank) { switch (emu->Rank) {
case 0: { eq->Rank = 5; break; } // GUILD_MEMBER 0 case 0: { eq->Rank = 5; break; } // GUILD_MEMBER 0
case 1: { eq->Rank = 3; break; } // GUILD_OFFICER 1 case 1: { eq->Rank = 3; break; } // GUILD_OFFICER 1
case 2: { eq->Rank = 1; break; } // GUILD_LEADER 2 case 2: { eq->Rank = 1; break; } // GUILD_LEADER 2
default: { eq->Rank = emu->Rank; break; } default: { eq->Rank = emu->Rank; break; }
} }
@ -3313,7 +3313,7 @@ namespace RoF
delete[] __emu_buffer; delete[] __emu_buffer;
dest->FastQueuePacket(&in, ack_req); dest->FastQueuePacket(&in, ack_req);
#if 0 // original code #if 0 // original code
EQApplicationPacket *in = *p; EQApplicationPacket *in = *p;
*p = nullptr; *p = nullptr;
@ -3777,7 +3777,7 @@ namespace RoF
} }
ENCODE(OP_ZoneEntry) { ENCODE_FORWARD(OP_ZoneSpawns); } ENCODE(OP_ZoneEntry) { ENCODE_FORWARD(OP_ZoneSpawns); }
ENCODE(OP_ZonePlayerToBind) ENCODE(OP_ZonePlayerToBind)
{ {
SETUP_VAR_ENCODE(ZonePlayerToBind_Struct); SETUP_VAR_ENCODE(ZonePlayerToBind_Struct);
@ -3968,8 +3968,8 @@ namespace RoF
switch (emu->guildrank) { switch (emu->guildrank) {
case 0: { VARSTRUCT_ENCODE_TYPE(uint32, Buffer, 5); break; } // GUILD_MEMBER 0 case 0: { VARSTRUCT_ENCODE_TYPE(uint32, Buffer, 5); break; } // GUILD_MEMBER 0
case 1: { VARSTRUCT_ENCODE_TYPE(uint32, Buffer, 3); break; } // GUILD_OFFICER 1 case 1: { VARSTRUCT_ENCODE_TYPE(uint32, Buffer, 3); break; } // GUILD_OFFICER 1
case 2: { VARSTRUCT_ENCODE_TYPE(uint32, Buffer, 1); break; } // GUILD_LEADER 2 case 2: { VARSTRUCT_ENCODE_TYPE(uint32, Buffer, 1); break; } // GUILD_LEADER 2
default: { VARSTRUCT_ENCODE_TYPE(uint32, Buffer, emu->guildrank); break; } // default: { VARSTRUCT_ENCODE_TYPE(uint32, Buffer, emu->guildrank); break; } //
} }
} }
@ -4118,6 +4118,18 @@ namespace RoF
FINISH_DIRECT_DECODE(); FINISH_DIRECT_DECODE();
} }
DECODE(OP_Animation)
{
DECODE_LENGTH_EXACT(structs::Animation_Struct);
SETUP_DIRECT_DECODE(Animation_Struct, structs::Animation_Struct);
IN(spawnid);
IN(action);
IN(speed);
FINISH_DIRECT_DECODE();
}
DECODE(OP_ApplyPoison) DECODE(OP_ApplyPoison)
{ {
DECODE_LENGTH_EXACT(structs::ApplyPoison_Struct); DECODE_LENGTH_EXACT(structs::ApplyPoison_Struct);
@ -4230,7 +4242,7 @@ namespace RoF
emu->slot = 10; emu->slot = 10;
else else
IN(slot); IN(slot);
IN(spell_id); IN(spell_id);
emu->inventoryslot = RoFToServerSlot(eq->inventoryslot); emu->inventoryslot = RoFToServerSlot(eq->inventoryslot);
//IN(inventoryslot); //IN(inventoryslot);
@ -5105,7 +5117,7 @@ namespace RoF
hdrf.ItemClass = item->ItemClass; hdrf.ItemClass = item->ItemClass;
ss.write((const char*)&hdrf, sizeof(RoF::structs::ItemSerializationHeaderFinish)); ss.write((const char*)&hdrf, sizeof(RoF::structs::ItemSerializationHeaderFinish));
if (strlen(item->Name) > 0) if (strlen(item->Name) > 0)
{ {
ss.write(item->Name, strlen(item->Name)); ss.write(item->Name, strlen(item->Name));

View File

@ -4269,6 +4269,18 @@ namespace RoF2
FINISH_DIRECT_DECODE(); FINISH_DIRECT_DECODE();
} }
DECODE(OP_Animation)
{
DECODE_LENGTH_EXACT(structs::Animation_Struct);
SETUP_DIRECT_DECODE(Animation_Struct, structs::Animation_Struct);
IN(spawnid);
IN(action);
IN(speed);
FINISH_DIRECT_DECODE();
}
DECODE(OP_ApplyPoison) DECODE(OP_ApplyPoison)
{ {
DECODE_LENGTH_EXACT(structs::ApplyPoison_Struct); DECODE_LENGTH_EXACT(structs::ApplyPoison_Struct);

View File

@ -124,6 +124,7 @@ E(OP_ZoneSpawns)
D(OP_AdventureMerchantSell) D(OP_AdventureMerchantSell)
D(OP_AltCurrencySell) D(OP_AltCurrencySell)
D(OP_AltCurrencySellSelection) D(OP_AltCurrencySellSelection)
D(OP_Animation)
D(OP_ApplyPoison) D(OP_ApplyPoison)
D(OP_AugmentInfo) D(OP_AugmentInfo)
D(OP_AugmentItem) D(OP_AugmentItem)

View File

@ -109,6 +109,7 @@ E(OP_ZoneSpawns)
D(OP_AdventureMerchantSell) D(OP_AdventureMerchantSell)
D(OP_AltCurrencySell) D(OP_AltCurrencySell)
D(OP_AltCurrencySellSelection) D(OP_AltCurrencySellSelection)
D(OP_Animation)
D(OP_ApplyPoison) D(OP_ApplyPoison)
D(OP_AugmentInfo) D(OP_AugmentInfo)
D(OP_AugmentItem) D(OP_AugmentItem)