Avoid packet flood from class change.

This commit is contained in:
MobiusDevelopment
2021-12-28 01:38:52 +00:00
parent 744c8ba9e5
commit bfb606730d
42 changed files with 840 additions and 378 deletions

View File

@ -2484,6 +2484,8 @@ public class Player extends Playable
{
_subclassLock = false;
getStat().recalculateStats(false);
updateAbnormalVisualEffects();
sendSkillList();
}
}
@ -9578,6 +9580,8 @@ public class Player extends Playable
{
_subclassLock = false;
getStat().recalculateStats(false);
updateAbnormalVisualEffects();
sendSkillList();
}
}
@ -9674,6 +9678,8 @@ public class Player extends Playable
{
_subclassLock = false;
getStat().recalculateStats(false);
updateAbnormalVisualEffects();
sendSkillList();
}
return addSubClass(newClassId, classIndex, isDualClass);
@ -9945,6 +9951,8 @@ public class Player extends Playable
{
_subclassLock = false;
getStat().recalculateStats(false);
updateAbnormalVisualEffects();
sendSkillList();
}
}

View File

@ -46,11 +46,16 @@ import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.clan.Clan;
import org.l2jmobius.gameserver.model.holders.ClientHardwareInfoHolder;
import org.l2jmobius.gameserver.network.serverpackets.AbnormalStatusUpdate;
import org.l2jmobius.gameserver.network.serverpackets.AcquireSkillList;
import org.l2jmobius.gameserver.network.serverpackets.ExAbnormalStatusUpdateFromTarget;
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
import org.l2jmobius.gameserver.network.serverpackets.ExUserInfoAbnormalVisualEffect;
import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
import org.l2jmobius.gameserver.network.serverpackets.LeaveWorld;
import org.l2jmobius.gameserver.network.serverpackets.NpcInfo;
import org.l2jmobius.gameserver.network.serverpackets.NpcSay;
import org.l2jmobius.gameserver.network.serverpackets.SkillList;
import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
import org.l2jmobius.gameserver.security.SecondaryPasswordAuth;
import org.l2jmobius.gameserver.util.FloodProtectors;
@ -222,27 +227,36 @@ public class GameClient extends ChannelInboundHandler<GameClient>
return;
}
// TODO: Set as parameter to packets used?
if (Config.MULTILANG_ENABLE && (_player != null))
if (_player != null)
{
final String lang = _player.getLang();
if ((lang != null) && !lang.equals("en"))
// Avoid flood from class change.
if (_player.isChangingClass() && ((packet instanceof SkillList) || (packet instanceof AcquireSkillList) || (packet instanceof ExUserInfoAbnormalVisualEffect) || (packet instanceof AbnormalStatusUpdate) || (packet instanceof ExAbnormalStatusUpdateFromTarget)))
{
if (packet instanceof SystemMessage)
return;
}
// TODO: Set as parameter to packets used?
if (Config.MULTILANG_ENABLE)
{
final String lang = _player.getLang();
if ((lang != null) && !lang.equals("en"))
{
((SystemMessage) packet).setLang(lang);
}
else if (packet instanceof NpcSay)
{
((NpcSay) packet).setLang(lang);
}
else if (packet instanceof ExShowScreenMessage)
{
((ExShowScreenMessage) packet).setLang(lang);
}
else if (packet instanceof NpcInfo)
{
((NpcInfo) packet).setLang(lang);
if (packet instanceof SystemMessage)
{
((SystemMessage) packet).setLang(lang);
}
else if (packet instanceof NpcSay)
{
((NpcSay) packet).setLang(lang);
}
else if (packet instanceof ExShowScreenMessage)
{
((ExShowScreenMessage) packet).setLang(lang);
}
else if (packet instanceof NpcInfo)
{
((NpcInfo) packet).setLang(lang);
}
}
}
}