ChatAdmin.java 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  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 handlers.voicedcommandhandlers;
  16. import java.util.StringTokenizer;
  17. import com.l2jserver.gameserver.datatables.AdminCommandAccessRights;
  18. import com.l2jserver.gameserver.datatables.CharNameTable;
  19. import com.l2jserver.gameserver.handler.IVoicedCommandHandler;
  20. import com.l2jserver.gameserver.model.L2World;
  21. import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
  22. public class ChatAdmin implements IVoicedCommandHandler
  23. {
  24. private static final String[] VOICED_COMMANDS =
  25. {
  26. "banchat",
  27. "unbanchat"
  28. };
  29. /**
  30. *
  31. * @see com.l2jserver.gameserver.handler.IVoicedCommandHandler#useVoicedCommand(java.lang.String, com.l2jserver.gameserver.model.actor.instance.L2PcInstance, java.lang.String)
  32. */
  33. @Override
  34. public boolean useVoicedCommand(String command, L2PcInstance activeChar, String params)
  35. {
  36. if (!AdminCommandAccessRights.getInstance().hasAccess(command, activeChar.getAccessLevel()))
  37. return false;
  38. if (command.equalsIgnoreCase(VOICED_COMMANDS[0])) // banchat
  39. {
  40. if (params == null)
  41. {
  42. activeChar.sendMessage("Usage: .banchat name [minutes]");
  43. return true;
  44. }
  45. StringTokenizer st = new StringTokenizer(params);
  46. if (st.hasMoreTokens())
  47. {
  48. String name = st.nextToken();
  49. int length = 0;
  50. if (st.hasMoreTokens())
  51. {
  52. try
  53. {
  54. length = Integer.parseInt(st.nextToken());
  55. }
  56. catch (NumberFormatException e)
  57. {
  58. activeChar.sendMessage("Wrong ban length !");
  59. return false;
  60. }
  61. }
  62. if (length < 0)
  63. length = 0;
  64. int objId = CharNameTable.getInstance().getIdByName(name);
  65. if (objId > 0)
  66. {
  67. L2PcInstance player = L2World.getInstance().getPlayer(objId);
  68. if (player == null || !player.isOnline())
  69. {
  70. activeChar.sendMessage("Player not online !");
  71. return false;
  72. }
  73. if (player.getPunishLevel() != L2PcInstance.PunishLevel.NONE)
  74. {
  75. activeChar.sendMessage("Player is already punished !");
  76. return false;
  77. }
  78. if (player == activeChar)
  79. {
  80. activeChar.sendMessage("You can't ban yourself !");
  81. return false;
  82. }
  83. if (player.isGM())
  84. {
  85. activeChar.sendMessage("You can't ban GM !");
  86. return false;
  87. }
  88. if (AdminCommandAccessRights.getInstance().hasAccess(command, player.getAccessLevel()))
  89. {
  90. activeChar.sendMessage("You can't ban moderator !");
  91. return false;
  92. }
  93. player.setPunishLevel(L2PcInstance.PunishLevel.CHAT, length);
  94. player.sendMessage("Chat banned by moderator " + activeChar.getName());
  95. if (length > 0)
  96. activeChar.sendMessage("Player " + player.getName() + " chat banned for " + length + " minutes.");
  97. else
  98. activeChar.sendMessage("Player " + player.getName() + " chat banned forever.");
  99. }
  100. else
  101. {
  102. activeChar.sendMessage("Player not found !");
  103. return false;
  104. }
  105. }
  106. }
  107. else if (command.equalsIgnoreCase(VOICED_COMMANDS[1])) //unbanchat
  108. {
  109. if (params == null)
  110. {
  111. activeChar.sendMessage("Usage: .unbanchat name");
  112. return true;
  113. }
  114. StringTokenizer st = new StringTokenizer(params);
  115. if (st.hasMoreTokens())
  116. {
  117. String name = st.nextToken();
  118. int objId = CharNameTable.getInstance().getIdByName(name);
  119. if (objId > 0)
  120. {
  121. L2PcInstance player = L2World.getInstance().getPlayer(objId);
  122. if (player == null || !player.isOnline())
  123. {
  124. activeChar.sendMessage("Player not online !");
  125. return false;
  126. }
  127. if (player.getPunishLevel() != L2PcInstance.PunishLevel.CHAT)
  128. {
  129. activeChar.sendMessage("Player is not chat banned !");
  130. return false;
  131. }
  132. player.setPunishLevel(L2PcInstance.PunishLevel.NONE, 0);
  133. activeChar.sendMessage("Player " + player.getName() + " chat unbanned.");
  134. player.sendMessage("Chat unbanned by moderator " + activeChar.getName());
  135. }
  136. else
  137. {
  138. activeChar.sendMessage("Player not found !");
  139. return false;
  140. }
  141. }
  142. }
  143. return true;
  144. }
  145. /**
  146. *
  147. * @see com.l2jserver.gameserver.handler.IVoicedCommandHandler#getVoicedCommandList()
  148. */
  149. @Override
  150. public String[] getVoicedCommandList()
  151. {
  152. return VOICED_COMMANDS;
  153. }
  154. }