Implemented HWID punishment affect.

This commit is contained in:
MobiusDevelopment
2021-08-06 17:20:31 +00:00
parent 9130a64259
commit d5387bb853
238 changed files with 3875 additions and 287 deletions

View File

@ -11330,7 +11330,10 @@ public class PlayerInstance extends Playable
*/
public boolean isJailed()
{
return PunishmentManager.getInstance().hasPunishment(getObjectId(), PunishmentAffect.CHARACTER, PunishmentType.JAIL) || PunishmentManager.getInstance().hasPunishment(getAccountName(), PunishmentAffect.ACCOUNT, PunishmentType.JAIL) || PunishmentManager.getInstance().hasPunishment(getIPAddress(), PunishmentAffect.IP, PunishmentType.JAIL);
return PunishmentManager.getInstance().hasPunishment(getObjectId(), PunishmentAffect.CHARACTER, PunishmentType.JAIL) //
|| PunishmentManager.getInstance().hasPunishment(getAccountName(), PunishmentAffect.ACCOUNT, PunishmentType.JAIL) //
|| PunishmentManager.getInstance().hasPunishment(getIPAddress(), PunishmentAffect.IP, PunishmentType.JAIL) //
|| ((_client.getHardwareInfo() != null) && PunishmentManager.getInstance().hasPunishment(_client.getHardwareInfo().getMacAddress(), PunishmentAffect.HWID, PunishmentType.JAIL));
}
/**
@ -11338,7 +11341,10 @@ public class PlayerInstance extends Playable
*/
public boolean isChatBanned()
{
return PunishmentManager.getInstance().hasPunishment(getObjectId(), PunishmentAffect.CHARACTER, PunishmentType.CHAT_BAN) || PunishmentManager.getInstance().hasPunishment(getAccountName(), PunishmentAffect.ACCOUNT, PunishmentType.CHAT_BAN) || PunishmentManager.getInstance().hasPunishment(getIPAddress(), PunishmentAffect.IP, PunishmentType.CHAT_BAN);
return PunishmentManager.getInstance().hasPunishment(getObjectId(), PunishmentAffect.CHARACTER, PunishmentType.CHAT_BAN) //
|| PunishmentManager.getInstance().hasPunishment(getAccountName(), PunishmentAffect.ACCOUNT, PunishmentType.CHAT_BAN) //
|| PunishmentManager.getInstance().hasPunishment(getIPAddress(), PunishmentAffect.IP, PunishmentType.CHAT_BAN) //
|| ((_client.getHardwareInfo() != null) && PunishmentManager.getInstance().hasPunishment(_client.getHardwareInfo().getMacAddress(), PunishmentAffect.HWID, PunishmentType.CHAT_BAN));
}
public void startFameTask(long delay, int fameFixRate)

View File

@ -23,8 +23,8 @@ public enum PunishmentAffect
{
ACCOUNT,
CHARACTER,
IP;
// HWID; Not implemented yet.
IP,
HWID;
public static PunishmentAffect getByName(String name)
{

View File

@ -101,7 +101,9 @@ public class CharacterSelect implements IClientIncomingPacket
}
// Banned?
if (PunishmentManager.getInstance().hasPunishment(info.getObjectId(), PunishmentAffect.CHARACTER, PunishmentType.BAN) || PunishmentManager.getInstance().hasPunishment(client.getAccountName(), PunishmentAffect.ACCOUNT, PunishmentType.BAN) || PunishmentManager.getInstance().hasPunishment(client.getConnectionAddress().getHostAddress(), PunishmentAffect.IP, PunishmentType.BAN))
if (PunishmentManager.getInstance().hasPunishment(info.getObjectId(), PunishmentAffect.CHARACTER, PunishmentType.BAN) //
|| PunishmentManager.getInstance().hasPunishment(client.getAccountName(), PunishmentAffect.ACCOUNT, PunishmentType.BAN) //
|| PunishmentManager.getInstance().hasPunishment(client.getConnectionAddress().getHostAddress(), PunishmentAffect.IP, PunishmentType.BAN))
{
client.close(ServerClose.STATIC_PACKET);
return;

View File

@ -42,6 +42,7 @@ import org.l2jmobius.gameserver.instancemanager.FortSiegeManager;
import org.l2jmobius.gameserver.instancemanager.InstanceManager;
import org.l2jmobius.gameserver.instancemanager.MailManager;
import org.l2jmobius.gameserver.instancemanager.PetitionManager;
import org.l2jmobius.gameserver.instancemanager.PunishmentManager;
import org.l2jmobius.gameserver.instancemanager.ServerRestartManager;
import org.l2jmobius.gameserver.instancemanager.SiegeManager;
import org.l2jmobius.gameserver.instancemanager.events.GameEvent;
@ -54,6 +55,8 @@ import org.l2jmobius.gameserver.model.holders.AttendanceInfoHolder;
import org.l2jmobius.gameserver.model.holders.ClientHardwareInfoHolder;
import org.l2jmobius.gameserver.model.instancezone.Instance;
import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
import org.l2jmobius.gameserver.model.punishment.PunishmentAffect;
import org.l2jmobius.gameserver.model.punishment.PunishmentType;
import org.l2jmobius.gameserver.model.quest.Quest;
import org.l2jmobius.gameserver.model.residences.ClanHall;
import org.l2jmobius.gameserver.model.siege.Fort;
@ -241,12 +244,6 @@ public class EnterWorld implements IClientIncomingPacket
}
}
// Chat banned icon.
if (player.isChatBanned())
{
player.getEffectList().startAbnormalVisualEffect(AbnormalVisualEffect.NO_CHAT);
}
// Set dead status if applies
if (player.getCurrentHp() < 0.5)
{
@ -673,6 +670,7 @@ public class EnterWorld implements IClientIncomingPacket
}
}
// Delayed HWID checks.
if (Config.HARDWARE_INFO_ENABLED)
{
ThreadPool.schedule(() ->
@ -718,6 +716,13 @@ public class EnterWorld implements IClientIncomingPacket
}
}
// Banned?
if ((hwInfo != null) && PunishmentManager.getInstance().hasPunishment(hwInfo.getMacAddress(), PunishmentAffect.HWID, PunishmentType.BAN))
{
Disconnection.of(client).defaultSequence(false);
return;
}
// Check max players.
if (Config.KICK_MISSING_HWID && (hwInfo == null))
{
@ -740,6 +745,15 @@ public class EnterWorld implements IClientIncomingPacket
}
}, 5000);
}
// Chat banned icon.
ThreadPool.schedule(() ->
{
if (player.isChatBanned())
{
player.getEffectList().startAbnormalVisualEffect(AbnormalVisualEffect.NO_CHAT);
}
}, 5500);
}
/**