From bf85eecfd9008510bb6cba0bdd0c0e37bb01d1e1 Mon Sep 17 00:00:00 2001 From: Rumen Nikiforov <unafraid89@gmail.com> Date: Fri, 12 Apr 2013 00:22:13 +0000 Subject: [PATCH] BETA: Adding new admin command !//scan [range] displays all NPCs around you giving u ability to move to the NPC or delete it. * Reviewed by: FBIagent, MELERIX --- .../dist/game/config/adminCommands.xml | 6 +- .../dist/game/data/html/admin/main_menu.htm | 2 + .../dist/game/data/html/admin/scan.htm | 23 ++++ L2J_DataPack_BETA/dist/game/data/scripts.cfg | 1 + .../admincommandhandlers/AdminScan.js | 116 ++++++++++++++++++ .../dist/game/data/xsd/adminCommands.xsd | 2 + 6 files changed, 149 insertions(+), 1 deletion(-) create mode 100644 L2J_DataPack_BETA/dist/game/data/html/admin/scan.htm create mode 100644 L2J_DataPack_BETA/dist/game/data/scripts/handlers/admincommandhandlers/AdminScan.js diff --git a/L2J_DataPack_BETA/dist/game/config/adminCommands.xml b/L2J_DataPack_BETA/dist/game/config/adminCommands.xml index 0b728439fa..ded1cd56db 100644 --- a/L2J_DataPack_BETA/dist/game/config/adminCommands.xml +++ b/L2J_DataPack_BETA/dist/game/config/adminCommands.xml @@ -3,7 +3,7 @@ <!-- ADMIN COND EXCEPTIONS --> <admin command="admin_exceptions" accessLevel="7" /> <admin command="admin_set_exception" accessLevel="7" confirmDlg="true" /> - + <!-- ADMIN ADMIN --> <admin command="admin_admin" accessLevel="7" /> <admin command="admin_admin1" accessLevel="7" /> @@ -632,6 +632,10 @@ <admin command="admin_zone_visual" accessLevel="7" /> <admin command="admin_zone_visual_clear" accessLevel="7" /> + <!-- ADMIN SCAN --> + <admin command="admin_scan" accessLevel="7" /> + <admin command="admin_deleteNpcByObjectId" accessLevel="7" confirmDlg="true" /> + <!-- VOICE COMMANDS --> <admin command="banchat" accessLevel="7" /> <admin command="debug" accessLevel="7" /> diff --git a/L2J_DataPack_BETA/dist/game/data/html/admin/main_menu.htm b/L2J_DataPack_BETA/dist/game/data/html/admin/main_menu.htm index 30be03f44b..f2e9da57a5 100644 --- a/L2J_DataPack_BETA/dist/game/data/html/admin/main_menu.htm +++ b/L2J_DataPack_BETA/dist/game/data/html/admin/main_menu.htm @@ -26,6 +26,8 @@ <td><button value="ListSpwn" action="bypass -h admin_list_spawns $qbox" width=65 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"></td> <td><button value="goPosition" action="bypass -h admin_list_positions $qbox 1" width=65 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"></td> <td><button value="goSpawn" action="bypass -h admin_list_spawns $qbox 1" width=65 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"></td> +</tr><tr> +<td><button value="Scan" action="bypass -h admin_scan $qbox" width=65 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"></td> </tr> </table> <br> diff --git a/L2J_DataPack_BETA/dist/game/data/html/admin/scan.htm b/L2J_DataPack_BETA/dist/game/data/html/admin/scan.htm new file mode 100644 index 0000000000..cf1387fb89 --- /dev/null +++ b/L2J_DataPack_BETA/dist/game/data/html/admin/scan.htm @@ -0,0 +1,23 @@ +<html><title>L2J Main Admin Menu</title><body> +<center> +<table width=270 border=0 bgcolor="444444"> +<tr> +<td><button value="Main" action="bypass -h admin_admin" width=65 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"></td> +<td><button value="Char" action="bypass -h admin_admin6" width=65 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"></td> +<td><button value="Game" action="bypass -h admin_admin2" width=65 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"></td> +<td><button value="GM" action="bypass -h admin_admin7" width=65 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"></td> +</tr> +</table><br> +<table width=270> +<tr> +<td width="54">Id</td> +<td width="54">Name</td> +<td width="54">Dist</td> +<td width="54">Delete</td> +<td width="54">Goto</td> +</tr> +%data% +</table> +</center> +</body> +</html> \ No newline at end of file diff --git a/L2J_DataPack_BETA/dist/game/data/scripts.cfg b/L2J_DataPack_BETA/dist/game/data/scripts.cfg index 9d2c8a6428..361772c7fb 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts.cfg +++ b/L2J_DataPack_BETA/dist/game/data/scripts.cfg @@ -7,6 +7,7 @@ # Load Handlers handlers/MasterHandler.java +handlers/admincommandhandlers/AdminScan.js # AI Section diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/admincommandhandlers/AdminScan.js b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/admincommandhandlers/AdminScan.js new file mode 100644 index 0000000000..60c1a0ffdc --- /dev/null +++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/admincommandhandlers/AdminScan.js @@ -0,0 +1,116 @@ +/* + * Copyright (C) 2004-2013 L2J DataPack + * + * This file is part of L2J DataPack. + * + * L2J DataPack 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. + * + * L2J DataPack 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 <http://www.gnu.org/licenses/>. + */ +importPackage(java.util); +importPackage(java.lang); +importPackage(com.l2jserver.gameserver.cache); +importPackage(com.l2jserver.gameserver.datatables); +importPackage(com.l2jserver.gameserver.handler); +importPackage(com.l2jserver.gameserver.instancemanager); +importPackage(com.l2jserver.gameserver.model); +importPackage(com.l2jserver.gameserver.model.actor); +importPackage(com.l2jserver.gameserver.model.actor.instance); +importPackage(com.l2jserver.gameserver.network.serverpackets); +importPackage(com.l2jserver.gameserver.util); + +/** + * @author UnAfraid + */ +AdminCommandHandler.getInstance().registerHandler(new JavaAdapter(IAdminCommandHandler, +{ + // Override useAdminCommand() method. + useAdminCommand : function(command, player) + { + var st = new StringTokenizer(command, " "); + if (st.hasMoreTokens()) + { + var cmd = st.nextToken(); + if (cmd == 'admin_scan') + { + var radius = 500; + if (st.hasMoreTokens()) + { + var obj = st.nextToken(); + if (Util.isDigit(obj)) + { + radius = obj; + } + } + + var htm = HtmCache.getInstance().getHtm(player.getHtmlPrefix(), "data/html/admin/scan.htm"); + var sb = new StringBuilder(); + var it = player.getKnownList().getKnownCharactersInRadius(radius).iterator(); + while (it.hasNext()) + { + var character = it.next(); + if (character instanceof L2Npc) + { + sb.append("<tr>"); + sb.append("<td width=\"54\">" + character.getNpcId() + "</td>"); + sb.append("<td width=\"54\">" + character.getName() + "</td>"); + sb.append("<td width=\"54\">" + Math.round(Util.calculateDistance(player, character, false)) + "</td>"); + sb.append("<td width=\"54\"><a action=\"bypass -h admin_deleteNpcByObjectId " + character.getObjectId() + "\"><font color=\"LEVEL\">Delete</font></a></td>"); + sb.append("<td width=\"54\"><a action=\"bypass -h admin_move_to " + character.getX() + " " + character.getY() + " " + character.getZ() + "\"><font color=\"LEVEL\">Go to</font></a></td>"); + sb.append("</tr>"); + } + } + htm = htm.replaceAll("%data%", sb.toString()); + player.sendPacket(new NpcHtmlMessage(0, htm)); + } + else if (cmd = 'admin_deleteNpcByObjectId' && st.hasMoreTokens()) + { + var objectId = st.nextToken(); + if (Util.isDigit(objectId)) + { + var it = player.getKnownList().getKnownCharacters().iterator(); + while (it.hasNext()) + { + var character = it.next(); + if ((character instanceof L2Npc) && (character.getObjectId() == objectId)) + { + character.deleteMe(); + var spawn = character.getSpawn(); + if (spawn != null) + { + spawn.stopRespawn(); + + if (RaidBossSpawnManager.getInstance().isDefined(spawn.getNpcid())) + { + RaidBossSpawnManager.getInstance().deleteSpawn(spawn, true); + } + else + { + SpawnTable.getInstance().deleteSpawn(spawn, true); + } + } + player.sendMessage(character.getName() + " have been deleted."); + this.useAdminCommand("admin_scan", player); + } + } + } + } + } + return true; + }, + + // Override getAdminCommandList() method. + getAdminCommandList : function() + { + return new Array("admin_scan", "admin_deleteNpcByObjectId"); + } +})); \ No newline at end of file diff --git a/L2J_DataPack_BETA/dist/game/data/xsd/adminCommands.xsd b/L2J_DataPack_BETA/dist/game/data/xsd/adminCommands.xsd index 8bf1852ca4..a1ac8fac4e 100644 --- a/L2J_DataPack_BETA/dist/game/data/xsd/adminCommands.xsd +++ b/L2J_DataPack_BETA/dist/game/data/xsd/adminCommands.xsd @@ -500,6 +500,8 @@ <xs:enumeration value="admin_zone_reload" /> <xs:enumeration value="admin_zone_visual_clear" /> <xs:enumeration value="admin_zone_visual" /> + <xs:enumeration value="admin_scan" /> + <xs:enumeration value="admin_deleteNpcByObjectId" /> <xs:enumeration value="banchat" /> <xs:enumeration value="debug" /> <xs:enumeration value="recall" /> -- GitLab