Secret Experience

Secret Experience (https://secretexperience.net/)
-   [L2J] Dúvidas Solucionadas (https://secretexperience.net/l2j-duvidas-solucionadas/)
-   -   Problema com Siege (https://secretexperience.net/l2j-duvidas-solucionadas/27914-problema-com-siege.html)

xadresz 28-11-2010 09:14 PM

Problema com Siege
 
Bom pessoal estou com um problema durante a Siege, tipo eu tenho 1 clan, ai registro pra atacar Aden, e mais 2 clans também registram ficando 3 atacantes, porém quando começa a siege, outros clans que não cadastraram e que já possuem castelo estão conseguindo invadir a batalha e atrapalhando a Siege dos outros. Como resolver isto? Há alguma configuração? Em caso de dúvidas estou usando l2jteon.
Vlw!

cachorrolouco 29-11-2010 12:20 AM

Clans não cadastrados nas sisges não podem atacar portões e sumonar apenas..o resto pode...isso é normal ja que a area do castelo vira zona de guerra

Obs: isso não é bug...é do jogo

B1Z4R0 29-11-2010 08:03 AM

vc tbm pode coloca so a siege so para os clan cadastrado,
ta ai o codigo so add!

Código:

Index: /trunk/GameServer/java/net/sf/l2j/gameserver/model/actor/instance/L2SiegeGuardInstance.java
===================================================================
--- /trunk/GameServer/java/net/sf/l2j/gameserver/model/actor/instance/L2SiegeGuardInstance.java (revision 231)
+++ /trunk/GameServer/java/net/sf/l2j/gameserver/model/actor/instance/L2SiegeGuardInstance.java (revision 317)
@@ -25,8 +25,13 @@
 import net.sf.l2j.gameserver.ai.L2CharacterAI;
 import net.sf.l2j.gameserver.ai.L2SiegeGuardAI;
+import net.sf.l2j.gameserver.datatables.ClanTable;
+import net.sf.l2j.gameserver.instancemanager.SiegeManager;
 import net.sf.l2j.gameserver.model.L2Attackable;
 import net.sf.l2j.gameserver.model.L2CharPosition;
 import net.sf.l2j.gameserver.model.L2Character;
+import net.sf.l2j.gameserver.model.L2Clan;
+import net.sf.l2j.gameserver.model.L2SiegeClan;
 import net.sf.l2j.gameserver.model.actor.knownlist.SiegeGuardKnownList;
+import net.sf.l2j.gameserver.model.entity.Siege;
 import net.sf.l2j.gameserver.network.serverpackets.ActionFailed;
 import net.sf.l2j.gameserver.network.serverpackets.MyTargetSelected;
@@ -146,5 +151,34 @@
        public void onAction(L2PcInstance player)
        {
-                if (!canTarget(player)) return;
+                if (!canTarget(player))
+                        return;
+               
+                boolean opp = false;
+                Siege siege = SiegeManager.getInstance().getSiege(player);
+                L2Clan oppClan = player.getClan();
+                if (siege != null && siege.getIsInProgress() && oppClan != null)
+                {
+                        for (L2SiegeClan clan : siege.getAttackerClans())
+                        {
+                                L2Clan cl = ClanTable.getInstance().getClan(clan.getClanId());
+                                if (cl == oppClan || cl.getAllyId() == player.getAllyId())
+                                {
+                                        opp = true;
+                                        break;
+                                }
+                        }
+                       
+                        for (L2SiegeClan clan : siege.getDefenderClans())
+                        {
+                                L2Clan cl = ClanTable.getInstance().getClan(clan.getClanId());
+                                if (cl == oppClan || cl.getAllyId() == player.getAllyId())
+                                {
+                                        opp = true;
+                                        break;
+                                }
+                        }
+                        if(!opp)
+                                return;
+                }
 
                // Check if the L2PcInstance already target the L2NpcInstance
Index: /trunk/GameServer/java/net/sf/l2j/gameserver/model/actor/instance/L2SiegeFlagInstance.java
===================================================================
--- /trunk/GameServer/java/net/sf/l2j/gameserver/model/actor/instance/L2SiegeFlagInstance.java (revision 231)
+++ /trunk/GameServer/java/net/sf/l2j/gameserver/model/actor/instance/L2SiegeFlagInstance.java (revision 317)
@@ -96,6 +96,9 @@
                if (player == null || !canTarget(player))
                        return;
+               
+                if(!_player.siegeonlyRegistered(player))
+                        return;
 
-                        // Check if the L2PcInstance already target the L2NpcInstance
+                // Check if the L2PcInstance already target the L2NpcInstance
                if (this != player.getTarget())
                {
Index: /trunk/GameServer/java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java
===================================================================
--- /trunk/GameServer/java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java (revision 314)
+++ /trunk/GameServer/java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java (revision 317)
@@ -106,4 +106,5 @@
 import net.sf.l2j.gameserver.model.L2Request;
 import net.sf.l2j.gameserver.model.L2ShortCut;
+import net.sf.l2j.gameserver.model.L2SiegeClan;
 import net.sf.l2j.gameserver.model.L2Skill;
 import net.sf.l2j.gameserver.model.L2SkillLearn;
@@ -3419,4 +3420,11 @@
                if (!TvTEvent.onAction(player.getName(), getName()))
                {
+                        player.sendPacket(ActionFailed.STATIC_PACKET);
+                        return;
+                }
+               
+                if (!siegeonlyRegistered(player))
+                {
+                        player.sendMessage("Player interaction disabled during sieges.");
                        player.sendPacket(ActionFailed.STATIC_PACKET);
                        return;
@@ -10947,3 +10955,60 @@
                  _isAway = state;
          }
+       
+        public boolean siegeonlyRegistered(L2PcInstance player)
+        {
+                Siege siege = SiegeManager.getInstance().getSiege(this);
+                if (siege != null && siege.getIsInProgress())
+                {
+                        L2Clan selfClan = getClan();
+                        L2Clan oppClan = player.getClan();
+                        if (selfClan != null && oppClan != null)
+                        {
+                                boolean self = false;
+                                for (L2SiegeClan clan : siege.getAttackerClans())
+                                {
+                                        L2Clan cl = ClanTable.getInstance().getClan(clan.getClanId());
+                                        if (cl == selfClan || cl.getAllyId() == getAllyId())
+                                        {
+                                                self = true;
+                                                break;
+                                        }
+                                }
+                               
+                                for (L2SiegeClan clan : siege.getDefenderClans())
+                                {
+                                        L2Clan cl = ClanTable.getInstance().getClan(clan.getClanId());
+                                        if (cl == selfClan || cl.getAllyId() == getAllyId())
+                                        {
+                                                self = true;
+                                                break;
+                                        }
+                                }
+                               
+                                boolean opp = false;
+                                for (L2SiegeClan clan : siege.getAttackerClans())
+                                {
+                                        L2Clan cl = ClanTable.getInstance().getClan(clan.getClanId());
+                                        if (cl == oppClan || cl.getAllyId() == player.getAllyId())
+                                        {
+                                                opp = true;
+                                                break;
+                                        }
+                                }
+                               
+                                for (L2SiegeClan clan : siege.getDefenderClans())
+                                {
+                                        L2Clan cl = ClanTable.getInstance().getClan(clan.getClanId());
+                                        if (cl == oppClan || cl.getAllyId() == player.getAllyId())
+                                        {
+                                                opp = true;
+                                                break;
+                                        }
+                                }
+                                return self && opp;
+                        }
+                        return false;
+                }
+                return true;
+        }
 }
Index: /trunk/GameServer/java/net/sf/l2j/gameserver/model/actor/instance/L2DoorInstance.java
===================================================================
--- /trunk/GameServer/java/net/sf/l2j/gameserver/model/actor/instance/L2DoorInstance.java (revision 231)
+++ /trunk/GameServer/java/net/sf/l2j/gameserver/model/actor/instance/L2DoorInstance.java (revision 317)
@@ -31,9 +31,13 @@
 import net.sf.l2j.gameserver.ai.L2CharacterAI;
 import net.sf.l2j.gameserver.ai.L2DoorAI;
+import net.sf.l2j.gameserver.datatables.ClanTable;
 import net.sf.l2j.gameserver.instancemanager.CastleManager;
+import net.sf.l2j.gameserver.instancemanager.SiegeManager;
 import net.sf.l2j.gameserver.model.L2CharPosition;
 import net.sf.l2j.gameserver.model.L2Character;
+import net.sf.l2j.gameserver.model.L2Clan;
 import net.sf.l2j.gameserver.model.L2ItemInstance;
 import net.sf.l2j.gameserver.model.L2Object;
+import net.sf.l2j.gameserver.model.L2SiegeClan;
 import net.sf.l2j.gameserver.model.L2Skill;
 import net.sf.l2j.gameserver.model.actor.knownlist.DoorKnownList;
@@ -42,4 +46,5 @@
 import net.sf.l2j.gameserver.model.entity.Castle;
 import net.sf.l2j.gameserver.model.entity.ClanHall;
+import net.sf.l2j.gameserver.model.entity.Siege;
 import net.sf.l2j.gameserver.network.L2GameClient;
 import net.sf.l2j.gameserver.network.serverpackets.ActionFailed;
@@ -368,4 +373,38 @@
        if (player == null)
            return;
+       
+        boolean opp = false;
+        Siege siege = SiegeManager.getInstance().getSiege(player);
+        L2Clan oppClan = player.getClan();
+        if (siege != null && siege.getIsInProgress())
+        {
+                if (oppClan != null)
+                {
+                        for (L2SiegeClan clan : siege.getAttackerClans())
+                        {
+                                L2Clan cl = ClanTable.getInstance().getClan(clan.getClanId());
+                                if (cl == oppClan || cl.getAllyId() == player.getAllyId())
+                                {
+                                        opp = true;
+                                        break;
+                                }
+                        }
+                       
+                        for (L2SiegeClan clan : siege.getDefenderClans())
+                        {
+                                L2Clan cl = ClanTable.getInstance().getClan(clan.getClanId());
+                                if (cl == oppClan || cl.getAllyId() == player.getAllyId())
+                                {
+                                        opp = true;
+                                        break;
+                                }
+                        }
+                }
+        }
+        else
+                opp = true;
+       
+        if (!opp)
+                return;


xadresz 29-11-2010 04:52 PM

Prefiro usar o código do B1Z4R0, muito obrigado ae pela ajuda!


Horários baseados na GMT -3. Agora são 05:47 AM.

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.3.0