Fixing enchant level showing always 0 after successful enchant.

This commit is contained in:
MobiusDevelopment 2019-04-22 22:43:36 +00:00
parent 218c004b2b
commit 6131c3b641
2 changed files with 41 additions and 8 deletions

View File

@ -32,6 +32,7 @@ public class EnchantResult implements IClientOutgoingPacket
private final int _crystal; private final int _crystal;
private final int _count; private final int _count;
private final int _enchantLevel; private final int _enchantLevel;
@SuppressWarnings("unused")
private final int[] _enchantOptions; private final int[] _enchantOptions;
public EnchantResult(int result, int crystal, int count, int enchantLevel, int[] options) public EnchantResult(int result, int crystal, int count, int enchantLevel, int[] options)
@ -61,11 +62,21 @@ public class EnchantResult implements IClientOutgoingPacket
packet.writeD(_result); packet.writeD(_result);
packet.writeD(_crystal); packet.writeD(_crystal);
packet.writeQ(_count); packet.writeQ(_count);
packet.writeD(_enchantLevel);
for (int option : _enchantOptions) // Guessing.
{ // With 166 options became 3x write integers instead of shorts and enchant level moved bellow.
packet.writeH(option);
} // Commenting until actually knowing.
// for (int option : _enchantOptions)
// {
// packet.writeD(option);
// }
packet.writeD(0x00);
packet.writeD(0x00);
packet.writeD(0x00);
packet.writeD(_enchantLevel); // Confirmed.
return true; return true;
} }
} }

View File

@ -16,6 +16,7 @@
*/ */
package org.l2jmobius.gameserver.network.serverpackets; package org.l2jmobius.gameserver.network.serverpackets;
import org.l2jmobius.Config;
import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.commons.network.PacketWriter;
import org.l2jmobius.gameserver.model.items.instance.ItemInstance; import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.OutgoingPackets;
@ -61,11 +62,32 @@ public class EnchantResult implements IClientOutgoingPacket
packet.writeD(_result); packet.writeD(_result);
packet.writeD(_crystal); packet.writeD(_crystal);
packet.writeQ(_count); packet.writeQ(_count);
packet.writeD(_enchantLevel);
for (int option : _enchantOptions) if (!Config.PROTOCOL_LIST.contains(166)) // 152
{ {
packet.writeH(option); packet.writeD(_enchantLevel);
for (int option : _enchantOptions)
{
packet.writeH(option);
}
} }
else
{
// Guessing.
// With 166 options became 3x write integers instead of shorts and enchant level moved bellow.
// Commenting until actually knowing.
// for (int option : _enchantOptions)
// {
// packet.writeD(option);
// }
packet.writeD(0x00);
packet.writeD(0x00);
packet.writeD(0x00);
packet.writeD(_enchantLevel); // Confirmed.
}
return true; return true;
} }
} }