View difference between Paste ID: skGwL6fn and ba8LZjT4
SHOW: | | - or go back to the newest paste.
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