public DateTimeOffset AddItem(int X, int Y, Item item) { var valid = DateTimeOffset.Now.AddSeconds(120); ItemInMap it = new ItemInMap { Index = (ushort)(Items.Count), Item = item, State = ItemState.Creating, Position = new Point(X, Y), validTime = valid, }; if (Items.Count > 0) { try { var fit = Items.First(x => x.State == ItemState.Deleted); it.Index = fit.Index; Items.Remove(fit); } catch (Exception) { } } Items.Add(it); //var pitem = new SViewPortItemCreate(new Network.Data.VPICreateDto[] { new Network.Data.VPICreateDto { // ItemInfo = item.GetBytes(), // wzNumber = ((ushort)(it.index | 0x8000)).ShufleEnding(), // X = (byte)X, // Y = (byte)Y, //} }); //await SendAll(pitem); return(valid); }
public DateTimeOffset AddItem(int X, int Y, Item item, Character character = null) { if (item == null) { return(DateTimeOffset.Now); } item.Character = null; item.Account = null; item.SlotId = 0; item.Storage = 0; item.NeedSave = false; var valid = DateTimeOffset.Now.AddSeconds(120); var own = DateTimeOffset.Now.AddSeconds(60); ItemInMap it = new ItemInMap { Index = CurIndex, Item = item, State = ItemState.Creating, Position = new Point(X, Y), validTime = valid, Character = character, OwnedTime = own, }; lock (Items) { if (Items.ContainsKey(CurIndex)) { Items[CurIndex] = it; } else { Items.Add(CurIndex, it); } CurIndex++; } return(valid); }