SHOW:
|
|
- or go back to the newest paste.
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 |