Noticias:

No tienes permiso para ver los enlaces. Para poder verlos Registrate o Conectate.

Menú Principal

Faction System By Stefoulis15

Iniciado por Swarlog, Ago 03, 2025, 01:28 AM

Tema anterior - Siguiente tema

Swarlog

CitarCORE:

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)
 				{

CitarDATA:

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);

NPC

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');

HTML

Crear la carpeta en el siguiente directorio: "..\data\html\mods\Faction"

delevel.htm

<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

<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.htm

<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>



No tienes permiso para ver los enlaces. Para poder verlos Registrate o Conectate.Hola Amigo, creo que le faltaba esta parte al parche , seguro deberán adaptar algo; lo dejo por si alguno le interesa,

/*
 * 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 2, 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, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
 * 02111-1307, USA.
 *
 * http://www.gnu.org/copyleft/gpl.html
 */
package com.l2j.gameserver.model.actor.instance;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.StringTokenizer;
import java.util.logging.Logger;

import com.l2j.L2Config;
import com.l2j.L2DatabaseFactory;
import com.l2j.gameserver.ai.CtrlIntention;
import com.l2j.gameserver.model.L2World;
import com.l2j.gameserver.network.serverpackets.ActionFailed;
import com.l2j.gameserver.network.serverpackets.MyTargetSelected;
import com.l2j.gameserver.network.serverpackets.NpcHtmlMessage;
import com.l2j.gameserver.network.serverpackets.SocialAction;
import com.l2j.gameserver.network.serverpackets.ValidateLocation;
import com.l2j.gameserver.templates.actors.L2NpcTemplate;
import com.l2j.tools.Rnd;

/**
 * 
 * @Last_Author Stefoulis15
 *
 */

public class L2FactionInstance extends L2NpcInstance
{
    public L2FactionInstance(int objectId, L2NpcTemplate template)
    {
    super(objectId, template);
    }

    private final static Logger _log = Logger.getLogger(L2FactionInstance.class.getName());

    @Override
    public void onBypassFeedback(L2PcInstance player, String command)
    {
    player.sendPacket(ActionFailed.STATIC_PACKET);
    StringTokenizer st = new StringTokenizer(command, " ");
    String actualCommand = st.nextToken();
    @SuppressWarnings("unused")
	String val = "";
    if (st.countTokens() >= 1)
    {
        val = st.nextToken();
    }
    
    else if (actualCommand.equalsIgnoreCase("setnoblesse"))
    {
       if(!(player instanceof L2PcInstance))
             return;
         L2PcInstance activeChar = player;
         if(activeChar.isNoble())
             activeChar.sendMessage("You Are Already A Noblesse!");
         else
         {
             activeChar.setNoble(true);
             activeChar.sendMessage("You Are Now a Noble,You Are Granted With Noblesse Status , And Noblesse Skills.");
             activeChar.broadcastUserInfo();
             activeChar.getInventory().addItem("Tiara", 7694, 1, activeChar, null);
         }
    }
    else if (actualCommand.equalsIgnoreCase("setgood"))
    {
        setTarget(player);
        if (player.isGood())
        {
        player.sendMessage("You Are Already a " + L2Config.ARCHID_GVE_NAME_TEAM_GOOD + " Faction Member");
        player.sendPacket(ActionFailed.STATIC_PACKET);
        } 
        else
        {
        if (player.isEvil())
        {
            player.sendMessage("You Can't Change Faction.");
            player.sendPacket(ActionFailed.STATIC_PACKET);
        } 
        else
        {
            int getevils = L2World.getInstance().getAllevilPlayers().size();
            int getgoods = L2World.getInstance().getAllgoodPlayers().size();
            if (getgoods > getevils)
            {
            player.sendMessage("You Can't Use "+ L2Config.ARCHID_GVE_NAME_TEAM_GOOD + " Faction, Because The Online Members of " + L2Config.ARCHID_GVE_NAME_TEAM_EVIL + " Faction , Is Smaller.");
            player.sendPacket(ActionFailed.STATIC_PACKET);
            } 
            else
            {
            player.setGood(true);
            Connection connection = null;
            try
            {
                connection = L2DatabaseFactory.getInstance().getConnection();
                PreparedStatement statement = connection.prepareStatement("SELECT obj_Id FROM characters where char_name=?");
                statement.setString(1, player.getName());
                ResultSet rset = statement.executeQuery();
                int objId = 0;
                if (rset.next())
                {
                objId = rset.getInt(1);
                }
                rset.close();
                statement.close();
                if (objId == 0)
                {
                connection.close();
                return;
                }
                statement = connection.prepareStatement("UPDATE characters SET good=1 WHERE obj_Id=?");
                statement.setInt(1, objId);
                statement.execute();
                statement.close();
                connection.close();
            } 
            catch (Exception e)
            {
                _log.info("could not set good status of char:");
            } 
            finally
            {
                try
                {
                connection.close();
                } 
                catch (Exception e)
                {
                }
            }
            _log.info("Archid GvE System : Player " + player.getName() + " Chosen The " + L2Config.ARCHID_GVE_NAME_TEAM_GOOD + " Faction");
            if (player.isGood() == true)
            {
                player.broadcastUserInfo();
                player.sendMessage("You Are Now a Member of The " + L2Config.ARCHID_GVE_NAME_TEAM_GOOD + " Faction ");
                player.getAppearance().setNameColor(L2Config.ARCHID_GVE_COLOR_NAME_GOOD);
                player.teleToLocation(L2Config.ARCHID_GVE_GOOD_X, L2Config.ARCHID_GVE_GOOD_Y, L2Config.ARCHID_GVE_GOOD_Z);
            }
            }
        }
        }
    } 
    else if (actualCommand.equalsIgnoreCase("setevil"))
    {
        setTarget(player);
        if (player.isEvil())
        {
        player.sendMessage("You Are Already a " + L2Config.ARCHID_GVE_NAME_TEAM_EVIL + " Faction Member");
        player.sendPacket(ActionFailed.STATIC_PACKET);
        } 
        else
        {
        if (player.isGood())
        {
            player.sendMessage("You Can't Change Faction.");
            player.sendPacket(ActionFailed.STATIC_PACKET);
        } 
        else
        {
            int getevils = L2World.getInstance().getAllevilPlayers().size();
            int getgoods = L2World.getInstance().getAllgoodPlayers().size();
            if (getevils > getgoods)
            {
            player.sendMessage("You Can't Use " + L2Config.ARCHID_GVE_NAME_TEAM_EVIL + " Faction , Because The Online Members of " + L2Config.ARCHID_GVE_NAME_TEAM_EVIL + " Faction , Is Smaller");
            player.sendPacket(ActionFailed.STATIC_PACKET);
            } 
            else
            {
            player.setEvil(true);
            Connection connection = null;
            try
            {
                connection = L2DatabaseFactory.getInstance().getConnection();
                PreparedStatement statement = connection.prepareStatement("SELECT obj_Id FROM characters where char_name=?");
                statement.setString(1, player.getName());
                ResultSet rset = statement.executeQuery();
                int objId = 0;
                if (rset.next())
                {
                objId = rset.getInt(1);
                }
                rset.close();
                statement.close();
                if (objId == 0)
                {
                connection.close();
                return;
                }
                statement = connection.prepareStatement("UPDATE characters SET evil=1 WHERE obj_Id=?");
                statement.setInt(1, objId);
                statement.execute();
                statement.close();
                connection.close();
            } 
            catch (Exception e)
            {
                _log.info("could not set evil status of char:");
            } 
            finally
            {
                try
                {
                connection.close();
                } 
                catch (Exception e)
                {
                }
            }
            _log.info("Archid GvE System : Player " + player.getName() + " Chosen The " + L2Config.ARCHID_GVE_NAME_TEAM_EVIL + " Faction");
            if (player.isEvil() == true)
            {
                player.broadcastUserInfo();
                player.sendMessage("You Are Now a Member of The " + L2Config.ARCHID_GVE_NAME_TEAM_EVIL + " Faction ");
                player.getAppearance().setNameColor(L2Config.ARCHID_GVE_COLOR_NAME_EVIL);
                player.teleToLocation(L2Config.ARCHID_GVE_EVIL_X, L2Config.ARCHID_GVE_EVIL_Y, L2Config.ARCHID_GVE_EVIL_Z);
            }
            }
        }
        }
    } 
    else
    {
        super.onBypassFeedback(player, command);
    }
    }

    @Override
    public void onAction(L2PcInstance player)
    {
    if (this != player.getTarget())
    {
        player.setTarget(this);
        player.sendPacket(new MyTargetSelected(getObjectId(), player
            .getLevel()
            - getLevel()));
        player.sendPacket(new ValidateLocation(this));
    } 
    else if (isInsideRadius(player, INTERACTION_DISTANCE, false, false))
    {
        SocialAction sa = new SocialAction(getObjectId(), Rnd.get(8));
        broadcastPacket(sa);
        player.setLastFolkNPC(this);
        showMessageWindow(player);
        player.sendPacket(ActionFailed.STATIC_PACKET);
    } else
    {
        player.getAI().setIntention(CtrlIntention.AI_INTENTION_INTERACT,
            this);
        player.sendPacket(ActionFailed.STATIC_PACKET);
    }
    }

    private void showMessageWindow(L2PcInstance player)
    {
    NpcHtmlMessage html = new NpcHtmlMessage(1);
    html.setFile("data/html/mods/AvD_faction.htm");
    html.replace("%objectId%", String.valueOf(getObjectId()));
    html.replace("%npcname%", getName());
    player.sendPacket(html);
    }
}

Un saludo.  ???