AdminTerritoryWar.java 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. /*
  2. * Copyright (C) 2004-2015 L2J DataPack
  3. *
  4. * This file is part of L2J DataPack.
  5. *
  6. * L2J DataPack is free software: you can redistribute it and/or modify
  7. * it under the terms of the GNU General Public License as published by
  8. * the Free Software Foundation, either version 3 of the License, or
  9. * (at your option) any later version.
  10. *
  11. * L2J DataPack is distributed in the hope that it will be useful,
  12. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  14. * General Public License for more details.
  15. *
  16. * You should have received a copy of the GNU General Public License
  17. * along with this program. If not, see <http://www.gnu.org/licenses/>.
  18. */
  19. package handlers.admincommandhandlers;
  20. import java.util.Calendar;
  21. import java.util.List;
  22. import java.util.StringTokenizer;
  23. import com.l2jserver.gameserver.handler.IAdminCommandHandler;
  24. import com.l2jserver.gameserver.instancemanager.GlobalVariablesManager;
  25. import com.l2jserver.gameserver.instancemanager.TerritoryWarManager;
  26. import com.l2jserver.gameserver.model.TerritoryWard;
  27. import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
  28. import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage;
  29. /**
  30. * Admin comand handler for Territory War System This class handles following admin commands:
  31. * @author Gigiikun
  32. */
  33. public class AdminTerritoryWar implements IAdminCommandHandler
  34. {
  35. private static final String[] _adminCommands =
  36. {
  37. "admin_territory_war",
  38. "admin_territory_war_time",
  39. "admin_territory_war_start",
  40. "admin_territory_war_end",
  41. "admin_territory_wards_list"
  42. };
  43. @Override
  44. public boolean useAdminCommand(String command, L2PcInstance activeChar)
  45. {
  46. StringTokenizer st = new StringTokenizer(command);
  47. command = st.nextToken();
  48. if (command.equals("admin_territory_war"))
  49. {
  50. showMainPage(activeChar);
  51. }
  52. else if (command.equalsIgnoreCase("admin_territory_war_time"))
  53. {
  54. if (st.hasMoreTokens())
  55. {
  56. final Calendar cal = Calendar.getInstance();
  57. cal.setTimeInMillis(TerritoryWarManager.getInstance().getTWStartTimeInMillis());
  58. final String val = st.nextToken();
  59. if ("month".equals(val))
  60. {
  61. int month = cal.get(Calendar.MONTH) + Integer.parseInt(st.nextToken());
  62. if ((cal.getActualMinimum(Calendar.MONTH) > month) || (cal.getActualMaximum(Calendar.MONTH) < month))
  63. {
  64. activeChar.sendMessage("Unable to change Siege Date - Incorrect month value only " + cal.getActualMinimum(Calendar.MONTH) + "-" + cal.getActualMaximum(Calendar.MONTH) + " is accepted!");
  65. return false;
  66. }
  67. cal.set(Calendar.MONTH, month);
  68. }
  69. else if ("day".equals(val))
  70. {
  71. int day = Integer.parseInt(st.nextToken());
  72. if ((cal.getActualMinimum(Calendar.DAY_OF_MONTH) > day) || (cal.getActualMaximum(Calendar.DAY_OF_MONTH) < day))
  73. {
  74. activeChar.sendMessage("Unable to change Siege Date - Incorrect day value only " + cal.getActualMinimum(Calendar.DAY_OF_MONTH) + "-" + cal.getActualMaximum(Calendar.DAY_OF_MONTH) + " is accepted!");
  75. return false;
  76. }
  77. cal.set(Calendar.DAY_OF_MONTH, day);
  78. }
  79. else if ("hour".equals(val))
  80. {
  81. int hour = Integer.parseInt(st.nextToken());
  82. if ((cal.getActualMinimum(Calendar.HOUR_OF_DAY) > hour) || (cal.getActualMaximum(Calendar.HOUR_OF_DAY) < hour))
  83. {
  84. activeChar.sendMessage("Unable to change Siege Date - Incorrect hour value only " + cal.getActualMinimum(Calendar.HOUR_OF_DAY) + "-" + cal.getActualMaximum(Calendar.HOUR_OF_DAY) + " is accepted!");
  85. return false;
  86. }
  87. cal.set(Calendar.HOUR_OF_DAY, hour);
  88. }
  89. else if ("min".equals(val))
  90. {
  91. int min = Integer.parseInt(st.nextToken());
  92. if ((cal.getActualMinimum(Calendar.MINUTE) > min) || (cal.getActualMaximum(Calendar.MINUTE) < min))
  93. {
  94. activeChar.sendMessage("Unable to change Siege Date - Incorrect minute value only " + cal.getActualMinimum(Calendar.MINUTE) + "-" + cal.getActualMaximum(Calendar.MINUTE) + " is accepted!");
  95. return false;
  96. }
  97. cal.set(Calendar.MINUTE, min);
  98. }
  99. if (cal.getTimeInMillis() < Calendar.getInstance().getTimeInMillis())
  100. {
  101. activeChar.sendMessage("Unable to change TW Date!");
  102. }
  103. else if (cal.getTimeInMillis() != TerritoryWarManager.getInstance().getTWStartTimeInMillis())
  104. {
  105. TerritoryWarManager.getInstance().setTWStartTimeInMillis(cal.getTimeInMillis());
  106. GlobalVariablesManager.getInstance().set(TerritoryWarManager.GLOBAL_VARIABLE, cal.getTimeInMillis());
  107. }
  108. }
  109. showSiegeTimePage(activeChar);
  110. }
  111. else if (command.equalsIgnoreCase("admin_territory_war_start"))
  112. {
  113. TerritoryWarManager.getInstance().setTWStartTimeInMillis(System.currentTimeMillis());
  114. }
  115. else if (command.equalsIgnoreCase("admin_territory_war_end"))
  116. {
  117. TerritoryWarManager.getInstance().setTWStartTimeInMillis(System.currentTimeMillis() - TerritoryWarManager.WARLENGTH);
  118. }
  119. else if (command.equalsIgnoreCase("admin_territory_wards_list"))
  120. {
  121. // build beginning of html page
  122. final NpcHtmlMessage npcHtmlMessage = new NpcHtmlMessage(0, 1);
  123. StringBuilder sb = new StringBuilder();
  124. sb.append("<html><title>Territory War</title><body><br><center><font color=\"LEVEL\">Active Wards List:</font></center>");
  125. // get,build & send current Wards list
  126. if (TerritoryWarManager.getInstance().isTWInProgress())
  127. {
  128. List<TerritoryWard> territoryWardList = TerritoryWarManager.getInstance().getAllTerritoryWards();
  129. for (TerritoryWard ward : territoryWardList)
  130. {
  131. if (ward.getNpc() != null)
  132. {
  133. sb.append("<table width=270><tr>");
  134. sb.append("<td width=135 ALIGN=\"LEFT\">" + ward.getNpc().getName() + "</td>");
  135. sb.append("<td width=135 ALIGN=\"RIGHT\"><button value=\"TeleTo\" action=\"bypass -h admin_move_to " + ward.getNpc().getX() + " " + ward.getNpc().getY() + " " + ward.getNpc().getZ() + "\" width=50 height=20 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_ct1.button_df\"></td>");
  136. sb.append("</tr></table>");
  137. }
  138. else if (ward.getPlayer() != null)
  139. {
  140. sb.append("<table width=270><tr>");
  141. sb.append("<td width=135 ALIGN=\"LEFT\">" + ward.getPlayer().getActiveWeaponInstance().getItemName() + " - " + ward.getPlayer().getName() + "</td>");
  142. sb.append("<td width=135 ALIGN=\"RIGHT\"><button value=\"TeleTo\" action=\"bypass -h admin_move_to " + ward.getPlayer().getX() + " " + ward.getPlayer().getY() + " " + ward.getPlayer().getZ() + "\" width=50 height=20 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_ct1.button_df\"></td>");
  143. sb.append("</tr></table>");
  144. }
  145. }
  146. sb.append("<br><center><button value=\"Back\" action=\"bypass -h admin_territory_war\" width=50 height=21 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></center></body></html>");
  147. npcHtmlMessage.setHtml(sb.toString());
  148. activeChar.sendPacket(npcHtmlMessage);
  149. }
  150. else
  151. {
  152. sb.append("<br><br><center>The Ward List is empty!<br>TW has probably NOT started!");
  153. sb.append("<br><button value=\"Back\" action=\"bypass -h admin_territory_war\" width=50 height=21 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></center></body></html>");
  154. npcHtmlMessage.setHtml(sb.toString());
  155. activeChar.sendPacket(npcHtmlMessage);
  156. }
  157. }
  158. return true;
  159. }
  160. @Override
  161. public String[] getAdminCommandList()
  162. {
  163. return _adminCommands;
  164. }
  165. private void showSiegeTimePage(L2PcInstance activeChar)
  166. {
  167. final NpcHtmlMessage adminReply = new NpcHtmlMessage();
  168. adminReply.setFile(activeChar.getHtmlPrefix(), "data/html/admin/territorywartime.htm");
  169. adminReply.replace("%time%", TerritoryWarManager.getInstance().getTWStart().getTime().toString());
  170. activeChar.sendPacket(adminReply);
  171. }
  172. private void showMainPage(L2PcInstance activeChar)
  173. {
  174. AdminHtml.showAdminHtml(activeChar, "territorywar.htm");
  175. }
  176. }