U3Games

Games | Desarrollo & Soporte => L2 | Implementaciones => L2 | Sección de Servidores => Lineage => L2 | Eventos => Mensaje iniciado por: Swarlog en Jun 28, 2025, 11:43 PM

Título: Evento Clan War Zone
Publicado por: Swarlog en Jun 28, 2025, 11:43 PM
Con este codigo, añadiras a tu servidor una zona sola y exclusiva para el pvp de clanes. Por lo que si no perteneceis a un clan sereis expulsado/teletransportado a la ciudad mas cercana. Pero si sois miembro de un clan, podreis combateir contra otros miembros de otros clanes. Si matais a un jugador de otro clan, ganaras puntos de reputacion.

### Eclipse Workspace Patch 1.0
#P L2jFrozen_GameServer
Index: head-src/com/l2jfrozen/gameserver/model/zone/type/L2ClanWarZone.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/model/zone/type/L2ClanWarZone.java    (revision 0)
+++ head-src/com/l2jfrozen/gameserver/model/zone/type/L2ClanWarZone.java    (working copy)
@@ -0,0 +1,78 @@
+/*
+ * This program is free software: you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License as published by the Free Software
+ * Foundation, either version 3 of the License, or (at your option) any later
+ * version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package com.l2jfrozen.gameserver.model.zone.type;
+
+import com.l2jfrozen.gameserver.datatables.csv.MapRegionTable;
+import com.l2jfrozen.gameserver.model.L2Character;
+import com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance;
+import com.l2jfrozen.gameserver.model.zone.L2ZoneType;
+
+public class L2ClanWarZone extends L2ZoneType
+{
+
+   /**
+     * @param id
+     */
+    public L2ClanWarZone(int id)
+    {
+        super(id);
+    }
+
+  
+   @Override
+   protected void onEnter(L2Character character)
+   {
+       if (character instanceof L2PcInstance)
+       {
+           if(((L2PcInstance) character).getClan() != null)
+           {
+               ((L2PcInstance) character).setIsInsideClanwarZone(true);
+               ((L2PcInstance) character).sendMessage("You have entered a Clan War Zone. Prepare for fight.");
+           }
+           else
+           {
+               ((L2PcInstance) character).sendMessage("This is strict area for clan members ONLY. You will be teleported at the nearest town.");
+               ((L2PcInstance) character).teleToLocation(MapRegionTable.TeleportWhereType.Town);
+           }
+       }
+   }
+  
+   @Override
+   protected void onExit(L2Character character)
+   {
+       if (character instanceof L2PcInstance)
+       {
+           ((L2PcInstance) character).setIsInsideClanwarZone(false);
+       }
+   }
+  
+  
+  @Override
+   public void onDieInside(L2Character character)
+   {
+    
+   }
+  
+   @Override
+   public void onReviveInside(L2Character character)
+   {
+       onEnter(character);
+   }
+}
\ No newline at end of file
Index: head-src/com/l2jfrozen/gameserver/model/L2Character.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/model/L2Character.java    (revision 949)
+++ head-src/com/l2jfrozen/gameserver/model/L2Character.java    (working copy)
@@ -175,6 +175,8 @@
     /** The _is buff protected. */
     private boolean _isBuffProtected = false; //Protect From Debuffs
    
+    private boolean _isInsideClanwarZone = false;
+   
     /** The _is afraid. */
     private boolean _isAfraid = false; // Flee in a random direction
    
@@ -11241,4 +11243,20 @@
     {
         return _triggeredSkills;
     }
+
+    /**
+     * @return the _isInsideClanwarZone
+     */
+    public boolean isInsideClanwarZone()
+    {
+        return _isInsideClanwarZone;
+    }
+
+    /**
+     * @param _isInsideClanwarZone the _isInsideClanwarZone to set
+     */
+    public void setIsInsideClanwarZone(boolean _isInsideClanwarZone)
+    {
+        this._isInsideClanwarZone = _isInsideClanwarZone;
+    }
 }
Index: head-src/com/l2jfrozen/gameserver/datatables/xml/ZoneData.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/datatables/xml/ZoneData.java    (revision 949)
+++ head-src/com/l2jfrozen/gameserver/datatables/xml/ZoneData.java    (working copy)
@@ -50,6 +50,7 @@
 import com.l2jfrozen.gameserver.model.zone.type.L2CastleTeleportZone;
 import com.l2jfrozen.gameserver.model.zone.type.L2CastleZone;
 import com.l2jfrozen.gameserver.model.zone.type.L2ClanHallZone;
+import com.l2jfrozen.gameserver.model.zone.type.L2ClanWarZone;
 import com.l2jfrozen.gameserver.model.zone.type.L2CustomZone;
 import com.l2jfrozen.gameserver.model.zone.type.L2DamageZone;
 import com.l2jfrozen.gameserver.model.zone.type.L2DerbyTrackZone;
@@ -278,6 +279,10 @@
                                 {
                                     temp = new L2SwampZone(zoneId);
                                 }
+                                else if(zoneType.equals("FlagZone"))
+                                {
+                                    temp = new L2ClanWarZone(zoneId);
+                                }
 
                                 // Check for unknown type
                                 if(temp == null)
Index: head-src/com/l2jfrozen/gameserver/model/actor/instance/L2PcInstance.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/model/actor/instance/L2PcInstance.java    (revision 949)
+++ head-src/com/l2jfrozen/gameserver/model/actor/instance/L2PcInstance.java    (working copy)
@@ -7715,6 +7716,12 @@
         if(!checkAntiFarm(targetPlayer))
             return;
            
+        if(isInsideClanwarZone() && targetPlayer.isInsideClanwarZone() && (getClan() != null) && (targetPlayer.getClan() != null) && (getClanId() != targetPlayer.getClanId()))
+        {
+            getClan().setReputationScore(getClan().getReputationScore() + 100, true);
+            sendMessage("You killed someone from an enemy clan. Your clan gets rewarded with 100 rep points!");
+        }
+       
         // Check if it's pvp
         if(checkIfPvP(target) && targetPlayer.getPvpFlag() != 0 || isInsideZone(ZONE_PVP) && targetPlayer.isInsideZone(ZONE_PVP))
         {