ソースを参照

Preventing Critical Trade Exploit.

nBd 16 年 前
コミット
0d55edc3d8

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

@@ -5728,6 +5728,15 @@ public final class L2PcInstance extends L2PlayableInstance
 		_requestExpireTime = GameTimeController.getGameTicks() + REQUEST_TIMEOUT * GameTimeController.TICKS_PER_SECOND;
 		partner.setActiveRequester(this);
 	}
+	
+	/**
+	 * Return true if last request is expired.
+	 * @return
+	 */
+	public boolean isRequestExpired()
+	{
+		return !(_requestExpireTime > GameTimeController.getGameTicks());
+	}
 
 	/**
 	 * Select the Warehouse to be used in next activity.<BR><BR>

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

@@ -75,7 +75,8 @@ public final class AnswerTradeRequest extends L2GameClientPacket
             return;
         }
 
-		if (_response == 1) player.startTrade(partner);
+		if (_response == 1 && !partner.isRequestExpired())
+			player.startTrade(partner);
 		else
 		{
 			SystemMessage msg = new SystemMessage(SystemMessageId.S1_DENIED_TRADE_REQUEST);