|
@@ -18,45 +18,91 @@
|
|
*/
|
|
*/
|
|
package com.l2jserver.gameserver.network.serverpackets;
|
|
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
|
|
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 _startTime;
|
|
private final int _endTime;
|
|
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
|
|
@Override
|
|
protected void writeImpl()
|
|
protected void writeImpl()
|
|
{
|
|
{
|
|
writeC(0xFE);
|
|
writeC(0xFE);
|
|
writeH(0x8E);
|
|
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);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|