Parcourir la source

BETA: Bugfix for pormander skills thanks (JIV and Nik)
Also fix for gm view info (h5 packets)

Rumen Nikiforov il y a 14 ans
Parent
commit
ee12746150

+ 1 - 1
L2J_Server_BETA/java/com/l2jserver/gameserver/network/clientpackets/RequestAcquireSkill.java

@@ -99,7 +99,7 @@ public class RequestAcquireSkill extends L2GameClientPacket
 		 *  you want to learn Aggression lvl 5, thus skipping lvl 4.) or the packet sends the same level or lower (eg: Aggression lvl 3 and the
 		 *  packet sends info that you want to learn Aggression level 3).
 		 */
-		if (Math.max(player.getSkillLevel(_id), 0) + 1 != _level && _skillType != 3)
+		if (Math.max(player.getSkillLevel(_id), 0) + 1 != _level && !(_skillType == 3 || _skillType == 4))
 			return;
 		
 		final L2Skill skill = SkillTable.getInstance().getInfo(_id, _level);

+ 14 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/network/clientpackets/RequestAcquireSkillInfo.java

@@ -202,6 +202,20 @@ public class RequestAcquireSkillInfo extends L2GameClientPacket
 				return;
 			}
 		}
+		else if (_skillType == 5)
+		{
+			Quest[] qlst = trainer.getTemplate().getEventQuests(Quest.QuestEventType.ON_SKILL_LEARN);
+			if ((qlst != null) && qlst.length == 1)
+			{
+				if (!qlst[0].notifyAcquireSkillInfo(trainer, activeChar, skill))
+				{
+					qlst[0].notifyAcquireSkillList(trainer, activeChar);
+					return;
+				}
+			}
+			else
+				return;
+		}
 		else if (_skillType == 6)
 		{
 			int costid = 0;

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

@@ -16,6 +16,7 @@ package com.l2jserver.gameserver.network.serverpackets;
 
 import com.l2jserver.gameserver.model.Elementals;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
+import com.l2jserver.gameserver.model.base.Experience;
 import com.l2jserver.gameserver.model.itemcontainer.Inventory;
 /**
  *
@@ -59,6 +60,7 @@ public class GMViewCharacterInfo extends L2GameServerPacket
 		writeD(_activeChar.getClassId().getId());
 		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());