AdminClan.java 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223
  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.StringTokenizer;
  21. import com.l2jserver.gameserver.cache.HtmCache;
  22. import com.l2jserver.gameserver.data.sql.impl.ClanTable;
  23. import com.l2jserver.gameserver.handler.IAdminCommandHandler;
  24. import com.l2jserver.gameserver.instancemanager.CastleManager;
  25. import com.l2jserver.gameserver.instancemanager.ClanHallManager;
  26. import com.l2jserver.gameserver.instancemanager.FortManager;
  27. import com.l2jserver.gameserver.model.L2Clan;
  28. import com.l2jserver.gameserver.model.L2ClanMember;
  29. import com.l2jserver.gameserver.model.L2Object;
  30. import com.l2jserver.gameserver.model.L2World;
  31. import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
  32. import com.l2jserver.gameserver.network.SystemMessageId;
  33. import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage;
  34. import com.l2jserver.gameserver.util.Util;
  35. /**
  36. * @author UnAfraid, Zoey76
  37. */
  38. public class AdminClan implements IAdminCommandHandler
  39. {
  40. private static final String[] ADMIN_COMMANDS =
  41. {
  42. "admin_clan_info",
  43. "admin_clan_changeleader",
  44. "admin_clan_show_pending",
  45. "admin_clan_force_pending"
  46. };
  47. @Override
  48. public boolean useAdminCommand(String command, L2PcInstance activeChar)
  49. {
  50. final StringTokenizer st = new StringTokenizer(command);
  51. final String cmd = st.nextToken();
  52. switch (cmd)
  53. {
  54. case "admin_clan_info":
  55. {
  56. final L2PcInstance player = getPlayer(activeChar, st);
  57. if (player == null)
  58. {
  59. break;
  60. }
  61. final L2Clan clan = player.getClan();
  62. if (clan == null)
  63. {
  64. activeChar.sendPacket(SystemMessageId.TARGET_MUST_BE_IN_CLAN);
  65. return false;
  66. }
  67. final NpcHtmlMessage html = new NpcHtmlMessage(0, 1);
  68. html.setHtml(HtmCache.getInstance().getHtm(activeChar.getHtmlPrefix(), "data/html/admin/claninfo.htm"));
  69. html.replace("%clan_name%", clan.getName());
  70. html.replace("%clan_leader%", clan.getLeaderName());
  71. html.replace("%clan_level%", String.valueOf(clan.getLevel()));
  72. html.replace("%clan_has_castle%", clan.getCastleId() > 0 ? CastleManager.getInstance().getCastleById(clan.getCastleId()).getName() : "No");
  73. html.replace("%clan_has_clanhall%", clan.getHideoutId() > 0 ? ClanHallManager.getInstance().getClanHallById(clan.getHideoutId()).getName() : "No");
  74. html.replace("%clan_has_fortress%", clan.getFortId() > 0 ? FortManager.getInstance().getFortById(clan.getFortId()).getName() : "No");
  75. html.replace("%clan_points%", String.valueOf(clan.getReputationScore()));
  76. html.replace("%clan_players_count%", String.valueOf(clan.getMembersCount()));
  77. html.replace("%clan_ally%", clan.getAllyId() > 0 ? clan.getAllyName() : "Not in ally");
  78. html.replace("%current_player_objectId%", String.valueOf(player.getObjectId()));
  79. html.replace("%current_player_name%", player.getName());
  80. activeChar.sendPacket(html);
  81. break;
  82. }
  83. case "admin_clan_changeleader":
  84. {
  85. final L2PcInstance player = getPlayer(activeChar, st);
  86. if (player == null)
  87. {
  88. break;
  89. }
  90. final L2Clan clan = player.getClan();
  91. if (clan == null)
  92. {
  93. activeChar.sendPacket(SystemMessageId.TARGET_MUST_BE_IN_CLAN);
  94. return false;
  95. }
  96. final L2ClanMember member = clan.getClanMember(player.getObjectId());
  97. if (member != null)
  98. {
  99. if (player.isAcademyMember())
  100. {
  101. player.sendPacket(SystemMessageId.RIGHT_CANT_TRANSFERRED_TO_ACADEMY_MEMBER);
  102. }
  103. else
  104. {
  105. clan.setNewLeader(member);
  106. }
  107. }
  108. break;
  109. }
  110. case "admin_clan_show_pending":
  111. {
  112. final NpcHtmlMessage html = new NpcHtmlMessage(0, 1);
  113. html.setHtml(HtmCache.getInstance().getHtm(activeChar.getHtmlPrefix(), "data/html/admin/clanchanges.htm"));
  114. StringBuilder sb = new StringBuilder();
  115. for (L2Clan clan : ClanTable.getInstance().getClans())
  116. {
  117. if (clan.getNewLeaderId() != 0)
  118. {
  119. sb.append("<tr>");
  120. sb.append("<td>" + clan.getName() + "</td>");
  121. sb.append("<td>" + clan.getNewLeaderName() + "</td>");
  122. sb.append("<td><a action=\"bypass -h admin_clan_force_pending " + clan.getId() + "\">Force</a></td>");
  123. sb.append("</tr>");
  124. }
  125. }
  126. html.replace("%data%", sb.toString());
  127. activeChar.sendPacket(html);
  128. break;
  129. }
  130. case "admin_clan_force_pending":
  131. {
  132. if (st.hasMoreElements())
  133. {
  134. String token = st.nextToken();
  135. if (!Util.isDigit(token))
  136. {
  137. break;
  138. }
  139. int clanId = Integer.parseInt(token);
  140. final L2Clan clan = ClanTable.getInstance().getClan(clanId);
  141. if (clan == null)
  142. {
  143. break;
  144. }
  145. final L2ClanMember member = clan.getClanMember(clan.getNewLeaderId());
  146. if (member == null)
  147. {
  148. break;
  149. }
  150. clan.setNewLeader(member);
  151. activeChar.sendMessage("Task have been forcely executed.");
  152. break;
  153. }
  154. }
  155. }
  156. return true;
  157. }
  158. /**
  159. * @param activeChar
  160. * @param st
  161. * @return
  162. */
  163. private L2PcInstance getPlayer(L2PcInstance activeChar, StringTokenizer st)
  164. {
  165. String val;
  166. L2PcInstance player = null;
  167. if (st.hasMoreTokens())
  168. {
  169. val = st.nextToken();
  170. // From the HTML we receive player's object Id.
  171. if (Util.isDigit(val))
  172. {
  173. player = L2World.getInstance().getPlayer(Integer.parseInt(val));
  174. if (player == null)
  175. {
  176. activeChar.sendPacket(SystemMessageId.TARGET_IS_NOT_FOUND_IN_THE_GAME);
  177. return null;
  178. }
  179. }
  180. else
  181. {
  182. player = L2World.getInstance().getPlayer(val);
  183. if (player == null)
  184. {
  185. activeChar.sendPacket(SystemMessageId.INCORRECT_NAME_TRY_AGAIN);
  186. return null;
  187. }
  188. }
  189. }
  190. else
  191. {
  192. L2Object targetObj = activeChar.getTarget();
  193. if (targetObj instanceof L2PcInstance)
  194. {
  195. player = targetObj.getActingPlayer();
  196. }
  197. else
  198. {
  199. activeChar.sendPacket(SystemMessageId.INCORRECT_TARGET);
  200. return null;
  201. }
  202. }
  203. return player;
  204. }
  205. @Override
  206. public String[] getAdminCommandList()
  207. {
  208. return ADMIN_COMMANDS;
  209. }
  210. }