Go Back   EQEmulator Home > EQEmulator Forums > Development > Development::Development

Development::Development Forum for development topics and for those interested in EQEMu development. (Not a support forum)

Reply
 
Thread Tools Display Modes
  #1  
Old 05-14-2009, 08:13 PM
realityincarnate
Developer
 
Join Date: Dec 2007
Posts: 122
Default

Sorry to be the bearer of bad news, but it looks like at least some of the Titanium features are wrong now. I haven't looked into it in depth, but one of my test characters is now bald (no idea what he used to look like, I hadn't looked at him for a while, but I know he had hair), and Arias in gloomingdeep has a beard and combination ponytail/baldness. I know he's never looked right, but he never looked like this either. Those are the only two issues I've seen so far, but I haven't looked much either.
Reply With Quote
  #2  
Old 05-14-2009, 09:38 PM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

Yeah, I am aware that Titanium isn't working perfectly yet. I think it is a structure issue with the spawn struct and maybe the player profile as well. SoF seems to be working perfectly from the limited testing I did so far. The only reason I updated the SVN with this change before it was complete is because there is quite a bit of updating that had to be done to clean some stuff up. The actual change that is affecting Titanium would be easy to back out of if needed, but I am pretty sure I can get it working perfectly and properly as well.

Also, even after the changes go in to correct how this stuff works, people will almost certainly have to do a facechange in game to get their character looking the way that it used to again. I am sure that would be the case if it is actually a structure issue. Though, if it is some other non-structure related issue, then they may not need to. I think as long as NPCs look correct after the change, then the change should be a good fix. I know most NPC settings were pulled directly from EQLive, so for those, they should mimic live appearance exactly. If they don't, then we have something wrong with a structure (which is my best guess to the problem atm).

I think one of the things that might make this change more complex is that it is hard to know which NPCs in the database are exact copies from Live and which were added manually by EQEmu people. Also, the hack that was previously in place may cause some unwanted effects after this code is corrected. Basically, with players, any features that were set to 0 were being converted to 99 and saved and then when they were loaded again, it converted them back from 99 to 0 again. So, since after my change, it no longer converts 99 back to 0 (or the other way around either), anyone who had a feature that should have been set to 0 would now load 99 instead, which is always bald or broken features. This may be the same case for NPCs as well, because it seems like those were all being converted to 255 (0xFF) and saved and then converted from 255 back to 0 when loading them again. There may be a simple solution for NPCs to correct this though. We could probably just run a simple query for each of the feature fields in the npc_types table and convert anything that is set to 255 down to being set to 0 as it should. I haven't really looked too closely at the table to see what is going on with that yet, but I will.

I am pretty confident that we should be able to get this working 100% perfectly for any client without having to use the previous hacks. The only thing that we may need to do special is that we might need to put certain conditions for some of the player races so that they automatically block certain fields from being set. I haven't fully tested that just yet, but I will try to tonight if I have time.

***EDIT***
After looking over my own DB (1.5 year old PEQ included), it seems like most of the feature fields look normal and none of them are set to 255 with the exception of the face field. For some reason, it seems that about have of them have face set to 255. It is possible that this is due to an issue with the code that was previously doing those conversions, but I am not quite sure.
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!

Last edited by trevius; 05-15-2009 at 06:01 AM..
Reply With Quote
  #3  
Old 05-14-2009, 10:36 PM
Shendare
Dragon
 
Join Date: Apr 2009
Location: California
Posts: 814
Default

I can confirm that player characters in both SoF and Titanium are showing bald (and probably incorrect beards, colors, etc.) since the in-game fix to SoF. This appears to be because of the old code that used to change zero values for appearance fields into 99. The characters still have 99 recorded in the fields in the database.

Uncommenting this block of code in worlddb.cpp fixes the problem:

worlddb.cpp - Line 90
Code:
  //*
  if (pp->face == 99)       {cs->face[char_num] = 0;}
  if (pp->eyecolor1 == 99)  {cs->eyecolor1[char_num] = 0;}
  if (pp->eyecolor2 == 99)  {cs->eyecolor2[char_num] = 0;}
  if (pp->hairstyle == 99)  {cs->hairstyle[char_num] = 0;}
  if (pp->haircolor == 99)  {cs->haircolor[char_num] = 0;}
  if (pp->beard == 99)      {cs->beard[char_num] = 0;}
  if (pp->beardcolor == 99) {cs->beardcolor[char_num] = 0;}
  //*/
That will reverse the old 0 -> 99 code. Note that cs->hair[char_num] in the fourth line must be fixed to cs->hairstyle[char_num] for it to compile.

Alternatively, logging the bald character in and using the Face change feature to reset the affected appearance fields permanently fixes the problem.

I couldn't get beard colors to work in Titanium, but beard styles were fine. It's probably a matter of figuring out the correct field location for Titanium beard color in Spawn_Struct and CharSelect.

Also, I didn't see a problem with Arias in Gloomingdeep with Titanium. On my screen, he's a normal brown-haired male human with a moustache, wearing leather armor. He looks the same to me with the SoF client.
Reply With Quote
  #4  
Old 05-14-2009, 10:47 PM
Shendare
Dragon
 
Join Date: Apr 2009
Location: California
Posts: 814
Default

EDIT: After further testing, I have confirmed that beard and beardcolor are reversed in the Titanium Spawn_Struct.

Also, face-based beards (High Elves, Dark Elves, and Half Elves) are not changing color no matter which field you change. I believe this is a limitation with the Titanium client, because even while inside the Face changing window, the beard color won't change, and that doesn't involve the server at all, it's 100% client.
Reply With Quote
  #5  
Old 05-14-2009, 11:32 PM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

Nice find, Shendare! That is exactly what I was suspecting was the issue!

I still have to look into the face-based stuff you are talking about. I am sure we could put in a little piece of code to fix that stuff if it is possible. Can someone else confirm if beard color can be changed with a Titanium client for elves (in any revision of server code)?
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!
Reply With Quote
  #6  
Old 05-15-2009, 03:37 AM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

Ok, I got the new Titanium fixes for beard in on the SVN now. Seems like features are finally working as they should without any hacks. Players will need to adjust their features if they were using features that should have previously been set to 0. This isn't a big deal at all IMO. Takes about 2 seconds to fix.

Guess I will start messing around to see if I can get the new Drakkin Features added. Since they have to be added for both players and NPCs, I guess I will try to do NPCs first and see how that goes, then worry about players next.
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!
Reply With Quote
  #7  
Old 05-15-2009, 07:24 AM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

All Drakkin Specific Features are now in! This includes for both NPCs and PCs! Even Drakkin Corpses seem to appear perfectly after a zone dump.

I didn't really want to have to do this all at one time, but there were so many things to change that I finally just went ahead and did them all so that it finishes it without causing possible issues. As far as I can tell, it seems that there are no issues with this change, but there was so much stuff that I had to change that it is possible something might have gotten messed up. Let's hope not, though!

I wound up saving the new Drakkin features to the player profile after-all. It was just easier for me to figure out and to do it the same as all other facial features were. I also added in the new drakkin_heritage, drakkin_tattoo, and drakkin_details fields to the npc_types table right after luclin_beard.

I tested both SoF and Titanium and now they both seem to be flawless for all player race feature settings and I don't see anymore issues. If there aren't anymore issues, I will be very glad to have this one thing all done with!

Also, I wanted to note that I have not identified the drakkin related fields in the SoF player profile. But, apparently, they aren't even required. It just sends the char info packet that overwrites anything that the PP would send. There are many things in the PP that get ignored by the client due to other packets handling and overriding anything that the PP had sent for them. It wouldn't hurt to identify these fields in the PP for SoF, but unless there is some real reason to do so, I don't think we need to worry about it at all.

Please let me know if anyone is seeing issues with the latest SVN updates in relations to facial features. As mentioned, players will have to redo their looks in game if they have changed. That only needs to be set 1 time, though. Any other issues should be reported here if possible.

Here are some Drakkin examples with different Heritages, Tattoos, and Details:





Big thanks for Shendare for the help

Now with this stuff all working properly, maybe I can figure out what to do to get the illusion function working for all facial features. Once that works, I am going to try to get #fixmob working for all facial features. So, when you spawn a mob, you will be able to quickly and easily cycle through features before saving it to the database. This way you get it set perfectly while in game much quicker than currently possible. It would be nice to get NPC armor tint in there as well, but I probably won't mess with that for a long time.
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!

Last edited by trevius; 05-15-2009 at 03:50 PM..
Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

   

All times are GMT -4. The time now is 07:53 AM.


 

Everquest is a registered trademark of Daybreak Game Company LLC.
EQEmulator is not associated or affiliated in any way with Daybreak Game Company LLC.
Except where otherwise noted, this site is licensed under a Creative Commons License.
       
Powered by vBulletin®, Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3