/* * 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.io.BufferedInputStream; import java.io.BufferedReader; import java.io.DataInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStreamReader; import java.io.PrintStream; import java.util.Iterator; import java.util.LinkedList; import java.util.StringTokenizer; import javolution.text.TextBuilder; import net.sf.l2j.gameserver.datatables.SpawnTable; import net.sf.l2j.gameserver.handler.IAdminCommandHandler; import net.sf.l2j.gameserver.model.L2Spawn; import net.sf.l2j.gameserver.model.L2World; import net.sf.l2j.gameserver.model.actor.instance.L2NpcInstance; import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance; import net.sf.l2j.gameserver.model.entity.L2Event; import net.sf.l2j.gameserver.serverpackets.CharInfo; import net.sf.l2j.gameserver.serverpackets.ItemList; import net.sf.l2j.gameserver.serverpackets.NpcHtmlMessage; import net.sf.l2j.gameserver.serverpackets.PlaySound; import net.sf.l2j.gameserver.serverpackets.UserInfo; /** * This class handles following admin commands: * - admin = shows menu * * @version $Revision: 1.3.2.1.2.4 $ $Date: 2005/04/11 10:06:06 $ */ public class AdminEventEngine implements IAdminCommandHandler { private static final String[] ADMIN_COMMANDS = {"admin_event","admin_event_new","admin_event_choose", "admin_event_store","admin_event_set","admin_event_change_teams_number", "admin_event_announce","admin_event_panel","admin_event_control_begin", "admin_event_control_teleport", "admin_add", "admin_event_see", "admin_event_del", "admin_delete_buffer", "admin_event_control_sit", "admin_event_name", "admin_event_control_kill", "admin_event_control_res", "admin_event_control_poly", "admin_event_control_unpoly", "admin_event_control_prize", "admin_event_control_chatban", "admin_event_control_finish"}; private static String tempBuffer = ""; private static String tempName = ""; private static String tempName2 = ""; private static boolean npcsDeleted = false; public boolean useAdminCommand(String command, L2PcInstance activeChar) { if (command.equals("admin_event")) showMainPage(activeChar); else if (command.equals("admin_event_new")) { showNewEventPage(activeChar); } else if (command.startsWith("admin_add")) { tempBuffer+=command.substring(10); showNewEventPage(activeChar); } else if (command.startsWith("admin_event_see")) { String eventName = command.substring(16); try { NpcHtmlMessage adminReply = new NpcHtmlMessage(5); DataInputStream in = new DataInputStream( new BufferedInputStream( new FileInputStream ("data/events/" + eventName))); BufferedReader inbr = new BufferedReader(new InputStreamReader(in)); TextBuilder replyMSG = new TextBuilder(""); replyMSG.append("
" + eventName + " bY " + inbr.readLine() + "

"); replyMSG.append("
" + inbr.readLine()); replyMSG.append(""); adminReply.setHtml(replyMSG.toString()); activeChar.sendPacket(adminReply); } catch (Exception e) { e.printStackTrace(); } } else if (command.startsWith("admin_event_del")) { String eventName = command.substring(16); File file = new File("data/events/" + eventName); file.delete(); showMainPage(activeChar); } else if (command.startsWith("admin_event_name")) { tempName+=command.substring(17); showNewEventPage(activeChar); } else if (command.equalsIgnoreCase("admin_delete_buffer")) { try {tempBuffer+=tempBuffer.substring(0,tempBuffer.length()-10); showNewEventPage(activeChar); } catch (Exception e) {tempBuffer="";} } else if (command.startsWith("admin_event_store")) { try{ FileOutputStream file = new FileOutputStream("data/events/" + tempName); PrintStream p = new PrintStream(file); p.println(activeChar.getName()); p.println(tempBuffer); file.close(); } catch (Exception e) { e.printStackTrace(); } tempBuffer = ""; tempName = ""; showMainPage(activeChar); } else if (command.startsWith("admin_event_set")) { L2Event.eventName = command.substring(16); showEventParameters(activeChar, 2); } else if (command.startsWith("admin_event_change_teams_number")) { showEventParameters(activeChar, Integer.parseInt(command.substring(32))); } else if (command.startsWith("admin_event_panel")) { showEventControl(activeChar); } else if (command.startsWith("admin_event_control_begin")) { try { L2Event.active = true; L2Event.players.clear(); L2Event.connectionLossData.clear(); for(int j=0;j link = new LinkedList(); L2Event.players.put(j+1,link); } int i = 0; while(L2Event.participatingPlayers.size()>0){ String target = getMaxLeveledPlayer(); if(!target.equals("")) { L2Event.players.get(i+1).add(target); i=(i+1)%L2Event.teamsNumber; } } destroyEventNpcs(); npcsDeleted = true; } catch(Exception e) { e.printStackTrace(); } showEventControl(activeChar); } else if (command.startsWith("admin_event_control_teleport")) { StringTokenizer st = new StringTokenizer(command.substring(29),"-"); while(st.hasMoreElements()){ teleportTeam(activeChar, Integer.parseInt(st.nextToken())); } showEventControl(activeChar); } else if (command.startsWith("admin_event_control_sit")) { StringTokenizer st = new StringTokenizer(command.substring(24),"-"); while(st.hasMoreElements()){ sitTeam(Integer.parseInt(st.nextToken())); } showEventControl(activeChar); } else if (command.startsWith("admin_event_control_kill")) { StringTokenizer st = new StringTokenizer(command.substring(25),"-"); while(st.hasMoreElements()){ killTeam(activeChar, Integer.parseInt(st.nextToken())); } showEventControl(activeChar); } else if (command.startsWith("admin_event_control_res")) { StringTokenizer st = new StringTokenizer(command.substring(24),"-"); while(st.hasMoreElements()){ resTeam(Integer.parseInt(st.nextToken())); } showEventControl(activeChar); } else if (command.startsWith("admin_event_control_poly")) { StringTokenizer st0 = new StringTokenizer(command.substring(25)); StringTokenizer st = new StringTokenizer(st0.nextToken(),"-"); String id = st0.nextToken(); while(st.hasMoreElements()){ polyTeam(Integer.parseInt(st.nextToken()), id); } showEventControl(activeChar); } else if (command.startsWith("admin_event_control_unpoly")) { StringTokenizer st = new StringTokenizer(command.substring(27),"-"); while(st.hasMoreElements()){ unpolyTeam(Integer.parseInt(st.nextToken())); } showEventControl(activeChar); } else if (command.startsWith("admin_event_control_prize")) { StringTokenizer st0 = new StringTokenizer(command.substring(26)); StringTokenizer st = new StringTokenizer(st0.nextToken(),"-"); String n = st0.nextToken(); StringTokenizer st1 = new StringTokenizer(n,"*"); n = st1.nextToken(); String type = ""; if(st1.hasMoreElements()) type = st1.nextToken(); String id = st0.nextToken(); while(st.hasMoreElements()){ regardTeam(activeChar, Integer.parseInt(st.nextToken()),Integer.parseInt(n), Integer.parseInt(id), type); } showEventControl(activeChar); } else if (command.startsWith("admin_event_control_finish")) { for(int i = 0; i"); replyMSG.append("
[ L2J EVENT ENGINE

"); replyMSG.append("
The event "+ L2Event.eventName + " has been announced, now you can type //event_panel to see the event panel control

"); replyMSG.append(""); adminReply.setHtml(replyMSG.toString()); activeChar.sendPacket(adminReply); } return true; } public String[] getAdminCommandList() { return ADMIN_COMMANDS; } String showStoredEvents(){ File dir = new File("data/events"); String[] files = dir.list(); String result = ""; if(files == null) { result = "No 'data/events' directory!"; return result; } for (int i = 0; i < files.length; i++) { File file = new File("data/events/" + files[i]); result+="" + file.getName() + "