mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-15 08:21:28 +00:00
63 lines
2.0 KiB
C#
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;
|
|
}
|
|
}
|
|
} |