| runlvlzero | 
			06-23-2013 03:54 PM | 
		 
		 
		 
		
			Show Helm Reset on Zone   
		
		
		The bug: Show my helm resets upon zoning, forcing the player to re-click it every time they zone. 
The Fix: Below
 
So I did a quick search and found the code to fix this. I am going to link it here in case you would like to see what the changes are. It can probably done for P99 and R99 codebase.
 
Check it out =)
 http://www.eqemulator.org/forums/showthread.php?t=27954
	Code: 
	
 Index: common/eq_constants.h 
=================================================================== 
--- common/eq_constants.h        (revision 438) 
+++ common/eq_constants.h        (working copy) 
@@ -148,6 +148,7 @@ 
 #define AT_Split                        28        // 0 = normal, 1 = autosplit on 
 #define AT_Size                                29        // spawn's size 
 #define AT_NPCName                31        // change PC's name's color to NPC color 0 = normal, 1 = npc name 
+#define AT_ShowHelm        43        // 0 = do not show helmet graphic, 1 = show graphic 
 //#define AT_Trader                        300  // Bazzar Trader Mode 
  
 // solar: animations for AT_Anim 
Index: common/eq_packet_structs.h 
=================================================================== 
--- common/eq_packet_structs.h        (revision 438) 
+++ common/eq_packet_structs.h        (working copy) 
@@ -876,7 +876,7 @@ 
 /*7080*/        sint32                                ldon_points_available; 
 /*7084*/        uint8                                unknown5940[112]; 
 /*7196*/        uint32                                tribute_time_remaining;        //in miliseconds 
-/*7200*/        uint32                                unknown6048; 
+/*7200*/        uint32                                showhelm; 
 /*7204*/        uint32                                career_tribute_points; 
 /*7208*/        uint32                                unknown6056; 
 /*7212*/        uint32                                tribute_points; 
Index: common/patches/SoF.cpp 
=================================================================== 
--- common/patches/SoF.cpp        (revision 438) 
+++ common/patches/SoF.cpp        (working copy) 
@@ -586,8 +586,7 @@ 
         OUT(raidAutoconsent); 
         OUT(guildAutoconsent); 
 //        OUT(unknown19575[5]); 
-//        OUT(showhelm); 
-        eq->showhelm = 1; 
+        eq->showhelm = emu->showhelm; 
         OUT(RestTimer); 
 //        OUT(unknown19584[4]); 
 //        OUT(unknown19588); 
Index: common/patches/Titanium.cpp 
=================================================================== 
--- common/patches/Titanium.cpp        (revision 438) 
+++ common/patches/Titanium.cpp        (working copy) 
@@ -382,8 +382,7 @@ 
         OUT(raidAutoconsent); 
         OUT(guildAutoconsent); 
 //        OUT(unknown19575[5]); 
-//        OUT(showhelm); 
-        eq->showhelm = 1; 
+        eq->showhelm = emu->showhelm; 
 //        OUT(unknown19584[4]); 
 //        OUT(unknown19588); 
  
@@ -470,7 +469,7 @@ 
 //                eq->padding0070 = emu->padding0070; 
                 eq->eyecolor1 = emu->eyecolor1; 
 //                eq->unknown0115[24] = emu->unknown0115[24]; 
-                eq->showhelm = true; 
+                eq->showhelm = emu->showhelm; 
 //                eq->unknown0140[4] = emu->unknown0140[4]; 
                 eq->is_npc = emu->is_npc; 
                 eq->hairstyle = emu->hairstyle; 
Index: zone/client.cpp 
=================================================================== 
--- zone/client.cpp        (revision 438) 
+++ zone/client.cpp        (working copy) 
@@ -1579,6 +1579,7 @@ 
         } 
         ns->spawn.size                        = 0; // Changing size works, but then movement stops! (wth?) 
         ns->spawn.runspeed                = (gmspeed == 0) ? runspeed : 3.125f; 
+        if (!m_pp.showhelm) ns->spawn.showhelm = 0; 
  
         // @merth: pp also hold this info; should we pull from there or inventory? 
         // (update: i think pp should do it, as this holds LoY dye - plus, this is ugly code with Inventory!) 
Index: zone/client_packet.cpp 
=================================================================== 
--- zone/client_packet.cpp        (revision 438) 
+++ zone/client_packet.cpp        (working copy) 
@@ -2083,6 +2083,10 @@ 
                 // don't do anything with this, we tell the client when it's 
                 // levitating, not the other way around 
         } 
+        else if (sa->type == AT_ShowHelm)  
+        { 
+                m_pp.showhelm = (sa->parameter == 1); 
+        } 
         else { 
                 cout << "Unknown SpawnAppearance type: 0x" << hex << setw(4) << setfill('0') << sa->type << dec 
                         << " value: 0x" << hex << setw(8) << setfill('0') << sa->parameter << dec << endl; 
Index: zone/mob.cpp 
=================================================================== 
--- zone/mob.cpp        (revision 438) 
+++ zone/mob.cpp        (working copy) 
@@ -713,8 +713,8 @@ 
         ns->spawn.findable        = findable?1:0; 
 // vesuvias - appearence fix 
         ns->spawn.light                = light; 
+        ns->spawn.showhelm = 1;         
  
- 
         ns->spawn.invis                = (invisible || hidden) ? 1 : 0;        // TODO: load this before spawning players 
         ns->spawn.NPC                = IsClient() ? 0 : 1; 
         ns->spawn.petOwnerId        = ownerid; 
 ***Note its the second submission that is the patch that works.
I would very much appreciate this fix. I play a class/race that I like but do not enjoy the helm graphics on. Little and generally (I'm assuming) easy to fix details like this go a long way towards player immersion. In my perspective its a priority issue that affects red and blue equally.
 
Thanks.  
	 |