Иконка ресурса

FREE FNpcVendingFastBuy : 1.0.0 1.0.0

Нет прав для скачивания
C#:
using System.Linq;

namespace Oxide.Plugins
{
    [Info("FNpcVendingFastBuy", "fufeldev", "1.0.0")]
    public class FNpcVendingFastBuy : RustPlugin
    {
        private void OnServerInitialized()
        {
            NextTick(ResetAll);
            timer.Every(5f, ResetAll);
        }

        private void OnEntitySpawned(NPCVendingMachine vending)
        {
            if (vending is InvisibleVendingMachine) return;
            NextTick(() => ResetDiscounts(vending));
        }

        private void OnRefreshVendingStock(VendingMachine vending, ItemDefinition itemDefinition)
        {
            var npcVending = vending as NPCVendingMachine;
            if (npcVending == null) return;
            if (npcVending is InvisibleVendingMachine) return;
            NextTick(() => ResetDiscounts(npcVending));
        }

        private object OnBuyVendingItem(VendingMachine vending, BasePlayer player, int sellOrderId, int numberOfTransactions)
        {
            var npcVending = vending as NPCVendingMachine;
            if (npcVending == null || player == null) return null;
            if (npcVending is InvisibleVendingMachine) return null;
            ResetDiscounts(npcVending);
            var realSellOrderId = GetRealSellOrderId(npcVending, sellOrderId);
            if (realSellOrderId < 0) return true;
            npcVending.DoTransaction(player, realSellOrderId, numberOfTransactions);
            NextTick(() => ResetDiscounts(npcVending));
            return true;
        }

        private void ResetAll()
        {
            foreach (var vending in BaseNetworkable.serverEntities.OfType<NPCVendingMachine>())
            {
                if (vending is InvisibleVendingMachine) continue;
                ResetDiscounts(vending);
            }
        }

        private void ResetDiscounts(NPCVendingMachine vending)
        {
            if (vending == null || vending.IsDestroyed) return;
            if (vending is InvisibleVendingMachine) return;
            vending.BypassDynamicPricing = true;
            if (vending.sellOrders == null || vending.sellOrders.sellOrders == null) return;
            foreach (var sellOrder in vending.sellOrders.sellOrders)
            {
                sellOrder.priceMultiplier = 1f;
                sellOrder.receivedQuantityMultiplier = 1f;
            }
            vending.SendSellOrders();
            vending.SendNetworkUpdate(BasePlayer.NetworkQueue.Update);
        }

        private int GetRealSellOrderId(NPCVendingMachine vending, int visibleSellOrderId)
        {
            if (vending == null || vending.sellOrders == null || vending.sellOrders.sellOrders == null) return -1;
            var visibleIndex = 0;
            for (int i = 0; i < vending.sellOrders.sellOrders.Count; i++)
            {
                var sellOrder = vending.sellOrders.sellOrders[i];
                var itemDefinition = ItemManager.FindItemDefinition(sellOrder.itemToSellID);
                var currencyDefinition = ItemManager.FindItemDefinition(sellOrder.currencyID);
                if (itemDefinition == null || currencyDefinition == null) continue;
                if (!itemDefinition.IsAllowed(vending.CurrentEraRestriction) || !currencyDefinition.IsAllowed(vending.CurrentEraRestriction)) continue;
                if (visibleIndex == visibleSellOrderId) return i;
                visibleIndex++;
            }
            return -1;
        }
    }
}

Автор
15FPS
Скачиваний
0
Просмотры
1
Первый выпуск
Обновление
Оценка
0.00 звёзд 0 оценок
Сверху