diff --git a/L2J_DataPack_BETA/dist/game/config/adminCommands.xml b/L2J_DataPack_BETA/dist/game/config/adminCommands.xml index 0b728439fac66aac44ab02157489f913f19b947c..ded1cd56db9ef03b9f912073fa8d048d5e431d17 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 30be03f44bbd6ce92f08606d9ab3fb1866e03ba8..f2e9da57a53782b615422880756521d692a13ff3 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 0000000000000000000000000000000000000000..cf1387fb898e244399bc8c26e7af5b8b192596bc --- /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 9d2c8a6428e6d3106a776eae0b475b9345953435..361772c7fb056ab4bd731ea06b86b57d5903c80a 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 0000000000000000000000000000000000000000..60c1a0ffdcb836d9847081622f165894206673c7 --- /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 8bf1852ca46aef0d0a88ff876196093d349d95e1..a1ac8fac4e88c6e176bdfdaa6a36437b29f3a869 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" />