Jelajahi Sumber

BETA: H5 Server packets update now h5 client is compatible :)

Rumen Nikiforov 14 tahun lalu
induk
melakukan
0f8d1d0c29

+ 1 - 1
L2J_Server_BETA/java/com/l2jserver/Config.java

@@ -1092,7 +1092,7 @@ public final class Config
 					MAX_CHARACTERS_NUMBER_PER_ACCOUNT = Integer.parseInt(serverSettings.getProperty("CharMaxNumber", "0"));
 					MAXIMUM_ONLINE_USERS = Integer.parseInt(serverSettings.getProperty("MaximumOnlineUsers", "100"));
 					
-					String[] protocols = serverSettings.getProperty("AllowedProtocolRevisions", "146;152").split(";");
+					String[] protocols = serverSettings.getProperty("AllowedProtocolRevisions", "267").split(";");
 					PROTOCOL_LIST = new TIntArrayList(protocols.length);
 					for (String protocol : protocols)
 					{

+ 89 - 22
L2J_Server_BETA/java/com/l2jserver/gameserver/model/CharSelectInfoPackage.java

@@ -17,7 +17,6 @@ package com.l2jserver.gameserver.model;
 import com.l2jserver.gameserver.model.itemcontainer.Inventory;
 import com.l2jserver.gameserver.model.itemcontainer.PcInventory;
 
-
 /**
  * Used to Store data sent to Client for Character
  * Selection screen.
@@ -29,34 +28,34 @@ public class CharSelectInfoPackage
 	private String _name;
 	private int _objectId = 0;
 	private int _charId = 0x00030b7a;
-	private long _exp =0;
-	private int _sp =0;
-	private int _clanId=0;
-	private int _race=0;
-	private int _classId=0;
-	private int _baseClassId=0;
-	private long _deleteTimer=0L;
-	private long _lastAccess=0L;
-	private int _face=0;
-	private int _hairStyle=0;
-	private int _hairColor=0;
-	private int _sex=0;
+	private long _exp = 0;
+	private int _sp = 0;
+	private int _clanId = 0;
+	private int _race = 0;
+	private int _classId = 0;
+	private int _baseClassId = 0;
+	private long _deleteTimer = 0L;
+	private long _lastAccess = 0L;
+	private int _face = 0;
+	private int _hairStyle = 0;
+	private int _hairColor = 0;
+	private int _sex = 0;
 	private int _level = 1;
-	private int _maxHp=0;
-	private double _currentHp=0;
-	private int _maxMp=0;
-	private double _currentMp=0;
+	private int _maxHp = 0;
+	private double _currentHp = 0;
+	private int _maxMp = 0;
+	private double _currentMp = 0;
 	private int[][] _paperdoll;
-	private int _karma=0;
-	private int _pkKills=0;
-	private int _pvpKills=0;
-	private int _augmentationId=0;
+	private int _karma = 0;
+	private int _pkKills = 0;
+	private int _pvpKills = 0;
+	private int _augmentationId = 0;
 	private int _transformId = 0;
 	private int _x = 0;
 	private int _y = 0;
 	private int _z = 0;
 	private String _htmlPrefix = null;
-	
+	private int _vitalityPoints = 0;
 	
 	/**
 	 * @param int1
@@ -82,238 +81,306 @@ public class CharSelectInfoPackage
 	{
 		return _charId;
 	}
+	
 	public void setCharId(int charId)
 	{
 		_charId = charId;
 	}
+	
 	public int getClanId()
 	{
 		return _clanId;
 	}
+	
 	public void setClanId(int clanId)
 	{
 		_clanId = clanId;
 	}
+	
 	public int getClassId()
 	{
 		return _classId;
 	}
+	
 	public int getBaseClassId()
 	{
 		return _baseClassId;
 	}
+	
 	public void setClassId(int classId)
 	{
 		_classId = classId;
 	}
+	
 	public void setBaseClassId(int baseClassId)
 	{
 		_baseClassId = baseClassId;
 	}
+	
 	public double getCurrentHp()
 	{
 		return _currentHp;
 	}
+	
 	public void setCurrentHp(double currentHp)
 	{
 		_currentHp = currentHp;
 	}
+	
 	public double getCurrentMp()
 	{
 		return _currentMp;
 	}
+	
 	public void setCurrentMp(double currentMp)
 	{
 		_currentMp = currentMp;
 	}
+	
 	public long getDeleteTimer()
 	{
 		return _deleteTimer;
 	}
+	
 	public void setDeleteTimer(long deleteTimer)
 	{
 		_deleteTimer = deleteTimer;
 	}
+	
 	public long getLastAccess()
 	{
 		return _lastAccess;
 	}
+	
 	public void setLastAccess(long lastAccess)
 	{
 		_lastAccess = lastAccess;
 	}
+	
 	public long getExp()
 	{
 		return _exp;
 	}
+	
 	public void setExp(long exp)
 	{
 		_exp = exp;
 	}
+	
 	public int getFace()
 	{
 		return _face;
 	}
+	
 	public void setFace(int face)
 	{
 		_face = face;
 	}
+	
 	public int getHairColor()
 	{
 		return _hairColor;
 	}
+	
 	public void setHairColor(int hairColor)
 	{
 		_hairColor = hairColor;
 	}
+	
 	public int getHairStyle()
 	{
 		return _hairStyle;
 	}
+	
 	public void setHairStyle(int hairStyle)
 	{
 		_hairStyle = hairStyle;
 	}
+	
 	public int getPaperdollObjectId(int slot)
 	{
 		return _paperdoll[slot][0];
 	}
+	
 	public int getPaperdollItemId(int slot)
 	{
 		return _paperdoll[slot][1];
 	}
+	
 	public int getLevel()
 	{
 		return _level;
 	}
+	
 	public void setLevel(int level)
 	{
 		_level = level;
 	}
+	
 	public int getMaxHp()
 	{
 		return _maxHp;
 	}
+	
 	public void setMaxHp(int maxHp)
 	{
 		_maxHp = maxHp;
 	}
+	
 	public int getMaxMp()
 	{
 		return _maxMp;
 	}
+	
 	public void setMaxMp(int maxMp)
 	{
 		_maxMp = maxMp;
 	}
+	
 	public String getName()
 	{
 		return _name;
 	}
+	
 	public void setName(String name)
 	{
 		_name = name;
 	}
+	
 	public int getRace()
 	{
 		return _race;
 	}
+	
 	public void setRace(int race)
 	{
 		_race = race;
 	}
+	
 	public int getSex()
 	{
 		return _sex;
 	}
+	
 	public void setSex(int sex)
 	{
 		_sex = sex;
 	}
+	
 	public int getSp()
 	{
 		return _sp;
 	}
+	
 	public void setSp(int sp)
 	{
 		_sp = sp;
 	}
+	
 	public int getEnchantEffect()
 	{
 		if (_paperdoll[Inventory.PAPERDOLL_RHAND][2] > 0)
 			return _paperdoll[Inventory.PAPERDOLL_RHAND][2];
 		return _paperdoll[Inventory.PAPERDOLL_RHAND][2];
 	}
+	
 	public void setKarma(int k)
 	{
 		_karma = k;
 	}
+	
 	public int getKarma()
 	{
 		return _karma;
 	}
+	
 	public void setAugmentationId(int augmentationId)
 	{
 		_augmentationId = augmentationId;
 	}
+	
 	public int getAugmentationId()
 	{
 		return _augmentationId;
 	}
+	
 	public void setPkKills(int PkKills)
 	{
 		_pkKills = PkKills;
 	}
+	
 	public int getPkKills()
 	{
 		return _pkKills;
 	}
+	
 	public void setPvPKills(int PvPKills)
 	{
 		_pvpKills = PvPKills;
 	}
+	
 	public int getPvPKills()
 	{
 		return _pvpKills;
 	}
+	
 	public int getTransformId()
 	{
 		return _transformId;
 	}
+	
 	public void setTransformId(int id)
 	{
 		_transformId = id;
 	}
+	
 	public int getX()
 	{
 		return _x;
 	}
+	
 	public int getY()
 	{
 		return _y;
 	}
+	
 	public int getZ()
 	{
 		return _z;
 	}
+	
 	public void setX(int x)
 	{
 		_x = x;
 	}
+	
 	public void setY(int y)
 	{
 		_y = y;
 	}
+	
 	public void setZ(int z)
 	{
 		_z = z;
 	}
+	
 	public String getHtmlPrefix()
 	{
 		return _htmlPrefix;
 	}
+	
 	public void setHtmlPrefix(String s)
 	{
 		_htmlPrefix = s;
 	}
+	
+	public void setVitalityPoints(int points)
+	{
+		_vitalityPoints = points;
+	}
+	
+	public int getVitalityPoints()
+	{
+		return _vitalityPoints;
+	}
 }

+ 6 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/AbstractNpcInfo.java

@@ -173,7 +173,9 @@ public abstract class AbstractNpcInfo extends L2GameServerPacket
 			writeC(_npc.isInCombat() ? 1 : 0);
 			writeC(_npc.isAlikeDead() ? 1 : 0);
 			writeC(_isSummoned ? 2 : 0); // 0=teleported 1=default 2=summoned
+			writeD(-1); // High Five NPCString ID
 			writeS(_name);
+			writeD(-1); // High Five NPCString ID
 			writeS(_title);
 			writeD(0x00); // Title color 0=client default
 			writeD(0x00); //pvp flag
@@ -256,7 +258,9 @@ public abstract class AbstractNpcInfo extends L2GameServerPacket
 			writeC(_trap.isInCombat() ? 1 : 0);
 			writeC(_trap.isAlikeDead() ? 1 : 0);
 			writeC(_isSummoned ? 2 : 0); //  0=teleported  1=default   2=summoned
+			writeD(-1); // High Five NPCString ID
 			writeS(_name);
+			writeD(-1); // High Five NPCString ID
 			writeS(_title);
 			writeD(0x00); // title color 0 = client default
 			
@@ -378,7 +382,9 @@ public abstract class AbstractNpcInfo extends L2GameServerPacket
 			writeC(_summon.isInCombat() ? 1 : 0);
 			writeC(_summon.isAlikeDead() ? 1 : 0);
 			writeC(_val); //  0=teleported  1=default   2=summoned
+			writeD(-1); // High Five NPCString ID
 			writeS(_name);
+			writeD(-1); // High Five NPCString ID
 			writeS(_title);
 			writeD(0x01);// Title color 0=client default
 			

+ 9 - 4
L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/CharSelectionInfo.java

@@ -29,6 +29,7 @@ import com.l2jserver.gameserver.datatables.ClanTable;
 import com.l2jserver.gameserver.instancemanager.CursedWeaponsManager;
 import com.l2jserver.gameserver.model.CharSelectInfoPackage;
 import com.l2jserver.gameserver.model.L2Clan;
+import com.l2jserver.gameserver.model.base.Experience;
 import com.l2jserver.gameserver.model.itemcontainer.Inventory;
 import com.l2jserver.gameserver.network.L2GameClient;
 
@@ -126,6 +127,7 @@ public class CharSelectionInfo extends L2GameServerPacket
 			
 			writeD(charInfoPackage.getSp());
 			writeQ(charInfoPackage.getExp());
+			writeF((float)(charInfoPackage.getExp() - Experience.LEVEL[charInfoPackage.getLevel()]) / (Experience.LEVEL[charInfoPackage.getLevel() + 1] - Experience.LEVEL[charInfoPackage.getLevel()])); // High Five exp %
 			writeD(charInfoPackage.getLevel());
 			
 			writeD(charInfoPackage.getKarma()); // karma
@@ -188,8 +190,10 @@ public class CharSelectionInfo extends L2GameServerPacket
 				writeD(0x00); //c3 auto-select char
 			
 			writeC(charInfoPackage.getEnchantEffect() > 127 ? 127 : charInfoPackage.getEnchantEffect());
-			
-			writeD(charInfoPackage.getAugmentationId());
+			writeH(0);
+			writeH(0);
+			//writeD(charInfoPackage.getAugmentationId());
+
 			
 			//writeD(charInfoPackage.getTransformId()); // Used to display Transformations
 			writeD(0x00); // Currently on retail when you are on character select you don't see your transformation.
@@ -203,7 +207,7 @@ public class CharSelectionInfo extends L2GameServerPacket
 			writeF(0); // cur Hp
 			
 			// High Five by Vistall:
-			//writeD(charInfoPackage.getVitalityPoints());
+			writeD(charInfoPackage.getVitalityPoints());	// H5 Vitality
 		}
 	}
 	
@@ -217,7 +221,7 @@ public class CharSelectionInfo extends L2GameServerPacket
 		try
 		{
 			con = L2DatabaseFactory.getInstance().getConnection();
-			PreparedStatement statement = con.prepareStatement("SELECT account_name, charId, char_name, level, maxHp, curHp, maxMp, curMp, face, hairStyle, hairColor, sex, heading, x, y, z, exp, sp, karma, pvpkills, pkkills, clanid, race, classid, deletetime, cancraft, title, accesslevel, online, char_slot, lastAccess, base_class, transform_id, language FROM characters WHERE account_name=?");
+			PreparedStatement statement = con.prepareStatement("SELECT account_name, charId, char_name, level, maxHp, curHp, maxMp, curMp, face, hairStyle, hairColor, sex, heading, x, y, z, exp, sp, karma, pvpkills, pkkills, clanid, race, classid, deletetime, cancraft, title, accesslevel, online, char_slot, lastAccess, base_class, transform_id, language, vitality_points FROM characters WHERE account_name=?");
 			statement.setString(1, loginName);
 			ResultSet charList = statement.executeQuery();
 			
@@ -316,6 +320,7 @@ public class CharSelectionInfo extends L2GameServerPacket
 		
 		charInfopackage.setExp(chardata.getLong("exp"));
 		charInfopackage.setSp(chardata.getInt("sp"));
+		charInfopackage.setVitalityPoints(chardata.getInt("vitality_points"));
 		charInfopackage.setClanId(chardata.getInt("clanid"));
 		
 		charInfopackage.setRace(chardata.getInt("race"));

+ 1 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/CreatureSay.java

@@ -60,6 +60,7 @@ public final class CreatureSay extends L2GameServerPacket
 			writeS(_charName);
 		else
 			writeD(_charId);
+		writeD(-1); // High Five NPCString ID
 		if (_text != null)
 			writeS(_text);
 		else

+ 4 - 4
L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/ExQuestItemList.java

@@ -34,7 +34,7 @@ import com.l2jserver.gameserver.model.itemcontainer.PcInventory;
  */
 public class ExQuestItemList extends L2GameServerPacket
 {
-	private static final String _S__FE_C5_EXQUESTITEMLIST = "[S] FE:C5 ExQuestItemList";
+	private static final String _S__FE_C6_EXQUESTITEMLIST = "[S] FE:C6 ExQuestItemList";
 	
 	private FastList<L2ItemInstance> _items;
 	private PcInventory _inventory;
@@ -49,7 +49,7 @@ public class ExQuestItemList extends L2GameServerPacket
 	protected void writeImpl()
 	{
 		writeC(0xFE);
-		writeH(0xC5);
+		writeH(0xC6);
 		writeH(_items.size());
 		for (L2ItemInstance item : _items)
 		{
@@ -84,7 +84,7 @@ public class ExQuestItemList extends L2GameServerPacket
 		{
 			writeH(_inventory.getBlockItems().length);
 			writeC(_inventory.getBlockMode());
-			for(int i : _inventory.getBlockItems())
+			for (int i : _inventory.getBlockItems())
 				writeD(i);
 		}
 		else
@@ -98,7 +98,7 @@ public class ExQuestItemList extends L2GameServerPacket
 	@Override
 	public String getType()
 	{
-		return _S__FE_C5_EXQUESTITEMLIST;
+		return _S__FE_C6_EXQUESTITEMLIST;
 	}
 	
 }

+ 4 - 4
L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/ExVoteSystemInfo.java

@@ -34,7 +34,7 @@ public class ExVoteSystemInfo extends L2GameServerPacket
 		_recomLeft = player.getRecomLeft();
 		_recomHave = player.getRecomHave();
 		_bonusTime = player.getRecomBonusTime();
-		_bonusVal  = RecoBonus.getRecoBonus(player);
+		_bonusVal = RecoBonus.getRecoBonus(player);
 		_bonusType = player.getRecomBonusType();
 	}
 	
@@ -42,17 +42,17 @@ public class ExVoteSystemInfo extends L2GameServerPacket
 	protected void writeImpl()
 	{
 		writeC(0xFE);
-		writeH(0xC8);
+		writeH(0xC9);
 		writeD(_recomLeft);
 		writeD(_recomHave);
 		writeD(_bonusTime);
 		writeD(_bonusVal);
-		writeD(_bonusType);		
+		writeD(_bonusType);
 	}
 	
 	@Override
 	public String getType()
 	{
-		return "[S] FE:C8 ExVoteSystemInfo";
+		return "[S] FE:C9 ExVoteSystemInfo";
 	}
 }

+ 2 - 1
L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/NpcSay.java

@@ -40,6 +40,7 @@ public final class NpcSay extends L2GameServerPacket
 		_objectId = objectId;
 		_textType = messageType;
 		_npcId = 1000000+npcId;
+		_npcString = -1;
 		_text = text;
 	}
 	
@@ -70,7 +71,7 @@ public final class NpcSay extends L2GameServerPacket
 		writeD(_textType);
 		writeD(_npcId);
 		writeD(_npcString);
-		if (_npcString == 0)
+		if (_npcString == -1)
 			writeS(_text);
 		else
 		{

+ 2 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/PetInfo.java

@@ -111,7 +111,9 @@ public class PetInfo extends L2GameServerPacket
 		writeC(_summon.isInCombat() ? 1 : 0);	// attacking 1=true
 		writeC(_summon.isAlikeDead() ? 1 : 0);  // dead 1=true
 		writeC(_isSummoned ? 2 : _val); //  0=teleported  1=default   2=summoned
+		writeD(-1); // High Five NPCString ID
 		writeS(_summon.getName()); // summon name
+		writeD(-1); // High Five NPCString ID
 		writeS(_summon.getTitle()); // owner name
 		writeD(1);
 		writeD(_summon.getOwner() != null ? _summon.getOwner().getPvpFlag() : 0);	//0 = white,2= purpleblink, if its greater then karma = purple

+ 2 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/UserInfo.java

@@ -22,6 +22,7 @@ import com.l2jserver.gameserver.model.Elementals;
 import com.l2jserver.gameserver.model.L2Transformation;
 import com.l2jserver.gameserver.model.actor.L2Summon;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
+import com.l2jserver.gameserver.model.base.Experience;
 import com.l2jserver.gameserver.model.itemcontainer.Inventory;
 import com.l2jserver.gameserver.skills.AbnormalEffect;
 import com.l2jserver.gameserver.templates.chars.L2NpcTemplate;
@@ -133,6 +134,7 @@ public final class UserInfo extends L2GameServerPacket
 		
 		writeD(_activeChar.getLevel());
 		writeQ(_activeChar.getExp());
+		writeF((float)(_activeChar.getExp() - Experience.LEVEL[_activeChar.getLevel()]) / (Experience.LEVEL[_activeChar.getLevel() + 1] - Experience.LEVEL[_activeChar.getLevel()])); // High Five exp %
 		writeD(_activeChar.getSTR());
 		writeD(_activeChar.getDEX());
 		writeD(_activeChar.getCON());

+ 2 - 2
L2J_Server_BETA/java/config/server.properties

@@ -76,8 +76,8 @@ MaximumOnlineUsers = 100
 # Numbers of protocol revisions that server allows to connect.
 # Delimiter is ;
 # WARNING: <u><b><font color="red">Changing the protocol revision may result in incompatible communication and many errors in game!</font></b></u>
-# Default: 216
-AllowedProtocolRevisions = 216
+# Default: 267
+AllowedProtocolRevisions = 267
 
 
 # ---------------------------------------------------------------------------