From f3c0a5905c932c4f6d8e7f903164af1159248991 Mon Sep 17 00:00:00 2001 From: MobiusDevelopment <8391001+MobiusDevelopment@users.noreply.github.com> Date: Thu, 17 Sep 2020 22:53:19 +0000 Subject: [PATCH] Addition of RequestExPledgeMissionReward spam protection. --- .../model/actor/request/RewardRequest.java | 36 +++++++++++++++++++ .../RequestOneDayRewardReceive.java | 17 +++++++++ .../model/actor/request/RewardRequest.java | 36 +++++++++++++++++++ .../RequestOneDayRewardReceive.java | 17 +++++++++ .../model/actor/request/RewardRequest.java | 36 +++++++++++++++++++ .../RequestOneDayRewardReceive.java | 19 ++++++++-- .../model/actor/request/RewardRequest.java | 36 +++++++++++++++++++ .../RequestOneDayRewardReceive.java | 17 +++++++++ .../model/actor/request/RewardRequest.java | 36 +++++++++++++++++++ .../RequestOneDayRewardReceive.java | 16 +++++++++ .../model/actor/request/RewardRequest.java | 36 +++++++++++++++++++ .../RequestOneDayRewardReceive.java | 16 +++++++++ .../model/actor/request/RewardRequest.java | 36 +++++++++++++++++++ .../RequestOneDayRewardReceive.java | 16 +++++++++ .../model/actor/request/RewardRequest.java | 36 +++++++++++++++++++ .../RequestOneDayRewardReceive.java | 16 +++++++++ .../model/actor/request/RewardRequest.java | 36 +++++++++++++++++++ .../RequestOneDayRewardReceive.java | 16 +++++++++ .../model/actor/request/RewardRequest.java | 36 +++++++++++++++++++ .../RequestOneDayRewardReceive.java | 16 +++++++++ 20 files changed, 524 insertions(+), 2 deletions(-) create mode 100644 L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/model/actor/request/RewardRequest.java create mode 100644 L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/model/actor/request/RewardRequest.java create mode 100644 L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/request/RewardRequest.java create mode 100644 L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/request/RewardRequest.java create mode 100644 L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/actor/request/RewardRequest.java create mode 100644 L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/actor/request/RewardRequest.java create mode 100644 L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/request/RewardRequest.java create mode 100644 L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/request/RewardRequest.java create mode 100644 L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/request/RewardRequest.java create mode 100644 L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/request/RewardRequest.java diff --git a/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/model/actor/request/RewardRequest.java b/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/model/actor/request/RewardRequest.java new file mode 100644 index 0000000000..4a096cf14e --- /dev/null +++ b/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/model/actor/request/RewardRequest.java @@ -0,0 +1,36 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.gameserver.model.actor.request; + +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; + +/** + * @author Mobius + */ +public class RewardRequest extends AbstractRequest +{ + public RewardRequest(PlayerInstance player) + { + super(player); + } + + @Override + public boolean isUsing(int objectId) + { + return false; + } +} diff --git a/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/dailymission/RequestOneDayRewardReceive.java b/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/dailymission/RequestOneDayRewardReceive.java index e50fc52a61..93eda04aa8 100644 --- a/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/dailymission/RequestOneDayRewardReceive.java +++ b/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/dailymission/RequestOneDayRewardReceive.java @@ -18,10 +18,13 @@ package org.l2jmobius.gameserver.network.clientpackets.dailymission; import java.util.Collection; +import org.l2jmobius.commons.concurrent.ThreadPool; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.xml.impl.DailyMissionData; import org.l2jmobius.gameserver.model.DailyMissionDataHolder; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.actor.request.RewardRequest; +import org.l2jmobius.gameserver.network.Disconnection; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; import org.l2jmobius.gameserver.network.serverpackets.dailymission.ExOneDayReceiveRewardList; @@ -55,6 +58,14 @@ public class RequestOneDayRewardReceive implements IClientIncomingPacket return; } + if (player.hasRequest(RewardRequest.class)) + { + LOGGER.warning("Kicked " + player + " for spamming " + getClass().getSimpleName()); + Disconnection.of(player).defaultSequence(true); + return; + } + player.addRequest(new RewardRequest(player)); + for (DailyMissionDataHolder holder : rewards) { if (holder.isDisplayable(player)) @@ -62,6 +73,12 @@ public class RequestOneDayRewardReceive implements IClientIncomingPacket holder.requestReward(player); } } + player.sendPacket(new ExOneDayReceiveRewardList(player)); + + ThreadPool.schedule(() -> + { + player.removeRequest(RewardRequest.class); + }, 50); } } diff --git a/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/model/actor/request/RewardRequest.java b/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/model/actor/request/RewardRequest.java new file mode 100644 index 0000000000..4a096cf14e --- /dev/null +++ b/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/model/actor/request/RewardRequest.java @@ -0,0 +1,36 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.gameserver.model.actor.request; + +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; + +/** + * @author Mobius + */ +public class RewardRequest extends AbstractRequest +{ + public RewardRequest(PlayerInstance player) + { + super(player); + } + + @Override + public boolean isUsing(int objectId) + { + return false; + } +} diff --git a/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/dailymission/RequestOneDayRewardReceive.java b/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/dailymission/RequestOneDayRewardReceive.java index e50fc52a61..93eda04aa8 100644 --- a/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/dailymission/RequestOneDayRewardReceive.java +++ b/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/dailymission/RequestOneDayRewardReceive.java @@ -18,10 +18,13 @@ package org.l2jmobius.gameserver.network.clientpackets.dailymission; import java.util.Collection; +import org.l2jmobius.commons.concurrent.ThreadPool; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.xml.impl.DailyMissionData; import org.l2jmobius.gameserver.model.DailyMissionDataHolder; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.actor.request.RewardRequest; +import org.l2jmobius.gameserver.network.Disconnection; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; import org.l2jmobius.gameserver.network.serverpackets.dailymission.ExOneDayReceiveRewardList; @@ -55,6 +58,14 @@ public class RequestOneDayRewardReceive implements IClientIncomingPacket return; } + if (player.hasRequest(RewardRequest.class)) + { + LOGGER.warning("Kicked " + player + " for spamming " + getClass().getSimpleName()); + Disconnection.of(player).defaultSequence(true); + return; + } + player.addRequest(new RewardRequest(player)); + for (DailyMissionDataHolder holder : rewards) { if (holder.isDisplayable(player)) @@ -62,6 +73,12 @@ public class RequestOneDayRewardReceive implements IClientIncomingPacket holder.requestReward(player); } } + player.sendPacket(new ExOneDayReceiveRewardList(player)); + + ThreadPool.schedule(() -> + { + player.removeRequest(RewardRequest.class); + }, 50); } } diff --git a/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/request/RewardRequest.java b/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/request/RewardRequest.java new file mode 100644 index 0000000000..4a096cf14e --- /dev/null +++ b/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/request/RewardRequest.java @@ -0,0 +1,36 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.gameserver.model.actor.request; + +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; + +/** + * @author Mobius + */ +public class RewardRequest extends AbstractRequest +{ + public RewardRequest(PlayerInstance player) + { + super(player); + } + + @Override + public boolean isUsing(int objectId) + { + return false; + } +} diff --git a/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/dailymission/RequestOneDayRewardReceive.java b/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/dailymission/RequestOneDayRewardReceive.java index 1d110ac6cd..cdee59faae 100644 --- a/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/dailymission/RequestOneDayRewardReceive.java +++ b/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/dailymission/RequestOneDayRewardReceive.java @@ -18,14 +18,16 @@ package org.l2jmobius.gameserver.network.clientpackets.dailymission; import java.util.Collection; +import org.l2jmobius.commons.concurrent.ThreadPool; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.xml.impl.DailyMissionData; import org.l2jmobius.gameserver.model.DailyMissionDataHolder; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.actor.request.RewardRequest; +import org.l2jmobius.gameserver.network.Disconnection; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; import org.l2jmobius.gameserver.network.serverpackets.dailymission.ExConnectedTimeAndGettableReward; -import org.l2jmobius.gameserver.network.serverpackets.dailymission.ExOneDayReceiveRewardList; /** * @author Sdw @@ -56,6 +58,14 @@ public class RequestOneDayRewardReceive implements IClientIncomingPacket return; } + if (player.hasRequest(RewardRequest.class)) + { + LOGGER.warning("Kicked " + player + " for spamming " + getClass().getSimpleName()); + Disconnection.of(player).defaultSequence(true); + return; + } + player.addRequest(new RewardRequest(player)); + for (DailyMissionDataHolder holder : rewards) { if (holder.isDisplayable(player)) @@ -63,7 +73,12 @@ public class RequestOneDayRewardReceive implements IClientIncomingPacket holder.requestReward(player); } } + player.sendPacket(new ExConnectedTimeAndGettableReward(player)); - player.sendPacket(new ExOneDayReceiveRewardList(player, true)); + + ThreadPool.schedule(() -> + { + player.removeRequest(RewardRequest.class); + }, 50); } } diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/request/RewardRequest.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/request/RewardRequest.java new file mode 100644 index 0000000000..4a096cf14e --- /dev/null +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/request/RewardRequest.java @@ -0,0 +1,36 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.gameserver.model.actor.request; + +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; + +/** + * @author Mobius + */ +public class RewardRequest extends AbstractRequest +{ + public RewardRequest(PlayerInstance player) + { + super(player); + } + + @Override + public boolean isUsing(int objectId) + { + return false; + } +} diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/dailymission/RequestOneDayRewardReceive.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/dailymission/RequestOneDayRewardReceive.java index e50fc52a61..93eda04aa8 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/dailymission/RequestOneDayRewardReceive.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/dailymission/RequestOneDayRewardReceive.java @@ -18,10 +18,13 @@ package org.l2jmobius.gameserver.network.clientpackets.dailymission; import java.util.Collection; +import org.l2jmobius.commons.concurrent.ThreadPool; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.xml.impl.DailyMissionData; import org.l2jmobius.gameserver.model.DailyMissionDataHolder; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.actor.request.RewardRequest; +import org.l2jmobius.gameserver.network.Disconnection; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; import org.l2jmobius.gameserver.network.serverpackets.dailymission.ExOneDayReceiveRewardList; @@ -55,6 +58,14 @@ public class RequestOneDayRewardReceive implements IClientIncomingPacket return; } + if (player.hasRequest(RewardRequest.class)) + { + LOGGER.warning("Kicked " + player + " for spamming " + getClass().getSimpleName()); + Disconnection.of(player).defaultSequence(true); + return; + } + player.addRequest(new RewardRequest(player)); + for (DailyMissionDataHolder holder : rewards) { if (holder.isDisplayable(player)) @@ -62,6 +73,12 @@ public class RequestOneDayRewardReceive implements IClientIncomingPacket holder.requestReward(player); } } + player.sendPacket(new ExOneDayReceiveRewardList(player)); + + ThreadPool.schedule(() -> + { + player.removeRequest(RewardRequest.class); + }, 50); } } diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/actor/request/RewardRequest.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/actor/request/RewardRequest.java new file mode 100644 index 0000000000..4a096cf14e --- /dev/null +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/actor/request/RewardRequest.java @@ -0,0 +1,36 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.gameserver.model.actor.request; + +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; + +/** + * @author Mobius + */ +public class RewardRequest extends AbstractRequest +{ + public RewardRequest(PlayerInstance player) + { + super(player); + } + + @Override + public boolean isUsing(int objectId) + { + return false; + } +} diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/dailymission/RequestOneDayRewardReceive.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/dailymission/RequestOneDayRewardReceive.java index d23f5d6ac1..fe46fed215 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/dailymission/RequestOneDayRewardReceive.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/dailymission/RequestOneDayRewardReceive.java @@ -18,10 +18,13 @@ package org.l2jmobius.gameserver.network.clientpackets.dailymission; import java.util.Collection; +import org.l2jmobius.commons.concurrent.ThreadPool; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.xml.impl.DailyMissionData; import org.l2jmobius.gameserver.model.DailyMissionDataHolder; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.actor.request.RewardRequest; +import org.l2jmobius.gameserver.network.Disconnection; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; import org.l2jmobius.gameserver.network.serverpackets.dailymission.ExConnectedTimeAndGettableReward; @@ -56,6 +59,14 @@ public class RequestOneDayRewardReceive implements IClientIncomingPacket return; } + if (player.hasRequest(RewardRequest.class)) + { + LOGGER.warning("Kicked " + player + " for spamming " + getClass().getSimpleName()); + Disconnection.of(player).defaultSequence(true); + return; + } + player.addRequest(new RewardRequest(player)); + for (DailyMissionDataHolder holder : rewards) { if (holder.isDisplayable(player)) @@ -66,5 +77,10 @@ public class RequestOneDayRewardReceive implements IClientIncomingPacket player.sendPacket(new ExConnectedTimeAndGettableReward(player)); player.sendPacket(new ExOneDayReceiveRewardList(player, true)); + + ThreadPool.schedule(() -> + { + player.removeRequest(RewardRequest.class); + }, 50); } } diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/actor/request/RewardRequest.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/actor/request/RewardRequest.java new file mode 100644 index 0000000000..4a096cf14e --- /dev/null +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/actor/request/RewardRequest.java @@ -0,0 +1,36 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.gameserver.model.actor.request; + +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; + +/** + * @author Mobius + */ +public class RewardRequest extends AbstractRequest +{ + public RewardRequest(PlayerInstance player) + { + super(player); + } + + @Override + public boolean isUsing(int objectId) + { + return false; + } +} diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/dailymission/RequestOneDayRewardReceive.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/dailymission/RequestOneDayRewardReceive.java index d23f5d6ac1..fe46fed215 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/dailymission/RequestOneDayRewardReceive.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/dailymission/RequestOneDayRewardReceive.java @@ -18,10 +18,13 @@ package org.l2jmobius.gameserver.network.clientpackets.dailymission; import java.util.Collection; +import org.l2jmobius.commons.concurrent.ThreadPool; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.xml.impl.DailyMissionData; import org.l2jmobius.gameserver.model.DailyMissionDataHolder; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.actor.request.RewardRequest; +import org.l2jmobius.gameserver.network.Disconnection; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; import org.l2jmobius.gameserver.network.serverpackets.dailymission.ExConnectedTimeAndGettableReward; @@ -56,6 +59,14 @@ public class RequestOneDayRewardReceive implements IClientIncomingPacket return; } + if (player.hasRequest(RewardRequest.class)) + { + LOGGER.warning("Kicked " + player + " for spamming " + getClass().getSimpleName()); + Disconnection.of(player).defaultSequence(true); + return; + } + player.addRequest(new RewardRequest(player)); + for (DailyMissionDataHolder holder : rewards) { if (holder.isDisplayable(player)) @@ -66,5 +77,10 @@ public class RequestOneDayRewardReceive implements IClientIncomingPacket player.sendPacket(new ExConnectedTimeAndGettableReward(player)); player.sendPacket(new ExOneDayReceiveRewardList(player, true)); + + ThreadPool.schedule(() -> + { + player.removeRequest(RewardRequest.class); + }, 50); } } diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/request/RewardRequest.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/request/RewardRequest.java new file mode 100644 index 0000000000..4a096cf14e --- /dev/null +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/request/RewardRequest.java @@ -0,0 +1,36 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.gameserver.model.actor.request; + +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; + +/** + * @author Mobius + */ +public class RewardRequest extends AbstractRequest +{ + public RewardRequest(PlayerInstance player) + { + super(player); + } + + @Override + public boolean isUsing(int objectId) + { + return false; + } +} diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/dailymission/RequestOneDayRewardReceive.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/dailymission/RequestOneDayRewardReceive.java index d23f5d6ac1..fe46fed215 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/dailymission/RequestOneDayRewardReceive.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/dailymission/RequestOneDayRewardReceive.java @@ -18,10 +18,13 @@ package org.l2jmobius.gameserver.network.clientpackets.dailymission; import java.util.Collection; +import org.l2jmobius.commons.concurrent.ThreadPool; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.xml.impl.DailyMissionData; import org.l2jmobius.gameserver.model.DailyMissionDataHolder; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.actor.request.RewardRequest; +import org.l2jmobius.gameserver.network.Disconnection; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; import org.l2jmobius.gameserver.network.serverpackets.dailymission.ExConnectedTimeAndGettableReward; @@ -56,6 +59,14 @@ public class RequestOneDayRewardReceive implements IClientIncomingPacket return; } + if (player.hasRequest(RewardRequest.class)) + { + LOGGER.warning("Kicked " + player + " for spamming " + getClass().getSimpleName()); + Disconnection.of(player).defaultSequence(true); + return; + } + player.addRequest(new RewardRequest(player)); + for (DailyMissionDataHolder holder : rewards) { if (holder.isDisplayable(player)) @@ -66,5 +77,10 @@ public class RequestOneDayRewardReceive implements IClientIncomingPacket player.sendPacket(new ExConnectedTimeAndGettableReward(player)); player.sendPacket(new ExOneDayReceiveRewardList(player, true)); + + ThreadPool.schedule(() -> + { + player.removeRequest(RewardRequest.class); + }, 50); } } diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/request/RewardRequest.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/request/RewardRequest.java new file mode 100644 index 0000000000..4a096cf14e --- /dev/null +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/request/RewardRequest.java @@ -0,0 +1,36 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.gameserver.model.actor.request; + +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; + +/** + * @author Mobius + */ +public class RewardRequest extends AbstractRequest +{ + public RewardRequest(PlayerInstance player) + { + super(player); + } + + @Override + public boolean isUsing(int objectId) + { + return false; + } +} diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/dailymission/RequestOneDayRewardReceive.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/dailymission/RequestOneDayRewardReceive.java index d23f5d6ac1..fe46fed215 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/dailymission/RequestOneDayRewardReceive.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/dailymission/RequestOneDayRewardReceive.java @@ -18,10 +18,13 @@ package org.l2jmobius.gameserver.network.clientpackets.dailymission; import java.util.Collection; +import org.l2jmobius.commons.concurrent.ThreadPool; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.xml.impl.DailyMissionData; import org.l2jmobius.gameserver.model.DailyMissionDataHolder; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.actor.request.RewardRequest; +import org.l2jmobius.gameserver.network.Disconnection; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; import org.l2jmobius.gameserver.network.serverpackets.dailymission.ExConnectedTimeAndGettableReward; @@ -56,6 +59,14 @@ public class RequestOneDayRewardReceive implements IClientIncomingPacket return; } + if (player.hasRequest(RewardRequest.class)) + { + LOGGER.warning("Kicked " + player + " for spamming " + getClass().getSimpleName()); + Disconnection.of(player).defaultSequence(true); + return; + } + player.addRequest(new RewardRequest(player)); + for (DailyMissionDataHolder holder : rewards) { if (holder.isDisplayable(player)) @@ -66,5 +77,10 @@ public class RequestOneDayRewardReceive implements IClientIncomingPacket player.sendPacket(new ExConnectedTimeAndGettableReward(player)); player.sendPacket(new ExOneDayReceiveRewardList(player, true)); + + ThreadPool.schedule(() -> + { + player.removeRequest(RewardRequest.class); + }, 50); } } diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/request/RewardRequest.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/request/RewardRequest.java new file mode 100644 index 0000000000..4a096cf14e --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/request/RewardRequest.java @@ -0,0 +1,36 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.gameserver.model.actor.request; + +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; + +/** + * @author Mobius + */ +public class RewardRequest extends AbstractRequest +{ + public RewardRequest(PlayerInstance player) + { + super(player); + } + + @Override + public boolean isUsing(int objectId) + { + return false; + } +} diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/dailymission/RequestOneDayRewardReceive.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/dailymission/RequestOneDayRewardReceive.java index d23f5d6ac1..fe46fed215 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/dailymission/RequestOneDayRewardReceive.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/dailymission/RequestOneDayRewardReceive.java @@ -18,10 +18,13 @@ package org.l2jmobius.gameserver.network.clientpackets.dailymission; import java.util.Collection; +import org.l2jmobius.commons.concurrent.ThreadPool; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.xml.impl.DailyMissionData; import org.l2jmobius.gameserver.model.DailyMissionDataHolder; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.actor.request.RewardRequest; +import org.l2jmobius.gameserver.network.Disconnection; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; import org.l2jmobius.gameserver.network.serverpackets.dailymission.ExConnectedTimeAndGettableReward; @@ -56,6 +59,14 @@ public class RequestOneDayRewardReceive implements IClientIncomingPacket return; } + if (player.hasRequest(RewardRequest.class)) + { + LOGGER.warning("Kicked " + player + " for spamming " + getClass().getSimpleName()); + Disconnection.of(player).defaultSequence(true); + return; + } + player.addRequest(new RewardRequest(player)); + for (DailyMissionDataHolder holder : rewards) { if (holder.isDisplayable(player)) @@ -66,5 +77,10 @@ public class RequestOneDayRewardReceive implements IClientIncomingPacket player.sendPacket(new ExConnectedTimeAndGettableReward(player)); player.sendPacket(new ExOneDayReceiveRewardList(player, true)); + + ThreadPool.schedule(() -> + { + player.removeRequest(RewardRequest.class); + }, 50); } } diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/request/RewardRequest.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/request/RewardRequest.java new file mode 100644 index 0000000000..4a096cf14e --- /dev/null +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/request/RewardRequest.java @@ -0,0 +1,36 @@ +/* + * This file is part of the L2J Mobius project. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.l2jmobius.gameserver.model.actor.request; + +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; + +/** + * @author Mobius + */ +public class RewardRequest extends AbstractRequest +{ + public RewardRequest(PlayerInstance player) + { + super(player); + } + + @Override + public boolean isUsing(int objectId) + { + return false; + } +} diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/dailymission/RequestOneDayRewardReceive.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/dailymission/RequestOneDayRewardReceive.java index d23f5d6ac1..fe46fed215 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/dailymission/RequestOneDayRewardReceive.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/dailymission/RequestOneDayRewardReceive.java @@ -18,10 +18,13 @@ package org.l2jmobius.gameserver.network.clientpackets.dailymission; import java.util.Collection; +import org.l2jmobius.commons.concurrent.ThreadPool; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.xml.impl.DailyMissionData; import org.l2jmobius.gameserver.model.DailyMissionDataHolder; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.actor.request.RewardRequest; +import org.l2jmobius.gameserver.network.Disconnection; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; import org.l2jmobius.gameserver.network.serverpackets.dailymission.ExConnectedTimeAndGettableReward; @@ -56,6 +59,14 @@ public class RequestOneDayRewardReceive implements IClientIncomingPacket return; } + if (player.hasRequest(RewardRequest.class)) + { + LOGGER.warning("Kicked " + player + " for spamming " + getClass().getSimpleName()); + Disconnection.of(player).defaultSequence(true); + return; + } + player.addRequest(new RewardRequest(player)); + for (DailyMissionDataHolder holder : rewards) { if (holder.isDisplayable(player)) @@ -66,5 +77,10 @@ public class RequestOneDayRewardReceive implements IClientIncomingPacket player.sendPacket(new ExConnectedTimeAndGettableReward(player)); player.sendPacket(new ExOneDayReceiveRewardList(player, true)); + + ThreadPool.schedule(() -> + { + player.removeRequest(RewardRequest.class); + }, 50); } }