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);
}
}