Axelut

Voiced Commands Acis 398

May 9th, 2023
24
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. diff --git a/java/net/sf/l2j/gameserver/GameServer.java b/java/net/sf/l2j/gameserver/GameServer.java
  2. index 6c1638e..7081406 100644
  3. --- a/java/net/sf/l2j/gameserver/GameServer.java
  4. +++ b/java/net/sf/l2j/gameserver/GameServer.java
  5. @@ -81,6 +81,7 @@
  6. import net.sf.l2j.gameserver.handler.SkillHandler;
  7. import net.sf.l2j.gameserver.handler.TargetHandler;
  8. import net.sf.l2j.gameserver.handler.UserCommandHandler;
  9. +import net.sf.l2j.gameserver.handler.VoicedCommandHandler;
  10. import net.sf.l2j.gameserver.idfactory.IdFactory;
  11. import net.sf.l2j.gameserver.model.World;
  12. import net.sf.l2j.gameserver.model.boat.BoatGiranTalking;
  13. @@ -274,7 +275,7 @@
  14. LOGGER.info("Loaded {} skill handlers.", SkillHandler.getInstance().size());
  15. LOGGER.info("Loaded {} target handlers.", TargetHandler.getInstance().size());
  16. LOGGER.info("Loaded {} user command handlers.", UserCommandHandler.getInstance().size());
  17. + LOGGER.info("Loaded {} user VoicedCommandHandler handlers.", VoicedCommandHandler.getInstance().size());
  18. StringUtil.printSection("System");
  19. Runtime.getRuntime().addShutdownHook(Shutdown.getInstance());
  20.  
  21. diff --git a/java/net/sf/l2j/gameserver/handler/IVoicedCommandHandler.java b/java/net/sf/l2j/gameserver/handler/IVoicedCommandHandler.java
  22. new file mode 100644
  23. index 0000000..8646215
  24. --- /dev/null
  25. +++ b/java/net/sf/l2j/gameserver/handler/IVoicedCommandHandler.java
  26. @@ -0,0 +1,25 @@
  27. +package net.sf.l2j.gameserver.handler;
  28. +
  29. +import net.sf.l2j.gameserver.model.actor.Player;
  30. +
  31. +/**
  32. + * This class ...
  33. + * @version $Revision: 1.1.4.2 $ $Date: 2005/03/27 15:30:09 $
  34. + */
  35. +public interface IVoicedCommandHandler
  36. +{
  37. + /**
  38. + * this is the worker method that is called when someone uses an admin command.
  39. + * @param activeChar
  40. + * @param command
  41. + * @param target
  42. + * @return command success
  43. + */
  44. + public boolean useVoicedCommand(String command, Player activeChar, String target);
  45. +
  46. + /**
  47. + * this method is called at initialization to register all the item ids automatically
  48. + * @return all known itemIds
  49. + */
  50. + public String[] getVoicedCommandList();
  51. +}
  52. diff --git a/java/net/sf/l2j/gameserver/handler/VoicedCommandHandler.java b/java/net/sf/l2j/gameserver/handler/VoicedCommandHandler.java
  53. new file mode 100644
  54. index 0000000..4082f7a
  55. --- /dev/null
  56. +++ b/java/net/sf/l2j/gameserver/handler/VoicedCommandHandler.java
  57. @@ -0,0 +1,65 @@
  58. +package net.sf.l2j.gameserver.handler;
  59. +
  60. +import java.util.HashMap;
  61. +import java.util.Map;
  62. +import java.util.logging.Logger;
  63. +
  64. +import net.sf.l2j.gameserver.GameServer;
  65. +
  66. +public class VoicedCommandHandler
  67. +{
  68. + private static Logger LOGGER = Logger.getLogger(GameServer.class.getName());
  69. +
  70. + private static VoicedCommandHandler _instance;
  71. +
  72. + private final Map<String, IVoicedCommandHandler> _datatable;
  73. +
  74. + public static VoicedCommandHandler getInstance()
  75. + {
  76. + if (_instance == null)
  77. + {
  78. + _instance = new VoicedCommandHandler();
  79. + }
  80. +
  81. + return _instance;
  82. + }
  83. +
  84. + private VoicedCommandHandler()
  85. + {
  86. + _datatable = new HashMap<>();
  87. + //registrar comando aqui exemplo abaixo
  88. + //registerVoicedCommandHandler(new Shiff_Mod());
  89. +
  90. + LOGGER.info("VoicedCommandHandler: Loaded " + _datatable.size() + " handlers.");
  91. + }
  92. +
  93. + public void registerVoicedCommandHandler(final IVoicedCommandHandler handler)
  94. + {
  95. + String[] ids = handler.getVoicedCommandList();
  96. +
  97. + for (final String id : ids)
  98. + {
  99. + _datatable.put(id, handler);
  100. + }
  101. +
  102. + ids = null;
  103. + }
  104. +
  105. + public IVoicedCommandHandler getVoicedCommandHandler(final String voicedCommand)
  106. + {
  107. + String command = voicedCommand;
  108. +
  109. + if (voicedCommand.indexOf(" ") != -1)
  110. + {
  111. + command = voicedCommand.substring(0, voicedCommand.indexOf(" "));
  112. + }
  113. + return _datatable.get(command);
  114. + }
  115. + /**
  116. + * @return
  117. + */
  118. + public int size()
  119. + {
  120. + return _datatable.size();
  121. + }
  122. +}
  123. \ No newline at end of file
  124. diff --git a/java/net/sf/l2j/gameserver/handler/chathandlers/ChatAll.java b/java/net/sf/l2j/gameserver/handler/chathandlers/ChatAll.java
  125. index a707ce5..6c2d0f2 100644
  126. --- a/java/net/sf/l2j/gameserver/handler/chathandlers/ChatAll.java
  127. +++ b/java/net/sf/l2j/gameserver/handler/chathandlers/ChatAll.java
  128. @@ -1,8 +1,12 @@
  129. package net.sf.l2j.gameserver.handler.chathandlers;
  130.  
  131. +import java.util.StringTokenizer;
  132. +
  133. import net.sf.l2j.gameserver.enums.FloodProtector;
  134. import net.sf.l2j.gameserver.enums.SayType;
  135. import net.sf.l2j.gameserver.handler.IChatHandler;
  136. +import net.sf.l2j.gameserver.handler.IVoicedCommandHandler;
  137. +import net.sf.l2j.gameserver.handler.VoicedCommandHandler;
  138. import net.sf.l2j.gameserver.model.actor.Player;
  139. import net.sf.l2j.gameserver.network.serverpackets.CreatureSay;
  140.  
  141. @@ -18,12 +22,41 @@
  142. {
  143. if (!player.getClient().performAction(FloodProtector.GLOBAL_CHAT))
  144. return;
  145. + boolean vcd_used = false;
  146. + if (text.startsWith("."))
  147. + {
  148. + StringTokenizer st = new StringTokenizer(text);
  149. + IVoicedCommandHandler vch;
  150. + String command = "";
  151. + if (st.countTokens() > 1)
  152. + {
  153. + command = st.nextToken().substring(1);
  154. + target = text.substring(command.length() + 2);
  155. + vch = VoicedCommandHandler.getInstance().getVoicedCommandHandler(command);
  156. + }
  157. + else
  158. + {
  159. + command = text.substring(1);
  160. + vch = VoicedCommandHandler.getInstance().getVoicedCommandHandler(command);
  161. + }
  162. +
  163. + if (vch != null)
  164. + {
  165. + vch.useVoicedCommand(command, player, text);
  166. + vcd_used = true;
  167. +
  168. + }
  169. + }
  170.  
  171. - final CreatureSay cs = new CreatureSay(player, type, text);
  172. - for (Player knownPlayer : player.getKnownTypeInRadius(Player.class, 1250))
  173. - knownPlayer.sendPacket(cs);
  174. -
  175. - player.sendPacket(cs);
  176. + if (!vcd_used)
  177. + {
  178. + final CreatureSay cs = new CreatureSay(player, type, text);
  179. + for (Player knownPlayer : player.getKnownTypeInRadius(Player.class, 1250))
  180. + knownPlayer.sendPacket(cs);
  181. +
  182. + player.sendPacket(cs);
  183. +
  184. + }
  185. }
  186.  
  187. @Override
  188. diff --git a/java/net/sf/l2j/gameserver/network/clientpackets/RequestBypassToServer.java b/java/net/sf/l2j/gameserver/network/clientpackets/RequestBypassToServer.java
  189. index d3a2c47..1b528aa 100644
  190. --- a/java/net/sf/l2j/gameserver/network/clientpackets/RequestBypassToServer.java
  191. +++ b/java/net/sf/l2j/gameserver/network/clientpackets/RequestBypassToServer.java
  192. @@ -10,6 +10,8 @@
  193. import net.sf.l2j.gameserver.enums.FloodProtector;
  194. import net.sf.l2j.gameserver.handler.AdminCommandHandler;
  195. import net.sf.l2j.gameserver.handler.IAdminCommandHandler;
  196. +import net.sf.l2j.gameserver.handler.IVoicedCommandHandler;
  197. +import net.sf.l2j.gameserver.handler.VoicedCommandHandler;
  198. import net.sf.l2j.gameserver.model.World;
  199. import net.sf.l2j.gameserver.model.WorldObject;
  200. import net.sf.l2j.gameserver.model.actor.Npc;
  201. @@ -98,6 +100,21 @@
  202. html.disableValidation();
  203. player.sendPacket(html);
  204. }
  205. + else if (_command.startsWith("voiced_"))
  206. + {
  207. + String command = _command.split(" ")[0];
  208. +
  209. + IVoicedCommandHandler ach = VoicedCommandHandler.getInstance().getVoicedCommandHandler(_command.substring(7));
  210. +
  211. + if (ach == null)
  212. + {
  213. + player.sendMessage("The command " + command.substring(7) + " does not exist!");
  214. + LOGGER.warn("No handler registered for command '" + _command + "'");
  215. + return;
  216. + }
  217. +
  218. + ach.useVoicedCommand(_command.substring(7), player, null);
  219. + }
  220. else if (_command.startsWith("npc_"))
  221. {
  222. if (!player.validateBypass(_command))
  223.  
Add Comment
Please, Sign In to add comment