Go Back   EQEmulator Home > EQEmulator Forums > Support > Support::General Support

Support::General Support Post all topics here having to do with errors while trying to connect to an EQEMu server but not about the setup/running of the Server itself.

Reply
 
Thread Tools Display Modes
  #1  
Old 07-01-2015, 04:46 PM
provocating's Avatar
provocating
Demi-God
 
Join Date: Nov 2007
Posts: 2,175
Default Character create skill

I think at some point they changed it to where your skills capped when first creating a character, like your 1hb would be maxed when first created. I tried changing the source to not go through that routine, seems to still be doing it on player creation. Is there another place it could happen? I am not seeing a global quest causing it.
Reply With Quote
  #2  
Old 07-01-2015, 04:58 PM
Shendare
Dragon
 
Join Date: Apr 2009
Location: California
Posts: 814
Default

Is it doing it in the `class_skill` table?
Reply With Quote
  #3  
Old 07-01-2015, 05:06 PM
provocating's Avatar
provocating
Demi-God
 
Join Date: Nov 2007
Posts: 2,175
Default

That was my first stop. 1HB is 0 down the list except of course classes that cannot use it.
Reply With Quote
  #4  
Old 07-01-2015, 05:15 PM
Shendare
Dragon
 
Join Date: Apr 2009
Location: California
Posts: 814
Default

world/client.cpp, line 1789-1802:

https://github.com/EQEmu/Server/blob...ient.cpp#L1789

Code:
void Client::SetClassStartingSkills(PlayerProfile_Struct *pp)
{
	for (uint32 i = 0; i <= HIGHEST_SKILL; ++i) {
		if (pp->skills[i] == 0) {
			// Skip specialized, tradeskills (fishing excluded), Alcohol Tolerance, and Bind Wound
			if (EQEmu::IsSpecializedSkill((SkillUseTypes)i) ||
					(EQEmu::IsTradeskill((SkillUseTypes)i) && i != SkillFishing) ||
					i == SkillAlcoholTolerance || i == SkillBindWound)
				continue;

			pp->skills[i] = database.GetSkillCap(pp->class_, (SkillUseTypes)i, 1);
		}
	}
}
Reply With Quote
  #5  
Old 07-01-2015, 05:25 PM
provocating's Avatar
provocating
Demi-God
 
Join Date: Nov 2007
Posts: 2,175
Default

That is what is strange, in my source, which is a bit older, I remarked out the line that calls that procedure and it still happened.

Code:
// SetClassStartingSkills(&pp);
I compiled my source, brought the test server down and back up. Created a new character and things like 1hb were still maxed.
Reply With Quote
  #6  
Old 07-01-2015, 05:29 PM
Shendare
Dragon
 
Join Date: Apr 2009
Location: California
Posts: 814
Default

Hmm. Maybe instead of commenting out the function call altogether, you could try changing the line that reads:

Code:
pp->skills[i] = database.GetSkillCap(pp->class_, (SkillUseTypes)i, 1);
to:

Code:
pp->skills[i] = database.GetSkillCap(pp->class_, (SkillUseTypes)i, 1) == 0 ? 0 : 1;
Reply With Quote
  #7  
Old 07-01-2015, 05:36 PM
provocating's Avatar
provocating
Demi-God
 
Join Date: Nov 2007
Posts: 2,175
Default

Yep, still did it.

I have no idea where they are getting set at this point.

Just to be positive things are compiling right I went ahead and did a make clean, checked my links (ln -s). Everything is right.
Reply With Quote
  #8  
Old 07-01-2015, 05:51 PM
Shendare
Dragon
 
Join Date: Apr 2009
Location: California
Posts: 814
Default

Hmm... is it possible that Character Create actually registers a starting 1HB skill of 0, meaning it doesn't get saved into `character_skills` at all, and when the zone loads the character for the first time and doesn't find a skill value for it in the DB, it sets it to the max as a default?
Reply With Quote
  #9  
Old 07-01-2015, 06:09 PM
provocating's Avatar
provocating
Demi-God
 
Join Date: Nov 2007
Posts: 2,175
Default

It is possible, still diagnosing it down.
Reply With Quote
  #10  
Old 07-01-2015, 06:37 PM
Shendare
Dragon
 
Join Date: Apr 2009
Location: California
Posts: 814
Default

Looks like this is a place in the code where it might do that, but it's when a skill is trained at the Guildmaster.

zone/client_process.cpp, line 1736:

https://github.com/EQEmu/Server/blob...cess.cpp#L1736

Code:
		uint16 skilllevel = GetRawSkill(skill);

		if(skilllevel == 0) {
			//this is a new skill..
			uint16 t_level = SkillTrainLevel(skill, GetClass());
			if (t_level == 0)
			{
				return;
			}

			SetSkill(skill, t_level);
		} else {
Reply With Quote
  #11  
Old 07-01-2015, 06:40 PM
provocating's Avatar
provocating
Demi-God
 
Join Date: Nov 2007
Posts: 2,175
Default

I am probably out of time to look at it today, but will get back to it in the morning. It is kind of strange that did not fix it. I will do some testing Thursday.

Everything is working, this is rather minor.
Reply With Quote
  #12  
Old 07-01-2015, 06:42 PM
Shendare
Dragon
 
Join Date: Apr 2009
Location: California
Posts: 814
Default

Cool. Could do a test by explicitly setting 1HB skill to, say, 3 in the character creation code after all the skill functions are called. See if it gets overridden somewhere farther down the line.
Reply With Quote
  #13  
Old 07-01-2015, 06:50 PM
provocating's Avatar
provocating
Demi-God
 
Join Date: Nov 2007
Posts: 2,175
Default

That was exactly my debug strategy for the morning. Right now these peeps are keeping me super busy, which is a good thing.
Reply With Quote
  #14  
Old 07-01-2015, 06:51 PM
Uleat's Avatar
Uleat
Developer
 
Join Date: Apr 2012
Location: North Carolina
Posts: 2,815
Default

Are you sure that the client isn't overriding the server value for that level?


EDIT: Was trying to read back and see where you caught the issue first..
__________________
Uleat of Bertoxxulous

Compilin' Dirty
Reply With Quote
  #15  
Old 07-01-2015, 06:53 PM
provocating's Avatar
provocating
Demi-God
 
Join Date: Nov 2007
Posts: 2,175
Default

Quote:
Originally Posted by Uleat View Post
Are you sure that the client isn't overriding the server value for that level?
It very well could be Uleat. Are you saying visually override it or really override it? The database really thinks the character is at that level.

This is a fresh character.

http://legacyoffroststone.com/CharBr...php?char=Rivea
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 05:56 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 - 2024, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3