EQEmulator Forums

EQEmulator Forums (https://www.eqemulator.org/forums/index.php)
-   Support::General Support (https://www.eqemulator.org/forums/forumdisplay.php?f=598)
-   -   Character create skill (https://www.eqemulator.org/forums/showthread.php?t=39817)

provocating 07-01-2015 04:46 PM

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.

Shendare 07-01-2015 04:58 PM

Is it doing it in the `class_skill` table?

provocating 07-01-2015 05:06 PM

That was my first stop. 1HB is 0 down the list except of course classes that cannot use it.

Shendare 07-01-2015 05:15 PM

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);
                }
        }
}


provocating 07-01-2015 05:25 PM

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.

Shendare 07-01-2015 05:29 PM

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;

provocating 07-01-2015 05:36 PM

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.

Shendare 07-01-2015 05:51 PM

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?

provocating 07-01-2015 06:09 PM

It is possible, still diagnosing it down.

Shendare 07-01-2015 06:37 PM

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 {


provocating 07-01-2015 06:40 PM

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.

Shendare 07-01-2015 06:42 PM

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.

provocating 07-01-2015 06:50 PM

That was exactly my debug strategy for the morning. Right now these peeps are keeping me super busy, which is a good thing.

Uleat 07-01-2015 06:51 PM

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..

provocating 07-01-2015 06:53 PM

Quote:

Originally Posted by Uleat (Post 241389)
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


All times are GMT -4. The time now is 03:15 PM.

Powered by vBulletin®, Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.