Advertisement
Sarada-L2

VoicedCommand aCis 405+

Feb 17th, 2023
1,024
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.04 KB | None | 0 0
  1. ### Eclipse Workspace Patch 1.0
  2. #P 405 (1)
  3. diff --git aCis_gameserver/java/net/sf/l2j/gameserver/GameServer.java
  4. index 2d0b8e7..16a84e2 100644
  5. --- aCis_gameserver/java/net/sf/l2j/gameserver/GameServer.java
  6. +++ aCis_gameserver/java/net/sf/l2j/gameserver/GameServer.java
  7. @@ -1,32 +1,31 @@
  8. package net.sf.l2j.gameserver;
  9.  
  10. import java.io.File;
  11. import java.io.FileInputStream;
  12. import java.io.InputStream;
  13. import java.net.InetAddress;
  14. import java.util.logging.LogManager;
  15.  
  16. +import net.sf.l2j.Config;
  17. import net.sf.l2j.commons.lang.StringUtil;
  18. import net.sf.l2j.commons.logging.CLogger;
  19. import net.sf.l2j.commons.mmocore.SelectorConfig;
  20. import net.sf.l2j.commons.mmocore.SelectorThread;
  21. import net.sf.l2j.commons.pool.ConnectionPool;
  22. import net.sf.l2j.commons.pool.ThreadPool;
  23. import net.sf.l2j.commons.util.SysUtil;
  24. -
  25. -import net.sf.l2j.Config;
  26. import net.sf.l2j.gameserver.communitybbs.CommunityBoard;
  27. import net.sf.l2j.gameserver.data.SkillTable;
  28. import net.sf.l2j.gameserver.data.cache.CrestCache;
  29. import net.sf.l2j.gameserver.data.cache.HtmCache;
  30. import net.sf.l2j.gameserver.data.manager.BoatManager;
  31. import net.sf.l2j.gameserver.data.manager.BufferManager;
  32. import net.sf.l2j.gameserver.data.manager.BuyListManager;
  33. import net.sf.l2j.gameserver.data.manager.CastleManager;
  34. import net.sf.l2j.gameserver.data.manager.CastleManorManager;
  35. import net.sf.l2j.gameserver.data.manager.ClanHallManager;
  36. import net.sf.l2j.gameserver.data.manager.CoupleManager;
  37. import net.sf.l2j.gameserver.data.manager.CursedWeaponManager;
  38. import net.sf.l2j.gameserver.data.manager.DerbyTrackManager;
  39. import net.sf.l2j.gameserver.data.manager.DimensionalRiftManager;
  40. import net.sf.l2j.gameserver.data.manager.FestivalOfDarknessManager;
  41. @@ -66,30 +65,31 @@
  42. import net.sf.l2j.gameserver.data.xml.ScriptData;
  43. import net.sf.l2j.gameserver.data.xml.SkillTreeData;
  44. import net.sf.l2j.gameserver.data.xml.SoulCrystalData;
  45. import net.sf.l2j.gameserver.data.xml.SpellbookData;
  46. import net.sf.l2j.gameserver.data.xml.StaticObjectData;
  47. import net.sf.l2j.gameserver.data.xml.SummonItemData;
  48. import net.sf.l2j.gameserver.data.xml.TeleportData;
  49. import net.sf.l2j.gameserver.data.xml.WalkerRouteData;
  50. import net.sf.l2j.gameserver.geoengine.GeoEngine;
  51. import net.sf.l2j.gameserver.handler.AdminCommandHandler;
  52. import net.sf.l2j.gameserver.handler.ChatHandler;
  53. import net.sf.l2j.gameserver.handler.ItemHandler;
  54. import net.sf.l2j.gameserver.handler.SkillHandler;
  55. import net.sf.l2j.gameserver.handler.TargetHandler;
  56. import net.sf.l2j.gameserver.handler.UserCommandHandler;
  57. +import net.sf.l2j.gameserver.handler.VoicedCommandHandler;
  58. import net.sf.l2j.gameserver.idfactory.IdFactory;
  59. import net.sf.l2j.gameserver.model.World;
  60. import net.sf.l2j.gameserver.model.boat.BoatGiranTalking;
  61. import net.sf.l2j.gameserver.model.boat.BoatGludinRune;
  62. import net.sf.l2j.gameserver.model.boat.BoatInnadrilTour;
  63. import net.sf.l2j.gameserver.model.boat.BoatRunePrimeval;
  64. import net.sf.l2j.gameserver.model.boat.BoatTalkingGludin;
  65. import net.sf.l2j.gameserver.model.olympiad.Olympiad;
  66. import net.sf.l2j.gameserver.model.olympiad.OlympiadGameManager;
  67. import net.sf.l2j.gameserver.network.GameClient;
  68. import net.sf.l2j.gameserver.network.GamePacketHandler;
  69. import net.sf.l2j.gameserver.taskmanager.AttackStanceTaskManager;
  70. import net.sf.l2j.gameserver.taskmanager.DecayTaskManager;
  71. import net.sf.l2j.gameserver.taskmanager.GameTimeTaskManager;
  72. import net.sf.l2j.gameserver.taskmanager.ItemsOnGroundTaskManager;
  73. @@ -257,30 +257,31 @@
  74. CoupleManager.getInstance();
  75.  
  76. if (Config.ALLOW_FISH_CHAMPIONSHIP)
  77. FishingChampionshipManager.getInstance();
  78.  
  79. StringUtil.printSection("Spawns");
  80. SpawnManager.getInstance().spawn();
  81.  
  82. StringUtil.printSection("Handlers");
  83. LOGGER.info("Loaded {} admin command handlers.", AdminCommandHandler.getInstance().size());
  84. LOGGER.info("Loaded {} chat handlers.", ChatHandler.getInstance().size());
  85. LOGGER.info("Loaded {} item handlers.", ItemHandler.getInstance().size());
  86. LOGGER.info("Loaded {} skill handlers.", SkillHandler.getInstance().size());
  87. LOGGER.info("Loaded {} target handlers.", TargetHandler.getInstance().size());
  88. LOGGER.info("Loaded {} user command handlers.", UserCommandHandler.getInstance().size());
  89. + LOGGER.info("Loaded {} user VoicedCommandHandler handlers.", VoicedCommandHandler.getInstance().size());
  90.  
  91. StringUtil.printSection("System");
  92. Runtime.getRuntime().addShutdownHook(Shutdown.getInstance());
  93.  
  94. if (Config.DEADLOCK_DETECTOR)
  95. {
  96. LOGGER.info("Deadlock detector is enabled. Timer: {}s.", Config.DEADLOCK_CHECK_INTERVAL);
  97.  
  98. final DeadLockDetector deadDetectThread = new DeadLockDetector();
  99. deadDetectThread.setDaemon(true);
  100. deadDetectThread.start();
  101. }
  102. else
  103. LOGGER.info("Deadlock detector is disabled.");
  104.  
  105. diff --git aCis_gameserver/java/net/sf/l2j/gameserver/handler/IVoicedCommandHandler.java
  106. new file mode 100644
  107. index 0000000..c7b29f5
  108. --- /dev/null
  109. +++ aCis_gameserver/java/net/sf/l2j/gameserver/handler/IVoicedCommandHandler.java
  110. @@ -0,0 +1,10 @@
  111. +package net.sf.l2j.gameserver.handler;
  112. +
  113. +import net.sf.l2j.gameserver.model.actor.Player;
  114. +
  115. +public interface IVoicedCommandHandler
  116. +{
  117. + public boolean useVoicedCommand(String command, Player activeChar, String params);
  118. +
  119. + public String[] getVoicedCommandList();
  120. +}
  121. diff --git aCis_gameserver/java/net/sf/l2j/gameserver/handler/VoicedCommandHandler.java
  122. new file mode 100644
  123. index 0000000..0c706a8
  124. --- /dev/null
  125. +++ aCis_gameserver/java/net/sf/l2j/gameserver/handler/VoicedCommandHandler.java
  126. @@ -0,0 +1,49 @@
  127. +package net.sf.l2j.gameserver.handler;
  128. +
  129. +import java.util.HashMap;
  130. +import java.util.Map;
  131. +
  132. +public class VoicedCommandHandler
  133. +{
  134. + private final Map<Integer, IVoicedCommandHandler> _datatable = new HashMap<>();
  135. +
  136. + public static VoicedCommandHandler getInstance()
  137. + {
  138. + return SingletonHolder._instance;
  139. + }
  140. +
  141. + protected VoicedCommandHandler()
  142. + {
  143. + //Codigos para colocar aqui dentro
  144. + //Exemplo -> registerHandler(new ExemploMod());
  145. +
  146. + }
  147. +
  148. + public void registerHandler(IVoicedCommandHandler handler)
  149. + {
  150. + String[] ids = handler.getVoicedCommandList();
  151. +
  152. + for (int i = 0; i < ids.length; i++)
  153. + _datatable.put(ids[i].hashCode(), handler);
  154. + }
  155. +
  156. + public IVoicedCommandHandler getHandler(String voicedCommand)
  157. + {
  158. + String command = voicedCommand;
  159. +
  160. + if (voicedCommand.indexOf(" ") != -1)
  161. + command = voicedCommand.substring(0, voicedCommand.indexOf(" "));
  162. +
  163. + return _datatable.get(command.hashCode());
  164. + }
  165. +
  166. + public int size()
  167. + {
  168. + return _datatable.size();
  169. + }
  170. +
  171. + private static class SingletonHolder
  172. + {
  173. + protected static final VoicedCommandHandler _instance = new VoicedCommandHandler();
  174. + }
  175. +}
  176. diff --git aCis_gameserver/java/net/sf/l2j/gameserver/handler/chathandlers/ChatAll.java
  177. index ac326e9..1ab0de7 100644
  178. --- aCis_gameserver/java/net/sf/l2j/gameserver/handler/chathandlers/ChatAll.java
  179. +++ aCis_gameserver/java/net/sf/l2j/gameserver/handler/chathandlers/ChatAll.java
  180. @@ -1,34 +1,65 @@
  181. package net.sf.l2j.gameserver.handler.chathandlers;
  182.  
  183. +import java.util.StringTokenizer;
  184. +
  185. import net.sf.l2j.gameserver.enums.FloodProtector;
  186. import net.sf.l2j.gameserver.enums.SayType;
  187. import net.sf.l2j.gameserver.handler.IChatHandler;
  188. +import net.sf.l2j.gameserver.handler.IVoicedCommandHandler;
  189. +import net.sf.l2j.gameserver.handler.VoicedCommandHandler;
  190. import net.sf.l2j.gameserver.model.actor.Player;
  191. import net.sf.l2j.gameserver.network.serverpackets.CreatureSay;
  192.  
  193. public class ChatAll implements IChatHandler
  194. {
  195. private static final SayType[] COMMAND_IDS =
  196. {
  197. SayType.ALL
  198. };
  199.  
  200. @Override
  201. public void handleChat(SayType type, Player player, String target, String text)
  202. {
  203. if (!player.getClient().performAction(FloodProtector.GLOBAL_CHAT))
  204. return;
  205. -
  206. - final CreatureSay cs = new CreatureSay(player, type, text);
  207. - for (Player knownPlayer : player.getKnownTypeInRadius(Player.class, 1250))
  208. - knownPlayer.sendPacket(cs);
  209. -
  210. - player.sendPacket(cs);
  211. + boolean vcd_used = false;
  212. + if (text.startsWith("."))
  213. + {
  214. + StringTokenizer st = new StringTokenizer(text);
  215. + IVoicedCommandHandler vch;
  216. + String command = "";
  217. + if (st.countTokens() > 1)
  218. + {
  219. + command = st.nextToken().substring(1);
  220. + target = text.substring(command.length() + 2);
  221. + vch = VoicedCommandHandler.getInstance().getHandler(command);
  222. + }
  223. + else
  224. + {
  225. + command = text.substring(1);
  226. + vch = VoicedCommandHandler.getInstance().getHandler(command);
  227. + }
  228. +
  229. + if (vch != null)
  230. + {
  231. + vch.useVoicedCommand(command, player, text);
  232. + vcd_used = true;
  233. +
  234. + }
  235. + }
  236. + if (!vcd_used)
  237. + {
  238. + final CreatureSay cs = new CreatureSay(player, type, text);
  239. + for (Player knownPlayer : player.getKnownTypeInRadius(Player.class, 1250))
  240. + knownPlayer.sendPacket(cs);
  241. +
  242. + player.sendPacket(cs);
  243. + }
  244. }
  245.  
  246. @Override
  247. public SayType[] getChatTypeList()
  248. {
  249. return COMMAND_IDS;
  250. }
  251. }
  252. \ No newline at end of file
  253. diff --git aCis_gameserver/java/net/sf/l2j/gameserver/network/clientpackets/RequestBypassToServer.java
  254. index 882ab73..b973fdd 100644
  255. --- aCis_gameserver/java/net/sf/l2j/gameserver/network/clientpackets/RequestBypassToServer.java
  256. +++ aCis_gameserver/java/net/sf/l2j/gameserver/network/clientpackets/RequestBypassToServer.java
  257. @@ -1,27 +1,29 @@
  258. package net.sf.l2j.gameserver.network.clientpackets;
  259.  
  260. import java.util.StringTokenizer;
  261. import java.util.logging.Logger;
  262.  
  263. import net.sf.l2j.Config;
  264. import net.sf.l2j.gameserver.communitybbs.CommunityBoard;
  265. import net.sf.l2j.gameserver.data.manager.HeroManager;
  266. import net.sf.l2j.gameserver.data.xml.AdminData;
  267. import net.sf.l2j.gameserver.enums.FloodProtector;
  268. import net.sf.l2j.gameserver.handler.AdminCommandHandler;
  269. import net.sf.l2j.gameserver.handler.IAdminCommandHandler;
  270. +import net.sf.l2j.gameserver.handler.IVoicedCommandHandler;
  271. +import net.sf.l2j.gameserver.handler.VoicedCommandHandler;
  272. import net.sf.l2j.gameserver.model.World;
  273. import net.sf.l2j.gameserver.model.WorldObject;
  274. import net.sf.l2j.gameserver.model.actor.Npc;
  275. import net.sf.l2j.gameserver.model.actor.Player;
  276. import net.sf.l2j.gameserver.model.actor.instance.OlympiadManagerNpc;
  277. import net.sf.l2j.gameserver.model.olympiad.OlympiadManager;
  278. import net.sf.l2j.gameserver.network.SystemMessageId;
  279. import net.sf.l2j.gameserver.network.serverpackets.ActionFailed;
  280. import net.sf.l2j.gameserver.network.serverpackets.NpcHtmlMessage;
  281. import net.sf.l2j.gameserver.scripting.QuestState;
  282.  
  283. public final class RequestBypassToServer extends L2GameClientPacket
  284. {
  285. private static final Logger GMAUDIT_LOG = Logger.getLogger("gmaudit");
  286.  
  287. @@ -86,30 +88,44 @@
  288. if (cmd.length > 1)
  289. {
  290. final int itemId = Integer.parseInt(cmd[1]);
  291. html.setItemId(itemId);
  292.  
  293. if (itemId == 7064 && cmd[0].equalsIgnoreCase("lidias_diary/7064-16.htm"))
  294. {
  295. final QuestState qs = player.getQuestList().getQuestState("Q023_LidiasHeart");
  296. if (qs != null && qs.getCond() == 5 && qs.getInteger("diary") == 0)
  297. qs.set("diary", "1");
  298. }
  299. }
  300. html.disableValidation();
  301. player.sendPacket(html);
  302. }
  303. + else if (_command.startsWith("voiced_"))
  304. + {
  305. + String command = _command.split(" ")[0];
  306. +
  307. + IVoicedCommandHandler ach = VoicedCommandHandler.getInstance().getHandler(_command.substring(7));
  308. +
  309. + if (ach == null)
  310. + {
  311. + player.sendMessage("The command " + command.substring(7) + " does not exist!");
  312. + LOGGER.warn("No handler registered for command '" + _command + "'");
  313. + return;
  314. + }
  315. + ach.useVoicedCommand(_command.substring(7), player, null);
  316. + }
  317. else if (_command.startsWith("npc_"))
  318. {
  319. if (!player.validateBypass(_command))
  320. return;
  321.  
  322. int endOfId = _command.indexOf('_', 5);
  323. String id;
  324. if (endOfId > 0)
  325. id = _command.substring(4, endOfId);
  326. else
  327. id = _command.substring(4);
  328.  
  329. try
  330. {
  331. final WorldObject object = World.getInstance().getObject(Integer.parseInt(id));
  332.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement