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

Development::Bug Reports Post detailed bug reports and what you would like to see next in the emu here.

Reply
 
Thread Tools Display Modes
  #1  
Old 09-22-2009, 10:44 AM
Davood
Discordant
 
Join Date: Jan 2005
Posts: 488
Default

ok after some testing;

it looks like the BASE HP and the HP from stamina is not being sent to the client when the cilent is over 75. The hp on the server side is fine however....

is the client handling the hp differently over 75?!?!

Keep in mind, we are talking SoF client
__________________
----------
Demon Overlord of Alakamin
skype @ davoodinator
Reply With Quote
  #2  
Old 09-28-2009, 10:15 PM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

Yeah, it is the SoF client, but the eqgame.exe version that was used for SoF was actually released on Live over a month before SoF actually came out. So, since the cap was still level 75 at that time, maybe they had the client limited to not calculate base HPs/Mana/End above that level yet. I am guessing they have some if statement in there that says:

Code:
if (level > 75)
{
  BaseHP = 5;
  BaseEnd = 5;
  BaseMana = 5;
}
That is my guess as to what the client is doing, NOT what the EQEmu server is doing. The EQEmu server calculates stats just fine for post 75, but the SoF client isn't so friendly about it. So, while SoF fixed the issue with skills rolling over when higher than the level cap (like Titanium has an issue with), they introduced a new issue with HP/Mana/End not being calculated properly.

I am sure there is more than 1 way around it, but one idea would be to just pick a common slot and send the base hp/mana/end of the char for the item in that slot if they are over level 75. So, if your base HP should be 2000, and we are putting it on a charm that has 50HPs on it already, the charm would actually display as having 2050HPs for chars over level 75. This would all still be calculated the normal way server-side, but would just be a work-around hack to trick the client. It would actually be fairly simple to do this change, I think.
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!
Reply With Quote
  #3  
Old 09-28-2009, 10:56 PM
Secrets's Avatar
Secrets
Demi-God
 
Join Date: May 2007
Location: b
Posts: 1,449
Default

You could always make a function to send a fake item to a weird slot on the player. That way, the player equips it, and gets the statistics from it, but doesn't actually see it.
Reply With Quote
  #4  
Old 09-28-2009, 11:23 PM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

If the player can't see it, neither can the client, unfortunately. The only option I can think of that would be similar to that would be to force the Power Source slot to always be equipped and for that slot to handle the level 76+ base hp/mana/end.
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!
Reply With Quote
  #5  
Old 09-29-2009, 02:10 AM
Secrets's Avatar
Secrets
Demi-God
 
Join Date: May 2007
Location: b
Posts: 1,449
Default

Quote:
Originally Posted by trevius View Post
If the player can't see it, neither can the client, unfortunately. The only option I can think of that would be similar to that would be to force the Power Source slot to always be equipped and for that slot to handle the level 76+ base hp/mana/end.
Incorrect; the player cannot see tribute slots, which are invisible slots. Could always add it to the base of the tribute items + the tribute effects.

Take a look at the Client::SendItemPacket function. This shows an example of how this is done in tributes.
Reply With Quote
  #6  
Old 09-29-2009, 02:17 AM
Secrets's Avatar
Secrets
Demi-God
 
Join Date: May 2007
Location: b
Posts: 1,449
Default

I'll actually code this just so we can get this working, instead of arguing it pointlessly :P
Reply With Quote
  #7  
Old 09-29-2009, 03:02 AM
KLS
Administrator
 
Join Date: Sep 2006
Posts: 1,348
Default

He's right, here's some very simple code demonstrating the concept:

Code:
void command_optest(Client *c, const Seperator *sep)
{
	if(sep->IsNumber(1))
	{
		switch(atoi(sep->arg[1]))
		{
			case 1:
				{
					const ItemInst* inst = c->GetInv().GetItem(29);
					if(inst)
					{
						uint32 slot_id = atoi(sep->arg[2]);
						if(slot_id >= 400 && slot_id <= 404)
						{
							c->SendItemPacket(slot_id, inst, ItemPacketTributeItem);
						}
					}
				}
				break;
			default:
			{		
				break;
			}
		}
	}
}
Makes the client gain the stats of the item in your lower right inventory slot without equiping it. It's somewhat complicated in terms of a client hack but in theory yes it could certainly work.
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 06:18 PM.


 

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