• Unfortunately, we have experienced significant hard drive damage that requires urgent maintenance and rebuilding. The forum will be a state of read only until we install our new drives and rebuild all the configurations needed. Please follow our Facebook page for updates, we will be back up shortly! (The forum could go offline at any given time due to the nature of the failed drives whilst awaiting the upgrades.) When you see an Incapsula error, you know we are in the process of migration.

EXP Extension - Gaining exp/drops from low level gray mobs?

Xca

Experienced Elementalist
Joined
Apr 1, 2011
Messages
206
Reaction score
93
All RPG games now allow extremly high level players to kill a (for example) level 10 mob (not much but better than nothing), also, getting drops from level 1 mob.

Being that Darn ( ) has released a very simple and working level 255 extension for the client and server, I see that removing the protocol that controls level differentiation would be most profitable. This would open servers to many possibilities. This is our game, lets make this possible.

Example:
REMOVED

Or, how, toy with this idea:
Reverse the code to say instead of not getting exp/drops from low level mobs - have it syntax - cannot gain exp/drops from high level mobs.

Ideas and discussion is open.
 
Banned
Banned
Joined
Jul 8, 2007
Messages
1,628
Reaction score
1,619
All RPG games now allow extremly high level players to kill a (for example) level 10 mob (not much but better than nothing), also, getting drops from level 1 mob.

Being that @Darn ( ) has released a very simple and working level 255 extension for the client and server, I see that removing the protocol that controls level differentiation would be most profitable. This would open servers to many possibilities. This is our game, lets make this possible.

Example:
REMOVED

Or, how, toy with this idea:
Reverse the code to say instead of not getting exp/drops from low level mobs - have it syntax - cannot gain exp/drops from high level mobs.

Ideas and discussion is open.


Please explain what exactly you mean, because what you are suggesting would require a new dll server side and client side as the exp table is hard coded both sides...... more difficult to detect client side then it is server side.....

Not that I dnt like the idea it just means ALOT of Ida pro and visual studio work from either yourself... or a decent coder who know what they are doing... I am no c++ coder myself.. im a C or C# person .. so you would need to find someone OTHER then myself that can do this kinda work..... (sry sick of fixing stuff ive been give over pm these days on a code im not all that good with...)
 
Last edited:

Xca

Experienced Elementalist
Joined
Apr 1, 2011
Messages
206
Reaction score
93
Thanks for keeping my topic clean <3

The image I provided explains my idea of how the server and client are thinking, and how their protocol is driven. My uneducated guess would be to remove the server and client's level mob/player kill acquisition protocol in it's library by replacing it's syntax of, example:

Code:
Levelrelation
{
                    exp 1
                    IF -10, +∞
};

{
                    itemgroup 1
                    IF -10, +100
};

inquire
{
                    entity:mob Level byte
                    entity:player Level byte
};

with

Code:
Levelrelation
{
                    exp 1
                    IF -∞, +∞
};

{
                    itemgroup 1
                    IF -∞, +∞
};

inquire
{
                    entity:mob Level byte
                    entity:player Level byte
};

I'm not a C++ coder either, but this idenifyer I'm talking about, if changed, should enable drops and exp from all mobs of all levels no matter what the character's level.

We can see that this is possible as any user above the level of 100 is still able to acquire exp from entities, yet not drops, this leads me to think the original programmer hadn't anticipated any lvl100+ entities and gave both drop and exp expressions different outputs; making you recieve EXP, yet nothing from the itemgroup.
 
Last edited:
Joined
Jun 23, 2006
Messages
782
Reaction score
399
You can do it by editing the AllotExp and AllotPartyExp functions.. Either you intercept with ugly asm code or you rewrite the whole function(which also sucks...) I think asm is the way to go here.
I think this is the code from AllotExp
Code:
 {
      v38 = *(_DWORD *)(v26 + 60) - *(_DWORD *)(v42 + 60);
      v11 = (double)v48;
      v43 = (unsigned __int64)((double)*(signed int *)(sub_420250(&v45, v42) + 4)
                             / (double)*(signed int *)(v26 + 604)
                             * v11);
      if ( v50 < v43 )
      {
        v50 = v43;
        *(_DWORD *)a4 = CBase__Id(v42);
      }
      if ( v38 < 0 )
      {
        if ( abs(v38) >= 20 )
          v24 = 20;
        else
          v24 = abs(v38);
        v43 = (unsigned __int64)((double)v43
                               - (double)v43
                               * (double)*(int *)((char *)&dword_4D8870[21 * (*(_DWORD *)(v42 + 60) - 1) / 10] + 4 * v24)
                               / 100.0);
      }
      else
      {
        if ( v38 >= 20 )
          v25 = 20;
        else
          v25 = v38;
        v43 = (unsigned __int64)((double)v43
                               * (double)*(int *)((char *)&dword_4D8528[21 * (*(_DWORD *)(v42 + 60) - 1) / 10] + 4 * v25)
                               / 100.0
                               + (double)v43);
      }
 
Last edited:
Elite Diviner
Joined
Feb 8, 2012
Messages
439
Reaction score
867
Not sure:
Code:
  {
      MonsterPlayerLevelDiff = *(_DWORD *)(MonsterPointer + 60) - *(_DWORD *)(PlayerPointer + 60);
      v9 = (double)v40;
      v35 = (unsigned __int64)((double)*(signed int *)(sub_420250(&v37) + 4)
                             / (double)*(signed int *)(MonsterPointer + 604)// MonsterP + 604 ? => take a look into Monster  struct and count bytes
                             * v9);
      if ( v42 < v35 )
      {
        v42 = v35;
        *(_DWORD *)a4 = CBase__Id(PlayerPointer);
      }
      if ( MonsterPlayerLevelDiff < 0 )         // Monster is higher than Player
      {
        if ( abs(MonsterPlayerLevelDiff) >= 20 )
          LevelDiff = 20;
        else
          LevelDiff = abs(MonsterPlayerLevelDiff);
        v35 = (unsigned __int64)((double)v35
                               - (double)v35
                               * (double)*(int *)((char *)&ExpLookUpTable1[21
                                                                         * (*(_DWORD *)(PlayerPointer + 60) - 1)
                                                                         / 10]// Playerpointer + 60 = PlayerLevel
                                                + 4 * LevelDiff)
                               / 100.0);
      }
      else
      {
        if ( MonsterPlayerLevelDiff >= 20 )     // Monster is 20+ Level lower than Player
          v17 = 20;
        else
          v17 = MonsterPlayerLevelDiff;
        v35 = (unsigned __int64)((double)v35
                               * (double)*(int *)((char *)&ExpLookUpTable2[21
                                                                         * (*(_DWORD *)(PlayerPointer + 60) - 1)
                                                                         / 10]
                                                + 4 * v17)
                               / 100.0
                               + (double)v35);
      }
asm should be the way to go as striker mentioned, but thats not ugly : )

About your other Thread with the Advertising, i would exploit the fact that we are able to load images in the Quest Menus/F1 Menu, so just use an empty Quest Menu, remove the Border and add an timer for different Advertising Images.
 
Joined
Jun 23, 2006
Messages
782
Reaction score
399
If I remember it correctly, the client can display pop ups where the notice message is, with images and a small text. It is usually in the korean and chinese client but they removed it in the english one. A bit reversing and you can call it easily and advertise. BUT it's just a image and a litle text, you can't link anything.

@ Mad
I think rewriting the allotexp function is also good. You can add new exp stones and have a better controll of the multiplicator and other stuff. I think Arachne? asked me this once but I told him the UpdateProperty method in combination with a Caller check, to add a global exp multiplicator..
Yeah I'm not well suited with asm xD I hate to use it and I'd avoid it any time if I can use C/C++ code instead ^^
 
Newbie Spellweaver
Joined
May 24, 2008
Messages
51
Reaction score
8
Note that if you will remove this lvl limit many players might stay for very long on lower lvl areas. Especially in places like d1 or d3. This will lead to high amount of poop items in the market. Also be prepared for bots on poop spots.

/0x0043EECC cmp eax,14 // so far on my test it works with higher limit than 20 (14h) however looks like somewhere is another 35 limit.
 
Last edited:

Xca

Experienced Elementalist
Joined
Apr 1, 2011
Messages
206
Reaction score
93
Yes, but by that time, Fritz, the high lvl player (60 level killing a 30 level mob) wont get much of any exp (maybe 20exp out of 500exp), the goal here is to achieve not just experiance, but the itemgroup.

I strongly (since the beginning when I was a teenager) believe that if you are level 60 or whatever, and you are being attacked and taking damage of mobs that are, say, 40 and the fact you can't gain even a little exp or even any drops - thats a bad thing, at least you should earn drops and a tiny bit of exp for your effort.

This will also boost the economy for the lower level players (especially now that lvl255 is easily implimented thanks to Darn) because, as you know, those who first start playing servers run around the shops and only see high level armor for sale - all low level armor is almost nonexsistant and you must drop it for yourself. Adding this new function where high levels can now earn itemgroup from lower mobs will change this as well (seeing lower items in higher shops), which will solve some problems. I believe this change is worth pursuing for the better of everyone who still enjoys kal.
________________

MadKnight Implimenting an Adsense advertising script which uses one of Google's many libaraies could be another option for server owners to pay for services; ex:
Server with 300 online needs some work done and they'll pay you by ad revenue, generated by your own ad which is displayed in the game (though you cannot click on it, ads still bring in money just by people seeing them [called Impressions]).

Code:
Totals
202
7
3.47%
$0.08
$2.71
$0.32

I generated that amount just by having ads on my website in 1 day, which only got 202 views, but if this is added into the game, you can only guess how much money that can be generated with even 50 online, seeing an advertisment every 30 minutes. With 300 online, every 24 hours, 14,400 impressions can be made. *Daily money, without donating, secure, and easy without any effort.
 
Last edited:
Joined
Sep 30, 2006
Messages
735
Reaction score
207
Yes, but by that time, Fritz, the high lvl player (60 level killing a 30 level mob) wont get much of any exp (maybe 20exp out of 500exp), the goal here is to achieve not just experiance, but the itemgroup.

I strongly (since the beginning when I was a teenager) believe that if you are level 60 or whatever, and you are being attacked and taking damage of mobs that are, say, 40 and the fact you can't gain even a little exp or even any drops - thats a bad thing, at least you should earn drops and a tiny bit of exp for your effort.

This will also boost the economy for the lower level players (especially now that lvl255 is easily implimented thanks to @Darn) because, as you know, those who first start playing servers run around the shops and only see high level armor for sale - all low level armor is almost nonexsistant and you must drop it for yourself. Adding this new function where high levels can now earn itemgroup from lower mobs will change this as well (seeing lower items in higher shops), which will solve some problems. I believe this change is worth pursuing for the better of everyone who still enjoys kal.
________________

@MadKnight Implimenting an Adsense advertising script which uses one of Google's many libaraies could be another option for server owners to pay for services; ex:
Server with 300 online needs some work done and they'll pay you by ad revenue, generated by your own ad which is displayed in the game (though you cannot click on it, ads still bring in money just by people seeing them [called Impressions]).

Code:
Totals
202
7
3.47%
$0.08
$2.71
$0.32

I generated that amount just by having ads on my website in 1 day, which only got 202 views, but if this is added into the game, you can only guess how much money that can be generated with even 50 online, seeing an advertisment every 30 minutes. With 300 online, every 24 hours, 14,400 impressions can be made. *Daily money, without donating, secure, and easy without any effort.
Just displaying the image wouldn't work adsense would have no clue you displayed it at all O_O
 
Elite Diviner
Joined
Feb 8, 2012
Messages
439
Reaction score
867
Just displaying the image wouldn't work adsense would have no clue you displayed it at all O_O

They would, because it wouldnt be an static image loaded from hd, instead it would fetch the image from the adsense server.
 
Joined
Sep 30, 2006
Messages
735
Reaction score
207
They would, because it wouldnt be an static image loaded from hd, instead it would fetch the image from the adsense server.
Has this been tested in-game? Adsense gathers a bit of extra info when the ad is loaded to watch for click boting, I feel like it wouldn't get this info if it was accessed through a system set to read a static image.
 
Banned
Banned
Joined
Jul 8, 2007
Messages
1,628
Reaction score
1,619
Adsense, I think we had a disscussion thread on this... be careful not to get banned with them.. they are so fussy
 
Joined
Sep 30, 2006
Messages
735
Reaction score
207
I'm not allowed to use them anymore I had a few accounts with them in the past... they ban you for using the ads on private server sites xD

there are other options for advertising but they all suck xD

I feel like this thread got off topic and I was part of that
 

Xca

Experienced Elementalist
Joined
Apr 1, 2011
Messages
206
Reaction score
93
Currently lvl101+ can gain Exp & Itemgroup from all mobs. I'd like to replicate that to all levels; not just 101+
I can see so many possibilities being opened with this idea. I first thought about this back in 2003. My thought process was: "Why does the server allow me to take damage from mobs, but not allow me to acquire items and exp if I kill them?"

I see gray mobs as a lack of content.
 
Back
Top