/* * 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 net.sf.l2j.gameserver.handler.admincommandhandlers; import java.util.StringTokenizer; import net.sf.l2j.Config; import net.sf.l2j.gameserver.GmListTable; import net.sf.l2j.gameserver.Olympiad; import net.sf.l2j.gameserver.cache.HtmCache; import net.sf.l2j.gameserver.datatables.AccessLevels; import net.sf.l2j.gameserver.datatables.AdminCommandAccessRights; import net.sf.l2j.gameserver.datatables.ItemTable; import net.sf.l2j.gameserver.datatables.NpcTable; import net.sf.l2j.gameserver.datatables.NpcWalkerRoutesTable; import net.sf.l2j.gameserver.datatables.SkillTable; import net.sf.l2j.gameserver.datatables.TeleportLocationTable; import net.sf.l2j.gameserver.handler.IAdminCommandHandler; import net.sf.l2j.gameserver.instancemanager.Manager; import net.sf.l2j.gameserver.model.L2Multisell; import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance; import net.sf.l2j.gameserver.network.SystemMessageId; import net.sf.l2j.gameserver.network.serverpackets.SystemMessage; /** * This class handles following admin commands: * - admin|admin1/admin2/admin3/admin4/admin5 = slots for the 5 starting admin menus * - gmliston/gmlistoff = includes/excludes active character from /gmlist results * - silence = toggles private messages acceptance mode * - diet = toggles weight penalty mode * - tradeoff = toggles trade acceptance mode * - reload = reloads specified component from multisell|skill|npc|htm|item|instancemanager * - set/set_menu/set_mod = alters specified server setting * - saveolymp = saves olympiad state manually * - manualhero = cycles olympiad and calculate new heroes. * @version $Revision: 1.3.2.1.2.4 $ $Date: 2007/07/28 10:06:06 $ */ public class AdminAdmin implements IAdminCommandHandler { private static final String[] ADMIN_COMMANDS = { "admin_admin", "admin_admin1", "admin_admin2", "admin_admin3", "admin_admin4", "admin_admin5", "admin_gmliston", "admin_gmlistoff", "admin_silence", "admin_diet", "admin_tradeoff", "admin_reload", "admin_set", "admin_set_menu", "admin_set_mod", "admin_saveolymp", "admin_manualhero", "admin_sethero", "admin_endolympiad" }; public boolean useAdminCommand(String command, L2PcInstance activeChar) { if (command.startsWith("admin_admin")) { showMainPage(activeChar, command); } else if (command.startsWith("admin_gmliston")) { GmListTable.getInstance().showGm(activeChar); activeChar.sendMessage("Registered into gm list"); } else if (command.startsWith("admin_gmlistoff")) { GmListTable.getInstance().hideGm(activeChar); activeChar.sendMessage("Removed from gm list"); } else if (command.startsWith("admin_silence")) { if (activeChar.getMessageRefusal()) // already in message refusal mode { activeChar.setMessageRefusal(false); activeChar.sendPacket(new SystemMessage(SystemMessageId.MESSAGE_ACCEPTANCE_MODE)); } else { activeChar.setMessageRefusal(true); activeChar.sendPacket(new SystemMessage(SystemMessageId.MESSAGE_REFUSAL_MODE)); } } else if (command.startsWith("admin_saveolymp")) { try { Olympiad.getInstance().save(); } catch (Exception e) { e.printStackTrace(); } activeChar.sendMessage("olympiad stuff saved!!"); } else if (command.startsWith("admin_endolympiad")) { try { Olympiad.getInstance().manualSelectHeroes(); } catch (Exception e) { e.printStackTrace(); } activeChar.sendMessage("Heroes formed"); } else if (command.startsWith("admin_manualhero") || command.startsWith("admin_sethero")) { L2PcInstance target = null; if (activeChar.getTarget() instanceof L2PcInstance) { target = (L2PcInstance) activeChar.getTarget(); target.setHero(target.isHero() ? false : true); } else { target = activeChar; target.setHero(target.isHero() ? false : true); } } else if (command.startsWith("admin_diet")) { try { StringTokenizer st = new StringTokenizer(command); st.nextToken(); if (st.nextToken().equalsIgnoreCase("on")) { activeChar.setDietMode(true); activeChar.sendMessage("Diet mode on"); } else if (st.nextToken().equalsIgnoreCase("off")) { activeChar.setDietMode(false); activeChar.sendMessage("Diet mode off"); } } catch (Exception ex) { if (activeChar.getDietMode()) { activeChar.setDietMode(false); activeChar.sendMessage("Diet mode off"); } else { activeChar.setDietMode(true); activeChar.sendMessage("Diet mode on"); } } finally { activeChar.refreshOverloaded(); } } else if (command.startsWith("admin_tradeoff")) { try { String mode = command.substring(15); if (mode.equalsIgnoreCase("on")) { activeChar.setTradeRefusal(true); activeChar.sendMessage("Trade refusal enabled"); } else if (mode.equalsIgnoreCase("off")) { activeChar.setTradeRefusal(false); activeChar.sendMessage("Trade refusal disabled"); } } catch (Exception ex) { if (activeChar.getTradeRefusal()) { activeChar.setTradeRefusal(false); activeChar.sendMessage("Trade refusal disabled"); } else { activeChar.setTradeRefusal(true); activeChar.sendMessage("Trade refusal enabled"); } } } else if (command.startsWith("admin_reload")) { StringTokenizer st = new StringTokenizer(command); st.nextToken(); try { String type = st.nextToken(); if (type.equals("multisell")) { L2Multisell.getInstance().reload(); activeChar.sendMessage("multisell reloaded"); } else if (type.startsWith("teleport")) { TeleportLocationTable.getInstance().reloadAll(); activeChar.sendMessage("teleport location table reloaded"); } else if (type.startsWith("skill")) { SkillTable.getInstance().reload(); activeChar.sendMessage("skills reloaded"); } else if (type.equals("npc")) { NpcTable.getInstance().reloadAllNpc(); activeChar.sendMessage("npcs reloaded"); } else if (type.startsWith("htm")) { HtmCache.getInstance().reload(); activeChar.sendMessage("Cache[HTML]: " + HtmCache.getInstance().getMemoryUsage() + " megabytes on " + HtmCache.getInstance().getLoadedFiles() + " files loaded"); } else if (type.startsWith("item")) { ItemTable.getInstance().reload(); activeChar.sendMessage("Item templates reloaded"); } else if (type.startsWith("instancemanager")) { Manager.reloadAll(); activeChar.sendMessage("All instance manager has been reloaded"); } else if (type.startsWith("npcwalkers")) { NpcWalkerRoutesTable.getInstance().load(); activeChar.sendMessage("All NPC walker routes have been reloaded"); } else if (type.startsWith("access")) { AccessLevels.getInstance().reloadAccessLevels(); AdminCommandAccessRights.getInstance().reloadAdminCommandAccessRights(); activeChar.sendMessage("Access Rights have been reloaded"); } } catch (Exception e) { activeChar.sendMessage("Usage: //reload "); } } else if (command.startsWith("admin_set")) { StringTokenizer st = new StringTokenizer(command); String[] cmd = st.nextToken().split("_"); try { String[] parameter = st.nextToken().split("="); String pName = parameter[0].trim(); String pValue = parameter[1].trim(); if (Config.setParameterValue(pName, pValue)) activeChar.sendMessage("parameter " + pName + " succesfully set to " + pValue); else activeChar.sendMessage("Invalid parameter!"); } catch (Exception e) { if (cmd.length == 2) activeChar.sendMessage("Usage: //set parameter=value"); } finally { if (cmd.length == 3) { if (cmd[2].equalsIgnoreCase("menu")) AdminHelpPage.showHelpPage(activeChar, "settings.htm"); else if (cmd[2].equalsIgnoreCase("mod")) AdminHelpPage.showHelpPage(activeChar, "mods_menu.htm"); } } } return true; } public String[] getAdminCommandList() { return ADMIN_COMMANDS; } private void showMainPage(L2PcInstance activeChar, String command) { int mode = 0; String filename = null; try { mode = Integer.parseInt(command.substring(11)); } catch (Exception e) { } switch (mode) { case 1: filename = "main"; break; case 2: filename = "game"; break; case 3: filename = "effects"; break; case 4: filename = "server"; break; case 5: filename = "mods"; break; default: if (Config.GM_ADMIN_MENU_STYLE.equals("modern")) filename = "main"; else filename = "classic"; break; } AdminHelpPage.showHelpPage(activeChar, filename + "_menu.htm"); } }