Prevent client SP value overflow.

This commit is contained in:
MobiusDev 2018-04-11 07:55:02 +00:00
parent 769df7057a
commit 0da0ddbb8a
5 changed files with 14 additions and 13 deletions

View File

@ -346,9 +346,9 @@ MinAbnormalStateSuccessRate = 10
MaxAbnormalStateSuccessRate = 90
# Maximum amount of SP a character can posses.
# Current retail limit is 50 billion, use -1 to set it to unlimited.
# Default: 50000000000
MaxSp = 50000000000
# Current retail limit is max integer number, use -1 to set it to unlimited.
# Default: 2147483647
MaxSp = 2000000000
# Maximum number of allowed subclasses for every player.
# Default: 3

View File

@ -18,6 +18,7 @@ package handlers.admincommandhandlers;
import java.util.StringTokenizer;
import com.l2jmobius.Config;
import com.l2jmobius.gameserver.data.xml.impl.ClassListData;
import com.l2jmobius.gameserver.handler.IAdminCommandHandler;
import com.l2jmobius.gameserver.model.L2Object;
@ -133,7 +134,7 @@ public class AdminExpSp implements IAdminCommandHandler
try
{
expval = Long.parseLong(exp);
spval = Long.parseLong(sp);
spval = Math.min(Long.parseLong(sp), Config.MAX_SP);
}
catch (Exception e)
{
@ -172,11 +173,11 @@ public class AdminExpSp implements IAdminCommandHandler
final String exp = st.nextToken();
final String sp = st.nextToken();
long expval = 0;
int spval = 0;
long spval = 0;
try
{
expval = Long.parseLong(exp);
spval = Integer.parseInt(sp);
spval = Long.parseLong(sp);
}
catch (Exception e)
{

View File

@ -29,7 +29,7 @@ public class CharSelectInfoPackage
private String _name;
private int _objectId = 0;
private long _exp = 0;
private int _sp = 0;
private long _sp = 0;
private int _clanId = 0;
private int _race = 0;
private int _classId = 0;
@ -302,12 +302,12 @@ public class CharSelectInfoPackage
_sex = sex;
}
public int getSp()
public long getSp()
{
return _sp;
}
public void setSp(int sp)
public void setSp(long sp)
{
_sp = sp;
}

View File

@ -6715,7 +6715,7 @@ public final class L2PcInstance extends L2Playable
player.getStat().setExp(rset.getLong("exp"));
player.setExpBeforeDeath(rset.getLong("expBeforeDeath"));
player.getStat().setLevel(rset.getByte("level"));
player.getStat().setSp(rset.getInt("sp"));
player.getStat().setSp(rset.getLong("sp"));
player.setWantsPeace(rset.getInt("wantspeace"));
@ -7031,7 +7031,7 @@ public final class L2PcInstance extends L2Playable
subClass.setClassId(rs.getInt("class_id"));
subClass.setLevel(rs.getByte("level"));
subClass.setExp(rs.getLong("exp"));
subClass.setSp(rs.getInt("sp"));
subClass.setSp(rs.getLong("sp"));
subClass.setClassIndex(rs.getInt("class_index"));
// Enforce the correct indexing of _subClasses against their class indexes.

View File

@ -117,7 +117,7 @@ public class CharSelectionInfo implements IClientOutgoingPacket
packet.writeF(charInfoPackage.getCurrentHp());
packet.writeF(charInfoPackage.getCurrentMp());
packet.writeD(charInfoPackage.getSp());
packet.writeD((int) charInfoPackage.getSp());
packet.writeQ(charInfoPackage.getExp());
packet.writeF((float) (charInfoPackage.getExp() - ExperienceData.getInstance().getExpForLevel(charInfoPackage.getLevel())) / (ExperienceData.getInstance().getExpForLevel(charInfoPackage.getLevel() + 1) - ExperienceData.getInstance().getExpForLevel(charInfoPackage.getLevel()))); // High
// Five
@ -259,7 +259,7 @@ public class CharSelectionInfo implements IClientOutgoingPacket
charInfopackage.setSex(chardata.getInt("sex"));
charInfopackage.setExp(chardata.getLong("exp"));
charInfopackage.setSp(chardata.getInt("sp"));
charInfopackage.setSp(chardata.getLong("sp"));
charInfopackage.setVitalityPoints(chardata.getInt("vitality_points"));
charInfopackage.setClanId(chardata.getInt("clanid"));