public static void Add(int houseID, int furnID, nItem item) { HouseFurniture furniture = HouseFurnitures[houseID][furnID]; var type = SafesType[furniture.Name]; var items = FurnituresItems[houseID][furnID]; if (nInventory.ClothesItems.Contains(item.Type) || nInventory.WeaponsItems.Contains(item.Type) || item.Type == ItemType.CarKey) { items.Add(item); } else { var count = item.Count; for (int i = 0; i < items.Count; i++) { if (i >= items.Count) { break; } if (items[i].Type == item.Type && items[i].Count < nInventory.ItemsStacks[item.Type]) { var temp = nInventory.ItemsStacks[item.Type] - items[i].Count; if (count < temp) { temp = count; } items[i].Count += temp; count -= temp; } } while (count > 0) { if (count >= nInventory.ItemsStacks[item.Type]) { items.Add(new nItem(item.Type, nInventory.ItemsStacks[item.Type], item.Data)); count -= nInventory.ItemsStacks[item.Type]; } else { items.Add(new nItem(item.Type, count, item.Data)); count = 0; } } } FurnituresItems[houseID][furnID] = items; foreach (var p in NAPI.Pools.GetAllPlayers()) { if (p == null || !Main.Players.ContainsKey(p)) { continue; } if ((p.HasData("OPENOUT_TYPE") && p.GetData("OPENOUT_TYPE") == type) && (Main.Players[p].InsideHouseID != -1 && Main.Players[p].InsideHouseID == houseID) && (p.HasData("OpennedSafe") && p.GetData("OpennedSafe") == furnID)) { GUI.Dashboard.OpenOut(p, items, furniture.Name, type); } } }
public static int TryAdd(int houseID, int furnID, nItem item) { HouseFurniture furniture = HouseFurnitures[houseID][furnID]; var items = FurnituresItems[houseID][furnID]; var tail = 0; if (nInventory.ClothesItems.Contains(item.Type) || item.Type == ItemType.CarKey) { if (items.Count >= 25) { return(-1); } } else { var count = 0; foreach (var i in items) { if (i.Type == item.Type) { count += nInventory.ItemsStacks[i.Type] - i.Count; } } var slots = 25; var maxCapacity = (slots - items.Count) * nInventory.ItemsStacks[item.Type] + count; if (item.Count > maxCapacity) { tail = item.Count - maxCapacity; } } return(tail); }
public static void Remove(int houseID, int furnID, nItem item) { HouseFurniture furniture = HouseFurnitures[houseID][furnID]; var safeType = SafesType[furniture.Name]; var items = FurnituresItems[houseID][furnID]; if (nInventory.ClothesItems.Contains(item.Type) || nInventory.WeaponsItems.Contains(item.Type) || item.Type == ItemType.CarKey) { items.Remove(item); } else { for (int i = items.Count - 1; i >= 0; i--) { if (i >= items.Count) { continue; } if (items[i].Type != item.Type) { continue; } if (items[i].Count <= item.Count) { item.Count -= items[i].Count; items.RemoveAt(i); } else { items[i].Count -= item.Count; item.Count = 0; break; } } } FurnituresItems[houseID][furnID] = items; foreach (var p in NAPI.Pools.GetAllPlayers()) { if (p == null || !Main.Players.ContainsKey(p)) { continue; } if ((p.HasData("OPENOUT_TYPE") && p.GetData("OPENOUT_TYPE") == safeType) && (Main.Players[p].InsideHouseID != -1 && Main.Players[p].InsideHouseID == houseID) && (p.HasData("OpennedSafe") && p.GetData("OpennedSafe") == furnID)) { GUI.Dashboard.OpenOut(p, items, furniture.Name, safeType); } } }
public static int GetCountOfType(int houseID, int furnID, ItemType type) { HouseFurniture furniture = HouseFurnitures[houseID][furnID]; var items = FurnituresItems[houseID][furnID]; var count = 0; for (int i = 0; i < items.Count; i++) { if (i >= items.Count) { break; } if (items[i].Type == type) { count += items[i].Count; } } return(count); }
public static void newFurniture(int id, string name) { if (!HouseFurnitures.ContainsKey(id)) { Create(id); } int i = HouseFurnitures[id].Count(); while (HouseFurnitures[id].ContainsKey(i)) { i++; } List <nItem> data = null; if (name == "Шкаф с одеждой" || name == "Оружейный сейф" || name == "Шкаф с предметами") { data = new List <nItem>(); } HouseFurniture furn = new HouseFurniture(i, name, NameModels[name]); FurnituresItems[id].Add(furn.ID, data); HouseFurnitures[id].Add(i, furn); }