2013-05-09 11:13:16 -04:00

63 lines
2.0 KiB
C#

using System;
using System.IO;
using System.Collections.Generic;
using EQExtractor2.InternalTypes;
using EQExtractor2.OpCodes;
using EQPacket;
using MyUtils;
namespace EQExtractor2.Patches
{
class PatchFeb082011Decoder : PatchDec072010Decoder
{
public PatchFeb082011Decoder()
{
Version = "EQ Client Build Date February 8 2011.";
PatchConfFileName = "patch_Feb8-2011.conf";
ExpectedPPLength = 28176;
PPZoneIDOffset = 20844;
}
override public IdentificationStatus Identify(int OpCode, int Size, PacketDirection Direction)
{
if ((OpCode == OpManager.OpCodeNameToNumber("OP_ZoneEntry")) && (Direction == PacketDirection.ClientToServer))
{
IDStatus = IdentificationStatus.Tentative;
return IdentificationStatus.Tentative;
}
if (IDStatus != IdentificationStatus.Tentative)
return IdentificationStatus.No;
if ((OpCode == OpManager.OpCodeNameToNumber("OP_PlayerProfile")) && (Direction == PacketDirection.ServerToClient) &&
(Size == ExpectedPPLength))
return IdentificationStatus.Yes;
return IdentificationStatus.No;
}
override public Item DecodeItemPacket(byte[] PacketBuffer)
{
ByteStream Buffer = new ByteStream(PacketBuffer);
Item NewItem = new Item();
Buffer.SetPosition(30);
NewItem.MerchantSlot = Buffer.ReadByte(); // 13
NewItem.Price = Buffer.ReadUInt32(); // 14
Buffer.SkipBytes(5);
NewItem.Quantity = Buffer.ReadInt32(); // 23
Buffer.SetPosition(97);
NewItem.Name = Buffer.ReadString(true);
NewItem.Lore = Buffer.ReadString(true);
NewItem.IDFile = Buffer.ReadString(true);
Buffer.SkipBytes(1);
NewItem.ID = Buffer.ReadUInt32();
return NewItem;
}
}
}