View difference between Paste ID: t2b6Tr62 and QbTA52Us
SHOW: | | - or go back to the newest paste.
1
### Eclipse Workspace Patch 1.0
2
#P Orionwins
3
diff --git files/game/config/L2jServer/ExtraSettings.properties files/game/config/L2jServer/ExtraSettings.properties
4
index 2af9e38..eea7e5b 100644
5
--- files/game/config/L2jServer/ExtraSettings.properties
6
+++ files/game/config/L2jServer/ExtraSettings.properties
7
@@ -273,5 +273,20 @@
8
 RandromCraftConsumeCreate = 300000
9
 
10
 
11
+#==========================================================================
12
+#   GAME MODE SYSTEM - PVE - PVP - NORMAL - WITH BONUS 
13
+#==========================================================================
14
 
15
+GameModeSystemEnable = True
16
+
17
+PVPModeXpSpRate = 50
18
+NormalModeXpSpRate = 20
19
+PVPModeSpoilRate = 50
20
+NormalModeSpoilRate = 20
21
+PVPModeDropRate = 50
22
+NormalModeDropRate = 20
23
+PVPModeAdenaRate = 25
24
+NormalModeAdenaRate = 20
25
+PVPModeDropSealStonesRate = 5
26
+NormalDropSealStonesRate = 2
27
 
28
diff --git files/game/data/html/mods/ChangeModeSystem/ModeSystem.htm files/game/data/html/mods/ChangeModeSystem/ModeSystem.htm
29
new file mode 100644
30
index 0000000..6e94618
31
--- /dev/null
32
+++ files/game/data/html/mods/ChangeModeSystem/ModeSystem.htm
33
@@ -0,0 +1,57 @@
34
+<html>
35
+<head>
36
+    <title>L2Wins - Modos De Juego</title>
37
+</head>
38
+<body>
39
+
40
+    <center><font color="00FF00">Bienvenido a L2Wins.</font></center>
41
+    <br>
42
+    <center><font color="00FF00">Elige tu Modo de Juego.</font></center>
43
+<center>
44
+<br1>
45
+<font color="00FF00">Por Defecto Entras En Normal Mode.</font>
46
+<br1>
47
+<font color="00FF00">Puedes Cambiarlo Escribiendo - .pve - .pvp - .normal</font>
48
+<br1>
49
+<font color="00FF00">Los Modos De Juego PvP - Normal Mode.</font>
50
+<br1>
51
+<font color="00FF00">Tienen Un Bonus General de EXP-SP-DROP-ADENA.</font>
52
+<br1>
53
+<font color="00FF00">En el Modo PvE No Podran Matarte.</font>
54
+<br1>
55
+<font color="00FF00">Tampoco Podras Atacar A Otro Jugador.</font>
56
+<br1>
57
+<font color="00FF00">Solo Podras Estar En Party Con Gente.</font>
58
+<br1>
59
+<font color="00FF00">Que Tenga Tu Mismo Modo De Juego.</font>
60
+
61
+</center>
62
+
63
+    <br>
64
+
65
+    <table>
66
+        <tr>
67
+            <td width="160" align="center"><font color="FFFF00">PvE Mode</font></td>
68
+            <td width="160" align="center"><font color="800080">PvP Mode</font></td>
69
+            <td width="160" align="center"><font color="CCFFCC"><font color="FF6600">Normal Mode</font></font></td>
70
+        </tr>
71
+</table>
72
+     <table>
73
+        <tr>
74
+            <td width="160" align="center"><font color="FFFF00">Bonus 0%</font></td>
75
+            <td width="160" align="center"><font color="800080">Bonus 50%</font></td>
76
+            <td width="160" align="center"><font color="CCFFCC"><font color="FF6600">Bonus 20%</font></font></td>
77
+        </tr>
78
+</table>
79
+
80
+
81
+<br>
82
+<table>
83
+        <tr>
84
+            <td width="160" align="center"><button value="Use" action="bypass -h PvEMode" width="75" height="21" back="L2UI.DefaultButton_click" fore="L2UI.DefaultButton"></td>
85
+            <td width="160" align="center"><button value="Use" action="bypass -h PvPMode" width="75" height="21" back="L2UI.DefaultButton_click" fore="L2UI.DefaultButton"></td>
86
+            <td width="160" align="center"><button value="Use" action="bypass -h NormalMode" width="75" height="21" back="L2UI.DefaultButton_click" fore="L2UI.DefaultButton"></td>
87
+        </tr>
88
+    </table>
89
+</body>
90
+</html>
91
diff --git src/Base/ModeSystem/ChangeModeManager.java src/Base/ModeSystem/ChangeModeManager.java
92
new file mode 100644
93
index 0000000..282394f
94
--- /dev/null
95
+++ src/Base/ModeSystem/ChangeModeManager.java
96
@@ -0,0 +1,204 @@
97
+package Base.ModeSystem;
98
+
99
+import l2jwins.Config;
100
+import l2jwins.game.model.actor.instance.L2PcInstance;
101
+import l2jwins.game.model.zone.ZoneId;
102
+
103
+public class ChangeModeManager
104
+{
105
+	public static boolean verifyChangeMode(L2PcInstance activeChar)
106
+	{
107
+		if (activeChar == null)
108
+		{
109
+			return false;
110
+		}
111
+		
112
+		if (!Config.GAME_MODE_ENABLE)
113
+		{
114
+			activeChar.sendMessage("El Change Mode System Esta Desactivado.");
115
+			return false;
116
+		}
117
+		
118
+		if (activeChar.isMoving())
119
+		{
120
+			activeChar.sendMessage("No Puedes Cambiar El Modo De Juego SI Te Estas Moviendo");
121
+			return false;
122
+		}
123
+		
124
+		if (activeChar.isInParty())
125
+		{
126
+			activeChar.sendMessage("Sal De La Party Para Cambiar de Modo De Juego");
127
+			return false;
128
+		}
129
+		
130
+		if (activeChar.isInDuel())
131
+		{
132
+			activeChar.sendMessage("No Puedes Cambiar El Modo De Juego Ahora");
133
+			return false;
134
+		}
135
+		
136
+		if (activeChar.isInArena())
137
+		{
138
+			activeChar.sendMessage("No Puedes Cambiar El Modo De Juego Ahora");
139
+			return false;
140
+		}
141
+		
142
+		if (activeChar.isInArenaEvent())
143
+		{
144
+			activeChar.sendMessage("No Puedes Cambiar El Modo De Juego Ahora");
145
+			return false;
146
+		}
147
+		
148
+		if (activeChar.isInJail())
149
+		{
150
+			activeChar.sendMessage("No Puedes Cambiar El Modo De Juego Ahora");
151
+			return false;
152
+		}
153
+		
154
+		if (activeChar.isInPartyMatchRoom())
155
+		{
156
+			activeChar.sendMessage("No Puedes Cambiar El Modo De Juego Ahora");
157
+			return false;
158
+		}
159
+		
160
+		if (activeChar.isInCraftMode())
161
+		{
162
+			activeChar.sendMessage("No Puedes Cambiar El Modo De Juego Ahora");
163
+			return false;
164
+		}
165
+		
166
+		if (activeChar.isInHideoutSiege())
167
+		{
168
+			activeChar.sendMessage("No Puedes Cambiar El Modo De Juego Ahora");
169
+			return false;
170
+		}
171
+		
172
+		if (activeChar.isInsideZone(ZoneId.ZONE_BOSS))
173
+		{
174
+			activeChar.sendMessage("No Puedes Cambiar El Modo De Juego Ahora");
175
+			return false;
176
+		}
177
+		
178
+		if (activeChar.isInsideZone(ZoneId.ZONE_CASTLE))
179
+		{
180
+			activeChar.sendMessage("No Puedes Cambiar El Modo De Juego Ahora");
181
+			return false;
182
+		}
183
+		
184
+		if (activeChar.isInsideZone(ZoneId.ZONE_DANGERAREA))
185
+		{
186
+			activeChar.sendMessage("No Puedes Cambiar El Modo De Juego Ahora");
187
+			return false;
188
+		}
189
+		
190
+		if (activeChar.isInsideZone(ZoneId.ZONE_FLAG))
191
+		{
192
+			activeChar.sendMessage("No Puedes Cambiar El Modo De Juego Ahora");
193
+			return false;
194
+		}
195
+		
196
+		if (activeChar.isInsideZone(ZoneId.ZONE_NOSUMMONFRIEND))
197
+		{
198
+			activeChar.sendMessage("No Puedes Cambiar El Modo De Juego Ahora");
199
+			return false;
200
+		}
201
+		
202
+		if (activeChar.isInsideZone(ZoneId.ZONE_JAIL))
203
+		{
204
+			activeChar.sendMessage("No Puedes Cambiar El Modo De Juego Ahora");
205
+			return false;
206
+		}
207
+		
208
+		if (activeChar.isInsideZone(ZoneId.ZONE_MONSTERTRACK))
209
+		{
210
+			activeChar.sendMessage("No Puedes Cambiar El Modo De Juego Ahora");
211
+			return false;
212
+		}
213
+		
214
+		if (activeChar.isInsideZone(ZoneId.ZONE_OLY))
215
+		{
216
+			activeChar.sendMessage("No Puedes Cambiar El Modo De Juego Ahora");
217
+			return false;
218
+		}
219
+		
220
+		if (activeChar.isInsideZone(ZoneId.ZONE_PVP))
221
+		{
222
+			activeChar.sendMessage("No Puedes Cambiar El Modo De Juego Ahora");
223
+			return false;
224
+		}
225
+		
226
+		if (activeChar.isInsideZone(ZoneId.ZONE_RAID_LIMIT))
227
+		{
228
+			activeChar.sendMessage("No Puedes Cambiar El Modo De Juego Ahora");
229
+			return false;
230
+		}
231
+		
232
+		if (activeChar.isInsideZone(ZoneId.ZONE_RANDOM))
233
+		{
234
+			activeChar.sendMessage("No Puedes Cambiar El Modo De Juego Ahora");
235
+			return false;
236
+		}
237
+		
238
+		if (activeChar.isInsideZone(ZoneId.ZONE_SIEGE))
239
+		{
240
+			activeChar.sendMessage("No Puedes Cambiar El Modo De Juego Ahora");
241
+			return false;
242
+		}
243
+		
244
+		if (activeChar.isInsideZone(ZoneId.ZONE_NORESTART))
245
+		{
246
+			activeChar.sendMessage("No Puedes Cambiar El Modo De Juego Ahora");
247
+			return false;
248
+		}
249
+		
250
+		if (activeChar.isIn7sDungeon())
251
+		{
252
+			activeChar.sendMessage("No Puedes Cambiar El Modo De Juego Ahora");
253
+			return false;
254
+		}
255
+		
256
+		if (activeChar.isDungeon())
257
+		{
258
+			activeChar.sendMessage("No Puedes Cambiar El Modo De Juego SI Estas En Una Dungeon");
259
+			return false;
260
+		}
261
+		
262
+		if (activeChar.isInOlympiadMode())
263
+		{
264
+			activeChar.sendMessage("No Puedes Cambiar El Modo De Juego SI Estas En Olympiadas");
265
+			return false;
266
+		}
267
+		
268
+		if (activeChar.isRegisteredInCTFEvent() || activeChar.isRegisteredInDMEvent() || activeChar.isRegisteredInFunEvent() || activeChar.isRegisteredInTVTEvent() || activeChar.isRegisteredInVIPEvent())
269
+		{
270
+			activeChar.sendMessage("No Puedes Cambiar El Modo De Juego SI Estas Registrado En Un Evento");
271
+			return false;
272
+		}
273
+		
274
+		if (activeChar.inObserverMode())
275
+		{
276
+			activeChar.sendMessage("No Puedes Cambiar El Modo De Juego SI Estas en ObserverMode");
277
+			return false;
278
+		}
279
+		
280
+		if (activeChar.isCastingNow())
281
+		{
282
+			activeChar.sendMessage("No Puedes Cambiar El Modo De Juego SI Estas Casteando un Skill");
283
+			return false;
284
+		}
285
+		
286
+		if (activeChar.isInCombat())
287
+		{
288
+			activeChar.sendMessage("No Puedes Cambiar El Modo De Juego Si Estas en Combate");
289
+			return false;
290
+		}
291
+		
292
+		if (activeChar.isAttackingNow())
293
+		{
294
+			activeChar.sendMessage("No Puedes Cambiar El Modo De Juego SI Estas Atacando");
295
+			return false;
296
+		}
297
+		
298
+		return true;
299
+	}
300
+}
301
diff --git src/l2jwins/Config.java src/l2jwins/Config.java
302
index 90bd833..9201857 100644
303
--- src/l2jwins/Config.java
304
+++ src/l2jwins/Config.java
305
@@ -287,6 +287,23 @@
306
 	public static int RANDOM_CRAFT_ITEM_CONSUME_REFRESH;
307
 	public static int RANDOM_CRAFT_ITEM_CONSUME_CREATE;
308
 	
309
+	public static boolean GAME_MODE_ENABLE;
310
+	
311
+	public static float PVP_MODE_XPSP_RATE;
312
+	public static float NORMAL_MODE_XPSP_RATE;
313
+	
314
+	public static float PVP_MODE_SPOIL_RATE;
315
+	public static float NORMAL_MODE_SPOIL_RATE;
316
+	
317
+	public static float PVP_MODE_DROP_RATE;
318
+	public static float NORMAL_MODE_DROP_RATE;
319
+	
320
+	public static float PVP_MODE_ADENA_RATE;
321
+	public static float NORMAL_MODE_ADENA_RATE;
322
+	
323
+	public static float PVP_MODE_SS_RATE;
324
+	public static float NORMAL_MODE_SS_RATE;
325
+	
326
 	// ===================================================================================================================================//
327
 	
328
 	public static void loadExtraSettingsConfig()
329
@@ -306,6 +323,23 @@
330
 			
331
 			// ===================================================================================================================================//
332
 			
333
+			GAME_MODE_ENABLE = Boolean.parseBoolean(ExtraSettings.getProperty("GameModeSystemEnable", "True"));
334
+			
335
+			PVP_MODE_XPSP_RATE = Float.parseFloat(ExtraSettings.getProperty("PVPModeXpSpRate", "1.5"));
336
+			NORMAL_MODE_XPSP_RATE = Float.parseFloat(ExtraSettings.getProperty("NormalModeXpSpRate", "1.5"));
337
+			
338
+			PVP_MODE_SPOIL_RATE = Float.parseFloat(ExtraSettings.getProperty("PVPModeSpoilRate", "1.5"));
339
+			NORMAL_MODE_SPOIL_RATE = Float.parseFloat(ExtraSettings.getProperty("NormalSpoilRate", "1.5"));
340
+			
341
+			PVP_MODE_DROP_RATE = Float.parseFloat(ExtraSettings.getProperty("PVPModeDropRate", "1.5"));
342
+			NORMAL_MODE_DROP_RATE = Float.parseFloat(ExtraSettings.getProperty("NormalDropRate", "1.5"));
343
+			
344
+			PVP_MODE_ADENA_RATE = Float.parseFloat(ExtraSettings.getProperty("PVPModeAdenaRate", "1.5"));
345
+			NORMAL_MODE_ADENA_RATE = Float.parseFloat(ExtraSettings.getProperty("NormalAdenaRate", "1.5"));
346
+			
347
+			PVP_MODE_SS_RATE = Float.parseFloat(ExtraSettings.getProperty("PVPModeDropSealStonesRate", "1.5"));
348
+			NORMAL_MODE_SS_RATE = Float.parseFloat(ExtraSettings.getProperty("NormalDropSealStonesRate", "1.5"));
349
+			
350
 			SERVER_NAME = ExtraSettings.getProperty("ServerName", "L2-Pain");
351
 			
352
 			AFK_TIMER = Integer.parseInt(ExtraSettings.getProperty("TimerAFK", "10"));
353
diff --git src/l2jwins/game/handler/VoicedCommandHandler.java src/l2jwins/game/handler/VoicedCommandHandler.java
354
index 901615a..5c191e9 100644
355
--- src/l2jwins/game/handler/VoicedCommandHandler.java
356
+++ src/l2jwins/game/handler/VoicedCommandHandler.java
357
@@ -13,6 +13,7 @@
358
 import l2jwins.game.handler.voice.Event_DM;
359
 import l2jwins.game.handler.voice.Event_TVT;
360
 import l2jwins.game.handler.voice.ExpireItems;
361
+import l2jwins.game.handler.voice.GameMode;
362
 import l2jwins.game.handler.voice.OfflineShop;
363
 import l2jwins.game.handler.voice.Online;
364
 import l2jwins.game.handler.voice.PartyTeleport;
365
@@ -97,6 +98,7 @@
366
 		registerVoicedCommandHandler(new BossEventCMD());
367
 		registerVoicedCommandHandler(new BufferAuto());
368
 		registerVoicedCommandHandler(new elixir());
369
+		registerVoicedCommandHandler(new GameMode());
370
 		CustomBypassHandler.getInstance().registerCustomBypassHandler(new ExpireItems());
371
 		
372
 		LOG.info("VoicedCommandHandler: Loaded " + _datatable.size() + " handlers");
373
diff --git src/l2jwins/game/handler/voice/GameMode.java src/l2jwins/game/handler/voice/GameMode.java
374
new file mode 100644
375
index 0000000..b944522
376
--- /dev/null
377
+++ src/l2jwins/game/handler/voice/GameMode.java
378
@@ -0,0 +1,375 @@
379
+package l2jwins.game.handler.voice;
380
+
381
+import java.sql.Connection;
382
+import java.sql.PreparedStatement;
383
+import java.sql.SQLException;
384
+
385
+import l2jwins.Config;
386
+import l2jwins.game.handler.IVoicedCommandHandler;
387
+import l2jwins.game.model.L2World;
388
+import l2jwins.game.model.actor.instance.L2PcInstance;
389
+import l2jwins.game.model.zone.ZoneId;
390
+import l2jwins.game.network.serverpackets.NpcHtmlMessage;
391
+import l2jwins.util.database.L2DatabaseFactory;
392
+
393
+public class GameMode implements IVoicedCommandHandler
394
+{
395
+	private static final String[] VOICED_COMMANDS =
396
+	{
397
+		"pve",
398
+		"pvp",
399
+		"normal",
400
+		"mode"
401
+	};
402
+	
403
+	@Override
404
+	public boolean useVoicedCommand(String command, L2PcInstance activeChar, String params)
405
+	{
406
+		if (activeChar == null)
407
+		{
408
+			return false;
409
+		}
410
+		
411
+		if (!Config.GAME_MODE_ENABLE)
412
+		{
413
+			activeChar.sendMessage("El Change Mode System Esta Desactivado.");
414
+			return false;
415
+		}
416
+		
417
+		if (activeChar.isMoving())
418
+		{
419
+			activeChar.sendMessage("No Puedes Cambiar El Modo De Juego SI Te Estas Moviendo");
420
+			return false;
421
+		}
422
+		
423
+		if (activeChar.isInParty())
424
+		{
425
+			
426
+			activeChar.sendMessage("Sal De La Party Para Cambiar de Modo De Juego");
427
+			return false;
428
+		}
429
+		
430
+		if (activeChar.isInDuel())
431
+		{
432
+			
433
+			activeChar.sendMessage("No Puedes Cambiar El Modo De Juego Ahora");
434
+			return false;
435
+		}
436
+		
437
+		if (activeChar.isInArena())
438
+		{
439
+			activeChar.sendMessage("No Puedes Cambiar El Modo De Juego Ahora");
440
+			return false;
441
+		}
442
+		
443
+		if (activeChar.isInArenaEvent())
444
+		{
445
+			activeChar.sendMessage("No Puedes Cambiar El Modo De Juego Ahora");
446
+			return false;
447
+		}
448
+		
449
+		if (activeChar.isInJail())
450
+		{
451
+			activeChar.sendMessage("No Puedes Cambiar El Modo De Juego Ahora");
452
+			return false;
453
+		}
454
+		
455
+		if (activeChar.isInPartyMatchRoom())
456
+		{
457
+			activeChar.sendMessage("No Puedes Cambiar El Modo De Juego Ahora");
458
+			return false;
459
+		}
460
+		
461
+		if (activeChar.isInCraftMode())
462
+		{
463
+			activeChar.sendMessage("No Puedes Cambiar El Modo De Juego Ahora");
464
+			return false;
465
+		}
466
+		
467
+		if (activeChar.isInHideoutSiege())
468
+		{
469
+			activeChar.sendMessage("No Puedes Cambiar El Modo De Juego Ahora");
470
+			return false;
471
+		}
472
+		
473
+		if (activeChar.isInHideoutSiege())
474
+		{
475
+			activeChar.sendMessage("No Puedes Cambiar El Modo De Juego Ahora");
476
+			return false;
477
+		}
478
+		
479
+		if (activeChar.isInsideZone(ZoneId.ZONE_BOSS))
480
+		{
481
+			activeChar.sendMessage("No Puedes Cambiar El Modo De Juego Ahora");
482
+			return false;
483
+		}
484
+		
485
+		if (activeChar.isInsideZone(ZoneId.ZONE_CASTLE))
486
+		{
487
+			activeChar.sendMessage("No Puedes Cambiar El Modo De Juego Ahora");
488
+			return false;
489
+		}
490
+		
491
+		if (activeChar.isInsideZone(ZoneId.ZONE_DANGERAREA))
492
+		{
493
+			activeChar.sendMessage("No Puedes Cambiar El Modo De Juego Ahora");
494
+			return false;
495
+		}
496
+		
497
+		if (activeChar.isInsideZone(ZoneId.ZONE_FLAG))
498
+		{
499
+			activeChar.sendMessage("No Puedes Cambiar El Modo De Juego Ahora");
500
+			return false;
501
+		}
502
+		
503
+		if (activeChar.isInsideZone(ZoneId.ZONE_NOSUMMONFRIEND))
504
+		{
505
+			activeChar.sendMessage("No Puedes Cambiar El Modo De Juego Ahora");
506
+			return false;
507
+		}
508
+		
509
+		if (activeChar.isInsideZone(ZoneId.ZONE_JAIL))
510
+		{
511
+			activeChar.sendMessage("No Puedes Cambiar El Modo De Juego Ahora");
512
+			return false;
513
+		}
514
+		
515
+		if (activeChar.isInsideZone(ZoneId.ZONE_MONSTERTRACK))
516
+		{
517
+			activeChar.sendMessage("No Puedes Cambiar El Modo De Juego Ahora");
518
+			return false;
519
+		}
520
+		
521
+		if (activeChar.isInsideZone(ZoneId.ZONE_OLY))
522
+		{
523
+			activeChar.sendMessage("No Puedes Cambiar El Modo De Juego Ahora");
524
+			return false;
525
+		}
526
+		
527
+		if (activeChar.isInsideZone(ZoneId.ZONE_PVP))
528
+		{
529
+			activeChar.sendMessage("No Puedes Cambiar El Modo De Juego Ahora");
530
+			return false;
531
+		}
532
+		
533
+		if (activeChar.isInsideZone(ZoneId.ZONE_RAID_LIMIT))
534
+		{
535
+			activeChar.sendMessage("No Puedes Cambiar El Modo De Juego Ahora");
536
+			return false;
537
+		}
538
+		
539
+		if (activeChar.isInsideZone(ZoneId.ZONE_RANDOM))
540
+		{
541
+			activeChar.sendMessage("No Puedes Cambiar El Modo De Juego Ahora");
542
+			return false;
543
+		}
544
+		
545
+		if (activeChar.isInsideZone(ZoneId.ZONE_SIEGE))
546
+		{
547
+			activeChar.sendMessage("No Puedes Cambiar El Modo De Juego Ahora");
548
+			return false;
549
+		}
550
+		
551
+		if (activeChar.isInsideZone(ZoneId.ZONE_NORESTART))
552
+		{
553
+			activeChar.sendMessage("No Puedes Cambiar El Modo De Juego Ahora");
554
+			return false;
555
+		}
556
+		
557
+		if (activeChar.isIn7sDungeon())
558
+		{
559
+			activeChar.sendMessage("No Puedes Cambiar El Modo De Juego Ahora");
560
+			return false;
561
+		}
562
+		
563
+		if (activeChar.isDungeon())
564
+		{
565
+			activeChar.sendMessage("No Puedes Cambiar El Modo De Juego SI Estas En Una Dungeon");
566
+			return false;
567
+		}
568
+		
569
+		if (activeChar.isInOlympiadMode())
570
+		{
571
+			activeChar.sendMessage("No Puedes Cambiar El Modo De Juego SI Estas En Olympiadas");
572
+			return false;
573
+		}
574
+		if (activeChar.isRegisteredInCTFEvent() || activeChar.isRegisteredInDMEvent() || activeChar.isRegisteredInFunEvent() || activeChar.isRegisteredInTVTEvent() || activeChar.isRegisteredInVIPEvent())
575
+		{
576
+			activeChar.sendMessage("No Puedes Cambiar El Modo De Juego SI Estas Registrado En Un Evento");
577
+			return false;
578
+		}
579
+		
580
+		if (activeChar.inObserverMode())
581
+		{
582
+			activeChar.sendMessage("No Puedes Cambiar El Modo De Juego SI Estas ObserverMode");
583
+			return false;
584
+		}
585
+		
586
+		if (activeChar.isCastingNow())
587
+		{
588
+			activeChar.sendMessage("No Puedes Cambiar El Modo De Juego SI Estas Cast Un Skill");
589
+			return false;
590
+		}
591
+		
592
+		if ((activeChar.isInCombat()))
593
+		{
594
+			activeChar.sendMessage("No Puedes Cambiar El Modo De Juego Si Estas En Combate");
595
+			return false;
596
+		}
597
+		
598
+		if (activeChar.isAttackingNow())
599
+		{
600
+			activeChar.sendMessage("No Puedes Cambiar El Modo De Juego SI Estas Atacando");
601
+			return false;
602
+		}
603
+		
604
+		if (command.equalsIgnoreCase(VOICED_COMMANDS[0]))
605
+		{ // PVE Mode
606
+			
607
+			if (activeChar.isPVEMode())
608
+			{
609
+				activeChar.sendMessage("Ya estas en el modo PVE.");
610
+				return false;
611
+			}
612
+			
613
+			if (activeChar.getPvpFlag() == 0 && activeChar.getKarma() == 0)
614
+			{
615
+				activeChar.setPVEMode(true);
616
+				activeChar.setPVPMode(false);
617
+				activeChar.setNormalMode(false);
618
+				setActiveCharGameMode(activeChar, "PVE MODE");
619
+				activeChar.sendMessage("Has cambiado al modo PVE. - No Podran Matarte Otros Jugadores");
620
+				activeChar.sendMessage("Tampoco Podras Atacar a Otros Jugadores - No Obtendras El Bonus");
621
+				activeChar.decayMe();
622
+				L2World.getInstance().addPlayerToWorld(activeChar);
623
+				activeChar.broadcastUserInfo();
624
+				activeChar.spawnMe();
625
+				return true;
626
+			}
627
+			activeChar.sendMessage(" Estas con Flag o Tienes Karma No puedes Activar el modo PvE Con Karma o Flag");
628
+			return false;
629
+			
630
+		}
631
+		else if (command.equalsIgnoreCase(VOICED_COMMANDS[1]))
632
+		{ // PVP Mode
633
+			
634
+			if (activeChar.isPVPMode())
635
+			{
636
+				activeChar.sendMessage("Ya estas en el modo PVP.");
637
+				return false;
638
+			}
639
+			
640
+			if (activeChar.getLevel() < 76)
641
+			{
642
+				activeChar.sendMessage("Necesitas Minimo Ser LvL 76 Para Activar El Modo PvP");
643
+				return false;
644
+			}
645
+			
646
+			if (!activeChar.isInsideZone(ZoneId.ZONE_PEACE))
647
+			{
648
+				activeChar.sendMessage("Solo Puedes Cambiar El Modo En Una Zone Peace.");
649
+				return false;
650
+			}
651
+			
652
+			activeChar.stopPvPFlag();
653
+			activeChar.setPvpFlag(1);
654
+			activeChar.setPVEMode(false);
655
+			activeChar.setPVPMode(true);
656
+			activeChar.setNormalMode(false);
657
+			setActiveCharGameMode(activeChar, "PVP MODE");
658
+			activeChar.sendMessage("Has cambiado al modo PVP. - Obtendras un Bonus de 50%");
659
+			activeChar.decayMe();
660
+			L2World.getInstance().addPlayerToWorld(activeChar);
661
+			activeChar.broadcastUserInfo();
662
+			activeChar.spawnMe();
663
+			return true;
664
+		}
665
+		else if (command.equalsIgnoreCase(VOICED_COMMANDS[2]))
666
+		{
667
+			
668
+			if (activeChar.isNormalMode())
669
+			{
670
+				activeChar.sendMessage("Ya estas en el modo Normal.");
671
+				return false;
672
+			}
673
+			
674
+			if (!activeChar.isInsideZone(ZoneId.ZONE_PEACE))
675
+			{
676
+				activeChar.sendMessage("Solo Puedes Cambiar El Modo En Una Zone Peace.");
677
+				return false;
678
+			}
679
+			
680
+			if (activeChar.getPvpFlag() > 0)
681
+			{
682
+				activeChar.stopPvPFlag();
683
+				activeChar.updatePvPStatus();
684
+				activeChar.setPVEMode(false);
685
+				activeChar.setPVPMode(false);
686
+				activeChar.setNormalMode(true);
687
+				activeChar.sendMessage("Has cambiado al modo Normal. - Obtendras un Bonus de 20%");
688
+				
689
+				setActiveCharGameMode(activeChar, "NORMAL MODE");
690
+				activeChar.decayMe();
691
+				L2World.getInstance().addPlayerToWorld(activeChar);
692
+				activeChar.broadcastUserInfo();
693
+				activeChar.spawnMe();
694
+				
695
+			}
696
+			else
697
+			{
698
+				activeChar.setPvpFlag(0);
699
+				activeChar.setPVEMode(false);
700
+				activeChar.setPVPMode(false);
701
+				activeChar.setNormalMode(true);
702
+				setActiveCharGameMode(activeChar, "NORMAL MODE");
703
+				activeChar.sendMessage("Has cambiado al modo Normal. - Obtendras un Bonus de 20%");
704
+				activeChar.decayMe();
705
+				L2World.getInstance().addPlayerToWorld(activeChar);
706
+				activeChar.broadcastUserInfo();
707
+				activeChar.spawnMe();
708
+				return true;
709
+			}
710
+			
711
+		}
712
+		
713
+		else if (command.equalsIgnoreCase(VOICED_COMMANDS[3]))
714
+		{ // PVP Mode
715
+			showModeSystemHTML(activeChar);
716
+			return true;
717
+		}
718
+		
719
+		return false;
720
+	}
721
+	
722
+	private void setActiveCharGameMode(L2PcInstance activeChar, String gameMode)
723
+	{
724
+		try (Connection con = L2DatabaseFactory.getInstance().getConnection())
725
+		{
726
+			String sql = "REPLACE INTO Character_Game_Mode (object_id, char_name, game_mode) VALUES (?, ?, ?)";
727
+			try (PreparedStatement ps = con.prepareStatement(sql))
728
+			{
729
+				ps.setInt(1, activeChar.getObjectId());
730
+				ps.setString(2, activeChar.getName());
731
+				ps.setString(3, gameMode);
732
+				ps.execute();
733
+			}
734
+		}
735
+		catch (SQLException e)
736
+		{
737
+			// Manejo de excepciones
738
+		}
739
+	}
740
+	
741
+	private void showModeSystemHTML(L2PcInstance player)
742
+	{
743
+		NpcHtmlMessage html = new NpcHtmlMessage(0);
744
+		html.setFile("data/html/mods/ChangeModeSystem/ModeSystem.htm");
745
+		player.sendPacket(html);
746
+	}
747
+	
748
+	@Override
749
+	public String[] getVoicedCommandList()
750
+	{
751
+		return VOICED_COMMANDS;
752
+	}
753
+}
754
diff --git src/l2jwins/game/model/L2Attackable.java src/l2jwins/game/model/L2Attackable.java
755
index 0615b26..c25553d 100644
756
--- src/l2jwins/game/model/L2Attackable.java
757
+++ src/l2jwins/game/model/L2Attackable.java
758
@@ -651,6 +651,19 @@
759
 									exp = (long) (exp * Config.PREMIUM_XPSP_RATE);
760
 									sp = (int) (sp * Config.PREMIUM_XPSP_RATE);
761
 								}
762
+								
763
+								if (((L2PcInstance) attacker).isPVPMode())
764
+								{
765
+									exp = (long) (exp * Config.PVP_MODE_XPSP_RATE);
766
+									sp = (int) (sp * Config.PVP_MODE_XPSP_RATE);
767
+								}
768
+								
769
+								if (((L2PcInstance) attacker).isNormalMode())
770
+								{
771
+									exp = (long) (exp * Config.NORMAL_MODE_XPSP_RATE);
772
+									sp = (int) (sp * Config.NORMAL_MODE_XPSP_RATE);
773
+								}
774
+								
775
 							}
776
 							
777
 							// Distribute the Exp and SP between the L2PcInstance and its L2Summon
778
@@ -1158,6 +1171,16 @@
779
 					dropChance *= Config.PREMIUM_SPOIL_RATE;
780
 				}
781
 				
782
+				if (lastAttacker.isPVPMode())
783
+				{
784
+					dropChance *= Config.PVP_MODE_SPOIL_RATE;
785
+				}
786
+				
787
+				if (lastAttacker.isNormalMode())
788
+				{
789
+					dropChance *= Config.NORMAL_MODE_SPOIL_RATE;
790
+				}
791
+				
792
 			}
793
 			dropChance = (int) ((dropChance * lastAttacker.calcStat(Stats.SPOIL_RATE, 100, null, null)) / 100);
794
 		}
795
@@ -1183,6 +1206,15 @@
796
 				{
797
 					dropChance *= Config.PREMIUM_DROP_RATE;
798
 				}
799
+				
800
+				if (lastAttacker.isPVPMode())
801
+				{
802
+					dropChance *= Config.PVP_MODE_DROP_RATE;
803
+				}
804
+				if (lastAttacker.isNormalMode())
805
+				{
806
+					dropChance *= Config.NORMAL_MODE_DROP_RATE;
807
+				}
808
 			}
809
 		}
810
 		
811
@@ -1271,6 +1303,15 @@
812
 				{
813
 					itemCount *= Config.PREMIUM_ADENA_RATE;
814
 				}
815
+				
816
+				if (lastAttacker.isPVPMode())
817
+				{
818
+					itemCount *= Config.PVP_MODE_ADENA_RATE;
819
+				}
820
+				if (lastAttacker.isNormalMode())
821
+				{
822
+					itemCount *= Config.NORMAL_MODE_ADENA_RATE;
823
+				}
824
 			}
825
 		}
826
 		
827
@@ -1327,6 +1368,16 @@
828
 			{
829
 				categoryDropChance *= Config.PREMIUM_SS_RATE;
830
 			}
831
+			
832
+			if (lastAttacker.isPVPMode())
833
+			{
834
+				categoryDropChance *= Config.PVP_MODE_SS_RATE;
835
+			}
836
+			
837
+			if (lastAttacker.isNormalMode())
838
+			{
839
+				categoryDropChance *= Config.NORMAL_MODE_SS_RATE;
840
+			}
841
 		}
842
 		else
843
 		{
844
@@ -1394,6 +1445,15 @@
845
 					{
846
 						dropChance *= Config.PREMIUM_DROP_RATE;
847
 					}
848
+					
849
+					if (lastAttacker.isPVPMode())
850
+					{
851
+						dropChance *= Config.PVP_MODE_DROP_RATE;
852
+					}
853
+					if (lastAttacker.isNormalMode())
854
+					{
855
+						dropChance *= Config.NORMAL_MODE_DROP_RATE;
856
+					}
857
 				}
858
 			}
859
 			
860
@@ -1453,6 +1513,16 @@
861
 				{
862
 					itemCount *= Config.PREMIUM_SS_RATE;
863
 				}
864
+				if (lastAttacker.isPVPMode())
865
+				{
866
+					itemCount *= Config.PVP_MODE_SS_RATE;
867
+				}
868
+				
869
+				if (lastAttacker.isNormalMode())
870
+				{
871
+					itemCount *= Config.NORMAL_MODE_SS_RATE;
872
+				}
873
+				
874
 			}
875
 			
876
 			if (drop.getItemId() == 57)
877
@@ -1477,6 +1547,14 @@
878
 					{
879
 						itemCount *= Config.PREMIUM_ADENA_RATE;
880
 					}
881
+					if (lastAttacker.isPVPMode())
882
+					{
883
+						itemCount *= Config.PVP_MODE_ADENA_RATE;
884
+					}
885
+					if (lastAttacker.isNormalMode())
886
+					{
887
+						itemCount *= Config.NORMAL_MODE_ADENA_RATE;
888
+					}
889
 				}
890
 			}
891
 			
892
diff --git src/l2jwins/game/model/actor/instance/L2PcInstance.java src/l2jwins/game/model/actor/instance/L2PcInstance.java
893
index 5a34ade..93095fd 100644
894
--- src/l2jwins/game/model/actor/instance/L2PcInstance.java
895
+++ src/l2jwins/game/model/actor/instance/L2PcInstance.java
896
@@ -327,7 +327,12 @@
897
 	private String _autofarm_mode = "None";
898
 	private Location _autofarm_distance;
899
 	
900
+	private boolean isPVEMode = false;
901
+	private boolean isPVPMode = false;
902
+	private boolean isNormalMode = false;
903
+	
904
 	private boolean isTryingSkin = false;
905
+	
906
 	private boolean isTryingSkinPremium = false;
907
 	private List<Integer> _armorSkins = new CopyOnWriteArrayList<>();
908
 	private List<Integer> _weaponSkins = new CopyOnWriteArrayList<>();
909
910
@@ -11745,6 +11755,22 @@
911
 			return;
912
 		}
913
 		
914
+		// Check if target is in PVE mode
915
+		if (target instanceof L2PcInstance && ((L2PcInstance) target).isPVEMode())
916
+		{
917
+			sendPacket(ActionFailed.STATIC_PACKET);
918
+			this.sendMessage("No Puedes Atacar a " + target.getName() + " Por Que Esta en PVE MODE");
919
+			return;
920
+		}
921
+		
922
+		// Check if attacker is in PVE mode and target is a player
923
+		if (this.isPVEMode() && target instanceof L2PcInstance)
924
+		{
925
+			sendPacket(ActionFailed.STATIC_PACKET);
926
+			this.sendMessage("Desactiva El Modo PVE");
927
+			return;
928
+		}
929
+		
930
 		// Check if the spell consume an item
931
 		if (skill.getItemConsume() > 0)
932
 		{
933
@@ -11857,6 +11883,7 @@
934
 				sendPacket(sm);
935
 				return;
936
 			}
937
+			
938
 		}
939
 		
940
 		// Like L2OFF if you are mounted on wyvern you can't use own skills
941
@@ -19769,6 +19796,36 @@
942
 		return isTryingSkin;
943
 	}
944
 	
945
+	public boolean isPVEMode()
946
+	{
947
+		return isPVEMode;
948
+	}
949
+	
950
+	public void setPVEMode(boolean b)
951
+	{
952
+		isPVEMode = b;
953
+	}
954
+	
955
+	public boolean isPVPMode()
956
+	{
957
+		return isPVPMode;
958
+	}
959
+	
960
+	public void setPVPMode(boolean b)
961
+	{
962
+		isPVPMode = b;
963
+	}
964
+	
965
+	public boolean isNormalMode()
966
+	{
967
+		return isNormalMode;
968
+	}
969
+	
970
+	public void setNormalMode(boolean b)
971
+	{
972
+		isNormalMode = b;
973
+	}
974
+	
975
 	public void setIsTryingSkin(boolean b)
976
 	{
977
 		isTryingSkin = b;
978
@@ -20801,6 +20858,31 @@
979
 		}
980
 	}
981
 	
982
+	public String getGameMode()
983
+	{
984
+		try (Connection con = L2DatabaseFactory.getInstance().getConnection())
985
+		{
986
+			String sql = "SELECT game_mode FROM Character_Game_Mode WHERE object_id = ?";
987
+			try (PreparedStatement ps = con.prepareStatement(sql))
988
+			{
989
+				ps.setInt(1, getObjectId());
990
+				try (ResultSet rs = ps.executeQuery())
991
+				{
992
+					if (rs.next())
993
+					{
994
+						return rs.getString("game_mode");
995
+					}
996
+				}
997
+			}
998
+		}
999
+		catch (SQLException e)
1000
+		{
1001
+			// Manejo de excepciones
1002
+		}
1003
+		
1004
+		return "Desconocido";
1005
+	}
1006
+	
1007
 	public void updateLastAction()
1008
 	{
1009
 		_lastAction = System.currentTimeMillis() + TimeUnit.MINUTES.toMillis(Config.AFK_TIMER);
1010
diff --git src/l2jwins/game/network/clientpackets/AttackRequest.java src/l2jwins/game/network/clientpackets/AttackRequest.java
1011
index 291a214..5ecca8e 100644
1012
--- src/l2jwins/game/network/clientpackets/AttackRequest.java
1013
+++ src/l2jwins/game/network/clientpackets/AttackRequest.java
1014
@@ -71,6 +71,22 @@
1015
 			return;
1016
 		}
1017
 		
1018
+		// Check if target is in PVE mode
1019
+		if (target instanceof L2PcInstance && ((L2PcInstance) target).isPVEMode() && !activeChar.isGM())
1020
+		{
1021
+			activeChar.sendMessage("El Usuario: " + target.getName() + " esta en modo PvE");
1022
+			activeChar.sendPacket(ActionFailed.STATIC_PACKET);
1023
+			return;
1024
+		}
1025
+		
1026
+		// Check if attacker is in PVE mode
1027
+		if (activeChar.isPVEMode() && !activeChar.isGM())
1028
+		{
1029
+			activeChar.sendMessage("Debes desactivar el modo PvE para atacar a otros jugadores");
1030
+			activeChar.sendPacket(ActionFailed.STATIC_PACKET);
1031
+			return;
1032
+		}
1033
+		
1034
 		// Players can't attack objects in the other instances except from multiverse
1035
 		if (target.getInstanceId() != activeChar.getInstanceId() && activeChar.getInstanceId() != -1)
1036
 		{
1037
diff --git src/l2jwins/game/network/clientpackets/EnterWorld.java src/l2jwins/game/network/clientpackets/EnterWorld.java
1038
index aeae263..89370b4 100644
1039
--- src/l2jwins/game/network/clientpackets/EnterWorld.java
1040
+++ src/l2jwins/game/network/clientpackets/EnterWorld.java
1041
@@ -24,7 +24,6 @@
1042
 import java.util.regex.PatternSyntaxException;
1043
 
1044
 import Base.Rank.RankManager;
1045
-import Base.custom.DailyRewardManager;
1046
 import Base.data.Dolls;
1047
 import l2jwins.Config;
1048
 import l2jwins.game.GameServer;
1049
@@ -203,6 +202,62 @@
1050
 			activeChar.restoreEffects();
1051
 		}
1052
 		
1053
+		if (Config.GAME_MODE_ENABLE)
1054
+		{
1055
+			
1056
+			String gameMode = activeChar.getGameMode();
1057
+			if (gameMode.equalsIgnoreCase("PVE MODE"))
1058
+			{
1059
+				activeChar.setPVEMode(true);
1060
+				activeChar.setPVPMode(false);
1061
+				activeChar.setNormalMode(false);
1062
+				activeChar.decayMe();
1063
+				L2World.getInstance().addPlayerToWorld(activeChar);
1064
+				activeChar.sendMessage("Estas En PvE Mode - Los jugadores no podran atacarte");
1065
+				activeChar.sendMessage("Puedes Cambiarlo Con: - .pve - .pvp - .normal");
1066
+				activeChar.broadcastUserInfo();
1067
+				activeChar.spawnMe();
1068
+			}
1069
+			else if (gameMode.equalsIgnoreCase("PVP MODE"))
1070
+			{
1071
+				activeChar.stopPvPFlag();
1072
+				activeChar.updatePvPFlag(1);
1073
+				activeChar.setPVEMode(false);
1074
+				activeChar.setPVPMode(true);
1075
+				activeChar.setNormalMode(false);
1076
+				activeChar.sendMessage("Estas En PVP Mode - Recibes un bonus de 50% de Exp - Sp - Drop - Adena");
1077
+				activeChar.sendMessage("Puedes Cambiarlo Con: - .pve - .pvp - .normal");
1078
+				activeChar.decayMe();
1079
+				L2World.getInstance().addPlayerToWorld(activeChar);
1080
+				activeChar.broadcastUserInfo();
1081
+				activeChar.spawnMe();
1082
+			}
1083
+			else if (gameMode.equalsIgnoreCase("NORMAL MODE"))
1084
+			{
1085
+				activeChar.setPvpFlag(0);
1086
+				activeChar.setPVEMode(false);
1087
+				activeChar.setPVPMode(false);
1088
+				activeChar.setNormalMode(true);
1089
+				activeChar.sendMessage("Estas En Normal Mode - Recibes un bonus de 20% de Exp - Sp - Drop - Adena");
1090
+				activeChar.sendMessage("Puedes Cambiarlo Con: - .pve - .pvp - .normal");
1091
+				activeChar.decayMe();
1092
+				L2World.getInstance().addPlayerToWorld(activeChar);
1093
+				activeChar.broadcastUserInfo();
1094
+				activeChar.spawnMe();
1095
+			}
1096
+			
1097
+			if (activeChar.getFirstLog())
1098
+			{
1099
+				activeChar.setNormalMode(true);
1100
+				activeChar.sendMessage("Estas En Normal Mode - Recibes un bonus de 20% de Exp - Sp - Drop - Adena");
1101
+				activeChar.sendMessage("Puedes Cambiarlo Con: - .pve - .pvp - .normal");
1102
+				
1103
+				showModeSystemHTML(activeChar);
1104
+				
1105
+			}
1106
+			
1107
+		}
1108
+		
1109
 		// Apply augmentation bonus for equipped items
1110
 		for (L2ItemInstance temp : activeChar.getInventory().getAugmentedItems())
1111
 		{
1112
@@ -1209,6 +1262,13 @@
1113
 		
1114
 	}
1115
 	
1116
+	private void showModeSystemHTML(L2PcInstance player)
1117
+	{
1118
+		NpcHtmlMessage html = new NpcHtmlMessage(0);
1119
+		html.setFile("data/html/mods/ChangeModeSystem/ModeSystem.htm");
1120
+		player.sendPacket(html);
1121
+	}
1122
+	
1123
 	private void notifyCastleOwner(L2PcInstance activeChar)
1124
 	{
1125
 		L2Clan clan = activeChar.getClan();
1126
diff --git src/l2jwins/game/network/clientpackets/RequestBypassToServer.java src/l2jwins/game/network/clientpackets/RequestBypassToServer.java
1127
index d179afd..95a5544 100644
1128
--- src/l2jwins/game/network/clientpackets/RequestBypassToServer.java
1129
+++ src/l2jwins/game/network/clientpackets/RequestBypassToServer.java
1130
@@ -30,6 +30,7 @@
1131
 import java.util.stream.Stream;
1132
 
1133
 import Base.ItemRecover.ItemRecoveryManager;
1134
+import Base.ModeSystem.ChangeModeManager;
1135
 import Base.WinsStats.WinsStatSystem;
1136
 import Base.custom.Board.BoardManager;
1137
 import javolution.text.TextBuilder;
1138
@@ -76,6 +77,7 @@
1139
 import l2jwins.game.model.entity.event.TvT;
1140
 import l2jwins.game.model.entity.event.VIP;
1141
 import l2jwins.game.model.olympiad.OlympiadManager;
1142
+import l2jwins.game.model.zone.ZoneId;
1143
 import l2jwins.game.network.PacketClient;
1144
 import l2jwins.game.network.SystemMessageId;
1145
 import l2jwins.game.network.serverpackets.ActionFailed;
1146
@@ -342,6 +344,119 @@
1147
 				activeChar.broadcastUserInfo();
1148
 				activeChar.broadcastTitleInfo();
1149
 			}
1150
+			
1151
+			else if (bp.bypass.startsWith("PvEMode"))
1152
+			{
1153
+				
1154
+				if (ChangeModeManager.verifyChangeMode(activeChar))
1155
+				{
1156
+					
1157
+					if (activeChar.isPVEMode())
1158
+					{
1159
+						activeChar.sendMessage("Ya estas en el modo PVE.");
1160
+						return;
1161
+					}
1162
+					
1163
+					if (activeChar.getPvpFlag() == 0 && activeChar.getKarma() == 0)
1164
+					{
1165
+						activeChar.setPVEMode(true);
1166
+						activeChar.setPVPMode(false);
1167
+						activeChar.setNormalMode(false);
1168
+						activeChar.decayMe();
1169
+						L2World.getInstance().addPlayerToWorld(activeChar);
1170
+						activeChar.sendMessage("Estas En PvE Mode - Los jugadores no podran atacarte");
1171
+						activeChar.sendMessage("Puedes Cambiarlo Con: - .pve - .pvp - .normal");
1172
+						activeChar.broadcastUserInfo();
1173
+						activeChar.spawnMe();
1174
+					}
1175
+					else
1176
+					{
1177
+						activeChar.sendMessage(" Estas con Flag o Tienes Karma No puedes Activar el modo PvE Con Karma o Flag");
1178
+					}
1179
+				}
1180
+				
1181
+			}
1182
+			
1183
+			else if (bp.bypass.startsWith("PvPMode"))
1184
+			{
1185
+				
1186
+				if (ChangeModeManager.verifyChangeMode(activeChar))
1187
+				{
1188
+					if (activeChar.isPVPMode())
1189
+					{
1190
+						activeChar.sendMessage("Ya estas en el modo PVP.");
1191
+						return;
1192
+					}
1193
+					
1194
+					if (!activeChar.isInsideZone(ZoneId.ZONE_PEACE))
1195
+					{
1196
+						activeChar.sendMessage("Solo Puedes Cambiar El Modo En Una Zone Peace.");
1197
+						return;
1198
+					}
1199
+					
1200
+					if (activeChar.getLevel() < 76)
1201
+					{
1202
+						activeChar.sendMessage("Necesitas Minimo Ser LvL 76 Para Activar El Modo PvP.");
1203
+						return;
1204
+					}
1205
+					
1206
+					activeChar.stopPvPFlag();
1207
+					activeChar.setPvpFlag(1);
1208
+					activeChar.setPVEMode(false);
1209
+					activeChar.setPVPMode(true);
1210
+					activeChar.setNormalMode(false);
1211
+					activeChar.sendMessage("Has cambiado al modo PVP. - Obtendras un Bonus de 50%");
1212
+					activeChar.decayMe();
1213
+					L2World.getInstance().addPlayerToWorld(activeChar);
1214
+					activeChar.broadcastUserInfo();
1215
+					activeChar.spawnMe();
1216
+				}
1217
+				
1218
+			}
1219
+			
1220
+			else if (bp.bypass.startsWith("NormalMode"))
1221
+			{
1222
+				if (ChangeModeManager.verifyChangeMode(activeChar))
1223
+				{
1224
+					
1225
+					if (activeChar.isNormalMode())
1226
+					{
1227
+						activeChar.sendMessage("Ya estas en el modo Normal.");
1228
+						return;
1229
+					}
1230
+					
1231
+					if (!activeChar.isInsideZone(ZoneId.ZONE_PEACE))
1232
+					{
1233
+						activeChar.sendMessage("Solo Puedes Cambiar El Modo En Una Zone Peace.");
1234
+						return;
1235
+					}
1236
+					
1237
+					if (activeChar.getPvpFlag() > 0)
1238
+					{
1239
+						activeChar.stopPvPFlag();
1240
+						activeChar.updatePvPStatus();
1241
+						activeChar.setPVEMode(false);
1242
+						activeChar.setPVPMode(false);
1243
+						activeChar.setNormalMode(true);
1244
+						activeChar.sendMessage("Has cambiado al modo Normal. - Obtendras un Bonus de 20%");
1245
+						activeChar.decayMe();
1246
+						L2World.getInstance().addPlayerToWorld(activeChar);
1247
+						activeChar.broadcastUserInfo();
1248
+						activeChar.spawnMe();
1249
+					}
1250
+					activeChar.setPvpFlag(0);
1251
+					activeChar.setPVEMode(false);
1252
+					activeChar.setPVPMode(false);
1253
+					activeChar.setNormalMode(true);
1254
+					activeChar.sendMessage("Has cambiado al modo Normal. - Obtendras un Bonus de 20%");
1255
+					activeChar.decayMe();
1256
+					L2World.getInstance().addPlayerToWorld(activeChar);
1257
+					activeChar.broadcastUserInfo();
1258
+					activeChar.spawnMe();
1259
+				}
1260
+				
1261
+			}
1262
+			
1263
 			else if (bp.bypass.startsWith("player_help "))
1264
 			{
1265
 				playerHelp(activeChar, bp.bypass.substring(12));
1266
diff --git src/l2jwins/game/network/clientpackets/RequestDuelAnswerStart.java src/l2jwins/game/network/clientpackets/RequestDuelAnswerStart.java
1267
index 8b957eb..416ba62 100644
1268
--- src/l2jwins/game/network/clientpackets/RequestDuelAnswerStart.java
1269
+++ src/l2jwins/game/network/clientpackets/RequestDuelAnswerStart.java
1270
@@ -19,6 +19,7 @@
1271
  */
1272
 package l2jwins.game.network.clientpackets;
1273
 
1274
+import l2jwins.Config;
1275
 import l2jwins.game.managers.DuelManager;
1276
 import l2jwins.game.model.actor.instance.L2PcInstance;
1277
 import l2jwins.game.network.PacketClient;
1278
@@ -56,6 +57,15 @@
1279
 			return;
1280
 		}
1281
 		
1282
+		if (Config.GAME_MODE_ENABLE)
1283
+		{
1284
+			if (requestor.isPVEMode())
1285
+			{
1286
+				player.sendMessage("Estas en PVE MODE o el jugador que intentas retar a un duelo lo esta");
1287
+				return;
1288
+			}
1289
+		}
1290
+		
1291
 		if (_response == 1)
1292
 		{
1293
 			SystemMessage msg1 = null, msg2 = null;
1294
diff --git src/l2jwins/game/network/clientpackets/RequestDuelStart.java src/l2jwins/game/network/clientpackets/RequestDuelStart.java
1295
index d808b43..7855025 100644
1296
--- src/l2jwins/game/network/clientpackets/RequestDuelStart.java
1297
+++ src/l2jwins/game/network/clientpackets/RequestDuelStart.java
1298
@@ -65,6 +65,21 @@
1299
 			return;
1300
 		}
1301
 		
1302
+		if (Config.GAME_MODE_ENABLE)
1303
+		{
1304
+			if (activeChar.isPVEMode())
1305
+			{
1306
+				activeChar.sendMessage("Desactiva El PVE MODE");
1307
+				return;
1308
+			}
1309
+			
1310
+			if (targetChar.isPVEMode())
1311
+			{
1312
+				activeChar.sendMessage("El Jugador: " + targetChar.getName() + " Esta en PvE Mode");
1313
+				return;
1314
+			}
1315
+		}
1316
+		
1317
 		// Check if duel is possible
1318
 		if (!activeChar.canDuel())
1319
 		{
1320
diff --git src/l2jwins/game/network/clientpackets/RequestJoinParty.java src/l2jwins/game/network/clientpackets/RequestJoinParty.java
1321
index 76a96d3..ff31b1a 100644
1322
--- src/l2jwins/game/network/clientpackets/RequestJoinParty.java
1323
+++ src/l2jwins/game/network/clientpackets/RequestJoinParty.java
1324
@@ -71,6 +71,16 @@
1325
 			return;
1326
 		}
1327
 		
1328
+		if (Config.GAME_MODE_ENABLE)
1329
+		{
1330
+			
1331
+			if (requestor.getGameMode().equals(target.getGameMode()))
1332
+			{
1333
+				requestor.sendMessage("No puedes invitar a la party a un jugador con un modo de juego diferente.");
1334
+				return;
1335
+			}
1336
+		}
1337
+		
1338
 		if ((requestor._inEventDM && (DM.is_teleport() || DM.is_started())) || (target._inEventDM && (DM.is_teleport() || DM.is_started())))
1339
 		{
1340
 			requestor.sendMessage("You can't invite that player in party!");
1341
diff --git src/l2jwins/game/network/clientpackets/RequestJoinSiege.java src/l2jwins/game/network/clientpackets/RequestJoinSiege.java
1342
index 644f078..a785d0e 100644
1343
--- src/l2jwins/game/network/clientpackets/RequestJoinSiege.java
1344
+++ src/l2jwins/game/network/clientpackets/RequestJoinSiege.java
1345
@@ -20,6 +20,7 @@
1346
 
1347
 package l2jwins.game.network.clientpackets;
1348
 
1349
+import l2jwins.Config;
1350
 import l2jwins.game.managers.CHSiegeManager;
1351
 import l2jwins.game.managers.CastleManager;
1352
 import l2jwins.game.managers.FortManager;
1353
@@ -62,6 +63,15 @@
1354
 			return;
1355
 		}
1356
 		
1357
+		if (Config.GAME_MODE_ENABLE)
1358
+		{
1359
+			if (player.isPVEMode())
1360
+			{
1361
+				player.sendMessage("Desactiva El PVE MODE");
1362
+				return;
1363
+			}
1364
+		}
1365
+		
1366
 		L2Clan clan = player.getClan();
1367
 		if (clan == null)
1368
 		{
1369
diff --git src/l2jwins/game/network/clientpackets/RequestOlympiadMatchList.java src/l2jwins/game/network/clientpackets/RequestOlympiadMatchList.java
1370
index 3f271ba..43803ee 100644
1371
--- src/l2jwins/game/network/clientpackets/RequestOlympiadMatchList.java
1372
+++ src/l2jwins/game/network/clientpackets/RequestOlympiadMatchList.java
1373
@@ -20,6 +20,7 @@
1374
  */
1375
 package l2jwins.game.network.clientpackets;
1376
 
1377
+import l2jwins.Config;
1378
 import l2jwins.game.model.actor.instance.L2PcInstance;
1379
 import l2jwins.game.model.olympiad.Olympiad;
1380
 import l2jwins.game.model.olympiad.OlympiadGameManager;
1381
@@ -46,6 +47,15 @@
1382
 			return;
1383
 		}
1384
 		
1385
+		if (Config.GAME_MODE_ENABLE)
1386
+		{
1387
+			if (activeChar.isPVEMode())
1388
+			{
1389
+				activeChar.sendMessage("Desactiva El PVE MODE");
1390
+				return;
1391
+			}
1392
+		}
1393
+		
1394
 		int i = 0;
1395
 		
1396
 		final StringBuilder sb = new StringBuilder(1500);
1397
diff --git src/l2jwins/game/network/clientpackets/RequestOlympiadObserverEnd.java src/l2jwins/game/network/clientpackets/RequestOlympiadObserverEnd.java
1398
index 14201b7..f94a4be 100644
1399
--- src/l2jwins/game/network/clientpackets/RequestOlympiadObserverEnd.java
1400
+++ src/l2jwins/game/network/clientpackets/RequestOlympiadObserverEnd.java
1401
@@ -20,6 +20,7 @@
1402
  */
1403
 package l2jwins.game.network.clientpackets;
1404
 
1405
+import l2jwins.Config;
1406
 import l2jwins.game.model.actor.instance.L2PcInstance;
1407
 import l2jwins.game.network.PacketClient;
1408
 
1409
@@ -39,6 +40,15 @@
1410
 			return;
1411
 		}
1412
 		
1413
+		if (Config.GAME_MODE_ENABLE)
1414
+		{
1415
+			if (activeChar.isPVEMode())
1416
+			{
1417
+				activeChar.sendMessage("Desactiva El PVE MODE");
1418
+				return;
1419
+			}
1420
+		}
1421
+		
1422
 		if (activeChar.inObserverMode())
1423
 		{
1424
 			activeChar.leaveOlympiadObserverMode();
1425
diff --git src/l2jwins/game/network/clientpackets/RequestStartPledgeWar.java src/l2jwins/game/network/clientpackets/RequestStartPledgeWar.java
1426
index 68b6a38..2c9642f 100644
1427
--- src/l2jwins/game/network/clientpackets/RequestStartPledgeWar.java
1428
+++ src/l2jwins/game/network/clientpackets/RequestStartPledgeWar.java
1429
@@ -70,6 +70,15 @@
1430
 			return;
1431
 		}
1432
 		
1433
+		if (Config.GAME_MODE_ENABLE)
1434
+		{
1435
+			if (player.isPVEMode())
1436
+			{
1437
+				player.sendMessage("Desactiva El PVE MODE");
1438
+				return;
1439
+			}
1440
+		}
1441
+		
1442
 		final L2Clan clan = ClanTable.getInstance().getClanByName(_pledgeName);
1443
 		if (clan == null)
1444
 		{
1445
diff --git src/l2jwins/game/network/clientpackets/RequestStopPledgeWar.java src/l2jwins/game/network/clientpackets/RequestStopPledgeWar.java
1446
index 3cda6f7..2827035 100644
1447
--- src/l2jwins/game/network/clientpackets/RequestStopPledgeWar.java
1448
+++ src/l2jwins/game/network/clientpackets/RequestStopPledgeWar.java
1449
@@ -19,6 +19,7 @@
1450
  */
1451
 package l2jwins.game.network.clientpackets;
1452
 
1453
+import l2jwins.Config;
1454
 import l2jwins.game.datatables.sql.ClanTable;
1455
 import l2jwins.game.model.L2Clan;
1456
 import l2jwins.game.model.L2World;
1457
@@ -61,6 +62,15 @@
1458
 			return;
1459
 		}
1460
 		
1461
+		if (Config.GAME_MODE_ENABLE)
1462
+		{
1463
+			if (player.isPVEMode())
1464
+			{
1465
+				player.sendMessage("Desactiva El PVE MODE");
1466
+				return;
1467
+			}
1468
+		}
1469
+		
1470
 		if (!playerClan.isAtWarWith(clan.getClanId()))
1471
 		{
1472
 			player.sendMessage("You aren't at war with this clan.");
1473
diff --git src/l2jwins/game/network/clientpackets/RequestSurrenderPledgeWar.java src/l2jwins/game/network/clientpackets/RequestSurrenderPledgeWar.java
1474
index 70bb1c9..320e4b8 100644
1475
--- src/l2jwins/game/network/clientpackets/RequestSurrenderPledgeWar.java
1476
+++ src/l2jwins/game/network/clientpackets/RequestSurrenderPledgeWar.java
1477
@@ -19,6 +19,7 @@
1478
  */
1479
 package l2jwins.game.network.clientpackets;
1480
 
1481
+import l2jwins.Config;
1482
 import l2jwins.game.datatables.sql.ClanTable;
1483
 import l2jwins.game.model.L2Clan;
1484
 import l2jwins.game.model.actor.instance.L2PcInstance;
1485
@@ -48,11 +49,24 @@
1486
 	{
1487
 		_activeChar = getClient().getActiveChar();
1488
 		if (_activeChar == null)
1489
+		{
1490
 			return;
1491
+		}
1492
+		
1493
+		if (Config.GAME_MODE_ENABLE)
1494
+		{
1495
+			if (_activeChar.isPVEMode())
1496
+			{
1497
+				_activeChar.sendMessage("Desactiva El PVE MODE");
1498
+				return;
1499
+			}
1500
+		}
1501
 		
1502
 		_clan = _activeChar.getClan();
1503
 		if (_clan == null)
1504
+		{
1505
 			return;
1506
+		}
1507
 		
1508
 		final L2Clan clan = ClanTable.getInstance().getClanByName(_pledgeName);
1509
 		if (clan == null)
1510
diff --git src/l2jwins/game/network/serverpackets/CharInfo.java src/l2jwins/game/network/serverpackets/CharInfo.java
1511
index 1b85818..dadf1f4 100644
1512
--- src/l2jwins/game/network/serverpackets/CharInfo.java
1513
+++ src/l2jwins/game/network/serverpackets/CharInfo.java
1514
@@ -74,10 +74,8 @@
1515
 		_swimWalkSpd = _flWalkSpd = _flyWalkSpd = _walkSpd;
1516
 		_maxCp = player.getMaxCp();
1517
 		
1518
-		if (!hideInfo())
1519
+		if (!GameModeInfo())
1520
 		{
1521
-			_name = player.getName();
1522
-			
1523
 			if (player.getAppearance().getInvisible())
1524
 			{
1525
 				_title = "Invisible";
1526
@@ -87,9 +85,19 @@
1527
 				
1528
 				_title = _activeChar.getTitle();
1529
 			}
1530
+			_titleColor = player.getAppearance().getTitleColor();
1531
+		}
1532
+		else
1533
+		{
1534
+			_title = "PVE MODE";
1535
+			_titleColor = 0x00FFFF;
1536
+		}
1537
+		
1538
+		if (!hideInfo())
1539
+		{
1540
+			_name = player.getName();
1541
 			
1542
 			_nameColor = player.getAppearance().getNameColor();
1543
-			_titleColor = player.getAppearance().getTitleColor();
1544
 			_clanId = player.getClanId();
1545
 			_clanCrestId = player.getClanCrestId();
1546
 			_allyId = player.getAllyId();
1547
@@ -98,9 +106,8 @@
1548
 		else
1549
 		{
1550
 			_name = Config.PLAYER_FAKE_NAME;
1551
-			_title = "";
1552
+			
1553
 			_nameColor = 0xFFFFFF;
1554
-			_titleColor = 0xFFFF77;
1555
 			_clanId = 0;
1556
 			_clanCrestId = 0;
1557
 			_allyId = 0;
1558
@@ -511,6 +518,18 @@
1559
 		return false;
1560
 	}
1561
 	
1562
+	public boolean GameModeInfo()
1563
+	{
1564
+		if (Config.GAME_MODE_ENABLE)
1565
+		{
1566
+			if (_activeChar.isPVEMode())
1567
+			{
1568
+				return true;
1569
+			}
1570
+		}
1571
+		return false;
1572
+	}
1573
+	
1574
 	@Override
1575
 	public String getType()
1576
 	{
1577
diff --git src/l2jwins/game/network/serverpackets/UserInfo.java src/l2jwins/game/network/serverpackets/UserInfo.java
1578
index e0a682f..ca47b8b 100644
1579
--- src/l2jwins/game/network/serverpackets/UserInfo.java
1580
+++ src/l2jwins/game/network/serverpackets/UserInfo.java
1581
@@ -29,6 +29,9 @@
1582
 	private int _flyWalkSpd;
1583
 	private int _relation;
1584
 	private float _moveMultiplier;
1585
+	private String _title;
1586
+	
1587
+	private int _titleColor;
1588
 	
1589
 	// Your own character info
1590
 	public UserInfo(L2PcInstance character)
1591
@@ -52,6 +55,26 @@
1592
 		_walkSpd = (int) (_activeChar.getWalkSpeed() / _moveMultiplier);
1593
 		_swimRunSpd = _flRunSpd = _flyRunSpd = _runSpd;
1594
 		_swimWalkSpd = _flWalkSpd = _flyWalkSpd = _walkSpd;
1595
+		
1596
+		if (!GameModeInfo())
1597
+		{
1598
+			if (character.getAppearance().getInvisible())
1599
+			{
1600
+				_title = "Invisible";
1601
+			}
1602
+			else
1603
+			{
1604
+				
1605
+				_title = _activeChar.getTitle();
1606
+			}
1607
+			_titleColor = character.getAppearance().getTitleColor();
1608
+		}
1609
+		else
1610
+		{
1611
+			_title = "PVE MODE";
1612
+			_titleColor = 0x00FFFF;
1613
+		}
1614
+		
1615
 	}
1616
 	
1617
 	@Override
1618
@@ -379,20 +402,15 @@
1619
 		writeD(_activeChar.getAppearance().getFace());
1620
 		writeD(_activeChar.isGM() ? 1 : 0); // builder level
1621
 		
1622
-		String title = _activeChar.getTitle();
1623
-		if (_activeChar.getAppearance().getInvisible() && _activeChar.isGM())
1624
-		{
1625
-			title = "Invisible";
1626
-		}
1627
 		if (_activeChar.getPoly().isMorphed())
1628
 		{
1629
 			final L2NpcTemplate polyObj = NpcTable.getInstance().getTemplate(_activeChar.getPoly().getPolyId());
1630
 			if (polyObj != null)
1631
 			{
1632
-				title += " - " + polyObj.name;
1633
+				_title += " - " + polyObj.name;
1634
 			}
1635
 		}
1636
-		writeS(title);
1637
+		writeS(_title);
1638
 		
1639
 		writeD(_activeChar.getClanId());
1640
 		writeD(_activeChar.getClanCrestId());
1641
@@ -461,7 +479,7 @@
1642
 		writeD(_activeChar.getPledgeClass()); // changes the text above CP on Status Window
1643
 		writeD(_activeChar.getPledgeType());
1644
 		
1645
-		writeD(_activeChar.getAppearance().getTitleColor());
1646
+		writeD(_titleColor);
1647
 		
1648
 		if (_activeChar.isCursedWeaponEquiped())
1649
 		{
1650
@@ -515,6 +533,18 @@
1651
 		return false;
1652
 	}
1653
 	
1654
+	public boolean GameModeInfo()
1655
+	{
1656
+		if (Config.GAME_MODE_ENABLE)
1657
+		{
1658
+			if (_activeChar.isPVEMode())
1659
+			{
1660
+				return true;
1661
+			}
1662
+		}
1663
+		return false;
1664
+	}
1665
+	
1666
 	@Override
1667
 	public String getType()
1668
 	{
1669