AdminEventEngine.java 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644
  1. /*
  2. * This program is free software: you can redistribute it and/or modify it under
  3. * the terms of the GNU General Public License as published by the Free Software
  4. * Foundation, either version 3 of the License, or (at your option) any later
  5. * version.
  6. *
  7. * This program is distributed in the hope that it will be useful, but WITHOUT
  8. * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
  9. * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
  10. * details.
  11. *
  12. * You should have received a copy of the GNU General Public License along with
  13. * this program. If not, see <http://www.gnu.org/licenses/>.
  14. */
  15. package net.sf.l2j.gameserver.handler.admincommandhandlers;
  16. import java.io.BufferedInputStream;
  17. import java.io.BufferedReader;
  18. import java.io.DataInputStream;
  19. import java.io.File;
  20. import java.io.FileInputStream;
  21. import java.io.FileOutputStream;
  22. import java.io.InputStreamReader;
  23. import java.io.PrintStream;
  24. import java.util.Iterator;
  25. import java.util.LinkedList;
  26. import java.util.StringTokenizer;
  27. import javolution.text.TextBuilder;
  28. import net.sf.l2j.gameserver.datatables.SpawnTable;
  29. import net.sf.l2j.gameserver.handler.IAdminCommandHandler;
  30. import net.sf.l2j.gameserver.model.L2Spawn;
  31. import net.sf.l2j.gameserver.model.L2World;
  32. import net.sf.l2j.gameserver.model.actor.instance.L2NpcInstance;
  33. import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
  34. import net.sf.l2j.gameserver.model.entity.L2Event;
  35. import net.sf.l2j.gameserver.serverpackets.CharInfo;
  36. import net.sf.l2j.gameserver.serverpackets.ItemList;
  37. import net.sf.l2j.gameserver.serverpackets.NpcHtmlMessage;
  38. import net.sf.l2j.gameserver.serverpackets.PlaySound;
  39. import net.sf.l2j.gameserver.serverpackets.UserInfo;
  40. /**
  41. * This class handles following admin commands:
  42. * - admin = shows menu
  43. *
  44. * @version $Revision: 1.3.2.1.2.4 $ $Date: 2005/04/11 10:06:06 $
  45. */
  46. public class AdminEventEngine implements IAdminCommandHandler {
  47. private static final String[] ADMIN_COMMANDS = {"admin_event","admin_event_new","admin_event_choose",
  48. "admin_event_store","admin_event_set","admin_event_change_teams_number",
  49. "admin_event_announce","admin_event_panel","admin_event_control_begin",
  50. "admin_event_control_teleport",
  51. "admin_add",
  52. "admin_event_see",
  53. "admin_event_del",
  54. "admin_delete_buffer",
  55. "admin_event_control_sit",
  56. "admin_event_name",
  57. "admin_event_control_kill",
  58. "admin_event_control_res",
  59. "admin_event_control_poly",
  60. "admin_event_control_unpoly",
  61. "admin_event_control_prize",
  62. "admin_event_control_chatban",
  63. "admin_event_control_finish"};
  64. private static String tempBuffer = "";
  65. private static String tempName = "";
  66. private static String tempName2 = "";
  67. private static boolean npcsDeleted = false;
  68. public boolean useAdminCommand(String command, L2PcInstance activeChar) {
  69. if (command.equals("admin_event")) showMainPage(activeChar);
  70. else if (command.equals("admin_event_new"))
  71. {
  72. showNewEventPage(activeChar);
  73. }
  74. else if (command.startsWith("admin_add"))
  75. {
  76. tempBuffer+=command.substring(10);
  77. showNewEventPage(activeChar);
  78. }
  79. else if (command.startsWith("admin_event_see"))
  80. {
  81. String eventName = command.substring(16);
  82. try {
  83. NpcHtmlMessage adminReply = new NpcHtmlMessage(5);
  84. DataInputStream in =
  85. new DataInputStream(
  86. new BufferedInputStream(
  87. new FileInputStream ("data/events/" + eventName)));
  88. BufferedReader inbr =
  89. new BufferedReader(new InputStreamReader(in));
  90. TextBuilder replyMSG = new TextBuilder("<html><body>");
  91. replyMSG.append("<center><font color=\"LEVEL\">" + eventName + "</font><font color=\"FF0000\"> bY " + inbr.readLine() + "</font></center><br>");
  92. replyMSG.append("<br>" + inbr.readLine());
  93. replyMSG.append("</body></html>");
  94. adminReply.setHtml(replyMSG.toString());
  95. activeChar.sendPacket(adminReply);
  96. }
  97. catch (Exception e) {
  98. e.printStackTrace();
  99. }
  100. }
  101. else if (command.startsWith("admin_event_del"))
  102. {
  103. String eventName = command.substring(16);
  104. File file = new File("data/events/" + eventName);
  105. file.delete();
  106. showMainPage(activeChar);
  107. }
  108. else if (command.startsWith("admin_event_name"))
  109. {
  110. tempName+=command.substring(17);
  111. showNewEventPage(activeChar);
  112. }
  113. else if (command.equalsIgnoreCase("admin_delete_buffer"))
  114. {
  115. try {tempBuffer+=tempBuffer.substring(0,tempBuffer.length()-10);
  116. showNewEventPage(activeChar); }
  117. catch (Exception e) {tempBuffer="";}
  118. }
  119. else if (command.startsWith("admin_event_store"))
  120. {
  121. try{
  122. FileOutputStream file = new FileOutputStream("data/events/" + tempName);
  123. PrintStream p = new PrintStream(file);
  124. p.println(activeChar.getName());
  125. p.println(tempBuffer);
  126. file.close();
  127. }
  128. catch (Exception e) {
  129. e.printStackTrace();
  130. }
  131. tempBuffer = "";
  132. tempName = "";
  133. showMainPage(activeChar);
  134. }
  135. else if (command.startsWith("admin_event_set"))
  136. {
  137. L2Event.eventName = command.substring(16);
  138. showEventParameters(activeChar, 2);
  139. }
  140. else if (command.startsWith("admin_event_change_teams_number"))
  141. {
  142. showEventParameters(activeChar, Integer.parseInt(command.substring(32)));
  143. }
  144. else if (command.startsWith("admin_event_panel"))
  145. {
  146. showEventControl(activeChar);
  147. }
  148. else if (command.startsWith("admin_event_control_begin"))
  149. {
  150. try {
  151. L2Event.active = true;
  152. L2Event.players.clear();
  153. L2Event.connectionLossData.clear();
  154. for(int j=0;j<L2Event.teamsNumber;j++){
  155. LinkedList<String> link = new LinkedList<String>();
  156. L2Event.players.put(j+1,link);
  157. }
  158. int i = 0;
  159. while(L2Event.participatingPlayers.size()>0){
  160. String target = getMaxLeveledPlayer();
  161. if(!target.equals("")) {
  162. L2Event.players.get(i+1).add(target);
  163. i=(i+1)%L2Event.teamsNumber;
  164. }
  165. }
  166. destroyEventNpcs();
  167. npcsDeleted = true;
  168. } catch(Exception e) {
  169. e.printStackTrace();
  170. }
  171. showEventControl(activeChar);
  172. }
  173. else if (command.startsWith("admin_event_control_teleport"))
  174. {
  175. StringTokenizer st = new StringTokenizer(command.substring(29),"-");
  176. while(st.hasMoreElements()){
  177. teleportTeam(activeChar, Integer.parseInt(st.nextToken()));
  178. }
  179. showEventControl(activeChar);
  180. }
  181. else if (command.startsWith("admin_event_control_sit"))
  182. {
  183. StringTokenizer st = new StringTokenizer(command.substring(24),"-");
  184. while(st.hasMoreElements()){
  185. sitTeam(Integer.parseInt(st.nextToken()));
  186. }
  187. showEventControl(activeChar);
  188. }
  189. else if (command.startsWith("admin_event_control_kill"))
  190. {
  191. StringTokenizer st = new StringTokenizer(command.substring(25),"-");
  192. while(st.hasMoreElements()){
  193. killTeam(activeChar, Integer.parseInt(st.nextToken()));
  194. }
  195. showEventControl(activeChar);
  196. }
  197. else if (command.startsWith("admin_event_control_res"))
  198. {
  199. StringTokenizer st = new StringTokenizer(command.substring(24),"-");
  200. while(st.hasMoreElements()){
  201. resTeam(Integer.parseInt(st.nextToken()));
  202. }
  203. showEventControl(activeChar);
  204. }
  205. else if (command.startsWith("admin_event_control_poly"))
  206. {
  207. StringTokenizer st0 = new StringTokenizer(command.substring(25));
  208. StringTokenizer st = new StringTokenizer(st0.nextToken(),"-");
  209. String id = st0.nextToken();
  210. while(st.hasMoreElements()){
  211. polyTeam(Integer.parseInt(st.nextToken()), id);
  212. }
  213. showEventControl(activeChar);
  214. }
  215. else if (command.startsWith("admin_event_control_unpoly"))
  216. {
  217. StringTokenizer st = new StringTokenizer(command.substring(27),"-");
  218. while(st.hasMoreElements()){
  219. unpolyTeam(Integer.parseInt(st.nextToken()));
  220. }
  221. showEventControl(activeChar);
  222. }
  223. else if (command.startsWith("admin_event_control_prize"))
  224. {
  225. StringTokenizer st0 = new StringTokenizer(command.substring(26));
  226. StringTokenizer st = new StringTokenizer(st0.nextToken(),"-");
  227. String n = st0.nextToken();
  228. StringTokenizer st1 = new StringTokenizer(n,"*");
  229. n = st1.nextToken();
  230. String type = "";
  231. if(st1.hasMoreElements()) type = st1.nextToken();
  232. String id = st0.nextToken();
  233. while(st.hasMoreElements()){
  234. regardTeam(activeChar, Integer.parseInt(st.nextToken()),Integer.parseInt(n), Integer.parseInt(id), type);
  235. }
  236. showEventControl(activeChar);
  237. }
  238. else if (command.startsWith("admin_event_control_finish"))
  239. {
  240. for(int i = 0; i<L2Event.teamsNumber; i++){
  241. telePlayersBack(i+1);
  242. }
  243. L2Event.eventName = "";
  244. L2Event.teamsNumber = 0;
  245. L2Event.names.clear();
  246. L2Event.participatingPlayers.clear();
  247. L2Event.players.clear();
  248. L2Event.id = 12760;
  249. L2Event.npcs.clear();
  250. L2Event.active = false;
  251. npcsDeleted = false;
  252. }
  253. else if (command.startsWith("admin_event_announce"))
  254. {
  255. StringTokenizer st = new StringTokenizer(command.substring(21));
  256. L2Event.id = Integer.parseInt(st.nextToken());
  257. L2Event.teamsNumber = Integer.parseInt(st.nextToken());
  258. String temp = " ";
  259. String temp2 = "";
  260. while(st.hasMoreElements()){
  261. temp+=st.nextToken() + " ";
  262. }
  263. st = new StringTokenizer(temp,"-");
  264. Integer i = 1;
  265. while(st.hasMoreElements()){
  266. temp2 = st.nextToken();
  267. if(!temp2.equals(" ")){
  268. L2Event.names.put (i, temp2.substring(1,temp2.length()-1));
  269. i++;}
  270. }
  271. L2Event.participatingPlayers.clear();
  272. muestraNpcConInfoAPlayers(activeChar, L2Event.id);
  273. PlaySound _snd = new PlaySound(1,"B03_F",0,0,0,0,0);
  274. activeChar.sendPacket(_snd);
  275. activeChar.broadcastPacket(_snd);
  276. NpcHtmlMessage adminReply = new NpcHtmlMessage(5);
  277. TextBuilder replyMSG = new TextBuilder("<html><body>");
  278. replyMSG.append("<center><font color=\"LEVEL\">[ L2J EVENT ENGINE</font></center><br>");
  279. replyMSG.append("<center>The event <font color=\"LEVEL\">"+ L2Event.eventName + "</font> has been announced, now you can type //event_panel to see the event panel control</center><br>");
  280. replyMSG.append("</body></html>");
  281. adminReply.setHtml(replyMSG.toString());
  282. activeChar.sendPacket(adminReply);
  283. }
  284. return true;
  285. }
  286. public String[] getAdminCommandList()
  287. {
  288. return ADMIN_COMMANDS;
  289. }
  290. String showStoredEvents(){
  291. File dir = new File("data/events");
  292. String[] files = dir.list();
  293. String result = "";
  294. if(files == null)
  295. {
  296. result = "No 'data/events' directory!";
  297. return result;
  298. }
  299. for (int i = 0; i < files.length; i++) {
  300. File file = new File("data/events/" + files[i]);
  301. result+="<font color=\"LEVEL\">" + file.getName() + " </font><br><button value=\"select\" action=\"bypass -h admin_event_set " + file.getName() + "\" width=90 height=15 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"><button value=\"ver\" action=\"bypass -h admin_event_see " + file.getName() + "\" width=90 height=15 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"><button value=\"delete\" action=\"bypass -h admin_event_del " + file.getName() + "\" width=90 height=15 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"><br><br>";
  302. }
  303. return result;
  304. }
  305. public void showMainPage(L2PcInstance activeChar)
  306. {
  307. NpcHtmlMessage adminReply = new NpcHtmlMessage(5);
  308. TextBuilder replyMSG = new TextBuilder("<html><body>");
  309. replyMSG.append("<center><font color=\"LEVEL\">[ L2J EVENT ENGINE ]</font></center><br>");
  310. replyMSG.append("<br><center><button value=\"Create NEW event \" action=\"bypass -h admin_event_new\" width=90 height=15 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">");
  311. replyMSG.append("<center><br>Stored Events<br></center>");
  312. replyMSG.append(showStoredEvents());
  313. replyMSG.append("</body></html>");
  314. adminReply.setHtml(replyMSG.toString());
  315. activeChar.sendPacket(adminReply);
  316. }
  317. public void showNewEventPage(L2PcInstance activeChar)
  318. {
  319. NpcHtmlMessage adminReply = new NpcHtmlMessage(5);
  320. TextBuilder replyMSG = new TextBuilder("<html><body>");
  321. replyMSG.append("<center><font color=\"LEVEL\">[ L2J EVENT ENGINE ]</font></center><br>");
  322. replyMSG.append("<br><center>Event's Title <br><font color=\"LEVEL\">");
  323. if(tempName.equals(""))
  324. replyMSG.append("Use //event_name text to insert a new title");
  325. else replyMSG.append(tempName);
  326. replyMSG.append("</font></center><br><br>Event's description<br>");
  327. if(tempBuffer.equals(""))
  328. replyMSG.append("Use //add text o //delete_buffer to modify this text field");
  329. else replyMSG.append(tempBuffer);
  330. if(!(tempName.equals("")&&tempBuffer.equals(""))) replyMSG.append("<br><button value=\"Crear\" action=\"bypass -h admin_event_store\" width=90 height=15 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">");
  331. replyMSG.append("</body></html>");
  332. adminReply.setHtml(replyMSG.toString());
  333. activeChar.sendPacket(adminReply);
  334. }
  335. public void showEventParameters(L2PcInstance activeChar, int teamnumbers)
  336. {
  337. NpcHtmlMessage adminReply = new NpcHtmlMessage(5);
  338. TextBuilder replyMSG = new TextBuilder("<html><body>");
  339. replyMSG.append("<center><font color=\"LEVEL\">[ L2J EVENT ENGINE ]</font></center><br>");
  340. replyMSG.append("<center><font color=\"LEVEL\">" + L2Event.eventName + "</font></center><br>");
  341. replyMSG.append("<br><center><button value=\"Change number of teams to\" action=\"bypass -h admin_event_change_teams_number $event_teams_number\" width=90 height=15 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"> <edit var=\"event_teams_number\" width=100 height=20><br><br>");
  342. replyMSG.append("<font color=\"LEVEL\">Team's Names</font><br>");
  343. for (int i = 0; i<teamnumbers; i++){
  344. replyMSG.append((i+1) + ".- <edit var=\"event_teams_name" + (i+1) + "\" width=100 height=20><br>");
  345. }
  346. replyMSG.append("<br><br>Announcer NPC id<edit var=\"event_npcid\" width=100 height=20><br><br><button value=\"Announce Event!!\" action=\"bypass -h admin_event_announce $event_npcid " + teamnumbers + " ");
  347. for (int i = 0; i<teamnumbers; i++){
  348. replyMSG.append("$event_teams_name" + (i+1) + " - ");
  349. }
  350. replyMSG.append("\" width=90 height=15 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">");
  351. replyMSG.append("</body></html>");
  352. adminReply.setHtml(replyMSG.toString());
  353. activeChar.sendPacket(adminReply);
  354. }
  355. void muestraNpcConInfoAPlayers(L2PcInstance activeChar, int id){
  356. L2Event.npcs.clear();
  357. LinkedList <L2PcInstance> temp = new LinkedList<L2PcInstance>();
  358. temp.clear();
  359. for (L2PcInstance player : L2World.getInstance().getAllPlayers())
  360. {
  361. if(!temp.contains(player)) {
  362. L2Event.spawn(player, id);
  363. temp.add(player);}
  364. for (L2PcInstance playertemp : player.getKnownList().getKnownPlayers().values()){
  365. if( (Math.abs(playertemp.getX()-player.getX()) < 500) && (Math.abs(playertemp.getY()-player.getY()) < 500) && (Math.abs(playertemp.getZ()-player.getZ()) < 500) ) temp.add(playertemp);
  366. }
  367. }
  368. L2Event.announceAllPlayers(activeChar.getName() + " wants to make an event !!! (you'll find a npc with the details around)");
  369. }
  370. void showEventControl(L2PcInstance activeChar){
  371. NpcHtmlMessage adminReply = new NpcHtmlMessage(5);
  372. TextBuilder replyMSG = new TextBuilder("<html><body>");
  373. replyMSG.append("<center><font color=\"LEVEL\">[ L2J EVENT ENGINE ]</font></center><br><font color=\"LEVEL\">" + L2Event.eventName + "</font><br><br><table width=200>");
  374. replyMSG.append("<tr><td>Apply this command to teams number </td><td><edit var=\"team_number\" width=100 height=15></td></tr>");
  375. replyMSG.append("<tr><td>&nbsp;</td></tr>");
  376. if(!npcsDeleted) replyMSG.append("<tr><td><button value=\"Start\" action=\"bypass -h admin_event_control_begin\" width=90 height=15 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td><td><font color=\"LEVEL\">Destroys all event npcs so no more people can't participate now on</font></td></tr>");
  377. replyMSG.append("<tr><td>&nbsp;</td></tr>");
  378. replyMSG.append("<tr><td><button value=\"Teleport\" action=\"bypass -h admin_event_control_teleport $team_number\" width=90 height=15 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td><td><font color=\"LEVEL\">Teleports the specified team to your position</font></td></tr>");
  379. replyMSG.append("<tr><td>&nbsp;</td></tr>");
  380. replyMSG.append("<tr><td><button value=\"Sit\" action=\"bypass -h admin_event_control_sit $team_number\" width=90 height=15 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td><td><font color=\"LEVEL\">Sits/Stands up the team</font></td></tr>");
  381. replyMSG.append("<tr><td>&nbsp;</td></tr>");
  382. replyMSG.append("<tr><td><button value=\"Kill\" action=\"bypass -h admin_event_control_kill $team_number\" width=90 height=15 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td><td><font color=\"LEVEL\">Finish with the life of all the players in the selected team</font></td></tr>");
  383. replyMSG.append("<tr><td>&nbsp;</td></tr>");
  384. replyMSG.append("<tr><td><button value=\"Resurrect\" action=\"bypass -h admin_event_control_res $team_number\" width=90 height=15 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td><td><font color=\"LEVEL\">Resurrect Team's members</font></td></tr>");
  385. replyMSG.append("<tr><td>&nbsp;</td></tr>");
  386. replyMSG.append("<tr><td><button value=\"Polymorph\" action=\"bypass -h admin_event_control_poly $team_number $poly_id\" width=90 height=15 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td><td><edit var=\"poly_id\" width=100 height=15><font color=\"LEVEL\">Polymorphs the team into the NPC with the id specified</font></td></tr>");
  387. replyMSG.append("<tr><td>&nbsp;</td></tr>");
  388. replyMSG.append("<tr><td><button value=\"UnPolymorph\" action=\"bypass -h admin_event_control_unpoly $team_number\" width=90 height=15 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td><td><font color=\"LEVEL\">Unpolymorph the team</font></td></tr>");replyMSG.append("<tr><td>&nbsp;</td></tr>");
  389. replyMSG.append("<tr><td>&nbsp;</td></tr>");
  390. replyMSG.append("<tr><td><button value=\"Give Item\" action=\"bypass -h admin_event_control_prize $team_number $n $id\" width=90 height=15 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"> number <edit var=\"n\" width=100 height=15> item id <edit var=\"id\" width=100 height=15></td><td><font color=\"LEVEL\">Give the specified item id to every single member of the team, you can put 5*level, 5*kills or 5 in the number field for example</font></td></tr>");
  391. replyMSG.append("<tr><td>&nbsp;</td></tr>");
  392. replyMSG.append("<tr><td><button value=\"End\" action=\"bypass -h admin_event_control_finish\" width=90 height=15 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td><td><font color=\"LEVEL\">Will finish the event teleporting back all the players</font></td></tr>");
  393. replyMSG.append("</table></body></html>");
  394. adminReply.setHtml(replyMSG.toString());
  395. activeChar.sendPacket(adminReply);
  396. }
  397. String getMaxLeveledPlayer(){
  398. Iterator<String> it = L2Event.participatingPlayers.iterator();
  399. L2PcInstance pc = null;
  400. int max = 0;
  401. String name = "";
  402. while(it.hasNext()){
  403. try{tempName2 =it.next();
  404. pc = L2World.getInstance().getPlayer(tempName2);
  405. if( max < pc.getLevel() ) {
  406. max = pc.getLevel();
  407. name = pc.getName();
  408. }}catch(Exception e){try{L2Event.participatingPlayers.remove(tempName2);} catch(Exception e2){}}
  409. }
  410. L2Event.participatingPlayers.remove(name);
  411. return name;
  412. }
  413. void destroyEventNpcs(){
  414. L2NpcInstance npc;
  415. while(L2Event.npcs.size()>0){
  416. try{
  417. npc = (L2NpcInstance) L2World.getInstance().findObject(Integer.parseInt(L2Event.npcs.getFirst()));
  418. L2Spawn spawn = npc.getSpawn();
  419. if (spawn != null)
  420. {
  421. spawn.stopRespawn();
  422. SpawnTable.getInstance().deleteSpawn(spawn, true);
  423. }
  424. npc.deleteMe();
  425. L2Event.npcs.removeFirst();}catch(Exception e) {L2Event.npcs.removeFirst();}
  426. }
  427. }
  428. void teleportTeam(L2PcInstance activeChar, int team){
  429. LinkedList<String> linked = L2Event.players.get(team);
  430. Iterator<String> it = linked.iterator();
  431. while(it.hasNext()){
  432. try{L2PcInstance pc = L2World.getInstance().getPlayer(it.next());
  433. pc.setTitle(L2Event.names.get(team));
  434. pc.teleToLocation(activeChar.getX(), activeChar.getY(), activeChar.getZ(), true);}catch(Exception e){}
  435. }
  436. }
  437. void sitTeam(int team){
  438. LinkedList<String> linked = L2Event.players.get(team);
  439. Iterator<String> it = linked.iterator();
  440. while(it.hasNext()){
  441. try{L2PcInstance pc = L2World.getInstance().getPlayer(it.next());
  442. pc.eventSitForced = !pc.eventSitForced;
  443. if(pc.eventSitForced) pc.sitDown();
  444. else pc.standUp();}catch(Exception e){}
  445. }
  446. }
  447. void killTeam(L2PcInstance activeChar, int team){
  448. LinkedList<String> linked = L2Event.players.get(team);
  449. Iterator<String> it = linked.iterator();
  450. while(it.hasNext()){
  451. try{L2PcInstance target = L2World.getInstance().getPlayer(it.next());
  452. target.reduceCurrentHp(target.getMaxHp() + target.getMaxCp() + 1, activeChar);}catch(Exception e){}
  453. }
  454. }
  455. void resTeam(int team){
  456. LinkedList<String> linked = L2Event.players.get(team);
  457. Iterator<String> it = linked.iterator();
  458. while(it.hasNext())
  459. {
  460. L2PcInstance character = L2World.getInstance().getPlayer(it.next());
  461. if (character == null || !character.isDead()) continue;
  462. character.restoreExp(100.0);
  463. character.doRevive();
  464. character.setCurrentHpMp(character.getMaxHp(), character.getMaxMp());
  465. character.setCurrentCp(character.getMaxCp());
  466. }
  467. }
  468. void polyTeam(int team, String id){
  469. LinkedList<String> linked = L2Event.players.get(team);
  470. Iterator<String> it = linked.iterator();
  471. while(it.hasNext()){
  472. try{ L2PcInstance target = L2World.getInstance().getPlayer(it.next());
  473. target.getPoly().setPolyInfo("npc", id);
  474. target.teleToLocation(target.getX(), target.getY(), target.getZ(), true);
  475. CharInfo info1 = new CharInfo(target);
  476. target.broadcastPacket(info1);
  477. UserInfo info2 = new UserInfo(target);
  478. target.sendPacket(info2);}catch(Exception e){}
  479. }
  480. }
  481. void unpolyTeam(int team){
  482. LinkedList<String> linked = L2Event.players.get(team);
  483. Iterator<String> it = linked.iterator();
  484. while(it.hasNext()){
  485. try{ L2PcInstance target = L2World.getInstance().getPlayer(it.next());
  486. target.getPoly().setPolyInfo(null, "1");
  487. target.decayMe();
  488. target.spawnMe(target.getX(),target.getY(),target.getZ());
  489. CharInfo info1 = new CharInfo(target);
  490. target.broadcastPacket(info1);
  491. UserInfo info2 = new UserInfo(target);
  492. target.sendPacket(info2);}catch(Exception e){}
  493. }
  494. }
  495. private void createItem(L2PcInstance activeChar, L2PcInstance player, int id, int num)
  496. {
  497. player.getInventory().addItem("Event", id, num, player, activeChar);
  498. ItemList il = new ItemList(player, true);
  499. player.sendPacket(il);
  500. NpcHtmlMessage adminReply = new NpcHtmlMessage(5);
  501. TextBuilder replyMSG = new TextBuilder("<html><body>");
  502. replyMSG.append("CONGRATULATIONS, you should have a present in your inventory");
  503. replyMSG.append("</body></html>");
  504. adminReply.setHtml(replyMSG.toString());
  505. player.sendPacket(adminReply);
  506. }
  507. void regardTeam(L2PcInstance activeChar, int team, int n, int id, String type){
  508. LinkedList<String> linked = L2Event.players.get(team);
  509. int temp = n;
  510. Iterator<String> it = linked.iterator();
  511. while(it.hasNext()){
  512. try{ L2PcInstance target = L2World.getInstance().getPlayer(it.next());
  513. if(type.equalsIgnoreCase("level")) temp = n * target.getLevel();
  514. else if(type.equalsIgnoreCase("kills")) temp = n * target.kills.size();
  515. else temp = n;
  516. createItem(activeChar, target, id, temp);}catch(Exception e){}
  517. }
  518. }
  519. void telePlayersBack(int team){
  520. resTeam(team);
  521. unpolyTeam(team);
  522. LinkedList<String> linked = L2Event.players.get(team);
  523. Iterator<String> it = linked.iterator();
  524. while(it.hasNext()){
  525. try{ L2PcInstance target = L2World.getInstance().getPlayer(it.next());
  526. target.setTitle(target.eventTitle);
  527. target.setKarma(target.eventkarma);
  528. target.setPvpKills(target.eventpvpkills);
  529. target.setPkKills(target.eventpkkills);
  530. target.teleToLocation(target.eventX, target.eventY, target.eventZ, true);
  531. target.kills.clear();
  532. target.eventSitForced = false;
  533. target.atEvent = false;}catch(Exception e){}
  534. }
  535. }
  536. }