AdminFortSiege.java 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  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.List;
  21. import java.util.StringTokenizer;
  22. import com.l2jserver.gameserver.handler.IAdminCommandHandler;
  23. import com.l2jserver.gameserver.instancemanager.FortManager;
  24. import com.l2jserver.gameserver.model.L2Clan;
  25. import com.l2jserver.gameserver.model.L2Object;
  26. import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
  27. import com.l2jserver.gameserver.model.entity.Fort;
  28. import com.l2jserver.gameserver.network.SystemMessageId;
  29. import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage;
  30. import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
  31. import com.l2jserver.util.StringUtil;
  32. /**
  33. * This class handles all siege commands: Todo: change the class name, and neaten it up
  34. */
  35. public class AdminFortSiege implements IAdminCommandHandler
  36. {
  37. // private static Logger _log = Logger.getLogger(AdminFortSiege.class.getName());
  38. private static final String[] ADMIN_COMMANDS =
  39. {
  40. "admin_fortsiege",
  41. "admin_add_fortattacker",
  42. "admin_list_fortsiege_clans",
  43. "admin_clear_fortsiege_list",
  44. "admin_spawn_fortdoors",
  45. "admin_endfortsiege",
  46. "admin_startfortsiege",
  47. "admin_setfort",
  48. "admin_removefort"
  49. };
  50. @Override
  51. public boolean useAdminCommand(String command, L2PcInstance activeChar)
  52. {
  53. StringTokenizer st = new StringTokenizer(command, " ");
  54. command = st.nextToken(); // Get actual command
  55. // Get fort
  56. Fort fort = null;
  57. int fortId = 0;
  58. if (st.hasMoreTokens())
  59. {
  60. fortId = Integer.parseInt(st.nextToken());
  61. fort = FortManager.getInstance().getFortById(fortId);
  62. }
  63. // Get fort
  64. if (((fort == null) || (fortId == 0)))
  65. {
  66. // No fort specified
  67. showFortSelectPage(activeChar);
  68. }
  69. else
  70. {
  71. L2Object target = activeChar.getTarget();
  72. L2PcInstance player = null;
  73. if (target instanceof L2PcInstance)
  74. {
  75. player = (L2PcInstance) target;
  76. }
  77. if (command.equalsIgnoreCase("admin_add_fortattacker"))
  78. {
  79. if (player == null)
  80. {
  81. activeChar.sendPacket(SystemMessageId.TARGET_IS_INCORRECT);
  82. }
  83. else
  84. {
  85. if (fort.getSiege().addAttacker(player, false) == 4)
  86. {
  87. final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.REGISTERED_TO_S1_FORTRESS_BATTLE);
  88. sm.addCastleId(fort.getResidenceId());
  89. player.sendPacket(sm);
  90. }
  91. else
  92. {
  93. player.sendMessage("During registering error occurred!");
  94. }
  95. }
  96. }
  97. else if (command.equalsIgnoreCase("admin_clear_fortsiege_list"))
  98. {
  99. fort.getSiege().clearSiegeClan();
  100. }
  101. else if (command.equalsIgnoreCase("admin_endfortsiege"))
  102. {
  103. fort.getSiege().endSiege();
  104. }
  105. else if (command.equalsIgnoreCase("admin_list_fortsiege_clans"))
  106. {
  107. activeChar.sendMessage("Not implemented yet.");
  108. }
  109. else if (command.equalsIgnoreCase("admin_setfort"))
  110. {
  111. if ((player == null) || (player.getClan() == null))
  112. {
  113. activeChar.sendPacket(SystemMessageId.TARGET_IS_INCORRECT);
  114. }
  115. else
  116. {
  117. fort.endOfSiege(player.getClan());
  118. }
  119. }
  120. else if (command.equalsIgnoreCase("admin_removefort"))
  121. {
  122. L2Clan clan = fort.getOwnerClan();
  123. if (clan != null)
  124. {
  125. fort.removeOwner(true);
  126. }
  127. else
  128. {
  129. activeChar.sendMessage("Unable to remove fort");
  130. }
  131. }
  132. else if (command.equalsIgnoreCase("admin_spawn_fortdoors"))
  133. {
  134. fort.resetDoors();
  135. }
  136. else if (command.equalsIgnoreCase("admin_startfortsiege"))
  137. {
  138. fort.getSiege().startSiege();
  139. }
  140. showFortSiegePage(activeChar, fort);
  141. }
  142. return true;
  143. }
  144. private void showFortSelectPage(L2PcInstance activeChar)
  145. {
  146. int i = 0;
  147. final NpcHtmlMessage adminReply = new NpcHtmlMessage();
  148. adminReply.setFile(activeChar.getHtmlPrefix(), "data/html/admin/forts.htm");
  149. final List<Fort> forts = FortManager.getInstance().getForts();
  150. final StringBuilder cList = new StringBuilder(forts.size() * 100);
  151. for (Fort fort : forts)
  152. {
  153. if (fort != null)
  154. {
  155. StringUtil.append(cList, "<td fixwidth=90><a action=\"bypass -h admin_fortsiege ", String.valueOf(fort.getResidenceId()), "\">", fort.getName(), " id: ", String.valueOf(fort.getResidenceId()), "</a></td>");
  156. i++;
  157. }
  158. if (i > 2)
  159. {
  160. cList.append("</tr><tr>");
  161. i = 0;
  162. }
  163. }
  164. adminReply.replace("%forts%", cList.toString());
  165. activeChar.sendPacket(adminReply);
  166. }
  167. private void showFortSiegePage(L2PcInstance activeChar, Fort fort)
  168. {
  169. final NpcHtmlMessage adminReply = new NpcHtmlMessage();
  170. adminReply.setFile(activeChar.getHtmlPrefix(), "data/html/admin/fort.htm");
  171. adminReply.replace("%fortName%", fort.getName());
  172. adminReply.replace("%fortId%", String.valueOf(fort.getResidenceId()));
  173. activeChar.sendPacket(adminReply);
  174. }
  175. @Override
  176. public String[] getAdminCommandList()
  177. {
  178. return ADMIN_COMMANDS;
  179. }
  180. }