Secret Experience

Secret Experience (https://secretexperience.net/)
-   [Lineage] Java Mods (https://secretexperience.net/lineage-java-mods/)
-   -   [L2JServer] Faction system (https://secretexperience.net/lineage-java-mods/15110-faction-system.html)

L2 DF 28-10-2009 09:22 PM

Faction system
 
Aqui está o sistema faction.
Para quem não sabe, o faction é duas equipes, ou em outras palavras, o "bem" e o "mau".
Você pode escolher de que equipe quer ser através de um NPC e assim partir para as lutas.

Core side:

Código:

Index: C:/workspace/L2_GameServer/java/config/l2jmods.properties
===================================================================
--- C:/workspace/L2_GameServer/java/config/l2jmods.properties        (revision 3338)
+++ C:/workspace/L2_GameServer/java/config/l2jmods.properties        (working copy)
@@ -240,4 +240,87 @@
 # This option will enable core support for:
 # Mana Drug (item ID 726), using skill ID 9007.
 # Mana Potion (item ID 728), using skill ID 9008.
-EnableManaPotionSupport = False
\ No newline at end of file
+EnableManaPotionSupport = False
+
+# ---------------------------------------------------------------------------
+# Faction System By Stefoulis15
+# ---------------------------------------------------------------------------
+# Faction System is Something Really Unique. You Must Have Full Knowledge of What You Are Doing When Activating It.
+# Faction System Cannot Work With TvT Events , CTF , DM , KOTH And Others.
+
+# Enable Stefoulis15 Faction System?
+FactionSystemEnable = False
+
+# Annnounce Faction Players
+# Values Are In Minutes
+AnnouncePlayersDelay =
+
+# Set The Faction Name of The First Faction.
+FirstFactionName = Villagers
+
+# Set The Faction Name of The Second Faction.
+SecondFactionName = Pirates
+
+# Allow Alternative Spawn Place For New Created Characters
+AllowAltSpawnForNewChars = False
+
+# Set The Spawn Location of New Created Characters
+NewCharSpawnX =
+NewCharSpawnY =
+NewCharSpawnZ =
+
+# Set The Base of The First Faction
+FirstFactionBaseSpawnX =
+FirstFactionBaseSpawnY =
+FirstFactionBaseSpawnZ =
+
+# Set The Base of The Second Faction
+SecondFactionBaseSpawnX =
+SecondFactionBaseSpawnY =
+SecondFactionBaseSpawnZ =
+
+# Set All The New Characters At the Selected Level On Their Creation?
+NewCharLevel75 = False
+NewCharLevel80 = False
+NewCharLevel85 = False
+
+# Allow Trade Between Two Factions?
+AllowTradeBetweenFactions = False
+
+# Allow Buy Between Two Factions?
+AllowBuyBetweenFactions = False
+
+# Set All The New Characters Noblesse , On Their Creation?
+NewCharSetNoblesse = False
+
+# Set All The New Characters Heroes , On Their Creation?
+NewCharSetHero = False
+
+# Set The Name Color of The First Faction
+# Values Must Be In RGB
+FirstFactionNameColor =
+
+# Set The Name Color of The Second Creation
+# Values Must Be In RGB
+SecondFactionNameColor =
+
+# Set The Title Color of The First Faction
+# Values Must Be In RGB
+FirstFactionTitleColor =
+
+# Set The Title Color of The Second Faction
+# Values Must Be In RGB
+SecondFactionTitleColor =
+
+# Set The Alternative Warehouse Deposit Fee
+AltWarehouseDepositFee = 0
+
+# Allow Reward for Each PvP?
+AllowPvPReward = False
+
+# Set The Item You Want as a Reward
+PvPRewardID = 57
+
+# Set The Amount of The Reward
+PvPRewardAmount = 1
+
Index: C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/network/clientpackets/RequestFriendInvite.java
===================================================================
--- C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/network/clientpackets/RequestFriendInvite.java        (revision 3338)
+++ C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/network/clientpackets/RequestFriendInvite.java        (working copy)
@@ -20,6 +20,7 @@
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
+import net.sf.l2j.Config;
 import net.sf.l2j.L2DatabaseFactory;
 import net.sf.l2j.gameserver.model.L2World;
 import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
@@ -65,6 +66,22 @@
                sm = null;
                return;
            }
+        if (friend.issfaction() && activeChar.isffaction() && Config.FACTION_SYSTEM_ENABLE)
+        {
+            // Target is wrong.
+            sm = new SystemMessage(SystemMessageId.TARGET_IS_INCORRECT);
+            activeChar.sendPacket(sm);
+            sm = null;
+            return;
+        }
+        else if (friend.isffaction() && activeChar.issfaction() && Config.FACTION_SYSTEM_ENABLE)
+        {
+            // Target is wrong.
+            sm = new SystemMessage(SystemMessageId.TARGET_IS_INCORRECT);
+            activeChar.sendPacket(sm);
+            sm = null;
+            return;
+        }
        else if (friend == activeChar)
        {
                //You cannot add yourself to your own friend list.
Index: C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/network/clientpackets/RequestSendFriendMsg.java
===================================================================
--- C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/network/clientpackets/RequestSendFriendMsg.java        (revision 3338)
+++ C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/network/clientpackets/RequestSendFriendMsg.java        (working copy)
@@ -63,7 +63,16 @@
                activeChar.sendPacket(new SystemMessage(SystemMessageId.TARGET_IS_NOT_FOUND_IN_THE_GAME));
                return;
        }
-
+            if (targetPlayer.issfaction() && activeChar.isffaction())
+            {
+                activeChar.sendPacket(new SystemMessage(SystemMessageId.TARGET_IS_INCORRECT));
+                return;
+            }
+            if (targetPlayer.isffaction() && activeChar.issfaction())
+            {
+                activeChar.sendPacket(new SystemMessage(SystemMessageId.TARGET_IS_INCORRECT));
+                return;
+            }
                if (Config.LOG_CHAT)
                {
                        LogRecord record = new LogRecord(Level.INFO, _message);
Index: C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/network/clientpackets/TradeRequest.java
===================================================================
--- C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/network/clientpackets/TradeRequest.java        (revision 3338)
+++ C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/network/clientpackets/TradeRequest.java        (working copy)
@@ -75,7 +75,17 @@
            player.sendMessage("You or your target cant request trade in Olympiad mode");
            return;
        }
-
+            L2PcInstance player2 = (L2PcInstance) target;
+            if (player2.issfaction() && player.isffaction() && Config.FACTION_SYSTEM_ENABLE && Config.FACTION_SYSTEM_ALLOW_TRADE_BETWEEN_FACTIONS)
+            {
+                player.sendMessage("You Cant Trade with the Different Faction");
+                return;
+            }
+            if (player2.isffaction() && player.issfaction() && Config.FACTION_SYSTEM_ENABLE && Config.FACTION_SYSTEM_ALLOW_TRADE_BETWEEN_FACTIONS)
+            {
+                player.sendMessage("You Cant Trade with the Different Faction");
+                return;
+            }
        // Alt game - Karma punishment
        if (!Config.ALT_GAME_KARMA_PLAYER_CAN_TRADE && (player.getKarma() > 0 || partner.getKarma() > 0))
        {
Index: C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/network/clientpackets/RequestDuelAnswerStart.java
===================================================================
--- C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/network/clientpackets/RequestDuelAnswerStart.java        (revision 3338)
+++ C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/network/clientpackets/RequestDuelAnswerStart.java        (working copy)
@@ -14,6 +14,7 @@
  */
 package net.sf.l2j.gameserver.network.clientpackets;
 
+import net.sf.l2j.Config;
 import net.sf.l2j.gameserver.instancemanager.DuelManager;
 import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
 import net.sf.l2j.gameserver.network.SystemMessageId;
@@ -66,7 +67,11 @@
                                player.sendPacket(new SystemMessage(SystemMessageId.YOU_ARE_UNABLE_TO_REQUEST_A_DUEL_AT_THIS_TIME));
                                return;
                        }
-
+                    if ((Config.FACTION_SYSTEM_ENABLE && player.issfaction()) || player.isffaction())
+                    {
+                        player.sendPacket(new SystemMessage(SystemMessageId.YOU_ARE_UNABLE_TO_REQUEST_A_DUEL_AT_THIS_TIME));
+                        return;
+                    }
                        if (_partyDuel == 1)
                        {
                                msg1 = new SystemMessage(SystemMessageId.YOU_HAVE_ACCEPTED_C1_CHALLENGE_TO_A_PARTY_DUEL_THE_DUEL_WILL_BEGIN_IN_A_FEW_MOMENTS);
Index: C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/network/clientpackets/RequestPrivateStoreBuy.java
===================================================================
--- C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/network/clientpackets/RequestPrivateStoreBuy.java        (revision 3338)
+++ C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/network/clientpackets/RequestPrivateStoreBuy.java        (working copy)
@@ -104,7 +104,17 @@
                TradeList storeList = storePlayer.getSellList();
                if (storeList == null)
                        return;
-
+               
+                if (Config.FACTION_SYSTEM_ENABLE && Config.FACTION_SYSTEM_ALLOW_BUY_BETWEEN_FACTIONS)
+                {
+                    if ((storePlayer.issfaction() && player.isffaction()) || (storePlayer.isffaction() && player.issfaction()))
+                    {
+                        player.sendMessage("You Cannot Buy From an Other Faction");
+                        sendPacket(ActionFailed.STATIC_PACKET);
+                        return;
+                    }
+                }
+               
                if (!player.getAccessLevel().allowTransaction())
                {
                        player.sendMessage("Transactions are disable for your Access Level");
Index: C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/network/clientpackets/RequestJoinParty.java
===================================================================
--- C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/network/clientpackets/RequestJoinParty.java        (revision 3338)
+++ C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/network/clientpackets/RequestJoinParty.java        (working copy)
@@ -106,6 +106,17 @@
                        return;
                }
               
+                if (target.isffaction() && requestor.issfaction())
+                {
+                    requestor.sendPacket(new SystemMessage(SystemMessageId.INCORRECT_TARGET));
+                    return;
+                }
+                if (target.issfaction() && requestor.isffaction())
+                {
+                    requestor.sendPacket(new SystemMessage(SystemMessageId.INCORRECT_TARGET));
+                    return;
+                }
+
                if (target.getClient().isDetached())
                {
                        requestor.sendMessage("Player is in offline mode.");
Index: C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/network/clientpackets/SendWareHouseDepositList.java
===================================================================
--- C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/network/clientpackets/SendWareHouseDepositList.java        (revision 3338)
+++ C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/network/clientpackets/SendWareHouseDepositList.java        (working copy)
@@ -112,7 +112,7 @@
                        return;
 
                // Freight price from config or normal price per item slot (30)
-                final long fee = _items.length * 30;
+                final long fee = _items.length * Config.FACTION_SYSTEM_ALT_WAREHOUSE_FEE;
                long currentAdena = player.getAdena();
                int slots = 0;
 
@@ -142,7 +142,7 @@
                }
 
                // Check if enough adena and charge the fee
-                if (currentAdena < fee || !player.reduceAdena(warehouse.getName(), fee, manager, false))
+                if (currentAdena < Config.FACTION_SYSTEM_ALT_WAREHOUSE_FEE || !player.reduceAdena(warehouse.getName(), Config.FACTION_SYSTEM_ALT_WAREHOUSE_FEE, manager, false))
                {
                        sendPacket(new SystemMessage(SystemMessageId.YOU_NOT_ENOUGH_ADENA));
                        return;
Index: C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/network/clientpackets/RequestDuelStart.java
===================================================================
--- C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/network/clientpackets/RequestDuelStart.java        (revision 3338)
+++ C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/network/clientpackets/RequestDuelStart.java        (working copy)
@@ -69,6 +69,11 @@
                activeChar.sendPacket(new SystemMessage(SystemMessageId.YOU_ARE_UNABLE_TO_REQUEST_A_DUEL_AT_THIS_TIME));
                return;
        }
+            if ((Config.FACTION_SYSTEM_ENABLE && activeChar.issfaction()) || activeChar.isffaction())
+            {
+                activeChar.sendPacket(new SystemMessage(SystemMessageId.YOU_ARE_UNABLE_TO_REQUEST_A_DUEL_AT_THIS_TIME));
+                return;
+            }
        else if (!targetChar.canDuel())
        {
                activeChar.sendPacket(targetChar.getNoDuelReason());
Index: C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/network/clientpackets/CharacterCreate.java
===================================================================
--- C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/network/clientpackets/CharacterCreate.java        (revision 3338)
+++ C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/network/clientpackets/CharacterCreate.java        (working copy)
@@ -183,9 +183,30 @@
 
                L2PcTemplate template = newChar.getTemplate();
 
+                if (Config.FACTION_SYSTEM_NEW_CHAR_LEVEL_75)
+                {
+                newChar.addExpAndSp(804219972L, 99999999);
+                }
+                else if (Config.FACTION_SYSTEM_NEW_CHAR_LEVEL_80)
+                {
+            newChar.addExpAndSp(4200000000L, 99999999);
+                }
+                else if (Config.FACTION_SYSTEM_NEW_CHAR_LEVEL_85)
+                {
+                newChar.addExpAndSp(19827360000L, 99999999);
+                }
+               
                newChar.addAdena("Init", Config.STARTING_ADENA, null, false);
 
-                newChar.setXYZInvisible(template.spawnX, template.spawnY, template.spawnZ);
+                if (Config.FACTION_SYSTEM_ALLOW_ALT_NEW_CHAR_SPAWN)
+                {
+                        newChar.setXYZInvisible(Config.FACTION_SYSTEM_NEW_CHAR_SPAWN_X, Config.FACTION_SYSTEM_NEW_CHAR_SPAWN_Y , Config.FACTION_SYSTEM_NEW_CHAR_SPAWN_Z);
+                }
+                else
+                {
+                        newChar.setXYZInvisible(template.spawnX, template.spawnY, template.spawnZ);       
+                }
+               
                newChar.setTitle("");
 
                L2ShortCut shortcut;
Index: C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/network/clientpackets/EnterWorld.java
===================================================================
--- C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/network/clientpackets/EnterWorld.java        (revision 3338)
+++ C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/network/clientpackets/EnterWorld.java        (working copy)
@@ -194,7 +194,19 @@
                // Set Hero status if it applies
                if (Hero.getInstance().getHeroes() != null && Hero.getInstance().getHeroes().containsKey(activeChar.getObjectId()))
                        activeChar.setHero(true);
+               
+                if (Config.FACTION_SYSTEM_NEW_CHAR_SET_NOBLESSE)
+                {
+                if(!activeChar.isNoble())
+                        activeChar.setNoble(true);
+                }
 
+                if (Config.FACTION_SYSTEM_NEW_CHAR_SET_HERO)
+                {
+                if(!activeChar.isHero())
+                        activeChar.setHero(true);
+                }
+               
                setPledgeClass(activeChar);
 
                boolean showClanNotice = false;
@@ -324,6 +336,21 @@
                        notifyPartner(activeChar,activeChar.getPartnerId());
                }
 
+                if (activeChar.isffaction() && Config.FACTION_SYSTEM_ENABLE)
+                {
+                    activeChar.getAppearance().setNameColor(Config.FACTION_SYSTEM_FIRST_FACTION_NAME_COLOR);
+                    activeChar.sendMessage("Welcome " + activeChar.getName() + " You Are Fighting " + Config.FACTION_SYSTEM_FIRST_FACTION_NAME + "  Faction");
+                    activeChar.setTitle(Config.FACTION_SYSTEM_FIRST_FACTION_NAME);
+                    activeChar.getAppearance().setTitleColor(Config.FACTION_SYSTEM_FIRST_FACTION_TITLE_COLOR);
+                }
+                if (activeChar.issfaction() && Config.FACTION_SYSTEM_ENABLE)
+                {
+                    activeChar.getAppearance().setNameColor(Config.FACTION_SYSTEM_SECOND_FACTION_NAME_COLOR);
+                    activeChar.sendMessage("Welcome " + activeChar.getName() + " You Are Fighting " + Config.FACTION_SYSTEM_SECOND_FACTION_NAME + " Faction");
+                    activeChar.setTitle(Config.FACTION_SYSTEM_SECOND_FACTION_NAME);
+                    activeChar.getAppearance().setTitleColor(Config.FACTION_SYSTEM_SECOND_FACTION_TITLE_COLOR);
+                }
+
                if (activeChar.isCursedWeaponEquipped())
                {
                        CursedWeaponsManager.getInstance().getCursedWeapon(activeChar.getCursedWeaponEquippedId()).cursedOnLogin();
Index: C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/network/clientpackets/RequestPrivateStoreSell.java
===================================================================
--- C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/network/clientpackets/RequestPrivateStoreSell.java        (revision 3338)
+++ C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/network/clientpackets/RequestPrivateStoreSell.java        (working copy)
@@ -150,8 +150,17 @@
                        storePlayer.setPrivateStoreType(L2PcInstance.STORE_PRIVATE_NONE);
                        storePlayer.broadcastUserInfo();
                }
+       
+        if (Config.FACTION_SYSTEM_ENABLE && Config.FACTION_SYSTEM_ALLOW_BUY_BETWEEN_FACTIONS)
+        {
+            if ((storePlayer.issfaction() && player.isffaction()) || (storePlayer.isffaction() && player.issfaction()))
+            {
+                player.sendMessage("You Cant Sell on a Different Faction");
+                sendPacket(ActionFailed.STATIC_PACKET);
+                return;
+            }
        }
-
+}
        @Override
        public String getType()
        {
Index: C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/network/clientpackets/AnswerTradeRequest.java
===================================================================
--- C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/network/clientpackets/AnswerTradeRequest.java        (revision 3338)
+++ C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/network/clientpackets/AnswerTradeRequest.java        (working copy)
@@ -14,6 +14,7 @@
  */
 package net.sf.l2j.gameserver.network.clientpackets;
 
+import net.sf.l2j.Config;
 import net.sf.l2j.gameserver.model.L2World;
 import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
 import net.sf.l2j.gameserver.network.SystemMessageId;
@@ -66,6 +67,18 @@
        }
        else if (L2World.getInstance().findObject(partner.getObjectId()) == null)
        {
+                L2PcInstance player2 = player.getActiveRequester();
+                if (player2.issfaction() && player.isffaction() && Config.FACTION_SYSTEM_ENABLE && Config.FACTION_SYSTEM_ALLOW_TRADE_BETWEEN_FACTIONS)
+                {
+                    player.sendMessage("You Cant Trade With The Other Faction");
+                    return;
+                }
+                if (player2.isffaction() && player.issfaction() && Config.FACTION_SYSTEM_ENABLE && Config.FACTION_SYSTEM_ALLOW_TRADE_BETWEEN_FACTIONS)
+                {
+                    player.sendMessage("You Cant Trade With The Other Faction");
+                    return;
+                }
+       
                // Trade partner not found, cancel trade
                        player.sendPacket(new TradeDone(0));
            SystemMessage msg = new SystemMessage(SystemMessageId.TARGET_IS_NOT_FOUND_IN_THE_GAME);
Index: C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/network/clientpackets/RequestAnswerJoinParty.java
===================================================================
--- C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/network/clientpackets/RequestAnswerJoinParty.java        (revision 3338)
+++ C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/network/clientpackets/RequestAnswerJoinParty.java        (working copy)
@@ -49,6 +49,14 @@
        if(player != null)
        {
                    L2PcInstance requestor = player.getActiveRequester();
+                if (player.issfaction() && requestor.isffaction())
+                {
+                    return;
+                }
+                if (player.isffaction() && requestor.issfaction())
+                {
+                    return;
+                }
                if (requestor == null)
                    return;
 
Index: C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java
===================================================================
--- C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java        (revision 3338)
+++ C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java        (working copy)
@@ -524,6 +524,9 @@
        private boolean _noble = false;
        private boolean _hero = false;
 
+    private boolean _isffaction = false;
+    private boolean _issfaction = false;
+   
        /** The L2FolkInstance corresponding to the last Folk wich one the player talked. */
        private L2Npc _lastFolkNpc = null;
 
@@ -5469,6 +5472,27 @@
                        // sendPacket(msg);
                        return;
                }
+                if (Config.FACTION_SYSTEM_ALLOW_REWARD_FOR_EACH_PVP && Config.FACTION_SYSTEM_ENABLE)
+                {
+                    if ((issfaction() && targetPlayer.issfaction()) || (isffaction() && targetPlayer.isffaction()))
+                    {
+                        sendMessage("Cannot Get PvP Reward From The Same Faction.");
+                        sendPacket(ActionFailed.STATIC_PACKET);
+                        return;
+                    } else
+                    {
+                        int itemReward = Config.FACTION_SYSTEM_PVP_ITEM_REWARD_AMOUNT;
+                        int idReward = Config.FACTION_SYSTEM_PVP_ITEM_REWARD_ID;
+                        addItem("Loot", idReward, itemReward, this, true);
+                        sendMessage("You Won " + itemReward + " " + idReward + "  From Your Kill.");
+                    }
+                }
+                // pvp?
+                if (checkIfPvP(target) || (isffaction() && targetPlayer.issfaction()) || (issfaction() && targetPlayer.isffaction()))
+                {
+                    increasePvpKills();
+                    return;
+                }
 
                // If in duel and you kill (only can kill l2summon), do nothing
                if (isInDuel() && targetPlayer.isInDuel()) return;
@@ -5558,6 +5582,11 @@
      */
    public void increasePkKillsAndKarma(int targLVL)
    {
+            if (Config.FACTION_SYSTEM_ENABLE)
+            {
+                return;
+            }
+           
        int baseKarma          = Config.KARMA_MIN_KARMA;
        int newKarma            = baseKarma;
        int karmaLimit          = Config.KARMA_MAX_KARMA;
@@ -5629,11 +5658,19 @@
 
        public void updatePvPStatus()
        {
+       
+                if (!issfaction() || !isffaction())
+                {
+                    return;
+                }
+               
                if (isInsideZone(ZONE_PVP)) return;
                setPvpFlagLasts(System.currentTimeMillis() + Config.PVP_NORMAL_TIME);
 
                if (getPvpFlag() == 0)
                        startPvPFlag();
+               
+               
        }
 
        public void updatePvPStatus(L2Character target)
@@ -5643,6 +5680,14 @@
        if (player_target == null)
            return;
 
+                if (target  instanceof L2PcInstance)
+                {
+                    player_target = (L2PcInstance) target;
+                }
+                if (player_target.issfaction() || player_target.isffaction())
+                {
+                    return;
+                }
        if ((isInDuel() && player_target.getDuelId() == getDuelId())) return;
        if ((!isInsideZone(ZONE_PVP) || !player_target.isInsideZone(ZONE_PVP)) && player_target.getKarma() == 0)
        {
@@ -5655,6 +5700,7 @@
        }
        }
 
+
        /**
          * Restore the specified % of experience this L2PcInstance has
          * lost and sends a Server->Client StatusUpdate packet.<BR><BR>
@@ -7018,6 +7064,8 @@
                                player.setOnlineTime(rset.getLong("onlinetime"));
                                player.setNewbie(rset.getInt("newbie"));
                                player.setNoble(rset.getInt("nobless")==1);
+                                player.setffaction(rset.getInt("ffaction") == 1 ? true : false);
+                                player.setsfaction(rset.getInt("sfaction") == 1 ? true : false);
 
                                player.setClanJoinExpiryTime(rset.getLong("clan_join_expiry_time"));
                                if (player.getClanJoinExpiryTime() < System.currentTimeMillis())
@@ -7450,7 +7498,9 @@
                        statement.setString(50, getName());
                        statement.setLong(51, getDeathPenaltyBuffLevel());
                        statement.setInt(52, getBookMarkSlot());
-            statement.setInt(53, getObjectId());
+                    statement.setInt(53, isffaction() ? 1 : 0);
+                    statement.setInt(54, issfaction() ? 1 : 0);
+            statement.setInt(55, getObjectId());
 
                        statement.execute();
                        statement.close();
@@ -8254,6 +8304,16 @@
        @Override
        public boolean isAutoAttackable(L2Character attacker)
        {
+               
+                if ((attacker instanceof L2PcInstance) && ((L2PcInstance) attacker).isffaction())
+                {
+                    return true;
+                }
+                if ((attacker instanceof L2PcInstance) && ((L2PcInstance) attacker).issfaction())
+                {
+                    return true;
+                }
+               
                // Check if the attacker isn't the L2PcInstance Pet
                if (attacker == this || attacker == getPet())
                        return false;
@@ -8651,7 +8711,7 @@
        // Check if this is offensive magic skill
        if (skill.isOffensive())
                {
-                        if ((isInsidePeaceZone(this, target)) && !getAccessLevel().allowPeaceAttack())
+                        if ((isInsidePeaceZone(this, target)) && !getAccessLevel().allowPeaceAttack() && (Config.FACTION_SYSTEM_ENABLE == false))
                        {
                                // If L2Character or target is in a peace zone, send a system message TARGET_IN_PEACEZONE a Server->Client packet ActionFailed
                                sendPacket(new SystemMessage(SystemMessageId.TARGET_IN_PEACEZONE));
@@ -9056,6 +9116,12 @@
          */
        public boolean checkPvpSkill(L2Object target, L2Skill skill, boolean srcIsSummon)
        {
+               
+                if (issfaction() || isffaction())
+                {
+                    return true;
+                } 
+               
                // check for PC->PC Pvp status
                if (
                                target != null &&                                                                  // target not null and
@@ -10010,6 +10076,27 @@
            sendPacket(sl); 
    }
   
+    public boolean isffaction()
+    {
+        return _isffaction;
+    }
+
+    public boolean issfaction()
+    {
+        return _issfaction;
+    }
+
+    public void setffaction(boolean value)
+    {
+        _isffaction = value;
+    }
+
+    public void setsfaction(boolean value)
+    {
+        _issfaction = value;
+    }
+
+   
    /**
      * 1. Add the specified class ID as a subclass (up to the maximum number of <b>three</b>)
      * for this character.<BR>
Index: C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/model/actor/L2Character.java
===================================================================
--- C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/model/actor/L2Character.java        (revision 3338)
+++ C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/model/actor/L2Character.java        (working copy)
@@ -759,6 +759,18 @@
                                return;
                        }
                }
+                        if (((L2PcInstance) this).isffaction() && ((L2PcInstance) target).isffaction() && Config.FACTION_SYSTEM_ENABLE)
+                        {
+                            ((L2PcInstance) this).sendMessage("Cant attack a player from your faction");
+                            sendPacket(ActionFailed.STATIC_PACKET);
+                            return;
+                        }
+                        if (((L2PcInstance) this).issfaction() && ((L2PcInstance) target).issfaction() && Config.FACTION_SYSTEM_ENABLE)
+                        {
+                            ((L2PcInstance) this).sendMessage("Cant attack a player from your faction");
+                            sendPacket(ActionFailed.STATIC_PACKET);
+                            return;
+                        }
                        // Checking if target has moved to peace zone
                        if (target.isInsidePeaceZone((L2PcInstance)this))
                        {
@@ -866,7 +878,7 @@
                                {
                                        // Checking if target has moved to peace zone - only for player-crossbow attacks at the moment
                                        // Other melee is checked in movement code and for offensive spells a check is done every time
-                                        if (target.isInsidePeaceZone((L2PcInstance)this))
+                                        if (target.isInsidePeaceZone((L2PcInstance)this)&& !Config.FACTION_SYSTEM_ENABLE)
                                        {
                                                getAI().setIntention(CtrlIntention.AI_INTENTION_ACTIVE);
                                                sendPacket(ActionFailed.STATIC_PACKET);
@@ -1468,7 +1480,31 @@
        L2Object[] targets = skill.getTargetList(this);
       
        boolean doit = false;
-
+           
+        if ((target instanceof L2PcInstance) && (this instanceof L2PcInstance))
+            {
+                if (((L2PcInstance) this).isffaction() && (((L2PcInstance) target).isffaction() && Config.FACTION_SYSTEM_ENABLE))
+                {
+                    ((L2PcInstance) this).sendMessage("You Cannot Attack a Player From Your Faction!");
+                    sendPacket(ActionFailed.STATIC_PACKET);
+                    return;
+                }
+                else if (((L2PcInstance) this).isffaction() && ((((L2PcInstance) target).isffaction() && Config.FACTION_SYSTEM_ENABLE && (skill.getSkillType() == L2SkillType.BUFF)) || (skill.getSkillType() == L2SkillType.HOT) || (skill.getSkillType() == L2SkillType.HEAL) || (skill.getSkillType() == L2SkillType.COMBATPOINTHEAL) || (skill.getSkillType() == L2SkillType.HEAL_PERCENT) || (skill.getSkillType() == L2SkillType.MANAHEAL) || (skill.getSkillType() == L2SkillType.MANAHEAL_PERCENT) || (skill.getSkillType() == L2SkillType.BALANCE_LIFE) || (skill.getSkillType() == L2SkillType.CONT)))
+                {
+                    return;
+                }
+                if (((L2PcInstance) this).issfaction() && ((L2PcInstance) target).issfaction())
+                {
+                    ((L2PcInstance) this).sendMessage("You Cannot Attack a Player From Your Faction!");
+                    sendPacket(ActionFailed.STATIC_PACKET);
+                    return;
+                }
+                else if (((L2PcInstance) this).issfaction() && ((((L2PcInstance) target).issfaction() && Config.FACTION_SYSTEM_ENABLE && (skill.getSkillType() == L2SkillType.BUFF)) || (skill.getSkillType() == L2SkillType.HOT) || (skill.getSkillType() == L2SkillType.HEAL) || (skill.getSkillType() == L2SkillType.COMBATPOINTHEAL) || (skill.getSkillType() == L2SkillType.HEAL_PERCENT) || (skill.getSkillType() == L2SkillType.MANAHEAL) || (skill.getSkillType() == L2SkillType.MANAHEAL_PERCENT) || (skill.getSkillType() == L2SkillType.BALANCE_LIFE) || (skill.getSkillType() == L2SkillType.CONT)))
+                {
+                    return;
+                }
+            }
+       
        // AURA skills should always be using caster as target
        switch (skill.getTargetType())
        {
@@ -2164,6 +2200,16 @@
                if (!isTeleporting())
                {
                        setIsPendingRevive(false);
+                    if ((this instanceof L2PcInstance) && (((L2PcInstance) this).isffaction() && Config.FACTION_SYSTEM_ENABLE))
+                    {
+                        teleToLocation(Config.FACTION_SYSTEM_FIRST_FACTION_BASE_SPAWN_X, Config.FACTION_SYSTEM_FIRST_FACTION_BASE_SPAWN_Y, Config.FACTION_SYSTEM_FIRST_FACTION_BASE_SPAWN_Z);
+                    } else
+                    {
+                        if ((this instanceof L2PcInstance) && (((L2PcInstance) this).issfaction() && Config.FACTION_SYSTEM_ENABLE))
+                        {
+                            teleToLocation(Config.FACTION_SYSTEM_SECOND_FACTION_BASE_SPAWN_X, Config.FACTION_SYSTEM_SECOND_FACTION_BASE_SPAWN_Y, Config.FACTION_SYSTEM_SECOND_FACTION_BASE_SPAWN_Z);
+                        }
+                    }
                        setIsDead(false);
                        boolean restorefull = false;
                       
Index: C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/model/L2World.java
===================================================================
--- C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/model/L2World.java        (revision 3338)
+++ C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/model/L2World.java        (working copy)
@@ -64,6 +64,9 @@
        /** HashMap(String Player name, L2PcInstance) containing all the players in game */
        private Map<String, L2PcInstance> _allPlayers;
       
+    private Map<String, L2PcInstance> _allkoofPlayers;
+    private Map<String, L2PcInstance> _allnoobPlayers;
+   
        /** L2ObjectHashMap(L2Object) containing all visible objects */
        private Map<Integer, L2Object> _allObjects;
       
@@ -79,6 +82,8 @@
        {
                //_allGms        = new FastMap<String, L2PcInstance>();
                _allPlayers = new FastMap<String, L2PcInstance>().setShared(true);
+                _allkoofPlayers = new FastMap<String, L2PcInstance>().setShared(true);
+                _allnoobPlayers = new FastMap<String, L2PcInstance>().setShared(true);
                _petsInstance = new FastMap<Integer, L2PetInstance>().setShared(true);
                _allObjects = new FastMap<Integer, L2Object>().setShared(true);
               
@@ -224,6 +229,16 @@
                return _allPlayers;
        }
       
+    public Collection<L2PcInstance> getAllkoofPlayers()
+    {
+        return _allkoofPlayers.values();
+    }
+
+    public Collection<L2PcInstance> getAllnoobPlayers()
+    {
+        return _allnoobPlayers.values();
+    }
+
        /**
          * Return how many players are online.<BR><BR>
          *
@@ -234,6 +249,16 @@
                return _allPlayers.size();
        }
       
+    public int getAllkoofPlayersCount()
+    {
+        return _allkoofPlayers.size();
+    }
+
+    public int getAllnoobPlayersCount()
+    {
+        return _allnoobPlayers.size();
+    }
+
        /**
          * Return the player instance corresponding to the given name.<BR><BR>
          *
@@ -335,6 +360,14 @@
                                        tmp.closeNetConnection();
                                        return;
                                }
+                            if (((L2PcInstance) object).isffaction())
+                            {
+                                _allkoofPlayers.put(player.getName().toLowerCase(), player);
+                            }
+                            else if (((L2PcInstance) object).issfaction())
+                            {
+                                _allnoobPlayers.put(player.getName().toLowerCase(), player);
+                            }
                                _allPlayers.put(player.getName().toLowerCase(), player);
                        }
                }
Index: C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/model/L2Clan.java
===================================================================
--- C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/model/L2Clan.java        (revision 3338)
+++ C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/model/L2Clan.java        (working copy)
@@ -1,5 +1,4 @@
 /*
- * 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.
@@ -1896,6 +1895,17 @@
                activeChar.sendPacket(new SystemMessage(SystemMessageId.YOU_HAVE_INVITED_THE_WRONG_TARGET));
            return false;
        }
+               
+                if (activeChar.isffaction() && target.issfaction() && Config.FACTION_SYSTEM_ENABLE)
+                {
+                    activeChar.sendPacket(new SystemMessage(SystemMessageId.YOU_HAVE_INVITED_THE_WRONG_TARGET));
+                    return false;
+                }
+                if (activeChar.issfaction() && target.isffaction() && Config.FACTION_SYSTEM_ENABLE)
+                {
+                    activeChar.sendPacket(new SystemMessage(SystemMessageId.YOU_HAVE_INVITED_THE_WRONG_TARGET));
+                    return false;
+                }
                if (activeChar.getObjectId() == target.getObjectId())
                {
                        activeChar.sendPacket(new SystemMessage(SystemMessageId.CANNOT_INVITE_YOURSELF));
Index: C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/lib/Log.java
===================================================================
--- C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/lib/Log.java        (revision 3338)
+++ C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/lib/Log.java        (working copy)
@@ -126,4 +126,13 @@
                _log.warning("Assertion error [" + cmt + "]");
                Thread.dumpStack();
        }
+
+        /**
+    * @param string
+    */
+    public void warn(String string)
+    {
+            // TODO Auto-generated method stub
+           
+    }
 }
Index: C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/GameServer.java
===================================================================
--- C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/GameServer.java        (revision 3338)
+++ C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/GameServer.java        (working copy)
@@ -524,6 +524,7 @@
                _log.config("Maximum Numbers of Connected Players: " + Config.MAXIMUM_ONLINE_USERS);
                long serverLoadEnd = System.currentTimeMillis();
                _log.info("Server Loaded in " + ((serverLoadEnd - serverLoadStart) / 1000) + " seconds");
+               
        }
       
        public static void main(String[] args) throws Exception
@@ -557,5 +558,18 @@
                {
                        _log.info("Telnet server is currently disabled.");
                }
+                if (Config.FACTION_SYSTEM_ENABLE)
+                {
+                    System.out.println("####################################");
+                    System.out.println("##  Faction System is Activated.  ##");
+                    System.out.println("####################################");
+                }
+                else
+                {
+                    System.out.println("###################################");
+                    System.out.println("##  Faction System is Disabled.  ##");
+                    System.out.println("###################################");
+                }
+       
        }
 }
Index: C:/workspace/L2_GameServer/java/net/sf/l2j/Config.java
===================================================================
--- C:/workspace/L2_GameServer/java/net/sf/l2j/Config.java        (revision 3338)
+++ C:/workspace/L2_GameServer/java/net/sf/l2j/Config.java        (working copy)
@@ -585,8 +585,37 @@
        public static boolean OFFLINE_SET_NAME_COLOR;
        public static int OFFLINE_NAME_COLOR;
        public static boolean L2JMOD_ENABLE_MANA_POTIONS_SUPPORT;
+        public static boolean FACTION_SYSTEM_ENABLE;
+        public static int FACTION_SYSTEM_FIRST_FACTION_TITLE_COLOR;
+        public static int FACTION_SYSTEM_SECOND_FACTION_TITLE_COLOR;
+        public static String FACTION_SYSTEM_FIRST_FACTION_NAME;
+        public static String FACTION_SYSTEM_SECOND_FACTION_NAME;
+        public static boolean FACTION_SYSTEM_NEW_CHAR_ALLOW_ALT_SPAWN;
+        public static int FACTION_SYSTEM_NEW_CHAR_SPAWN_X;
+        public static int FACTION_SYSTEM_NEW_CHAR_SPAWN_Y;
+        public static int FACTION_SYSTEM_NEW_CHAR_SPAWN_Z;
+        public static int FACTION_SYSTEM_FIRST_FACTION_BASE_SPAWN_X;
+        public static int FACTION_SYSTEM_FIRST_FACTION_BASE_SPAWN_Y;
+        public static int FACTION_SYSTEM_FIRST_FACTION_BASE_SPAWN_Z;
+        public static int FACTION_SYSTEM_SECOND_FACTION_BASE_SPAWN_X;
+        public static int FACTION_SYSTEM_SECOND_FACTION_BASE_SPAWN_Y;
+        public static int FACTION_SYSTEM_SECOND_FACTION_BASE_SPAWN_Z;
+        public static boolean FACTION_SYSTEM_NEW_CHAR_LEVEL_75;
+        public static boolean FACTION_SYSTEM_NEW_CHAR_LEVEL_80;
+        public static boolean FACTION_SYSTEM_NEW_CHAR_LEVEL_85;
+    public static boolean FACTION_SYSTEM_ALLOW_TRADE_BETWEEN_FACTIONS;
+    public static boolean FACTION_SYSTEM_NEW_CHAR_SET_NOBLESSE;
+    public static boolean FACTION_SYSTEM_NEW_CHAR_SET_HERO;
+    public static int FACTION_SYSTEM_FIRST_FACTION_NAME_COLOR;
+    public static int FACTION_SYSTEM_SECOND_FACTION_NAME_COLOR;
+    public static int FACTION_SYSTEM_ALT_WAREHOUSE_FEE;
+    public static boolean FACTION_SYSTEM_ALLOW_REWARD_FOR_EACH_PVP;
+    public static int FACTION_SYSTEM_PVP_ITEM_REWARD_ID;
+    public static int FACTION_SYSTEM_PVP_ITEM_REWARD_AMOUNT;
+    public static int FACTION_SYSTEM_ANNOUNCE_DELAY;
+    public static boolean FACTION_SYSTEM_ALLOW_BUY_BETWEEN_FACTIONS;
+    public static boolean FACTION_SYSTEM_ALLOW_ALT_NEW_CHAR_SPAWN;
 
-
        //--------------------------------------------------
        // NPC Settings
        //--------------------------------------------------
@@ -1932,6 +1961,36 @@
                                        OFFLINE_NAME_COLOR = Integer.decode("0x" + L2JModSettings.getProperty("OfflineNameColor", "808080"));
 
                                        L2JMOD_ENABLE_MANA_POTIONS_SUPPORT = Boolean.parseBoolean(L2JModSettings.getProperty("EnableManaPotionSupport", "false"));
+                                        FACTION_SYSTEM_ENABLE = Boolean.parseBoolean(L2JModSettings.getProperty("FactionSystemEnable", "False"));
+                                        FACTION_SYSTEM_FIRST_FACTION_TITLE_COLOR = Integer.decode("0x" + L2JModSettings.getProperty("FirstFactionTitleColor", ""));
+                                        FACTION_SYSTEM_SECOND_FACTION_TITLE_COLOR = Integer.decode("0x" + L2JModSettings.getProperty("SecondFactionTitleColor", ""));
+                                        FACTION_SYSTEM_FIRST_FACTION_NAME = L2JModSettings.getProperty("FirstFactionName", "Villagers");
+                                        FACTION_SYSTEM_SECOND_FACTION_NAME = L2JModSettings.getProperty("SecondFactionName", "Pirates");
+                                        FACTION_SYSTEM_NEW_CHAR_ALLOW_ALT_SPAWN = Boolean.parseBoolean(L2JModSettings.getProperty("NewCharAltSpawn", "False"));
+                                        FACTION_SYSTEM_NEW_CHAR_SPAWN_X = Integer.parseInt(L2JModSettings.getProperty("NewCharSpawnX", "0"));
+                                        FACTION_SYSTEM_NEW_CHAR_SPAWN_Y = Integer.parseInt(L2JModSettings.getProperty("NewCharSpawnY", "0"));
+                                        FACTION_SYSTEM_NEW_CHAR_SPAWN_Z = Integer.parseInt(L2JModSettings.getProperty("NewCharSpawnZ", "0"));
+                                        FACTION_SYSTEM_FIRST_FACTION_BASE_SPAWN_X = Integer.parseInt(L2JModSettings.getProperty("FirstFactionBaseSpawnX", "0"));
+                                        FACTION_SYSTEM_FIRST_FACTION_BASE_SPAWN_Y = Integer.parseInt(L2JModSettings.getProperty("FirstFactionBaseSpawnY", "0"));
+                                        FACTION_SYSTEM_FIRST_FACTION_BASE_SPAWN_Z = Integer.parseInt(L2JModSettings.getProperty("FirstFactionBaseSpawnZ", "0"));
+                                        FACTION_SYSTEM_SECOND_FACTION_BASE_SPAWN_X = Integer.parseInt(L2JModSettings.getProperty("SecondFactionBaseSpawnX", "0"));
+                                        FACTION_SYSTEM_SECOND_FACTION_BASE_SPAWN_Y = Integer.parseInt(L2JModSettings.getProperty("SecondFactionBaseSpawnY", "0"));
+                                        FACTION_SYSTEM_SECOND_FACTION_BASE_SPAWN_Z = Integer.parseInt(L2JModSettings.getProperty("SecondFactionBaseSpawnZ", "0"));
+                                        FACTION_SYSTEM_NEW_CHAR_LEVEL_75 = Boolean.parseBoolean(L2JModSettings.getProperty("NewCharLevel75", "False"));
+                                        FACTION_SYSTEM_NEW_CHAR_LEVEL_80 = Boolean.parseBoolean(L2JModSettings.getProperty("NewCharLevel80", "False"));
+                                        FACTION_SYSTEM_NEW_CHAR_LEVEL_85 = Boolean.parseBoolean(L2JModSettings.getProperty("NewCharLevel85", "False"));
+                                        FACTION_SYSTEM_ALLOW_TRADE_BETWEEN_FACTIONS = Boolean.parseBoolean(L2JModSettings.getProperty("AllowTradeBetweenFactions", "False"));
+                                        FACTION_SYSTEM_NEW_CHAR_SET_NOBLESSE = Boolean.parseBoolean(L2JModSettings.getProperty("NewCharSetNoblesse", "False"));
+                                        FACTION_SYSTEM_NEW_CHAR_SET_HERO = Boolean.parseBoolean(L2JModSettings.getProperty("NewCharSetHero", "False"));
+                                        FACTION_SYSTEM_FIRST_FACTION_NAME_COLOR = Integer.decode("0x" + L2JModSettings.getProperty("FirstFactionNameColor", ""));
+                                        FACTION_SYSTEM_SECOND_FACTION_NAME_COLOR = Integer.decode("0x" + L2JModSettings.getProperty("SecondFactionNameColor", ""));
+                                        FACTION_SYSTEM_ALT_WAREHOUSE_FEE = Integer.parseInt(L2JModSettings.getProperty("AltWarehouseDepositFee", "0"));
+                                        FACTION_SYSTEM_ALLOW_REWARD_FOR_EACH_PVP = Boolean.parseBoolean(L2JModSettings.getProperty("AllowPvPReward", "False"));
+                                        FACTION_SYSTEM_PVP_ITEM_REWARD_ID = Integer.parseInt(L2JModSettings.getProperty("PvPRewardID", "57"));
+                                        FACTION_SYSTEM_PVP_ITEM_REWARD_AMOUNT = Integer.parseInt(L2JModSettings.getProperty("PvPRewardAmount", "1"));
+                                        FACTION_SYSTEM_ANNOUNCE_DELAY = Integer.parseInt(L2JModSettings.getProperty("AnnouncePlayersDelay", ""));
+                                        FACTION_SYSTEM_ALLOW_BUY_BETWEEN_FACTIONS = Boolean.parseBoolean(L2JModSettings.getProperty("AllowBuyBetweenFactions", "False"));
+                                        FACTION_SYSTEM_ALLOW_ALT_NEW_CHAR_SPAWN = Boolean.parseBoolean(L2JModSettings.getProperty("AllowAltSpawnForNewChars", "False"));
                                }
                                catch (Exception e)
                                {

Datapack side:

Código:

Index: C:/workspace/datapack_development/sql/characters.sql
===================================================================
--- C:/workspace/datapack_development/sql/characters.sql        (revision 6451)
+++ C:/workspace/datapack_development/sql/characters.sql        (working copy)
@@ -57,6 +57,8 @@
  `clan_create_expiry_time` BIGINT UNSIGNED NOT NULL DEFAULT 0,
  `death_penalty_level` SMALLINT UNSIGNED NOT NULL DEFAULT 0,
  `bookmarkslot` SMALLINT UNSIGNED NOT NULL DEFAULT 0,
+  `ffaction` TINYINT UNSIGNED NOT NULL DEFAULT 0,
+  `sfaction` TINYINT UNSIGNED NOT NULL DEFAULT 0,
  PRIMARY KEY (`charId`),
  KEY `clanid` (`clanid`)
 );
\ No newline at end of file
Index: C:/workspace/datapack_development/data/scripts/handlers/skillhandlers/SummonFriend.java
===================================================================
--- C:/workspace/datapack_development/data/scripts/handlers/skillhandlers/SummonFriend.java        (revision 6451)
+++ C:/workspace/datapack_development/data/scripts/handlers/skillhandlers/SummonFriend.java        (working copy)
@@ -28,6 +28,7 @@
 import net.sf.l2j.gameserver.model.entity.Instance;
 import net.sf.l2j.gameserver.model.entity.TvTEvent;
 import net.sf.l2j.gameserver.network.SystemMessageId;
+import net.sf.l2j.gameserver.network.serverpackets.ActionFailed;
 import net.sf.l2j.gameserver.network.serverpackets.ConfirmDlg;
 import net.sf.l2j.gameserver.network.serverpackets.SystemMessage;
 import net.sf.l2j.gameserver.templates.skills.L2SkillType;
@@ -66,7 +67,18 @@
                        summonerChar.sendPacket(new SystemMessage(SystemMessageId.YOUR_TARGET_IS_IN_AN_AREA_WHICH_BLOCKS_SUMMONING));
                        return false;                       
                }
-               
+                if (summonerChar.isffaction())
+                {
+                    summonerChar.sendMessage("You Cannot Use This Skill.");
+                        summonerChar.sendPacket(new SystemMessage(SystemMessageId.YOUR_TARGET_IS_IN_AN_AREA_WHICH_BLOCKS_SUMMONING));
+                    return false;
+                }
+                if (summonerChar.issfaction())
+                {
+                    summonerChar.sendMessage("You Cannot Use This Skill.");
+                        summonerChar.sendPacket(new SystemMessage(SystemMessageId.YOUR_TARGET_IS_IN_AN_AREA_WHICH_BLOCKS_SUMMONING));
+                    return false;
+                }
                if (summonerChar.isInsideZone(L2Character.ZONE_NOSUMMONFRIEND) || summonerChar.isFlyingMounted())
                {
                        summonerChar.sendPacket(new SystemMessage(SystemMessageId.YOUR_TARGET_IS_IN_AN_AREA_WHICH_BLOCKS_SUMMONING));
Index: C:/workspace/datapack_development/data/scripts/handlers/usercommandhandlers/Escape.java
===================================================================
--- C:/workspace/datapack_development/data/scripts/handlers/usercommandhandlers/Escape.java        (revision 6451)
+++ C:/workspace/datapack_development/data/scripts/handlers/usercommandhandlers/Escape.java        (working copy)
@@ -56,6 +56,14 @@
                        return false;
                }
               
+                if (Config.FACTION_SYSTEM_ENABLE)
+                {
+                    if (activeChar.isffaction() || activeChar.issfaction())
+                    {
+                        activeChar.sendMessage("You Cannot Use This Command.");
+                        return false;
+                    }
+                }
               
                int unstuckTimer = (activeChar.getAccessLevel().isGm() ? 1000 : Config.UNSTUCK_INTERVAL * 1000);

O destaque em vermelho é para você mudar de acordo com o nome que você colocar nas configurações.

NPC Faction:

Código:

INSERT INTO `npc` VALUES(99996,31324,'Laura',1,'Faction Manager',1,'NPC.a_casino_FDarkElf',8,23,70,'female','L2Faction',40,2444,2444,0,0,10,10,10,10,10,10,0,0,500,500,500,500,278,0,333,9644,0,NULL,28,120,'',0,0,0,'LAST_HIT',0,0,0,'balanced','false');
..\data\html\mods\Faction:

delevel.htm
Código HTML:

<html><title>Faction Manager</title>
<body>

<center>

<font color="LEVEL">Delevel Services</font><br>
<br>

<a action="bypass -h npc_%objectId%_delevel">Delevel Me!</a><br>
<br>
</center>

</body>

</html>

faction.htm
Código HTML:

<html><title>Faction Manager</title>
<body>

<center>

<font color="LEVEL">Choose Your Faction</font><br>
<br>

<a action="bypass -h npc_%objectId%_setffaction">Join The First Faction</a><br>
<br>
<a action="bypass -h npc_%objectId%_setsfaction">Join The Second Faction</a><br>
<br>
<br>
<font color="LEVEL">Other Services</font><br>
<br>
<a action="bypass -h npc_%objectId%_setnoblesse">Gain Noblesse Status</a><br>
<br>
<a action="bypass -h npc_%objectId%_Link Faction/levelup.htm">Level Up Services</a><br>
<br>
<a action="bypass -h npc_%objectId%_Link Faction/delevel.htm">DeLevel Services</a><br>
<br>
</center>

</body>

</html>

levelup:
Código HTML:

<html><title>Faction Manager</title>
<body>

<center>

<font color="LEVEL">Level Up Services</font><br>
<br>

<a action="bypass -h npc_%objectId%_levelup">Level Me Up!</a><br>
<br>
</center>

</body>

</html>

Créditos: Stefoulis15

New 20-07-2010 03:34 PM

Quando tento dar spawn no NPC, ele fala que não encontrou o alvo.

Ja verifiqueia a tabela do NPC e esta tudo certo.

O que fazer ??

CavaleiroNegro 20-07-2010 09:11 PM

@New :

Ativo o mod ? O mod esta carregando no GS corretamente sem nenhum erro ?

New 21-07-2010 09:22 AM

A unica coisa que aparece no GS e:
Citação:

Class no found L2FactionInstance
sou novo com java. tenta me ajudar :idea:

CavaleiroNegro 21-07-2010 12:47 PM

@New :

Bom deu poblema mesmo,quando voce vai compilar aparece algum alerta ? Erro ou algo do tipo ?

New 22-07-2010 03:47 PM

Aparece nada manim...

New 30-07-2010 03:51 PM

Galera estou tendo esses Erros no Game Server...

Citação:

----------
1. WARNING in D:\ServerByNew\gameserver Teste\gameserver\data\scripts\handlers\skillhandle
rs\SummonFriend.java (at line 31)
import net.sf.l2j.gameserver.network.serverpackets.Action Failed;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^
The import net.sf.l2j.gameserver.network.serverpackets.Action Failed is never used
----------

Citação:

Failed loading character.
java.sql.SQLException: Column 'ffaction' not found.
at com.mysql.jdbc.SQLError.createSQLException(SQLErro r.java:1055)
at com.mysql.jdbc.SQLError.createSQLException(SQLErro r.java:956)
at com.mysql.jdbc.SQLError.createSQLException(SQLErro r.java:926)
at com.mysql.jdbc.ResultSetImpl.findColumn(ResultSetI mpl.java:1144)
at com.mysql.jdbc.ResultSetImpl.getInt(ResultSetImpl. java:2793)
at com.mchange.v2.c3p0.impl.NewProxyResultSet.getInt( NewProxyResultSet.java:2573)
at net.sf.l2j.gameserver.model.actor.instance.L2PcIns tance.restore(L2PcInstance.ja
va:7189)
at net.sf.l2j.gameserver.model.actor.instance.L2PcIns tance.load(L2PcInstance.java:
1066)
at net.sf.l2j.gameserver.network.L2GameClient.loadCha rFromDisk(L2GameClient.java:4
78)
at net.sf.l2j.gameserver.network.clientpackets.Charac terSelect.runImpl(CharacterSe
lect.java:87)
at net.sf.l2j.gameserver.network.clientpackets.L2Game ClientPacket.run(L2GameClient
Packet.java:76)
at java.util.concurrent.ThreadPoolExecutor$Worker.run Task(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run (Unknown Source)
at java.lang.Thread.run(Unknown Source)

Could not store char base data: java.sql.SQLException: Parameter index out of range (55 >
number of parameters, which is 54).


Donator 06-01-2012 03:26 PM

al haber un desvalance la mayoria se iria al mejor team dejando casi sin gente al otro team lo que haria aburrido el event

leonardoalves 20-05-2012 04:40 PM

ele pega no interlude? muito bom esse faction system. Se pegar vou tentar adapta-lo.

machucaxd 26-11-2012 12:32 AM

Eu tenho um erro e não conseguia resolver, você poderia me ajudar?


[Somente Usuários Registrados Podem Visualizar os Links Desta PáginaClique aqui para se Registrar] :sad:


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

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