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

Uleat 07-01-2015 07:14 PM

I think some clients mask out invalid values..can't remember if SoF+ does it, or Ti-.

Let me see if I can find some older postings on that.


EDIT: http://www.eqemulator.org/forums/showthread.php?t=37183

I 'think' this is the last I remember of a similar issue.

provocating 07-01-2015 07:22 PM

Well lets call off the hunt...

Code:

        pp.skills[SkillSenseHeading] = 101;       
        pp.skills[Skill1HBlunt] = 1; 
        pp.skills[Skill2HBlunt] = 1;
        pp.skills[Skill1HSlashing] = 1;

I popped that in there. Sense heading set for 101, everything else to 8. Normally of course sense heading would be set for 200.

Not sure what causes it, but it must be client side. Players will just have to deal with getting a boost at level 1, it is high hanging fruit right now. I can approach it later on.

Shendare 07-01-2015 09:23 PM

I did some poking around. It appears that it's a display-only thing client-side, and it doesn't appear to affect the Titanium or Secrets of Faydwer clients, but it does RoF. Don't have an Underfoot client to test with, I don't think.

You can manually set the character's 1HB skill (skill_id 0) to an arbitrary value like 3 in the character_skills table and log into the new character with any of the clients. Camp out and re-log into the same character with another client. No need to delete and re-create.

Titanium will show "1H Blunt - 3", SoF will show "1H Blunt - 3/10", RoF2 will show "1H Blunt - 10/10".

It's still correct on the server side. It's the UF+ or RoF+ client side that's showing skill cap values at level 1 no matter what the actual values are.

provocating 07-04-2015 10:38 PM

Just verified that indeed the database does have the correct skill of 1hb for the character, the client shows 10. But when you go to the trainer it shows 10 and you cannot train up, nor does the skill go up with usage.

Shendare 07-04-2015 11:33 PM

Huh. The plot thickens. So the RoF+ client completely ignores skill values at level 1. Does the problem go away at level 2?

provocating 07-07-2015 11:56 AM

These are my findings now. I had almost given up to "UF issue", but that cannot be the case.

So as it stands now, create a level one character the values are still at skill max. The database shows things like 1hb at skill level 0, or 1, tried both. Going to the trainer is says they are at max. If you fight, skills never go up. But if you do a gm command and #setallskills 0 everything is perfect. When you log in and out, everything goes back to max. So that is where I am, just going to start going through the source now.

Shendare 07-07-2015 11:58 AM

Huh. And skilling up during fighting should be server side, suggesting it's not wholly the client's fault. Wonder if it's more of a packet issue or something with UF+.

provocating 07-07-2015 12:02 PM

I do not know just yet, but I always look for something simple and obvious first.

Apocal 02-12-2018 03:42 AM

Hello,

Was there ever a resolution to this? I've been attempting to do the same kind of thing - either commenting out the code or setting it to zero, but it's not recognizing it on the client or the database. Each time the values are set to the skill maximum. I also attempted to set it in the SetRacial (since it's called after), but unfortunately to no avail.

Thanks,

Apocal

phantomghost 02-12-2018 06:50 AM

Quote:

Originally Posted by Shendare (Post 241476)
Huh. The plot thickens. So the RoF+ client completely ignores skill values at level 1. Does the problem go away at level 2?

Rof maxes skills for level 1. At level 2 they can increase to whatever you set it at.

So, if you set level 1 1hb to 100 max skill, you'd start with 100 skill. If you set it for 5, you'd start at 5... If you set level 2 at 100 you could raise to 200 once you level.

When I first started messing with custom skills for each class, I found this and everything I found on the forums indicated there is no way to bypass.

Everything indicated it's a visual skill level for the client, but I do not know if that's true or not.

Only thing suggested were scripts to set skill value or just set level 1 to what you want starting skills to be. (Essentially skills like sense heading could be set for 1 at lvl 1 and 101 at lvl 2... )


All times are GMT -4. The time now is 07:52 PM.

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