/* * 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 <http://www.gnu.org/licenses/>. */ package silentium.scripts.handlers.admin; import javolution.text.TextBuilder; import silentium.gameserver.data.html.StaticHtmPath; import silentium.gameserver.handler.IAdminCommandHandler; import silentium.gameserver.model.actor.instance.L2PcInstance; import silentium.gameserver.network.clientpackets.Say2; import silentium.gameserver.network.serverpackets.AdminForgePacket; import silentium.gameserver.network.serverpackets.NpcHtmlMessage; import java.util.StringTokenizer; /** * This class handles commands for gm to forge packets * * @author Maktakien */ public class AdminPForge implements IAdminCommandHandler { private static final String[] ADMIN_COMMANDS = { "admin_forge", "admin_forge2", "admin_forge3" }; @Override public boolean useAdminCommand(final String command, final L2PcInstance activeChar) { if ("admin_forge".equals(command)) showMainPage(activeChar); else if (command.startsWith("admin_forge2")) { try { final StringTokenizer st = new StringTokenizer(command); st.nextToken(); final String format = st.nextToken(); showPage2(activeChar, format); } catch (Exception ex) { activeChar.sendChatMessage(0, Say2.ALL, "SYS", "Usage: //forge2 format"); } } else if (command.startsWith("admin_forge3")) { try { final StringTokenizer st = new StringTokenizer(command); st.nextToken(); String format = st.nextToken(); boolean broadcast = false; if ("broadcast".equals(format.toLowerCase())) { format = st.nextToken(); broadcast = true; } final AdminForgePacket sp = new AdminForgePacket(); for (int i = 0; i < format.length(); i++) { String val = st.nextToken(); if ("$objid".equals(val.toLowerCase())) { val = String.valueOf(activeChar.getObjectId()); } else if ("$tobjid".equals(val.toLowerCase())) { val = String.valueOf(activeChar.getTarget().getObjectId()); } else if ("$bobjid".equals(val.toLowerCase())) { if (activeChar.getBoat() != null) { val = String.valueOf(activeChar.getBoat().getObjectId()); } } else if ("$clanid".equals(val.toLowerCase())) { val = String.valueOf(activeChar.getCharId()); } else if ("$allyid".equals(val.toLowerCase())) { val = String.valueOf(activeChar.getAllyId()); } else if ("$tclanid".equals(val.toLowerCase())) { val = String.valueOf(((L2PcInstance) activeChar.getTarget()).getCharId()); } else if ("$tallyid".equals(val.toLowerCase())) { val = String.valueOf(((L2PcInstance) activeChar.getTarget()).getAllyId()); } else if ("$x".equals(val.toLowerCase())) { val = String.valueOf(activeChar.getX()); } else if ("$y".equals(val.toLowerCase())) { val = String.valueOf(activeChar.getY()); } else if ("$z".equals(val.toLowerCase())) { val = String.valueOf(activeChar.getZ()); } else if ("$heading".equals(val.toLowerCase())) { val = String.valueOf(activeChar.getHeading()); } else if ("$tx".equals(val.toLowerCase())) { val = String.valueOf(activeChar.getTarget().getX()); } else if ("$ty".equals(val.toLowerCase())) { val = String.valueOf(activeChar.getTarget().getY()); } else if ("$tz".equals(val.toLowerCase())) { val = String.valueOf(activeChar.getTarget().getZ()); } else if ("$theading".equals(val.toLowerCase())) { val = String.valueOf(((L2PcInstance) activeChar.getTarget()).getHeading()); } sp.addPart(format.getBytes()[i], val); } if (broadcast) activeChar.broadcastPacket(sp); else activeChar.sendPacket(sp); showPage3(activeChar, format, command); } catch (Exception ex) { activeChar.sendChatMessage(0, Say2.ALL, "SYS", "Usage: //forge or //forge2 format"); } } return true; } private static void showMainPage(final L2PcInstance activeChar) { AdminHelpPage.showHelpPage(activeChar, "pforge1.htm"); } private static void showPage2(final L2PcInstance activeChar, final String format) { final NpcHtmlMessage adminReply = new NpcHtmlMessage(5); adminReply.setFile(StaticHtmPath.AdminHtmPath + "pforge2.htm", activeChar); adminReply.replace("%format%", format); final TextBuilder replyMSG = new TextBuilder(); for (int i = 0; i < format.length(); i++) replyMSG.append(format.charAt(i)).append(" : <edit var=\"v").append(i).append("\" width=100><br1>"); adminReply.replace("%valueditors%", replyMSG.toString()); replyMSG.clear(); for (int i = 0; i < format.length(); i++) replyMSG.append(" \\$v").append(i); adminReply.replace("%send%", replyMSG.toString()); activeChar.sendPacket(adminReply); } private static void showPage3(final L2PcInstance activeChar, final String format, final String command) { final NpcHtmlMessage adminReply = new NpcHtmlMessage(5); adminReply.setFile(StaticHtmPath.AdminHtmPath + "pforge3.htm", activeChar); adminReply.replace("%format%", format); adminReply.replace("%command%", command); activeChar.sendPacket(adminReply); } @Override public String[] getAdminCommandList() { return ADMIN_COMMANDS; } }