L2JMobius

Free Users => Solved/Invalid Bug Reports => Topic started by: kinghanker on May 18, 2022, 04:19:00 PM

Title: player returns to level 1 again
Post by: kinghanker on May 18, 2022, 04:19:00 PM
I tested several tests and found specific situations where they cause this problem:
Irrelevant situations:
- Being alone or in a group
- Have a residence or not
- Have enchanted skills or not
- A Config Delevel = false

Situations in which the player does NOT go back the levels:
- The use of single-targeted weapons
- hunt 1 monster at a time

- Any situation where the player receives experience from multiple targets simultaneously. If alone using a spear when in a group where several players attack different targets and they die at the same time, if they die at a different time, the problem does not occur

(https://i.imgur.com/xY4WG6a.jpg)
Title: Re: player returns to level 1 again
Post by: Mobius on May 18, 2022, 05:03:16 PM
PlayerInstance?

Try this.
Code: [Select]
Index: java/org/l2jmobius/gameserver/model/actor/Creature.java
===================================================================
--- java/org/l2jmobius/gameserver/model/actor/Creature.java (revision 10205)
+++ java/org/l2jmobius/gameserver/model/actor/Creature.java (working copy)
@@ -4744,7 +4744,7 @@
  * @param addToExp
  * @param addToSp
  */
- public void addExpAndSp(double addToExp, double addToSp)
+ public synchronized void addExpAndSp(double addToExp, double addToSp)
  {
  // Dummy method (overridden by players and pets)
  }
Index: java/org/l2jmobius/gameserver/model/actor/Player.java
===================================================================
--- java/org/l2jmobius/gameserver/model/actor/Player.java (revision 10203)
+++ java/org/l2jmobius/gameserver/model/actor/Player.java (working copy)
@@ -10825,12 +10825,12 @@
  }
 
  @Override
- public void addExpAndSp(double addToExp, double addToSp)
+ public synchronized void addExpAndSp(double addToExp, double addToSp)
  {
  getStat().addExpAndSp(addToExp, addToSp, false);
  }
 
- public void addExpAndSp(double addToExp, double addToSp, boolean useVitality)
+ public synchronized void addExpAndSp(double addToExp, double addToSp, boolean useVitality)
  {
  getStat().addExpAndSp(addToExp, addToSp, useVitality);
  }
Index: java/org/l2jmobius/gameserver/model/actor/instance/Pet.java
===================================================================
--- java/org/l2jmobius/gameserver/model/actor/instance/Pet.java (revision 10203)
+++ java/org/l2jmobius/gameserver/model/actor/instance/Pet.java (working copy)
@@ -1141,7 +1141,7 @@
  }
 
  @Override
- public void addExpAndSp(double addToExp, double addToSp)
+ public synchronized void addExpAndSp(double addToExp, double addToSp)
  {
  if (getId() == 12564)
  {
Title: Re: player returns to level 1 again
Post by: kinghanker on May 18, 2022, 06:00:09 PM
PlayerInstance?

Yes, I'm using the rev from a year ago but I follow the updates that have fix, so I haven't synced the projects yet because of the tvt that the team preferred the old one.
There are few things that differ if you compare the codes.

I applied the changes, it's already in testing
Title: Re: player returns to level 1 again
Post by: kinghanker on May 21, 2022, 03:27:38 AM
So far there have been no problems
Title: Re: player returns to level 1 again
Post by: Mobius on May 24, 2022, 12:56:38 AM
Fixed with https://bitbucket.org/MobiusDev/l2j_mobius/commits/1e9b68c6d3f1fcd854b591dedce3ed4f35583cc8