public override void PostServerLoad()
    {
        base.PostServerLoad();
        NPCVendingMachine nPCVendingMachine = this;

        base.Invoke(new Action(nPCVendingMachine.InstallFromVendingOrders), 1f);
    }
    public override void ServerInit()
    {
        base.ServerInit();
        this.skinID = (ulong)861142659;
        base.SendNetworkUpdate(BasePlayer.NetworkQueue.Update);
        NPCVendingMachine nPCVendingMachine = this;

        base.Invoke(new Action(nPCVendingMachine.InstallFromVendingOrders), 1f);
    }
Example #3
0
        private void AddVendingOrders(NPCVendingMachine vending, bool def = false)
        {
            if (vending == null || vending.IsDestroyed)
            {
                Puts("Null or destroyed machine...");
                return;
            }
            if (!def)
            {
                if (data.VendingMachinesOrders.ContainsKey(vending.vendingOrders.name))
                {
                    return;
                }
            }
            List <Order> orders = new List <Order>();

            foreach (var order in vending.vendingOrders.orders)
            {
                orders.Add(new Order
                {
                    _comment       = $"Sell {order.sellItem.displayName.english} x {order.sellItemAmount} for {order.currencyItem.displayName.english} x {order.currencyAmount}",
                    sellAmount     = order.currencyAmount,
                    currencyAmount = order.sellItemAmount,
                    sellId         = order.sellItem.itemid,
                    sellAsBP       = order.sellItemAsBP,
                    currencyId     = order.currencyItem.itemid,
                    weight         = 100,
                    refillAmount   = 100,
                    refillDelay    = 10.0f
                });
            }
            if (def)
            {
                if (orders == null)
                {
                    return;
                }
                Puts($"Trying to save default vendingOrders for {vending.vendingOrders.name}");
                if (defaultOrders == null)
                {
                    defaultOrders = new StorageData();
                }
                if (defaultOrders.VendingMachinesOrders.ContainsKey(vending.vendingOrders.name))
                {
                    return;
                }
                defaultOrders.VendingMachinesOrders.Add(vending.vendingOrders.name, orders.ToArray());
            }
            else
            {
                data.VendingMachinesOrders.Add(vending.vendingOrders.name, orders.ToArray());
            }
            Puts($"Added Vending Machine: {vending.vendingOrders.name} to data file!");
            dataChanged = true;
        }
        void OnLootEntityEnd(BasePlayer player, NPCVendingMachine entity)
        {
            Timer timer;

            if (!timeoutTimers.ContainsKey(player.userID) || !timeoutTimers.TryGetValue(player.userID, out timer) || timer == null)
            {
                return;
            }

            timer.Destroy();
        }
Example #5
0
        private object OnNpcGiveSoldItem(NPCVendingMachine vending, Item soldItem, BasePlayer buyer)
        {
            if (soldItem.skin > 0)
            {
                VehicleInfo vehicle = VehicleInfo.FindBySkinID(soldItem.skin);
                if (vehicle != null)
                {
                    vehicle.Give(buyer, _config.vehicleShortPrefabName, "npcvending");
                    return(true);
                }
            }

            return(null);
        }
        void OnOpenVendingShop(NPCVendingMachine machine, BasePlayer player)
        {
            if (!permission.UserHasPermission(player.UserIDString, bypass))
            {
                if (!timeoutTimers.ContainsKey(player.userID))
                {
                    timeoutTimers.Add(player.userID, null);
                }

                timeoutTimers[player.userID] = timer.Once(config.timeoutSeconds, () => { if (player != null)
                                                                                         {
                                                                                             player.EndLooting();
                                                                                         }
                                                          });
            }
        }
Example #7
0
        private NPCVendingOrder.Entry[] GetNewOrders(NPCVendingMachine vending)
        {
            List <NPCVendingOrder.Entry> temp = new List <NPCVendingOrder.Entry>();

            foreach (var order in data.VendingMachinesOrders[vending.vendingOrders.name])
            {
                temp.Add(new NPCVendingOrder.Entry
                {
                    currencyAmount = order.sellAmount,
                    currencyAsBP   = order.currencyAsBP,
                    currencyItem   = ItemManager.FindItemDefinition(order.currencyId),
                    sellItem       = ItemManager.FindItemDefinition(order.sellId),
                    sellItemAmount = order.currencyAmount,
                    sellItemAsBP   = order.sellAsBP
                });
            }
            return(temp.ToArray());
        }
Example #8
0
        private void UpdateVending(NPCVendingMachine vending)
        {
            if (vending == null || vending.IsDestroyed)
            {
                return;
            }

            AddVendingOrders(vending);

            if (disableCompoundVendingMachines)
            {
                vending.ClearSellOrders();
                vending.inventory.Clear();
            }
            else if (allowCustomCompoundVendingMachines)
            {
                vending.vendingOrders.orders = GetNewOrders(vending);
                vending.InstallFromVendingOrders();
            }
        }
        private void AddVendingOrders(NPCVendingMachine vending)
        {
            if (vending == null || vending.IsDestroyed || data.VendingMachinesOrders.ContainsKey(vending.vendingOrders.name))
            {
                return;
            }
            List <Order> orders = new List <Order>();

            foreach (var order in vending.vendingOrders.orders)
            {
                orders.Add(new Order
                {
                    _comment       = $"Sell {order.sellItem.displayName.english} x {order.sellItemAmount} for {order.currencyItem.displayName.english} x {order.currencyAmount}",
                    sellAmount     = order.currencyAmount,
                    currencyAmount = order.sellItemAmount,
                    sellId         = order.sellItem.itemid,
                    sellAsBP       = order.sellItemAsBP,
                    currencyId     = order.currencyItem.itemid
                });
            }
            data.VendingMachinesOrders.Add(vending.vendingOrders.name, orders.ToArray());
            Puts($"Added Vending Machine: {vending.vendingOrders.name} to data file!");
            dataChanged = true;
        }