浏览代码

BETA: Updating ExSendUIEvent packet to support NpcStringId as well.
* Patch by: Nos

Rumen Nikiforov 12 年之前
父节点
当前提交
603f0cb196
共有 1 个文件被更改,包括 70 次插入24 次删除
  1. 70 24
      L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/ExSendUIEvent.java

+ 70 - 24
L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/ExSendUIEvent.java

@@ -18,45 +18,91 @@
  */
 package com.l2jserver.gameserver.network.serverpackets;
 
-import com.l2jserver.gameserver.model.L2Object;
+import java.util.Arrays;
+import java.util.List;
+
+import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
+import com.l2jserver.gameserver.network.NpcStringId;
 
 public class ExSendUIEvent extends L2GameServerPacket
 {
-	private final L2Object _player;
-	private final boolean _isHide;
-	private final boolean _isIncrease;
+	private final int _objectId;
+	private final boolean _type;
+	private final boolean _countUp;
 	private final int _startTime;
 	private final int _endTime;
-	private final String _text;
+	private final int _npcstringId;
+	private List<String> _params = null;
 	
-	public ExSendUIEvent(L2Object player, boolean isHide, boolean isIncrease, int startTime, int endTime, String text)
+	/**
+	 * @param player
+	 * @param hide
+	 * @param countUp
+	 * @param startTime
+	 * @param endTime
+	 * @param text
+	 */
+	public ExSendUIEvent(L2PcInstance player, boolean hide, boolean countUp, int startTime, int endTime, String text)
 	{
-		_player = player;
-		_isHide = isHide;
-		_isIncrease = isIncrease;
-		_startTime = startTime;
-		_endTime = endTime;
-		_text = text;
+		this(player, hide, countUp, startTime, endTime, -1, text);
 	}
 	
 	/**
-	 * FIXME: Structure is wrong <br />
-	 * _isHide = <s>0: show timer, 1: hide timer</s> Its a type of the UI actually
+	 * @param player
+	 * @param hide
+	 * @param countUp
+	 * @param startTime
+	 * @param endTime
+	 * @param npcString
+	 * @param params
 	 */
+	public ExSendUIEvent(L2PcInstance player, boolean hide, boolean countUp, int startTime, int endTime, NpcStringId npcString, String... params)
+	{
+		this(player, hide, countUp, startTime, endTime, npcString.getId(), params);
+	}
+	
+	/**
+	 * @param player
+	 * @param hide
+	 * @param countUp
+	 * @param startTime
+	 * @param endTime
+	 * @param npcstringId
+	 * @param params
+	 */
+	public ExSendUIEvent(L2PcInstance player, boolean hide, boolean countUp, int startTime, int endTime, int npcstringId, String... params)
+	{
+		_objectId = player.getObjectId();
+		_type = hide;
+		_countUp = countUp;
+		_startTime = startTime;
+		_endTime = endTime;
+		_npcstringId = npcstringId;
+		_params = Arrays.asList(params);
+	}
+	
 	@Override
 	protected void writeImpl()
 	{
 		writeC(0xFE);
 		writeH(0x8E);
-		writeD(_player.getObjectId());
-		writeD(_isHide ? 0x01 : 0x00); // <s>0: show timer, 1: hide timer</s> Its a type of the UI actually
-		writeD(0x00); // unknown
-		writeD(0x00); // unknown
-		writeS(_isIncrease ? "1" : "0"); // "0": count negative, "1": count positive
-		writeS(String.valueOf(_startTime / 60)); // timer starting minute(s)
-		writeS(String.valueOf(_startTime % 60)); // timer starting second(s)
-		writeS(_text); // text above timer
-		writeS(String.valueOf(_endTime / 60)); // timer length minute(s) (timer will disappear 10 seconds before it ends)
-		writeS(String.valueOf(_endTime % 60)); // timer length second(s) (timer will disappear 10 seconds before it ends)
+		writeD(_objectId);
+		writeD(_type ? 1 : 0); // 0 = show, 1 = hide (there is 2 = pause and 3 = resume also but they don't work well you can only pause count down and you cannot resume it because resume hides the counter).
+		writeD(0);// unknown
+		writeD(0);// unknown
+		writeS(_countUp ? "1" : "0"); // 0 = count down, 1 = count up
+		// timer always disappears 10 seconds before end
+		writeS(String.valueOf(_startTime / 60));
+		writeS(String.valueOf(_startTime % 60));
+		writeS(String.valueOf(_endTime / 60));
+		writeS(String.valueOf(_endTime % 60));
+		writeD(_npcstringId);
+		if (_params != null)
+		{
+			for (String param : _params)
+			{
+				writeS(param);
+			}
+		}
 	}
 }