Just requested by sexomaniakos.
Coded very fast , in 5 minutes, didn't tested.
For ex:
I see a player that I think he is farming with bot , i press .report targeting him.
A window appears to him with a random code ( 4 - 9 characters ) and he must add it in a field. He has 20 seconds , or else he gets jail for 15 minutes as a BOT.For sure it needs some limits , but i didn't have time now. If you want to edit it pm me.
### Eclipse Workspace Patch 1.0
#P L2jFrozen_GameServer
Index: head-src/com/l2jfrozen/gameserver/handler/voicedcommandhandlers/ReportPlayer.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/handler/voicedcommandhandlers/ReportPlayer.java (revision 0)
+++ head-src/com/l2jfrozen/gameserver/handler/voicedcommandhandlers/ReportPlayer.java (revision 0)
@@ -0,0 +1,115 @@
+/*
+ * 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 2, 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, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+package com.l2jfrozen.gameserver.handler.voicedcommandhandlers;
+
+import com.l2jfrozen.gameserver.handler.IVoicedCommandHandler;
+import com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance;
+import com.l2jfrozen.gameserver.network.serverpackets.NpcHtmlMessage;
+import com.l2jfrozen.gameserver.thread.ThreadPoolManager;
+import com.l2jfrozen.util.random.Rnd;
+
+/**
+ *
+ *
+ * @author Rizlaaa
+ */
+public class ReportPlayer implements IVoicedCommandHandler
+{
+
+ private final String[] REPORT_COMMAND = {"report"};
+
+ class BotCheck implements Runnable
+ {
+ L2PcInstance player;
+
+ private BotCheck(L2PcInstance character)
+ {
+ player = character;
+ }
+
+ @Override
+ public void run()
+ {
+ if(player.isBot())
+ {
+ player.setPunishLevel(L2PcInstance.PunishLevel.JAIL, 15);
+ player.sendMessage("You are in jail now.");
+ }
+ }
+
+ }
+
+ @Override
+ public boolean useVoicedCommand(String command, L2PcInstance activeChar, String target)
+ {
+ if(command.equalsIgnoreCase("report"))
+ {
+ if(activeChar==null) return false;
+
+ L2PcInstance playerTarget = (L2PcInstance) activeChar.getTarget();
+
+ if(playerTarget == null)
+ {
+ activeChar.sendMessage("Your target is incorrect.");
+ return false;
+ }
+
+ if(playerTarget.isBot())
+ {
+ activeChar.sendMessage("This player has been already requested for botting");
+ return false;
+ }
+
+ String password = getPass(Rnd.get(4, 9));
+
+ NpcHtmlMessage html = new NpcHtmlMessage(0);
+ html.setFile("data/html/report.htm");
+ html.replace("%code", password);
+ playerTarget.sendPacket(html);
+ playerTarget.setBot(true);
+ playerTarget.code = password;
+
+ //schedule the check after 20 seconds
+ ThreadPoolManager.getInstance().scheduleGeneral(new BotCheck(playerTarget), 2000);
+
+ }
+
+ return true;
+ }
+
+ private String getPass(int size)
+ {
+ String abc = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890";
+
+ StringBuilder stringBuilder = new StringBuilder(size);
+
+ for(int j=0;j<size;j++)
+ stringBuilder.append(abc.charAt(Rnd.get(abc.length())));
+
+ return stringBuilder.toString();
+ }
+
+
+ @Override
+ public String[] getVoicedCommandList()
+ {
+ return REPORT_COMMAND;
+ }
+
+}
Index: head-src/com/l2jfrozen/gameserver/network/clientpackets/RequestBypassToServer.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/network/clientpackets/RequestBypassToServer.java (revision 18)
+++ head-src/com/l2jfrozen/gameserver/network/clientpackets/RequestBypassToServer.java (working copy)
@@ -143,6 +143,25 @@
activeChar.teleToLocation(82904, 148620, -3469);
return;
}
+ else if(_command.startsWith("report"))
+ {
+ String sub = _command.substring(6);
+ StringTokenizer st = new StringTokenizer(sub);
+ String code = "";
+ if(st.hasMoreTokens())
+ code = st.nextToken();
+
+ if(code == activeChar.code)
+ {
+ activeChar.sendMessage("You are now safe.");
+ activeChar.setBot(false);
+ }
+ else
+ {
+ activeChar.sendMessage("Incorrect password");
+ }
+
+ }
else if (_command.startsWith("teleport_aden"))
{
activeChar.teleToLocation(147457, 27152, -225);
Index: head-src/com/l2jfrozen/gameserver/model/actor/instance/L2PcInstance.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/model/actor/instance/L2PcInstance.java (revision 24)
+++ head-src/com/l2jfrozen/gameserver/model/actor/instance/L2PcInstance.java (working copy)
@@ -1037,6 +1037,8 @@
/** The _noble. */
private boolean _noble = false;
+ private boolean botCheck = false;
+
private boolean _daytop = false;
private int _daykills = 0;
@@ -1045,6 +1047,8 @@
/** The _donator. */
private boolean _donator = false;
+
+ public String code = "";
/** The L2FolkInstance corresponding to the last Folk wich one the player talked. */
private L2FolkInstance _lastFolkNpc = null;
@@ -12895,6 +12899,16 @@
{
return _inventoryDisable;
}
+
+ public boolean isBot()
+ {
+ return botCheck;
+ }
+
+ public void setBot(boolean bot)
+ {
+ botCheck = bot;
+ }
/**
* The Class InventoryEnable.
### Eclipse Workspace Patch 1.0
#P L2jFrozen_DataPack
Index: data/html/report.htm
===================================================================
--- data/html/report.htm (revision 0)
+++ data/html/report.htm (revision 0)
@@ -0,0 +1,15 @@
+<html>
+<body>
+
+Player %p reports you for botting.
+
+<br>
+
+Enter the code: %code to avoid jail<br>
+
+<edit var="code" height=20 width=20>
+
+<button value="Save me" action="bypass -h report $code height=20 width=15>
+
+</body>
+</html>
\ No newline at end of file