瀏覽代碼

Personal Fame points system, thx Charus for some parts. Requires [DP5889]

Gigiikun 16 年之前
父節點
當前提交
4d25198bc4

+ 22 - 0
L2_GameServer/java/config/Character.properties

@@ -310,6 +310,28 @@ AltKarmaPlayerCanTrade = True
 # Default: True
 AltKarmaPlayerCanUseWareHouse = True
 
+# ---------------------------------------------------------------------------
+# Fame
+# ---------------------------------------------------------------------------
+# The maximum number of Fame points a player can have
+# Default: 65535
+MaxPersonalFamePoints = 65535
+
+# How frequently the player gets Fame points while in a Fortress Siege zone
+# Default: 300s (5 min)
+FortressZoneFameTaskFrequency = 300
+
+# How much Fame aquired while in a Fortress Siege Zone
+# Default: 31
+FortressZoneFameAquirePoints = 31
+
+# How frequently the player gets Fame points while in a Castle Siege zone
+# Default: 300s (5 min)
+CastleZoneFameTaskFrequency = 300
+
+# How much Fame aquired while in a Castle Siege Zone
+# Default: 125
+CastleZoneFameAquirePoints = 125
 
 # ---------------------------------------------------------------------------
 # Crafting

+ 15 - 0
L2_GameServer/java/net/sf/l2j/Config.java

@@ -151,6 +151,11 @@ public final class Config
     public static boolean 	ALT_GAME_KARMA_PLAYER_CAN_USE_GK;
     public static boolean 	ALT_GAME_KARMA_PLAYER_CAN_TRADE;
     public static boolean 	ALT_GAME_KARMA_PLAYER_CAN_USE_WAREHOUSE;
+    public static int		MAX_PERSONAL_FAME_POINTS;
+    public static int		FORTRESS_ZONE_FAME_TASK_FREQUENCY;
+    public static int		FORTRESS_ZONE_FAME_AQUIRE_POINTS;
+    public static int		CASTLE_ZONE_FAME_TASK_FREQUENCY;
+    public static int		CASTLE_ZONE_FAME_AQUIRE_POINTS;
     public static boolean	IS_CRAFTING_ENABLED;
     public static int		DWARF_RECIPE_LIMIT;
     public static int		COMMON_RECIPE_LIMIT;
@@ -1322,6 +1327,11 @@ public final class Config
 	                ALT_GAME_KARMA_PLAYER_CAN_USE_GK	= Boolean.parseBoolean(Character.getProperty("AltKarmaPlayerCanUseGK", "false"));
 	                ALT_GAME_KARMA_PLAYER_CAN_TRADE		= Boolean.parseBoolean(Character.getProperty("AltKarmaPlayerCanTrade", "true"));
 	                ALT_GAME_KARMA_PLAYER_CAN_USE_WAREHOUSE	= Boolean.parseBoolean(Character.getProperty("AltKarmaPlayerCanUseWareHouse", "true"));
+	                MAX_PERSONAL_FAME_POINTS			= Integer.parseInt(Character.getProperty("MaxPersonalFamePoints","65535"));
+	                FORTRESS_ZONE_FAME_TASK_FREQUENCY	= Integer.parseInt(Character.getProperty("FortressZoneFameTaskFrequency","300"));
+	                FORTRESS_ZONE_FAME_AQUIRE_POINTS	= Integer.parseInt(Character.getProperty("FortressZoneFameAquirePoints","31"));
+	                CASTLE_ZONE_FAME_TASK_FREQUENCY	= Integer.parseInt(Character.getProperty("CastleZoneFameTaskFrequency","300"));
+	                CASTLE_ZONE_FAME_AQUIRE_POINTS	= Integer.parseInt(Character.getProperty("CastleZoneFameAquirePoints","125"));
 	                IS_CRAFTING_ENABLED					= Boolean.parseBoolean(Character.getProperty("CraftingEnabled", "true"));
 	                DWARF_RECIPE_LIMIT					= Integer.parseInt(Character.getProperty("DwarfRecipeLimit","50"));
 	                COMMON_RECIPE_LIMIT					= Integer.parseInt(Character.getProperty("CommonRecipeLimit","50"));
@@ -2265,6 +2275,11 @@ public final class Config
         else if (pName.equalsIgnoreCase("AltKarmaPlayerCanTeleport")) ALT_GAME_KARMA_PLAYER_CAN_TELEPORT = Boolean.parseBoolean(pValue);
         else if (pName.equalsIgnoreCase("AltKarmaPlayerCanTrade")) ALT_GAME_KARMA_PLAYER_CAN_TRADE = Boolean.parseBoolean(pValue);
         else if (pName.equalsIgnoreCase("AltKarmaPlayerCanUseWareHouse")) ALT_GAME_KARMA_PLAYER_CAN_USE_WAREHOUSE = Boolean.parseBoolean(pValue);
+        else if (pName.equalsIgnoreCase("MaxPersonalFamePoints")) MAX_PERSONAL_FAME_POINTS = Integer.parseInt(pValue);
+        else if (pName.equalsIgnoreCase("FortressZoneFameTaskFrequency")) FORTRESS_ZONE_FAME_TASK_FREQUENCY = Integer.parseInt(pValue);
+        else if (pName.equalsIgnoreCase("FortressZoneFameAquirePoints")) FORTRESS_ZONE_FAME_AQUIRE_POINTS = Integer.parseInt(pValue);
+        else if (pName.equalsIgnoreCase("CastleZoneFameTaskFrequency")) CASTLE_ZONE_FAME_TASK_FREQUENCY = Integer.parseInt(pValue);
+        else if (pName.equalsIgnoreCase("CastleZoneFameAquirePoints")) CASTLE_ZONE_FAME_AQUIRE_POINTS = Integer.parseInt(pValue);
         else if (pName.equalsIgnoreCase("AltCastleForDawn")) ALT_GAME_CASTLE_DAWN = Boolean.parseBoolean(pValue);
         else if (pName.equalsIgnoreCase("AltCastleForDusk")) ALT_GAME_CASTLE_DUSK = Boolean.parseBoolean(pValue);
         else if (pName.equalsIgnoreCase("AltRequireClanCastle")) ALT_GAME_REQUIRE_CLAN_CASTLE = Boolean.parseBoolean(pValue);

+ 27 - 0
L2_GameServer/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminEditChar.java

@@ -71,6 +71,7 @@ public class AdminEditChar implements IAdminCommandHandler
 	{
 		"admin_edit_character", "admin_current_player", "admin_nokarma", // this is to remove karma from selected char...
 		"admin_setkarma", // sets karma of target char to any amount. //setkarma <karma>
+		"admin_setfame", // sets fame of target char to any amount. //setfame <fame>
 		"admin_character_list", //same as character_info, kept for compatibility purposes
 		"admin_character_info", //given a player name, displays an information window
 		"admin_show_characters",//list of characters
@@ -182,6 +183,32 @@ public class AdminEditChar implements IAdminCommandHandler
 				activeChar.sendMessage("Usage: //setkarma <new_karma_value>");
 			}
 		}
+		else if (command.startsWith("admin_setfame"))
+		{
+			try
+			{
+				String val = command.substring(15);
+				int fame = Integer.parseInt(val);
+				L2Object target = activeChar.getTarget();
+				if (target instanceof L2PcInstance)
+				{
+					L2PcInstance player = (L2PcInstance) target;
+					player.setFame(fame);
+					player.sendPacket(new UserInfo(player));
+					player.sendMessage("A GM changed your Reputation points to " + fame);
+				}
+				else
+				{
+					activeChar.sendPacket(new SystemMessage(SystemMessageId.INCORRECT_TARGET));
+				}
+			}
+			catch (Exception e)
+			{
+				if (Config.DEVELOPER)
+					_log.warning("Set Fame error: " + e);
+				activeChar.sendMessage("Usage: //setfame <new_fame_value>");
+			}
+		}
 		else if (command.startsWith("admin_save_modifications"))
 		{
 			try

+ 98 - 54
L2_GameServer/java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java

@@ -240,9 +240,9 @@ public final class L2PcInstance extends L2PlayableInstance
 	private static final String DELETE_SKILL_SAVE = "DELETE FROM character_skills_save WHERE charId=? AND class_index=?";
 
 	// Character Character SQL String Definitions:
-    private static final String INSERT_CHARACTER = "INSERT INTO characters (account_name,charId,char_name,level,maxHp,curHp,maxCp,curCp,maxMp,curMp,face,hairStyle,hairColor,sex,exp,sp,karma,pvpkills,pkkills,clanid,race,classid,deletetime,cancraft,title,accesslevel,online,isin7sdungeon,clan_privs,wantspeace,base_class,newbie,nobless,power_grade,last_recom_date) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
-	private static final String UPDATE_CHARACTER = "UPDATE characters SET level=?,maxHp=?,curHp=?,maxCp=?,curCp=?,maxMp=?,curMp=?,face=?,hairStyle=?,hairColor=?,heading=?,x=?,y=?,z=?,exp=?,expBeforeDeath=?,sp=?,karma=?,pvpkills=?,pkkills=?,rec_have=?,rec_left=?,clanid=?,race=?,classid=?,deletetime=?,title=?,accesslevel=?,online=?,isin7sdungeon=?,clan_privs=?,wantspeace=?,base_class=?,onlinetime=?,punish_level=?,punish_timer=?,newbie=?,nobless=?,power_grade=?,subpledge=?,last_recom_date=?,lvl_joined_academy=?,apprentice=?,sponsor=?,varka_ketra_ally=?,clan_join_expiry_time=?,clan_create_expiry_time=?,char_name=?,death_penalty_level=? WHERE charId=?";
-    private static final String RESTORE_CHARACTER = "SELECT account_name, charId, char_name, level, maxHp, curHp, maxCp, curCp, maxMp, curMp, face, hairStyle, hairColor, sex, heading, x, y, z, exp, expBeforeDeath, sp, karma, pvpkills, pkkills, clanid, race, classid, deletetime, cancraft, title, rec_have, rec_left, accesslevel, online, char_slot, lastAccess, clan_privs, wantspeace, base_class, onlinetime, isin7sdungeon, punish_level, punish_timer, newbie, nobless, power_grade, subpledge, last_recom_date, lvl_joined_academy, apprentice, sponsor, varka_ketra_ally,clan_join_expiry_time,clan_create_expiry_time,death_penalty_level FROM characters WHERE charId=?";
+    private static final String INSERT_CHARACTER = "INSERT INTO characters (account_name,charId,char_name,level,maxHp,curHp,maxCp,curCp,maxMp,curMp,face,hairStyle,hairColor,sex,exp,sp,karma,fame,pvpkills,pkkills,clanid,race,classid,deletetime,cancraft,title,accesslevel,online,isin7sdungeon,clan_privs,wantspeace,base_class,newbie,nobless,power_grade,last_recom_date) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
+	private static final String UPDATE_CHARACTER = "UPDATE characters SET level=?,maxHp=?,curHp=?,maxCp=?,curCp=?,maxMp=?,curMp=?,face=?,hairStyle=?,hairColor=?,heading=?,x=?,y=?,z=?,exp=?,expBeforeDeath=?,sp=?,karma=?,fame=?,pvpkills=?,pkkills=?,rec_have=?,rec_left=?,clanid=?,race=?,classid=?,deletetime=?,title=?,accesslevel=?,online=?,isin7sdungeon=?,clan_privs=?,wantspeace=?,base_class=?,onlinetime=?,punish_level=?,punish_timer=?,newbie=?,nobless=?,power_grade=?,subpledge=?,last_recom_date=?,lvl_joined_academy=?,apprentice=?,sponsor=?,varka_ketra_ally=?,clan_join_expiry_time=?,clan_create_expiry_time=?,char_name=?,death_penalty_level=? WHERE charId=?";
+    private static final String RESTORE_CHARACTER = "SELECT account_name, charId, char_name, level, maxHp, curHp, maxCp, curCp, maxMp, curMp, face, hairStyle, hairColor, sex, heading, x, y, z, exp, expBeforeDeath, sp, karma, fame, pvpkills, pkkills, clanid, race, classid, deletetime, cancraft, title, rec_have, rec_left, accesslevel, online, char_slot, lastAccess, clan_privs, wantspeace, base_class, onlinetime, isin7sdungeon, punish_level, punish_timer, newbie, nobless, power_grade, subpledge, last_recom_date, lvl_joined_academy, apprentice, sponsor, varka_ketra_ally,clan_join_expiry_time,clan_create_expiry_time,death_penalty_level FROM characters WHERE charId=?";
 
     // Character Subclass SQL String Definitions:
     private static final String RESTORE_CHAR_SUBCLASSES = "SELECT class_id,exp,sp,level,class_index FROM character_subclasses WHERE charId=? ORDER BY class_index ASC";
@@ -371,6 +371,7 @@ public final class L2PcInstance extends L2PlayableInstance
 	
 	/** The Fame of this L2PcInstance */
 	private int _fame;
+	private ScheduledFuture<?> _fameTask;
 
 	/** The Siege state of the L2PcInstance */
 	private byte _siegeState = 0;
@@ -2177,7 +2178,10 @@ public final class L2PcInstance extends L2PlayableInstance
 	 */
 	public void setFame(int fame)
 	{
-		_fame = fame;
+		if (fame > Config.MAX_PERSONAL_FAME_POINTS)
+			_fame = Config.MAX_PERSONAL_FAME_POINTS;
+		else
+			_fame = fame;
 	}
 
 	/**
@@ -5630,6 +5634,7 @@ public final class L2PcInstance extends L2PlayableInstance
 		stopPvpRegTask();
 		stopPunishTask(true);
 		stopSoulTask();
+		stopFameTask();
 	}
 
 	/**
@@ -6656,24 +6661,25 @@ public final class L2PcInstance extends L2PlayableInstance
 			statement.setLong(15, getExp());
 			statement.setInt(16, getSp());
 			statement.setInt(17, getKarma());
-			statement.setInt(18, getPvpKills());
-			statement.setInt(19, getPkKills());
-			statement.setInt(20, getClanId());
-			statement.setInt(21, getRace().ordinal());
-			statement.setInt(22, getClassId().getId());
-			statement.setLong(23, getDeleteTimer());
-			statement.setInt(24, hasDwarvenCraft() ? 1 : 0);
-			statement.setString(25, getTitle());
-			statement.setInt(26, getAccessLevel().getLevel());
-			statement.setInt(27, isOnline());
-            statement.setInt(28, isIn7sDungeon() ? 1 : 0);
-			statement.setInt(29, getClanPrivileges());
-			statement.setInt(30, getWantsPeace());
-			statement.setInt(31, getBaseClass());
-			statement.setInt(32, getNewbie());
-			statement.setInt(33, isNoble() ? 1 :0);
-			statement.setLong(34, 0);
-			statement.setLong(35,System.currentTimeMillis());
+			statement.setInt(18, getFame());
+			statement.setInt(19, getPvpKills());
+			statement.setInt(20, getPkKills());
+			statement.setInt(21, getClanId());
+			statement.setInt(22, getRace().ordinal());
+			statement.setInt(23, getClassId().getId());
+			statement.setLong(24, getDeleteTimer());
+			statement.setInt(25, hasDwarvenCraft() ? 1 : 0);
+			statement.setString(26, getTitle());
+			statement.setInt(27, getAccessLevel().getLevel());
+			statement.setInt(28, isOnline());
+            statement.setInt(29, isIn7sDungeon() ? 1 : 0);
+			statement.setInt(30, getClanPrivileges());
+			statement.setInt(31, getWantsPeace());
+			statement.setInt(32, getBaseClass());
+			statement.setInt(33, getNewbie());
+			statement.setInt(34, isNoble() ? 1 :0);
+			statement.setLong(35, 0);
+			statement.setLong(36,System.currentTimeMillis());
 			
 			statement.executeUpdate();
 			statement.close();
@@ -6743,6 +6749,7 @@ public final class L2PcInstance extends L2PlayableInstance
 				player.setHeading(rset.getInt("heading"));
 
 				player.setKarma(rset.getInt("karma"));
+				player.setFame(rset.getInt("fame"));
 				player.setPvpKills(rset.getInt("pvpkills"));
 				player.setPkKills(rset.getInt("pkkills"));
 				player.setOnlineTime(rset.getLong("onlinetime"));
@@ -7168,44 +7175,45 @@ public final class L2PcInstance extends L2PlayableInstance
 			statement.setLong(16, getExpBeforeDeath());
 			statement.setInt(17, sp);
 			statement.setInt(18, getKarma());
-			statement.setInt(19, getPvpKills());
-			statement.setInt(20, getPkKills());
-			statement.setInt(21, getRecomHave());
-			statement.setInt(22, getRecomLeft());
-			statement.setInt(23, getClanId());
-			statement.setInt(24, getRace().ordinal());
-			statement.setInt(25, getClassId().getId());
-			statement.setLong(26, getDeleteTimer());
-			statement.setString(27, getTitle());
-			statement.setInt(28, getAccessLevel().getLevel());
-			statement.setInt(29, isOnline());
-            statement.setInt(30, isIn7sDungeon() ? 1 : 0);
-			statement.setInt(31, getClanPrivileges());
-			statement.setInt(32, getWantsPeace());
-			statement.setInt(33, getBaseClass());
+			statement.setInt(19, getFame());
+			statement.setInt(20, getPvpKills());
+			statement.setInt(21, getPkKills());
+			statement.setInt(22, getRecomHave());
+			statement.setInt(23, getRecomLeft());
+			statement.setInt(24, getClanId());
+			statement.setInt(25, getRace().ordinal());
+			statement.setInt(26, getClassId().getId());
+			statement.setLong(27, getDeleteTimer());
+			statement.setString(28, getTitle());
+			statement.setInt(29, getAccessLevel().getLevel());
+			statement.setInt(30, isOnline());
+            statement.setInt(31, isIn7sDungeon() ? 1 : 0);
+			statement.setInt(32, getClanPrivileges());
+			statement.setInt(33, getWantsPeace());
+			statement.setInt(34, getBaseClass());
 
 			long totalOnlineTime = _onlineTime;
 
 			if (_onlineBeginTime > 0)
 				totalOnlineTime += (System.currentTimeMillis()-_onlineBeginTime)/1000;
 
-            statement.setLong(34, totalOnlineTime);
-            statement.setInt(35, getPunishLevel().value());
-            statement.setLong(36, getPunishTimer());
-            statement.setInt(37, getNewbie());
-            statement.setInt(38, isNoble() ? 1 : 0);
-            statement.setLong(39, getPowerGrade());
-            statement.setInt(40, getPledgeType());
-            statement.setLong(41,getLastRecomUpdate());
-            statement.setInt(42,getLvlJoinedAcademy());
-            statement.setLong(43,getApprentice());
-            statement.setLong(44,getSponsor());
-            statement.setInt(45, getAllianceWithVarkaKetra());
-			statement.setLong(46, getClanJoinExpiryTime());
-			statement.setLong(47, getClanCreateExpiryTime());
-			statement.setString(48, getName());
-			statement.setLong(49, getDeathPenaltyBuffLevel());
-            statement.setInt(50, getObjectId());
+            statement.setLong(35, totalOnlineTime);
+            statement.setInt(36, getPunishLevel().value());
+            statement.setLong(37, getPunishTimer());
+            statement.setInt(38, getNewbie());
+            statement.setInt(39, isNoble() ? 1 : 0);
+            statement.setLong(40, getPowerGrade());
+            statement.setInt(41, getPledgeType());
+            statement.setLong(42,getLastRecomUpdate());
+            statement.setInt(43,getLvlJoinedAcademy());
+            statement.setLong(44,getApprentice());
+            statement.setLong(45,getSponsor());
+            statement.setInt(46, getAllianceWithVarkaKetra());
+			statement.setLong(47, getClanJoinExpiryTime());
+			statement.setLong(48, getClanCreateExpiryTime());
+			statement.setString(49, getName());
+			statement.setLong(50, getDeathPenaltyBuffLevel());
+            statement.setInt(51, getObjectId());
 
 			statement.execute();
 			statement.close();
@@ -11557,6 +11565,42 @@ public final class L2PcInstance extends L2PlayableInstance
             _player.setPunishLevel(PunishLevel.NONE, 0);
         }
     }
+    public void startFameTask(long delay, int fameFixRate)
+    {
+    	if (getLevel() < 40 || getClassId().level() < 2)
+    		return;
+    	if (_fameTask == null)
+    		_fameTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new FameTask(this, fameFixRate), delay, delay);
+    }
+    
+    public void stopFameTask()
+    {
+        if (_fameTask != null)
+        {
+            _fameTask.cancel(false);
+            _fameTask = null;
+        }
+    }
+    
+    private class FameTask implements Runnable
+    {
+        L2PcInstance _player;
+        protected int _value;
+
+        protected FameTask(L2PcInstance player, int value)
+        {
+            _player = player;
+            _value = value;
+        }
+
+        public void run()
+        {
+            _player.setFame(_player.getFame() + _value);
+            SystemMessage sm = new SystemMessage(SystemMessageId.ACQUIRED_S1_REPUTATION_SCORE);
+            sm.addNumber(_value);
+            _player.sendPacket(sm);
+        }
+    }
 
 	/**
 	 * @return

+ 11 - 0
L2_GameServer/java/net/sf/l2j/gameserver/model/zone/type/L2CastleZone.java

@@ -15,6 +15,7 @@
 package net.sf.l2j.gameserver.model.zone.type;
 
 import javolution.util.FastList;
+import net.sf.l2j.Config;
 import net.sf.l2j.gameserver.datatables.MapRegionTable;
 import net.sf.l2j.gameserver.instancemanager.CastleManager;
 import net.sf.l2j.gameserver.model.L2Character;
@@ -77,7 +78,13 @@ public class L2CastleZone extends L2ZoneType
 			character.setInsideZone(L2Character.ZONE_NOSUMMONFRIEND, true);
 			
 			if (character instanceof L2PcInstance)
+			{
+				if (((L2PcInstance) character).getClan() != null 
+						&& (_castle.getSiege().checkIsAttacker(((L2PcInstance) character).getClan())
+						|| _castle.getSiege().checkIsDefender(((L2PcInstance) character).getClan())))
+					((L2PcInstance) character).startFameTask(Config.CASTLE_ZONE_FAME_TASK_FREQUENCY * 1000, Config.CASTLE_ZONE_FAME_AQUIRE_POINTS);
 				((L2PcInstance) character).sendPacket(new SystemMessage(SystemMessageId.ENTERED_COMBAT_ZONE));
+			}
 		}
 	}
 	
@@ -94,6 +101,7 @@ public class L2CastleZone extends L2ZoneType
 			if (character instanceof L2PcInstance)
 			{
 				((L2PcInstance) character).sendPacket(new SystemMessage(SystemMessageId.LEFT_COMBAT_ZONE));
+				((L2PcInstance) character).stopFameTask();
 				
 				// Set pvp flag
 				if (((L2PcInstance) character).getPvpFlag() == 0)
@@ -143,7 +151,10 @@ public class L2CastleZone extends L2ZoneType
 					character.setInsideZone(L2Character.ZONE_NOSUMMONFRIEND, false);
 					
 					if (character instanceof L2PcInstance)
+					{
 						((L2PcInstance) character).sendPacket(new SystemMessage(SystemMessageId.LEFT_COMBAT_ZONE));
+						((L2PcInstance) character).stopFameTask();
+					}
 					if (character instanceof L2SiegeSummonInstance)
 					{
 						((L2SiegeSummonInstance) character).unSummon(((L2SiegeSummonInstance) character).getOwner());

+ 11 - 0
L2_GameServer/java/net/sf/l2j/gameserver/model/zone/type/L2FortZone.java

@@ -15,6 +15,7 @@
 package net.sf.l2j.gameserver.model.zone.type;
 
 import javolution.util.FastList;
+import net.sf.l2j.Config;
 import net.sf.l2j.gameserver.datatables.ClanTable;
 import net.sf.l2j.gameserver.datatables.MapRegionTable;
 import net.sf.l2j.gameserver.datatables.SkillTable;
@@ -83,7 +84,13 @@ public class L2FortZone extends L2ZoneType
 			character.setInsideZone(L2Character.ZONE_SIEGE, true);
 			
 			if (character instanceof L2PcInstance)
+			{
 				((L2PcInstance) character).sendPacket(new SystemMessage(SystemMessageId.ENTERED_COMBAT_ZONE));
+				if (((L2PcInstance) character).getClan() != null 
+						&& (_fort.getSiege().checkIsAttacker(((L2PcInstance) character).getClan())
+						|| _fort.getSiege().checkIsDefender(((L2PcInstance) character).getClan())))
+					((L2PcInstance) character).startFameTask(Config.FORTRESS_ZONE_FAME_TASK_FREQUENCY * 1000, Config.FORTRESS_ZONE_FAME_AQUIRE_POINTS);
+			}
 		}
 	}
 	
@@ -99,6 +106,7 @@ public class L2FortZone extends L2ZoneType
 			if (character instanceof L2PcInstance)
 			{
 				((L2PcInstance) character).sendPacket(new SystemMessage(SystemMessageId.LEFT_COMBAT_ZONE));
+				((L2PcInstance) character).stopFameTask();
 				
 				// Set pvp flag
 				if (((L2PcInstance) character).getPvpFlag() == 0)
@@ -205,7 +213,10 @@ public class L2FortZone extends L2ZoneType
 					character.setInsideZone(L2Character.ZONE_SIEGE, false);
 					
 					if (character instanceof L2PcInstance)
+					{
 						((L2PcInstance) character).sendPacket(new SystemMessage(SystemMessageId.LEFT_COMBAT_ZONE));
+						((L2PcInstance) character).stopFameTask();
+					}
 					if (character instanceof L2SiegeSummonInstance)
 					{
 						((L2SiegeSummonInstance) character).unSummon(((L2SiegeSummonInstance) character).getOwner());

+ 6 - 0
L2_GameServer/java/net/sf/l2j/gameserver/network/SystemMessageId.java

@@ -13653,6 +13653,12 @@ public enum SystemMessageId
 	*/
 	S2_HOURS_S3_MINUTES_S4_SECONDS_REMAINING_FOR_REUSE_S1(2305),
 
+	/**
+	* ID: 2319<br>
+	* Message: You have acquired $s1 reputation score.
+	*/
+	ACQUIRED_S1_REPUTATION_SCORE(2319),
+
 	/**
 	 *  ID: 2326<br>
 	 *  Message: You have acquired 50 Clan's Fame Points..