* 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 handlers.admincommandhandlers;
import java.util.StringTokenizer;
import net.sf.l2j.Config;
import net.sf.l2j.gameserver.GmListTable;
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.instancemanager.QuestManager;
import net.sf.l2j.gameserver.model.L2Multisell;
import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
import net.sf.l2j.gameserver.model.olympiad.Olympiad;
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"))
{
Olympiad.getInstance().saveOlympiadStatus();
activeChar.sendMessage("olympiad system 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);
}
target.broadcastUserInfo();
}
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();
QuestManager.getInstance().reloadAllQuests();
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("config"))
{
Config.load();
activeChar.sendMessage("All config settings have been reload");
}
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");
}
else if (type.startsWith("quests"))
{
QuestManager.getInstance().reloadAllQuests();
activeChar.sendMessage("All Quests have been reloaded");
}
}
catch (Exception e)
{
activeChar.sendMessage("Usage: //reload <multisell|teleport|skill|npc|htm|item|config|instancemanager|npcwalkers|access|quests|>");
}
}
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");
}
}
[/QUOTE]
/*
* 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 handlers.admincommandhandlers;
import java.util.Collection;
import net.sf.l2j.gameserver.Announcements;
import net.sf.l2j.gameserver.handler.IAdminCommandHandler;
import net.sf.l2j.gameserver.model.L2World;
import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
import net.sf.l2j.gameserver.taskmanager.AutoAnnounceTaskManager;
/**
* This class handles following admin commands:
* - announce text = announces text to all players
* - list_announcements = show menu
* - reload_announcements = reloads announcements from txt file
* - announce_announcements = announce all stored announcements to all players
* - add_announcement text = adds text to startup announcements
* - del_announcement id = deletes announcement with respective id
*
* @version $Revision: 1.4.4.5 $ $Date: 2005/04/11 10:06:06 $
*/
public class AdminAnnouncements implements IAdminCommandHandler
{
private static final String[] ADMIN_COMMANDS =
{
"admin_list_announcements",
"admin_reload_announcements",
"admin_announce_announcements",
"admin_add_announcement",
"admin_del_announcement",
"admin_announce",
"admin_announce_menu",
"admin_reload_autoannounce"
};
public boolean useAdminCommand(String command, L2PcInstance activeChar)
{
if (command.equals("admin_list_announcements"))
{
Announcements.getInstance().listAnnouncements(activeChar);
}
else if (command.equals("admin_reload_announcements"))
{
Announcements.getInstance().loadAnnouncements();
Announcements.getInstance().listAnnouncements(activeChar);
}
else if (command.startsWith("admin_announce_menu"))
{
Announcements.getInstance().handleAnnounce(command, 20);
Announcements.getInstance().listAnnouncements(activeChar);
}
else if (command.equals("admin_announce_announcements"))
{
Collection<L2PcInstance> pls = L2World.getInstance().getAllPlayers().values();
// synchronized (L2World.getInstance().getAllPlayers())
{
for (L2PcInstance player : pls)
Announcements.getInstance().showAnnouncements(player);
}
Announcements.getInstance().listAnnouncements(activeChar);
}
else if (command.startsWith("admin_add_announcement"))
{
// FIXME the player can send only 16 chars (if you try to send more
// it sends null), remove this function or not?
if (!command.equals("admin_add_announcement"))
{
try
{
String val = command.substring(23);
Announcements.getInstance().addAnnouncement(val);
Announcements.getInstance().listAnnouncements(activeChar);
}
catch (StringIndexOutOfBoundsException e)
{
}// ignore errors
}
}
else if (command.startsWith("admin_del_announcement"))
{
try
{
int val = Integer.parseInt(command.substring(23));
Announcements.getInstance().delAnnouncement(val);
Announcements.getInstance().listAnnouncements(activeChar);
}
catch (StringIndexOutOfBoundsException e)
{
}
}
// Command is admin announce
else if (command.startsWith("admin_announce"))
{
// Call method from another class
Announcements.getInstance().handleAnnounce(command, 15);
}
else if (command.startsWith("admin_reload_autoannounce"))
{
AutoAnnounceTaskManager.getInstance().restore();
activeChar.sendMessage("AutoAnnouncement Reloaded.");
}
return true;
}
public String[] getAdminCommandList()
{
return ADMIN_COMMANDS;
}
}
[/QUOTE]
/*
* 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 handlers.admincommandhandlers;
import java.util.Collection;
import net.sf.l2j.gameserver.Announcements;
import net.sf.l2j.gameserver.handler.IAdminCommandHandler;
import net.sf.l2j.gameserver.model.L2World;
import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
import net.sf.l2j.gameserver.taskmanager.AutoAnnounceTaskManager;
/**
* This class handles following admin commands:
* - announce text = announces text to all players
* - list_announcements = show menu
* - reload_announcements = reloads announcements from txt file
* - announce_announcements = announce all stored announcements to all players
* - add_announcement text = adds text to startup announcements
* - del_announcement id = deletes announcement with respective id
*
* @version $Revision: 1.4.4.5 $ $Date: 2005/04/11 10:06:06 $
*/
public class AdminAnnouncements implements IAdminCommandHandler
{
private static final String[] ADMIN_COMMANDS =
{
"admin_list_announcements",
"admin_reload_announcements",
"admin_announce_announcements",
"admin_add_announcement",
"admin_del_announcement",
"admin_announce",
"admin_announce_menu",
"admin_reload_autoannounce"
};
public boolean useAdminCommand(String command, L2PcInstance activeChar)
{
if (command.equals("admin_list_announcements"))
{
Announcements.getInstance().listAnnouncements(activeChar);
}
else if (command.equals("admin_reload_announcements"))
{
Announcements.getInstance().loadAnnouncements();
Announcements.getInstance().listAnnouncements(activeChar);
}
else if (command.startsWith("admin_announce_menu"))
{
Announcements.getInstance().handleAnnounce(command, 20);
Announcements.getInstance().listAnnouncements(activeChar);
}
else if (command.equals("admin_announce_announcements"))
{
Collection<L2PcInstance> pls = L2World.getInstance().getAllPlayers().values();
// synchronized (L2World.getInstance().getAllPlayers())
{
for (L2PcInstance player : pls)
Announcements.getInstance().showAnnouncements(player);
}
Announcements.getInstance().listAnnouncements(activeChar);
}
else if (command.startsWith("admin_add_announcement"))
{
// FIXME the player can send only 16 chars (if you try to send more
// it sends null), remove this function or not?
if (!command.equals("admin_add_announcement"))
{
try
{
String val = command.substring(23);
Announcements.getInstance().addAnnouncement(val);
Announcements.getInstance().listAnnouncements(activeChar);
}
catch (StringIndexOutOfBoundsException e)
{
}// ignore errors
}
}
else if (command.startsWith("admin_del_announcement"))
{
try
{
int val = Integer.parseInt(command.substring(23));
Announcements.getInstance().delAnnouncement(val);
Announcements.getInstance().listAnnouncements(activeChar);
}
catch (StringIndexOutOfBoundsException e)
{
}
}
// Command is admin announce
else if (command.startsWith("admin_announce"))
{
// Call method from another class
Announcements.getInstance().handleAnnounce(command, 15);
}
else if (command.startsWith("admin_reload_autoannounce"))
{
AutoAnnounceTaskManager.getInstance().restore();
activeChar.sendMessage("AutoAnnouncement Reloaded.");
}
return true;
}
public String[] getAdminCommandList()
{
return ADMIN_COMMANDS;
}
}