Resurrection - Fix for RoF + fixed a couple of memory leaks.

This commit is contained in:
Derision
2013-03-15 19:37:29 +00:00
parent a14fecaf78
commit 810fdf3cca
6 changed files with 63 additions and 19 deletions
+37
View File
@@ -3987,6 +3987,24 @@ ENCODE(OP_BeginCast)
FINISH_ENCODE();
}
ENCODE(OP_RezzRequest)
{
SETUP_DIRECT_ENCODE(Resurrect_Struct, structs::Resurrect_Struct);
OUT(zone_id);
OUT(instance_id);
OUT(y);
OUT(x);
OUT(z);
OUT_str(your_name);
OUT_str(rezzer_name);
OUT(spellid);
OUT_str(corpse_name);
OUT(action);
FINISH_ENCODE();
}
DECODE(OP_BuffRemoveRequest)
{
// This is to cater for the fact that short buff box buffs start at 30 as opposed to 25 in prior clients.
@@ -4777,6 +4795,25 @@ DECODE(OP_GuildStatus)
FINISH_DIRECT_DECODE();
}
DECODE(OP_RezzAnswer)
{
DECODE_LENGTH_EXACT(structs::Resurrect_Struct);
SETUP_DIRECT_DECODE(Resurrect_Struct, structs::Resurrect_Struct);
IN(zone_id);
IN(instance_id);
IN(y);
IN(x);
IN(z);
memcpy(emu->your_name, eq->your_name, sizeof(emu->your_name));
memcpy(emu->rezzer_name, eq->rezzer_name, sizeof(emu->rezzer_name));
IN(spellid);
memcpy(emu->corpse_name, eq->corpse_name, sizeof(emu->corpse_name));
IN(action);
FINISH_DIRECT_DECODE();
}
uint32 NextItemInstSerialNumber = 1;
uint32 MaxInstances = 2000000000;
+2
View File
@@ -100,6 +100,7 @@ E(OP_MercenaryDataResponse)
E(OP_GuildMemberUpdate)
E(OP_GMLastName)
E(OP_BeginCast)
E(OP_RezzRequest)
//list of packets we need to decode on the way in:
D(OP_SetServerFilter)
D(OP_CharacterCreate)
@@ -156,5 +157,6 @@ D(OP_GuildRemove)
D(OP_GuildStatus)
D(OP_Trader)
D(OP_GMLastName)
D(OP_RezzAnswer)
#undef E
#undef D
+17 -14
View File
@@ -2792,20 +2792,23 @@ struct Underworld_Struct {
float z;
};
struct Resurrect_Struct {
uint32 unknown00;
uint16 zone_id;
uint16 instance_id;
float y;
float x;
float z;
char your_name[64];
uint32 unknown88;
char rezzer_name[64];
uint32 spellid;
char corpse_name[64];
uint32 action;
/* 228 */
struct Resurrect_Struct
{
/*000*/ uint32 unknown000;
/*004*/ uint16 zone_id;
/*006*/ uint16 instance_id;
/*008*/ float y;
/*012*/ float x;
/*016*/ float z;
/*020*/ uint32 unknown020;
/*024*/ char your_name[64];
/*088*/ uint32 unknown088;
/*092*/ char rezzer_name[64];
/*156*/ uint32 spellid;
/*160*/ char corpse_name[64];
/*224*/ uint32 action;
/*228*/ uint32 unknown228;
/*232*/
};
struct SetRunMode_Struct {