2
0
Эх сурвалжийг харах

Configurable GM extra options added in [3514].

JIV 15 жил өмнө
parent
commit
5203ac14dd

+ 9 - 0
L2_GameServer/java/config/General.properties

@@ -60,11 +60,20 @@ GMStartupDietMode = False
 GMAdminMenuStyle = modern
 GMAdminMenuStyle = modern
 
 
 # Item restrictions apply to GMs aswell? (True = restricted usage)
 # Item restrictions apply to GMs aswell? (True = restricted usage)
+# Default: True
 GMItemRestriction = True
 GMItemRestriction = True
 
 
 # Skill restrictions apply to GMs aswell? (True = restricted usage)
 # Skill restrictions apply to GMs aswell? (True = restricted usage)
+# Default: True
 GMSkillRestriction = True
 GMSkillRestriction = True
 
 
+# Allow GMs to drop/trade non-tradeable and quest(drop only) items
+# Default: False
+GMTradeRestrictedItems = False
+
+# Allow GMs to restart/exit while is fighting stance
+# Default: False
+GMRestartFighting = False
 
 
 # ---------------------------------------------------------------------------
 # ---------------------------------------------------------------------------
 # Server Security
 # Server Security

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

@@ -345,6 +345,8 @@ public final class Config
 	public static String GM_ADMIN_MENU_STYLE;
 	public static String GM_ADMIN_MENU_STYLE;
 	public static boolean GM_ITEM_RESTRICTION;
 	public static boolean GM_ITEM_RESTRICTION;
 	public static boolean GM_SKILL_RESTRICTION;
 	public static boolean GM_SKILL_RESTRICTION;
+	public static boolean GM_TRADE_RESTRICTED_ITEMS;
+	public static boolean GM_RESTART_FIGHTING;
 	public static boolean BYPASS_VALIDATION;
 	public static boolean BYPASS_VALIDATION;
 	public static boolean GAMEGUARD_ENFORCE;
 	public static boolean GAMEGUARD_ENFORCE;
 	public static boolean GAMEGUARD_PROHIBITACTION;
 	public static boolean GAMEGUARD_PROHIBITACTION;
@@ -1409,6 +1411,8 @@ public final class Config
 					GM_ADMIN_MENU_STYLE = General.getProperty("GMAdminMenuStyle", "modern");
 					GM_ADMIN_MENU_STYLE = General.getProperty("GMAdminMenuStyle", "modern");
 					GM_ITEM_RESTRICTION = Boolean.parseBoolean(General.getProperty("GMItemRestriction", "True"));
 					GM_ITEM_RESTRICTION = Boolean.parseBoolean(General.getProperty("GMItemRestriction", "True"));
 					GM_SKILL_RESTRICTION = Boolean.parseBoolean(General.getProperty("GMSkillRestriction", "True"));
 					GM_SKILL_RESTRICTION = Boolean.parseBoolean(General.getProperty("GMSkillRestriction", "True"));
+					GM_TRADE_RESTRICTED_ITEMS = Boolean.parseBoolean(General.getProperty("GMTradeRestrictedItems", "False"));
+					GM_RESTART_FIGHTING = Boolean.parseBoolean(General.getProperty("GMRestartFighting", "False"));
 					BYPASS_VALIDATION = Boolean.parseBoolean(General.getProperty("BypassValidation", "True"));
 					BYPASS_VALIDATION = Boolean.parseBoolean(General.getProperty("BypassValidation", "True"));
 					GAMEGUARD_ENFORCE = Boolean.parseBoolean(General.getProperty("GameGuardEnforce", "True"));
 					GAMEGUARD_ENFORCE = Boolean.parseBoolean(General.getProperty("GameGuardEnforce", "True"));
 					GAMEGUARD_PROHIBITACTION = Boolean.parseBoolean(General.getProperty("GameGuardProhibitAction", "True"));
 					GAMEGUARD_PROHIBITACTION = Boolean.parseBoolean(General.getProperty("GameGuardProhibitAction", "True"));

+ 2 - 1
L2_GameServer/java/net/sf/l2j/gameserver/model/TradeList.java

@@ -317,7 +317,8 @@ public class TradeList
 
 
 		L2ItemInstance item = (L2ItemInstance)o;
 		L2ItemInstance item = (L2ItemInstance)o;
 
 
-		if (!(item.isTradeable() || getOwner().isGM()) || item.getItemType() == L2EtcItemType.QUEST)
+		if (!(item.isTradeable() || (getOwner().isGM() && Config.GM_TRADE_RESTRICTED_ITEMS)) 
+				|| item.getItemType() == L2EtcItemType.QUEST)
 			return null;
 			return null;
 
 
 		if (count <= 0 || count > item.getCount())
 		if (count <= 0 || count > item.getCount())

+ 1 - 1
L2_GameServer/java/net/sf/l2j/gameserver/network/clientpackets/Logout.java

@@ -75,7 +75,7 @@ public final class Logout extends L2GameClientPacket
 
 
 		player.getInventory().updateDatabase();
 		player.getInventory().updateDatabase();
 
 
-		if(AttackStanceTaskManager.getInstance().getAttackStanceTask(player) && !player.isGM())
+		if(AttackStanceTaskManager.getInstance().getAttackStanceTask(player) && !(player.isGM() && Config.GM_RESTART_FIGHTING))
 		{
 		{
 			if (Config.DEBUG) _log.fine("Player " + player.getName() + " tried to logout while fighting");
 			if (Config.DEBUG) _log.fine("Player " + player.getName() + " tried to logout while fighting");
 
 

+ 2 - 2
L2_GameServer/java/net/sf/l2j/gameserver/network/clientpackets/RequestDropItem.java

@@ -72,12 +72,12 @@ public final class RequestDropItem extends L2GameClientPacket
 				|| _count == 0
 				|| _count == 0
 				|| !activeChar.validateItemManipulation(_objectId, "drop")
 				|| !activeChar.validateItemManipulation(_objectId, "drop")
 				|| (!Config.ALLOW_DISCARDITEM && !activeChar.isGM())
 				|| (!Config.ALLOW_DISCARDITEM && !activeChar.isGM())
-				|| (!item.isDropable() && !activeChar.isGM()))
+				|| (!item.isDropable() && !(activeChar.isGM() && Config.GM_TRADE_RESTRICTED_ITEMS)))
 		{
 		{
 			activeChar.sendPacket(new SystemMessage(SystemMessageId.CANNOT_DISCARD_THIS_ITEM));
 			activeChar.sendPacket(new SystemMessage(SystemMessageId.CANNOT_DISCARD_THIS_ITEM));
 			return;
 			return;
 		}
 		}
-		if (item.getItemType() == L2EtcItemType.QUEST && !activeChar.isGM())
+		if (item.getItemType() == L2EtcItemType.QUEST && !(activeChar.isGM() && Config.GM_TRADE_RESTRICTED_ITEMS))
 		{
 		{
 			return;
 			return;
 		}
 		}

+ 1 - 1
L2_GameServer/java/net/sf/l2j/gameserver/network/clientpackets/RequestRestart.java

@@ -98,7 +98,7 @@ public final class RequestRestart extends L2GameClientPacket
 			player.onTradeCancel(player.getActiveRequester());
 			player.onTradeCancel(player.getActiveRequester());
 		}
 		}
 
 
-		if (AttackStanceTaskManager.getInstance().getAttackStanceTask(player) && !player.isGM())
+		if (AttackStanceTaskManager.getInstance().getAttackStanceTask(player) && !(player.isGM() && Config.GM_RESTART_FIGHTING))
 		{
 		{
 			if (Config.DEBUG)
 			if (Config.DEBUG)
 				_log.fine("Player " + player.getName() + " tried to logout while fighting.");
 				_log.fine("Player " + player.getName() + " tried to logout while fighting.");

+ 2 - 1
L2_GameServer/java/net/sf/l2j/gameserver/network/serverpackets/TradeStart.java

@@ -14,6 +14,7 @@
  */
  */
 package net.sf.l2j.gameserver.network.serverpackets;
 package net.sf.l2j.gameserver.network.serverpackets;
 
 
+import net.sf.l2j.Config;
 import net.sf.l2j.gameserver.model.L2ItemInstance;
 import net.sf.l2j.gameserver.model.L2ItemInstance;
 import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
 import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
 
 
@@ -31,7 +32,7 @@ public final class TradeStart extends L2GameServerPacket
 	public TradeStart (L2PcInstance player)
 	public TradeStart (L2PcInstance player)
 	{
 	{
 		_activeChar = player;
 		_activeChar = player;
-        _itemList = _activeChar.getInventory().getAvailableItems(true, _activeChar.isGM());
+        _itemList = _activeChar.getInventory().getAvailableItems(true, (_activeChar.isGM() && Config.GM_TRADE_RESTRICTED_ITEMS));
 	}
 	}
 
 
 	@Override
 	@Override