Переглянути джерело

BETA: Some fixes, thanks jurchiks for report:
* Improved canTransform method.
* Handled some exceptions.
* Fix in hack check while learning Transformation Skills.

Zoey76 14 роки тому
батько
коміт
0fe4f49bfb

+ 20 - 6
L2J_Server_BETA/java/com/l2jserver/gameserver/model/L2SkillLearn.java

@@ -60,9 +60,16 @@ public final class L2SkillLearn
 			int i = 0;
 			for (String itemIdCount : items)
 			{
-				_itemsIdCount[i][0] = Integer.parseInt(itemIdCount.split(",")[0]);//Id
-				_itemsIdCount[i][1] = Integer.parseInt(itemIdCount.split(",")[1]);//Count
-				i++;
+				try
+				{
+					_itemsIdCount[i][0] = Integer.parseInt(itemIdCount.split(",")[0]);//Id
+					_itemsIdCount[i][1] = Integer.parseInt(itemIdCount.split(",")[1]);//Count
+					i++;
+				}
+				catch (Exception e)
+				{
+					_log.severe(getClass().getSimpleName() + ": Malformed itemsIdCount for Learn Skill Id " + _skillId + " and level " + _skillLvl + "!");
+				}
 			}
 		}
 		else
@@ -111,9 +118,16 @@ public final class L2SkillLearn
 			int i = 0;
 			for (String subLvlNum : subLvLNumList)
 			{
-				_subClassLvlNumber[i][0] = Integer.parseInt(subLvlNum.split(",")[0]);
-				_subClassLvlNumber[i][1] = Integer.parseInt(subLvlNum.split(",")[1]);
-				i++;
+				try
+				{
+					_subClassLvlNumber[i][0] = Integer.parseInt(subLvlNum.split(",")[0]);
+					_subClassLvlNumber[i][1] = Integer.parseInt(subLvlNum.split(",")[1]);
+					i++;
+				}
+				catch (Exception e)
+				{
+					_log.severe(getClass().getSimpleName() + ": Malformed subClassLvlNumber for Learn Skill Id " + _skillId + " and level " + _skillLvl + "!");
+				}
 			}
 		}
 		else

+ 6 - 2
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/instance/L2TransformManagerInstance.java

@@ -227,8 +227,12 @@ public final class L2TransformManagerInstance extends L2MerchantInstance
 	 */
 	public static boolean canTransform(L2PcInstance player)
 	{
-		QuestState st = player.getQuestState("136_MoreThanMeetsTheEye");
-		if (Config.ALLOW_TRANSFORM_WITHOUT_QUEST || ((st != null) && st.isCompleted()))
+		if (Config.ALLOW_TRANSFORM_WITHOUT_QUEST)
+		{
+			return true;
+		}
+		final QuestState st = player.getQuestState("136_MoreThanMeetsTheEye");
+		if ((st != null) && st.isCompleted())
 		{
 			return true;
 		}

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

@@ -130,7 +130,7 @@ public final class RequestAcquireSkill extends L2GameClientPacket
 				if (trainer instanceof L2TransformManagerInstance)
 				{
 					//Hack check.
-					if (L2TransformManagerInstance.canTransform(activeChar))
+					if (!L2TransformManagerInstance.canTransform(activeChar))
 					{
 						activeChar.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.NOT_COMPLETED_QUEST_FOR_SKILL_ACQUISITION));
 						Util.handleIllegalPlayerAction(activeChar, "Player " + activeChar.getName() + " is requesting skill Id: " + _id + " level " + _level + " without required quests!", 0);