瀏覽代碼

Fix for client crash? looks like NC fixed it for us anyway :)

JIV 15 年之前
父節點
當前提交
a0a35dd59a
共有 1 個文件被更改,包括 38 次插入5 次删除
  1. 38 5
      L2_GameServer/java/com/l2jserver/gameserver/network/serverpackets/ExUISetting.java

+ 38 - 5
L2_GameServer/java/com/l2jserver/gameserver/network/serverpackets/ExUISetting.java

@@ -27,13 +27,14 @@ import com.l2jserver.gameserver.model.entity.ActionKey;
 public class ExUISetting extends L2GameServerPacket
 {
 	
-	L2PcInstance _player;
-	L2UIKeysSettings _uiSettings;
+	private final L2UIKeysSettings _uiSettings;
+	private int buffsize, categories;
+	
 	
 	public ExUISetting(L2PcInstance player)
 	{
-		_player = player;
 		_uiSettings = player.getUISettings();
+		calcSize();
 	}
 	
 	/**
@@ -45,6 +46,38 @@ public class ExUISetting extends L2GameServerPacket
 		return null;
 	}
 	
+	private void calcSize()
+	{
+		int size = 16; //initial header and footer
+		int category = 0;
+		int numKeyCt = _uiSettings.getKeys().size();
+		for (int i = 0; i < numKeyCt; i++)
+		{
+			size++;
+			if (_uiSettings.getCategories().containsKey(category))
+			{
+				List<Integer> catElList1 = _uiSettings.getCategories().get(category);
+				size = size + catElList1.size();
+			}
+			category++;
+			size++;
+			if (_uiSettings.getCategories().containsKey(category))
+			{
+				List<Integer> catElList2 = _uiSettings.getCategories().get(category);
+				size = size + catElList2.size();
+			}
+			category++;
+			size = size+4;
+			if (_uiSettings.getKeys().containsKey(i))
+			{
+				List<ActionKey> keyElList = _uiSettings.getKeys().get(i);
+				size = size + (keyElList.size()*20);
+			}
+		}
+		buffsize = size;
+		categories = category;
+	}
+	
 	/**
 	 * @see com.l2jserver.gameserver.network.serverpackets.L2GameServerPacket#writeImpl()
 	 */
@@ -54,8 +87,8 @@ public class ExUISetting extends L2GameServerPacket
 		writeC(0xFE);
 		writeH(0x70);
 		
-		writeD(4514);
-		writeD(0x08);
+		writeD(buffsize);
+		writeD(categories);
 		
 		int category = 0;