Code:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace NewestCOServer.PacketHandling { public class ItemLock { public static void Handle(Main.GameClient GC, byte[] Data) { uint Itemuid = BitConverter.ToUInt32(Data, 4); byte LockType = Data[8]; Game.Item Item = new Game.Item(); foreach (Game.Item I in GC.MyChar.Inventory) { if (I.UID == Itemuid) { Item = I; } } switch (LockType) { case 0: { if (Item.Locked == 0 || Item.Locked == 2) { Item.Locked = 1; } Database.SaveCharacter(GC.MyChar, GC.MyChar.Name); GC.AddSend(Packets.ItemLock(Itemuid, LockType, 1, 0)); GC.AddSend(Packets.UpdateItem(Item, 0)); if (Item.Locked == 2) { GC.AddSend(Packets.ItemLock(Item.UID, 1, 3, Item.LockedDays)); } return; } case 2: { DateTime datetounlock = DateTime.Now; datetounlock = datetounlock.AddDays(5); Item.LockedDays = Convert.ToUInt32(datetounlock.ToString("yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture)); Item.Locked = 2; GC.AddSend(Packets.UpdateItem(Item, 0)); if (Item.Locked == 2) { GC.AddSend(Packets.ItemLock(Item.UID, 1, 3, Item.LockedDays)); } break; } } } } }
Code:
public byte Locked; public uint LockedDays;
Code:
public void WriteThis(System.IO.BinaryWriter I) { if (ID != 0 && UID == 0) UID = (uint)Program.Rnd.Next(10000000); if (ID != 0 && UID == 0) UID = (uint)World.Rnd.Next(10000000); I.Write((byte)26); I.Write(UID); I.Write(ID); I.Write(Plus); I.Write(Bless); I.Write(Enchant); I.Write((byte)Soc1); I.Write((byte)Soc2); I.Write(MaxDur); I.Write(CurDur); I.Write(FreeItem); I.Write(TalismanProgress); I.Write(Progress); I.Write((byte)Color); I.Write(Locked); } public void ReadThis(System.IO.BinaryReader I) { byte Length = I.ReadByte(); if (Length == 25) { UID = I.ReadUInt32(); if (UID == 0) UID = (uint)Program.Rnd.Next(10000000); if (UID == 0) UID = (uint)World.Rnd.Next(10000000); ID = I.ReadUInt32(); if (Database.DatabaseItems.Contains(ID)) { Plus = I.ReadByte(); Bless = I.ReadByte(); Enchant = I.ReadByte(); Soc1 = (Gem)I.ReadByte(); Soc2 = (Gem)I.ReadByte(); MaxDur = I.ReadUInt16(); CurDur = I.ReadUInt16(); FreeItem = I.ReadBoolean(); TalismanProgress = I.ReadUInt32(); Progress = I.ReadUInt16(); Color = (ArmorColor)I.ReadByte(); Locked = I.ReadByte(); } else { UID = 0; ID = 0; I.ReadBytes(17); } } else I.ReadBytes(Length); } }
I apologize for this topic may seem silly but I have a problem with itemlock struggling for some time and I resolved, after block item discconect and give me away when I reconnect item disappear.
Anyone can say me where I wrong ?