Forráskód Böngészése

Possible exploit fix.

nBd 16 éve
szülő
commit
9e6aaf3b22

+ 15 - 0
L2_GameServer/java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java

@@ -611,6 +611,7 @@ public final class L2PcInstance extends L2PlayableInstance
 	private int _expertiseIndex; // index in EXPERTISE_LEVELS
 	private int _expertisePenalty = 0;
 
+	private boolean _isEnchanting = false;
 	private L2ItemInstance _activeEnchantItem = null;
 	private L2ItemInstance _activeEnchantAttrItem = null;
 
@@ -2246,6 +2247,10 @@ public final class L2PcInstance extends L2PlayableInstance
 
 	public void setActiveEnchantItem(L2ItemInstance scroll)
 	{
+		// If we dont have a Enchant Item, we are not enchanting.
+		if (scroll == null)
+			setIsEnchanting(false);
+		
 		_activeEnchantItem = scroll;
 	}
 
@@ -2253,6 +2258,16 @@ public final class L2PcInstance extends L2PlayableInstance
 	{
 		return _activeEnchantItem;
 	}
+	
+	public void setIsEnchanting(boolean val)
+	{
+		_isEnchanting = val;
+	}
+	
+	public boolean isEnchanting()
+	{
+		return _isEnchanting;
+	}
 
 	/**
 	 * Set the fists weapon of the L2PcInstance (used when no weapon is equiped).<BR><BR>

+ 5 - 0
L2_GameServer/java/net/sf/l2j/gameserver/network/clientpackets/RequestExTryToPutEnchantTargetItem.java

@@ -61,11 +61,16 @@ public class RequestExTryToPutEnchantTargetItem extends L2GameClientPacket
 		
 		if (activeChar != null)
 		{
+			if (activeChar.isEnchanting())
+				return;
+			
 			L2ItemInstance targetItem = (L2ItemInstance) L2World.getInstance().findObject(_objectId);
 			L2ItemInstance enchantScroll = activeChar.getActiveEnchantItem();
 			
 			if (targetItem == null || enchantScroll == null)
 				return;
+			
+			activeChar.setIsEnchanting(true);
 
 			if (targetItem.isEtcItem() || targetItem.isWear() || targetItem.getItem().getItemType() == L2WeaponType.ROD || targetItem.isHeroItem() || targetItem.getItemId() >= 7816 && targetItem.getItemId() <= 7831
 					|| targetItem.isShadowItem() || targetItem.isCommonItem())