ChatAdmin.java 4.7 KB

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