Forráskód Böngészése

Some fixes for TvT and Olympiad registrations plus small update for #2725

GodKratos 16 éve
szülő
commit
9006561177

+ 1 - 1
L2_GameServer/java/config/l2jmods.properties

@@ -118,7 +118,7 @@ TvTEventMinPlayersInTeams = 1
 TvTEventMaxPlayersInTeams = 20
 # Level rules 
 TvTEventMinPlayerLevel = 1
-TvTEventMaxPlayerLevel = 80
+TvTEventMaxPlayerLevel = 85
 # Teleport delay Timers (in seconds)
 TvTEventRespawnTeleportDelay = 10
 TvTEventStartLeaveTeleportDelay = 10

+ 9 - 22
L2_GameServer/java/net/sf/l2j/gameserver/Olympiad.java

@@ -52,6 +52,7 @@ import net.sf.l2j.gameserver.model.actor.instance.L2CubicInstance;
 import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
 import net.sf.l2j.gameserver.model.actor.instance.L2PetInstance;
 import net.sf.l2j.gameserver.model.entity.Hero;
+import net.sf.l2j.gameserver.model.entity.TvTEvent;
 import net.sf.l2j.gameserver.model.itemcontainer.Inventory;
 import net.sf.l2j.gameserver.network.SystemMessageId;
 import net.sf.l2j.gameserver.network.serverpackets.ExAutoSoulShot;
@@ -1162,31 +1163,17 @@ public class Olympiad
 
     public void addSpectator(int id, L2PcInstance spectator)
     {
-    	for(L2PcInstance player : _nonClassBasedRegisters)
-    	{
-    		if(spectator.getObjectId() == player.getObjectId())
-    		{
-    			spectator.sendMessage("You are already registered for a competition");
-        		return;
-    		}	
-    	}
-    	for(L2FastList<L2PcInstance> list : _classBasedRegisters.values())
-    	{
-    		for(L2PcInstance player : list)
-    		{
-    			if(spectator.getObjectId() == player.getObjectId())
-        		{
-        			spectator.sendMessage("You are already registered for a competition");
-            		return;
-        		}	
-    		}
-    	}
-    	if(spectator.getOlympiadGameId() != -1)
+    	if (isRegistered(spectator) || spectator.getOlympiadGameId() != -1)
     	{
     		spectator.sendMessage("You are already registered for a competition");
-    		return;
+        	return;
+    	}	
+    	if (!TvTEvent.isInactive() && TvTEvent.isPlayerParticipant(spectator.getObjectId()))
+    	{
+    		spectator.sendMessage("You can not observe games while registered for TvT");
+        	return;
     	}
-        if (_manager == null || (_manager.getOlympiadInstance(id) == null))
+    	if (_manager == null || (_manager.getOlympiadInstance(id) == null))
         {
             spectator.sendPacket(new SystemMessage(SystemMessageId.THE_OLYMPIAD_GAME_IS_NOT_CURRENTLY_IN_PROGRESS));
             return;

+ 5 - 0
L2_GameServer/java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java

@@ -11091,6 +11091,11 @@ public final class L2PcInstance extends L2PlayableInstance
                 _jailTask = ThreadPoolManager.getInstance().scheduleGeneral(new JailTask(this), _jailTimer);
                 sendMessage("You are in jail for "+delayInMinutes+" minutes.");
             }
+            
+            if (!TvTEvent.isInactive() && TvTEvent.isPlayerParticipant(getObjectId()))
+                TvTEvent.removeParticipant(getObjectId());
+            if (Olympiad.getInstance().isRegisteredInComp(this))
+                Olympiad.getInstance().removeDisconnectedCompetitor(this);
 
             // Open a Html message to inform the player
             NpcHtmlMessage htmlMsg = new NpcHtmlMessage(0);

+ 5 - 0
L2_GameServer/java/net/sf/l2j/gameserver/model/entity/TvTEvent.java

@@ -19,6 +19,7 @@ import java.util.logging.Logger;
 import javolution.util.FastMap;
 
 import net.sf.l2j.Config;
+import net.sf.l2j.gameserver.Olympiad;
 import net.sf.l2j.gameserver.datatables.DoorTable;
 import net.sf.l2j.gameserver.datatables.ItemTable;
 import net.sf.l2j.gameserver.datatables.NpcTable;
@@ -623,6 +624,10 @@ public class TvTEvent
 			{
 				npcHtmlMessage.setHtml("<html><head><title>TvT Event</title></head><body>Cursed weapon owners are not allowed to participate.</body></html>");
 			}
+			else if (Olympiad.getInstance().isRegistered(playerInstance))
+			{
+				npcHtmlMessage.setHtml("<html><head><title>TvT Event</title></head><body>You can not participate when registered for Olympiad.</body></html>");
+			}
 			else if (playerInstance.getKarma() > 0)
 			{
 				npcHtmlMessage.setHtml("<html><head><title>TvT Event</title></head><body>Chaotic players are not allowed to participate.</body></html>");