EQEmulator Forums

EQEmulator Forums (https://www.eqemulator.org/forums/index.php)
-   Development::Feature Requests (https://www.eqemulator.org/forums/forumdisplay.php?f=612)
-   -   Ability to level past 89ish? (https://www.eqemulator.org/forums/showthread.php?t=28822)

ChaosSlayerZ 10-27-2010 01:00 AM

Quote:

Originally Posted by Caryatis (Post 193706)
Nobody is going to add that table to the official source though as nobody would want to adjust exp levels on the fly as you suggest. Why? because screwing with the exp curve means all existing chars get messed up, either losing levels on death or losing levels when you ding, etc. Many things get messed up for existing chars when you change the exp curve.

not unless you starting off a fresh a server with no chars

Quote:

You can see people who wanted this change bad enough to learn the very basics of coding(look at what blackdragon posted, its not advanced enterprise level C++ coding, its basic 'if-then' statements, anybody can understand that), if you wanted this change on your server then it wouldn't be an issue for you to spend a few hours of your time to learn how to do it. Which is alot more effective than putting in your sig to get somebody else to do all the work for you and posting for over a year hoping somebody notices.
This is a problem in Emu coding which wasn't addressed back in day cause no one cared for going over lev 70 at the time. Now, with all the catching up with SoF and SoD, the live cap has hit level 90, and you WILL have to change the code in order to catch up.
But if devs would have thought about planning one little variable like 5 years ago - we would not have this problem today.
So yeah, I do hope SOMEONE, from official devs, will finally notice this.


Quote:

As somebody who freely admits to not being knowledgeable enough to change his source code, Im curious how you can be knowledgeable enough to know how much effort is involved in keeping custom source updated(its not hard at all).
while i do not work C code myself (oh I know C, I just choose never to mess with custom changes outside of official code), at THF we have lots of custom coding which makes its hard to keep up to date with official updates, and Lilu, our boss, as already pulling his hair out over this. So, trust me, I know what I talking about =P

Secrets 10-27-2010 06:54 AM

If I was a custom server starting fresh with the knowledge I know today, I would completely change the exp code. Why?

1) The exp code only gives support up to level 90 without rollover past deaths.
2) The exp code factors in NPC con too much.
3) It's based on exp count, not number of kills.
4) 2 and 3.

Why number of kills? It's pretty simple:

1) smaller numbers
2) less exponential growth to leave room for valid integers
3) it's not a float
4) easily tracked

You can do this one of two ways:
1) Extended profile
2) Gut the exp code and use perl

This leaves us with these results:
1) Level support up to 65535 (minus spells being scribeable below 250, but that can be fixed on the server)
2) Completely custom exp formula


I suggest 1. Good luck.

Caryatis 10-27-2010 03:14 PM

Quote:

Not to mention my one extra table, allows fine tuning of XP curve on the fly
!=

Quote:

not unless you starting off a fresh a server with no chars
If you are setting up a fresh server, then just edit the source. Considering that HoT client isn't supported at all, its not like a rush to make it so that level 90 is supported(and if/when the HoT client push comes, that will be one of the things that gets changed, although since we are only 1 level short of 90, would be easy to just alter the mod for level 90 so that it stays within the limits, as opposed to doing anything else).

Secrets 10-27-2010 07:13 PM

Quote:

Originally Posted by Caryatis (Post 193744)
If you are setting up a fresh server, then just edit the source. Considering that HoT client isn't supported at all, its not like a rush to make it so that level 90 is supported(and if/when the HoT client push comes, that will be one of the things that gets changed, although since we are only 1 level short of 90, would be easy to just alter the mod for level 90 so that it stays within the limits, as opposed to doing anything else).

Even if you are working on an existing server...

changing it so when you log in, checking the level, setting the exp to getexpforlevel(level) then storing a boolean so that you know you logged in since you updated the server (in the extended player profile (m_epp)) *then* calculating experience afterwards would be the ideal goal. It would reset some progress into the level that they had, though, but you could tweak the entire exp formula this way.

Secrets 10-27-2010 07:28 PM

To further back my idea,

Code:

Index: common/extprofile.h
===================================================================
--- common/extprofile.h        (revision 1709)
+++ common/extprofile.h        (working copy)
@@ -46,6 +46,7 @@
       
        uint32                                aa_effects;
        uint32                                perAA;                //% of exp going to AAs
+        bool                                expchange;
 };
 
 #pragma pack()
Index: zone/client_packet.cpp
===================================================================
--- zone/client_packet.cpp        (revision 1709)
+++ zone/client_packet.cpp        (working copy)
@@ -8586,6 +8586,13 @@
        }
 
 
+        if(!m_epp.expchange)
+        {
+        SetEXP(GetEXPForLevel(GetLevel()), GetAAXP(), false);
+        m_epp.expchange = true;
+        }
+
+
        ////////////////////////////////////////////////////////////
        // Task Packets
        LoadClientTaskState();

Change EXP Formula, Add in code, ????, profit!

blackdragonsdg 10-28-2010 03:54 PM

If you change the modifiers in the exp code you will need a way to let the client/server know something changed or you will encounter one of the problems I did where a newly created character kills a level 1 npc and gains 100+ levels or a level 85 character dies then loses 7 levels instead of 10-15% of the current level.

I had been wanting to do something similar to what Secrets proposed but I simply do not have the needed skill to implement it.

ChaosSlayerZ 10-28-2010 04:44 PM

yeah thats why I am trying hard to get KLS attention to make this fix official :)

Secrets 10-29-2010 08:18 AM

Quote:

Originally Posted by blackdragonsdg (Post 193756)
If you change the modifiers in the exp code you will need a way to let the client/server know something changed or you will encounter one of the problems I did where a newly created character kills a level 1 npc and gains 100+ levels or a level 85 character dies then loses 7 levels instead of 10-15% of the current level.

I had been wanting to do something similar to what Secrets proposed but I simply do not have the needed skill to implement it.

The server is the only thing that needs to know the full exp data; the client is quite stupid and only displays a number between 1-100. I don't even think the rezexp stored on the corpse is used, though I could be wrong.


Quote:

yeah thats why I am trying hard to get KLS attention to make this fix official
PEQ doesn't have this issue, therefore it'll never be 'official' until PEQ runs into this issue. Simple fix would be changing the data value to a float for now. If that's too much to ask, well, can't help you really.

However, I can tell you this: SVN checkout + svn update after modifications using tortoisesvn in windows is pretty easy. If you are using another SVN, use tortoisesvn's export function and check out the eqemu revision you stopped on. After that, paste your files into the eqemu folder you checked out. SVN update, resolve the conflicts (as long as you didn't change any major systems, this shouldn't be an issue. Or systems that get changed rarely IE exp.) and compile. Problem solved.

blackdragonsdg 10-29-2010 06:39 PM

I think I have figured out why I was getting massive exp loss on death. I always thought exp loss on death was just a varied percentage being taken away from the players current exp. I assumed that was the case which is a noob mistake. I should know better than to assume anything like that.

Yesterday I started looking for the code that controls death and exp loss and well I found it. There is a large modifier in that formula just as there was in exp gain. So I decreased the modifier by the same factor I used in the exp formula. Then I repeatedly killed a level 85 character as a test, the character only lost about 10% exp on each death instead of 7 levels per. Gonna test this some more but it is looking pretty good so far. I also changed the code for death by sacrifice that necros love using.

Are there any other death tricks in the code that I should look for?

ChaosSlayerZ 10-29-2010 11:02 PM

btw there is a rule which controls XP loss on death, you may want to take that into account when changing the modifier

Astal 10-31-2010 08:26 PM

So has anyone actually figured out what should be done exactly, I looked at secrets post on page 4 (im not good with C++) im gonna maybe try and implement it. All i need is level 100, but im getting a bug when i go past like 80ish.

When i attack a creature, my hp regens the exact amount ive lost when im higher than level 80 until my hp is at like 50% then it works as if it were normal



Edit:

Ok it seems to be a problem with the client i assume? Since live only goes up to 85 atm?

Anything past 85 bugs out on the display. I guess there is no way around that. Anything past 90 causes HP to regen back any damage taken until my hp is below 50% ish.

If anyone knows hot to fix this please let me know. Im trying to allow my server up to level 100

blackdragonsdg 10-31-2010 10:56 PM

Short answer is yes, it is possible to level to 100 and beyond. What I posted above will get you to max 253. There are other work arounds, one of which allows you to level up to 65535 I believe it was and it can probably be expanded beyond that if you really wanted to.

The hp flux sounds like an older emulator bug that was fixed. If your display is cutting off hp, mana and endurance values then mod the display to allow for larger numbers.

Akkadius 10-31-2010 11:42 PM

Quote:

Originally Posted by Astal (Post 193840)
So has anyone actually figured out what should be done exactly, I looked at secrets post on page 4 (im not good with C++) im gonna maybe try and implement it. All i need is level 100, but im getting a bug when i go past like 80ish.

When i attack a creature, my hp regens the exact amount ive lost when im higher than level 80 until my hp is at like 50% then it works as if it were normal



Edit:

Ok it seems to be a problem with the client i assume? Since live only goes up to 85 atm?

Anything past 85 bugs out on the display. I guess there is no way around that. Anything past 90 causes HP to regen back any damage taken until my hp is below 50% ish.

If anyone knows hot to fix this please let me know. Im trying to allow my server up to level 100

You start opening a can of worms post level 86, I have ways of showing information to clients but it's not the most efficient way to handle it. You cons are also completely jacked.

Both two small things in my opinions that I could have generated in a utility window for players but just letting you know ahead of time it's not clean cut.

Astal 10-31-2010 11:55 PM

Yeah im probably not gonna mess with it right now. I dont really NEED post 85 levels. Was gonna do it if it wasnt a pain hahaha


All times are GMT -4. The time now is 12:23 AM.

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