From ad61eda7e0d4dee0680456aba35c2090df94fb30 Mon Sep 17 00:00:00 2001 From: Trevius Date: Wed, 17 Dec 2014 01:27:30 -0600 Subject: [PATCH] RoF2 fix for being unable to close bags by right clicking or open multiple bags. --- common/eq_packet_structs.h | 10 +- common/patches/rof.cpp | 3 +- common/patches/rof2.cpp | 27 ++--- common/patches/rof2_structs.h | 201 +++++++++++++++++----------------- utils/patches/patch_RoF2.conf | 2 +- 5 files changed, 119 insertions(+), 124 deletions(-) diff --git a/common/eq_packet_structs.h b/common/eq_packet_structs.h index ed62bb183..cec29178d 100644 --- a/common/eq_packet_structs.h +++ b/common/eq_packet_structs.h @@ -1380,19 +1380,19 @@ struct PlayerPositionUpdateServer_Struct struct PlayerPositionUpdateClient_Struct { /*0000*/ uint16 spawn_id; -/*0022*/ uint16 sequence; //increments one each packet +/*0002*/ uint16 sequence; //increments one each packet /*0004*/ float y_pos; // y coord /*0008*/ float delta_z; // Change in z -/*0016*/ float delta_x; // Change in x -/*0012*/ float delta_y; // Change in y +/*0012*/ float delta_x; // Change in x +/*0016*/ float delta_y; // Change in y /*0020*/ int32 animation:10, // animation delta_heading:10, // change in heading padding0020:12; // ***Placeholder (mostly 1) /*0024*/ float x_pos; // x coord /*0028*/ float z_pos; // z coord -/*0034*/ uint16 heading:12, // Directional heading +/*0032*/ uint16 heading:12, // Directional heading padding0004:4; // ***Placeholder -/*0032*/ uint8 unknown0006[2]; // ***Placeholder +/*0034*/ uint8 unknown0006[2]; // ***Placeholder /*0036*/ }; diff --git a/common/patches/rof.cpp b/common/patches/rof.cpp index 1659dbd1c..890fa88aa 100644 --- a/common/patches/rof.cpp +++ b/common/patches/rof.cpp @@ -4878,7 +4878,8 @@ namespace RoF uint16 ornaIcon = 0; int32 heroModel = 0; /* - if (inst->GetOrnamentationAug(ornamentationAugtype)) { + if (inst->GetOrnamentationAug(ornamentationAugtype)) + { const Item_Struct *aug_weap = inst->GetOrnamentationAug(ornamentationAugtype)->GetItem(); //Mainhand ss.write(aug_weap->IDFile, strlen(aug_weap->IDFile)); diff --git a/common/patches/rof2.cpp b/common/patches/rof2.cpp index fbbceda2c..0f66184ee 100644 --- a/common/patches/rof2.cpp +++ b/common/patches/rof2.cpp @@ -1696,6 +1696,8 @@ namespace RoF2 eq->unknown932 = -1; // Set from PoK Example eq->unknown936 = -1; // Set from PoK Example eq->unknown944 = 1.0; // Set from PoK Example + eq->unknown948 = 0; // New on Live as of Dec 15 2014 + eq->unknown952 = 100; // New on Live as of Dec 15 2014 FINISH_ENCODE(); } @@ -2339,7 +2341,6 @@ namespace RoF2 outapp->WriteUInt32(emu->silver_bank); outapp->WriteUInt32(emu->copper_bank); - // Commenting out for RoF Test outapp->WriteUInt32(0); // Unknown outapp->WriteUInt32(0); // Unknown outapp->WriteUInt32(0); // Unknown @@ -2387,12 +2388,7 @@ namespace RoF2 outapp->WriteUInt32(0); // Unknown outapp->WriteUInt32(0); // Unknown - /* - - // Begin RoF2 Test - for (uint32 r = 0; r < 1000; r++) - outapp->WriteUInt8(0); // Unknown - // End RoF2 Test + // Block of 121 unknown bytes for (uint32 r = 0; r < 121; r++) @@ -2408,6 +2404,11 @@ namespace RoF2 outapp->WriteUInt32(0); // Unknown outapp->WriteUInt32(0); // Unknown + // Begin RoF2 Test + //for (uint32 r = 0; r < 8000; r++) + //outapp->WriteUInt8(0); // Unknown + // End RoF2 Test + // Unknown String ? outapp->WriteUInt32(64); // Unknown for (uint32 r = 0; r < 64; r++) @@ -2535,7 +2536,6 @@ namespace RoF2 outapp->WriteUInt32(0); // Unknown outapp->WriteUInt32(0); // Unknown - */ outapp->WriteUInt8(emu->groupAutoconsent); outapp->WriteUInt8(emu->raidAutoconsent); @@ -4860,8 +4860,8 @@ namespace RoF2 hdr.charges = (stackable ? (item->MaxCharges ? 1 : 0) : charges); hdr.inst_nodrop = inst->IsAttuned() ? 1 : 0; hdr.unknown044 = 0; - hdr.unknown048 = 7300 + Inventory::CalcMaterialFromSlot(slot_id_in); //0; - hdr.unknown052 = 7300 + Inventory::CalcMaterialFromSlot(slot_id_in); //0; + hdr.unknown048 = 0; + hdr.unknown052 = 0; hdr.isEvolving = item->EvolvingLevel > 0 ? 1 : 0; ss.write((const char*)&hdr, sizeof(RoF2::structs::ItemSerializationHeader)); @@ -5325,13 +5325,8 @@ namespace RoF2 iqbs.SpellDmg = item->SpellDmg; iqbs.clairvoyance = item->Clairvoyance; iqbs.unknown28 = 0; - - - // Begin RoF2 Test - iqbs.unknown_TEST1 = 0; - // End RoF2 Test - iqbs.unknown30 = 0; + iqbs.unknown37a = 0; iqbs.unknown39 = 1; iqbs.subitem_count = 0; diff --git a/common/patches/rof2_structs.h b/common/patches/rof2_structs.h index 90ea4f287..efd80d0e8 100644 --- a/common/patches/rof2_structs.h +++ b/common/patches/rof2_structs.h @@ -520,72 +520,73 @@ struct ServerZoneEntry_Struct //Adjusted from SEQ Everquest.h Struct //New Zone Struct - Size: 948 struct NewZone_Struct { -/*0000*/ char char_name[64]; // Character Name -/*0064*/ char zone_short_name[32]; // Zone Short Name -/*0096*/ char unknown0096[96]; -/*0192*/ char zone_long_name[278]; // Zone Long Name -/*0470*/ uint8 ztype; // Zone type (usually FF) -/*0471*/ uint8 fog_red[4]; // Zone fog (red) -/*0475*/ uint8 fog_green[4]; // Zone fog (green) -/*0479*/ uint8 fog_blue[4]; // Zone fog (blue) -/*0483*/ uint8 unknown323; -/*0484*/ float fog_minclip[4]; -/*0500*/ float fog_maxclip[4]; -/*0516*/ float gravity; -/*0520*/ uint8 time_type; -/*0521*/ uint8 rain_chance[4]; -/*0525*/ uint8 rain_duration[4]; -/*0529*/ uint8 snow_chance[4]; -/*0533*/ uint8 snow_duration[4]; -/*0537*/ uint8 unknown537[33]; -/*0570*/ uint8 sky; // Sky Type -/*0571*/ uint8 unknown571[13]; // ***Placeholder -/*0584*/ float zone_exp_multiplier; // Experience Multiplier -/*0588*/ float safe_y; // Zone Safe Y -/*0592*/ float safe_x; // Zone Safe X -/*0596*/ float safe_z; // Zone Safe Z -/*0600*/ float min_z; // Guessed - NEW - Seen 0 -/*0604*/ float max_z; // Guessed -/*0608*/ float underworld; // Underworld, min z (Not Sure?) -/*0612*/ float minclip; // Minimum View Distance -/*0616*/ float maxclip; // Maximum View DIstance -/*0620*/ uint8 unknown620[84]; // ***Placeholder -/*0704*/ char zone_short_name2[96]; //zone file name? excludes instance number which can be in previous version. -/*0800*/ int32 unknown800; //seen -1 -/*0804*/ char unknown804[40]; // -/*0844*/ int32 unknown844; //seen 600 -/*0848*/ int32 unknown848; -/*0852*/ uint16 zone_id; -/*0854*/ uint16 zone_instance; -/*0856*/ char unknown856[20]; -/*0876*/ uint32 SuspendBuffs; -/*0880*/ uint32 unknown880; // Seen 50 -/*0884*/ uint32 unknown884; // Seen 10 -/*0888*/ uint8 unknown888; // Seen 1 -/*0889*/ uint8 unknown889; // Seen 0 (POK) or 1 (rujj) -/*0890*/ uint8 unknown890; // Seen 1 -/*0891*/ uint8 unknown891; // Seen 0 -/*0892*/ uint8 unknown892; // Seen 0 -/*0893*/ uint8 unknown893; // Seen 0 - 00 -/*0894*/ uint8 fall_damage; // 0 = Fall Damage on, 1 = Fall Damage off -/*0895*/ uint8 unknown895; // Seen 0 - 00 -/*0896*/ uint32 unknown896; // Seen 180 -/*0900*/ uint32 unknown900; // Seen 180 -/*0904*/ uint32 unknown904; // Seen 180 -/*0908*/ uint32 unknown908; // Seen 2 -/*0912*/ uint32 unknown912; // Seen 2 -/*0916*/ float FogDensity; // Most zones have this set to 0.33 Blightfire had 0.16 -/*0920*/ uint32 unknown920; // Seen 0 -/*0924*/ uint32 unknown924; // Seen 0 -/*0928*/ uint32 unknown928; // Seen 0 -/*0932*/ int32 unknown932; // Seen -1 -/*0936*/ int32 unknown936; // Seen -1 -/*0940*/ uint32 unknown940; // Seen 0 -/*0944*/ float unknown944; // Seen 1.0 -/*0948*/ + /*0000*/ char char_name[64]; // Character Name + /*0064*/ char zone_short_name[32]; // Zone Short Name + /*0096*/ char unknown0096[96]; + /*0192*/ char zone_long_name[278]; // Zone Long Name + /*0470*/ uint8 ztype; // Zone type (usually FF) + /*0471*/ uint8 fog_red[4]; // Zone fog (red) + /*0475*/ uint8 fog_green[4]; // Zone fog (green) + /*0479*/ uint8 fog_blue[4]; // Zone fog (blue) + /*0483*/ uint8 unknown323; + /*0484*/ float fog_minclip[4]; + /*0500*/ float fog_maxclip[4]; + /*0516*/ float gravity; + /*0520*/ uint8 time_type; + /*0521*/ uint8 rain_chance[4]; + /*0525*/ uint8 rain_duration[4]; + /*0529*/ uint8 snow_chance[4]; + /*0533*/ uint8 snow_duration[4]; + /*0537*/ uint8 unknown537[33]; + /*0570*/ uint8 sky; // Sky Type + /*0571*/ uint8 unknown571[13]; // ***Placeholder + /*0584*/ float zone_exp_multiplier; // Experience Multiplier + /*0588*/ float safe_y; // Zone Safe Y + /*0592*/ float safe_x; // Zone Safe X + /*0596*/ float safe_z; // Zone Safe Z + /*0600*/ float min_z; // Guessed - NEW - Seen 0 + /*0604*/ float max_z; // Guessed + /*0608*/ float underworld; // Underworld, min z (Not Sure?) + /*0612*/ float minclip; // Minimum View Distance + /*0616*/ float maxclip; // Maximum View DIstance + /*0620*/ uint8 unknown620[84]; // ***Placeholder + /*0704*/ char zone_short_name2[96]; //zone file name? excludes instance number which can be in previous version. + /*0800*/ int32 unknown800; //seen -1 + /*0804*/ char unknown804[40]; // + /*0844*/ int32 unknown844; //seen 600 + /*0848*/ int32 unknown848; + /*0852*/ uint16 zone_id; + /*0854*/ uint16 zone_instance; + /*0856*/ char unknown856[20]; + /*0876*/ uint32 SuspendBuffs; + /*0880*/ uint32 unknown880; // Seen 50 + /*0884*/ uint32 unknown884; // Seen 10 + /*0888*/ uint8 unknown888; // Seen 1 + /*0889*/ uint8 unknown889; // Seen 0 (POK) or 1 (rujj) + /*0890*/ uint8 unknown890; // Seen 1 + /*0891*/ uint8 unknown891; // Seen 0 + /*0892*/ uint8 unknown892; // Seen 0 + /*0893*/ uint8 unknown893; // Seen 0 - 00 + /*0894*/ uint8 fall_damage; // 0 = Fall Damage on, 1 = Fall Damage off + /*0895*/ uint8 unknown895; // Seen 0 - 00 + /*0896*/ uint32 unknown896; // Seen 180 + /*0900*/ uint32 unknown900; // Seen 180 + /*0904*/ uint32 unknown904; // Seen 180 + /*0908*/ uint32 unknown908; // Seen 2 + /*0912*/ uint32 unknown912; // Seen 2 + /*0916*/ float FogDensity; // Most zones have this set to 0.33 Blightfire had 0.16 + /*0920*/ uint32 unknown920; // Seen 0 + /*0924*/ uint32 unknown924; // Seen 0 + /*0928*/ uint32 unknown928; // Seen 0 + /*0932*/ int32 unknown932; // Seen -1 + /*0936*/ int32 unknown936; // Seen -1 + /*0940*/ uint32 unknown940; // Seen 0 + /*0944*/ float unknown944; // Seen 1.0 + /*0948*/ uint32 unknown948; // Seen 0 - New on Live as of Dec 15 2014 + /*0952*/ uint32 unknown952; // Seen 100 - New on Live as of Dec 15 2014 + /*0956*/ }; - /* ** Memorize Spell Struct ** Length: 16 Bytes @@ -1598,23 +1599,24 @@ struct RespawnWindow_Struct { */ struct PlayerPositionUpdateServer_Struct { - uint16 spawn_id; - uint16 spawnId2; - signed padding0004:12; - signed y_pos:19; // y coord - unsigned padding:1; - signed delta_z:13; // change in z - signed delta_x:13; // change in x - signed padding0008:6; - signed x_pos:19; // x coord - unsigned heading:12; // heading - signed padding0016:1; - signed delta_heading:10; // change in heading - signed z_pos:19; // z coord - signed padding0020:3; - signed animation:10; // animation - signed delta_y:13; // change in y - signed padding0024:9; + /*0000*/ uint16 spawn_id; + /*0002*/ uint16 spawnId2; + /*0004*/ signed padding0004 : 12; + signed y_pos : 19; // y coord + unsigned padding : 1; + /*0008*/ signed delta_z : 13; // change in z + signed delta_x : 13; // change in x + signed padding0008 : 6; + /*0012*/ signed x_pos : 19; // x coord + unsigned heading : 12; // heading + signed padding0016 : 1; + /*0016*/ signed delta_heading : 10; // change in heading + signed z_pos : 19; // z coord + signed padding0020 : 3; + /*0020*/ signed animation : 10; // animation + signed delta_y : 13; // change in y + signed padding0024 : 9; + /*0024*/ }; /* @@ -1625,21 +1627,22 @@ struct PlayerPositionUpdateServer_Struct */ struct PlayerPositionUpdateClient_Struct { - uint16 sequence; // increments one each packet - Verified - uint16 spawn_id; // Player's spawn id - uint8 unknown0004[6]; // ***Placeholder - float delta_x; // Change in x - unsigned heading:12; // Directional heading - unsigned padding0040:20; // ***Placeholder - float x_pos; // x coord (2nd loc value) - float delta_z; // Change in z - float z_pos; // z coord (3rd loc value) - float y_pos; // y coord (1st loc value) - unsigned animation:10; // ***Placeholder - unsigned padding0024:22; // animation - float delta_y; // Change in y - signed delta_heading:10; // change in heading - unsigned padding0041:22; // ***Placeholder + /*0000*/ uint16 sequence; // increments one each packet - Verified + /*0002*/ uint16 spawn_id; // Player's spawn id + /*0004*/ uint8 unknown0004[6]; // ***Placeholder + /*0010*/ float delta_x; // Change in x + /*0014*/ unsigned heading : 12; // Directional heading + unsigned padding0040 : 20; // ***Placeholder + /*0018*/ float x_pos; // x coord (2nd loc value) + /*0022*/ float delta_z; // Change in z + /*0026*/ float z_pos; // z coord (3rd loc value) + /*0030*/ float y_pos; // y coord (1st loc value) + /*0034*/ unsigned animation : 10; // ***Placeholder + unsigned padding0024 : 22; // animation + /*0038*/ float delta_y; // Change in y + /*0042*/ signed delta_heading : 10; // change in heading + unsigned padding0041 : 22; // ***Placeholder + /*0046*/ }; /* @@ -4687,11 +4690,7 @@ struct ItemQuaternaryBodyStruct uint32 unknown37; uint32 unknown_RoF27; uint32 unknown_RoF28; - - // Begin RoF2 Test - uint8 unknown_TEST1; - // End RoF2 Test - + uint8 unknown37a; // (guessed position) New to RoF2 uint8 unknown38; // 0 uint8 unknown39; // 1 uint32 subitem_count; diff --git a/utils/patches/patch_RoF2.conf b/utils/patches/patch_RoF2.conf index d2ed7f651..6bc63253e 100644 --- a/utils/patches/patch_RoF2.conf +++ b/utils/patches/patch_RoF2.conf @@ -257,9 +257,9 @@ OP_MoveDoor=0x08e8 OP_RemoveAllDoors=0x700c OP_EnvDamage=0x51fd OP_BoardBoat=0x4211 -OP_Forage=0x5306 OP_LeaveBoat=0x7617 OP_ControlBoat=0x0ae7 +OP_Forage=0x5306 OP_SafeFallSuccess=0x2219 OP_RezzComplete=0x760d OP_RezzRequest=0x3c21