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

FREE OreBonus : 1.0.0 1.0.0

Нет прав для скачивания
C#:
// Все права принадлежат дискорд сообществу https://discord.gg/VgNHPpNrz6
using System;
using System.Collections.Generic;
using UnityEngine;
using Random = UnityEngine.Random;

namespace Oxide.Plugins
{
    [Info("OreBonus", "r3dapple", "1.0.0")]
      //  Слив плагинов server-rust by Apolo YouGame
    class OreBonus : RustPlugin
    {
        private static float chance = 99f; //Шанс выпадения бонусной руды (в процентах, от 1 до 99)
        private static int radiation = 100; //Сколько выдавать радиации после переработки предмета
       
        ////////////////////////////////////
       
        private static int itemid = 204391461;
       
        object OnDispenserBonus(ResourceDispenser dispenser, BasePlayer player, Item item)
        {
            if (player == null) return null;
            if (dispenser.gatherType != ResourceDispenser.GatherType.Ore) return null;
            if (UnityEngine.Random.Range(0f, 100f) < chance)
            {
                switch (item.info.shortname)
                {
                    case "stones":
                        GiveOre(player, 1);
                        break;
                    case "metal.ore":
                        GiveOre(player, 2);
                        break;
                    case "hq.metal.ore":
                        GiveOre(player, 3);
                        break;
                    case "sulfur.ore":
                        GiveOre(player, 4);
                        break;
                }
            }
            return null;
        }
       
        private void GiveOre(BasePlayer player, int type)
        {
            ulong skinid = 0U;
            string newname = String.Empty;
           
            switch (type)
            {
                case 1:
                    skinid = 1499303078;
                    newname = "Радиоактивный камень";
                    break;
                case 2:
                    skinid = 1499311722;
                    newname = "Радиоактивный металл";
                    break;
                case 3:
                    skinid = 1499301592;
                    newname = "Радиоактивный МВК";
                    break;
                case 4:
                    skinid = 1499310834;
                    newname = "Радиоактивная сера";
                    break;
            }
           
            Item ore = ItemManager.CreateByItemID(itemid, 1, skinid);
            ore.name = newname;
           
            if (24 - player.inventory.containerMain.itemList.Count > 0)
            {
                ore.MoveToContainer(player.inventory.containerMain);
            }
            else if (6 - player.inventory.containerBelt.itemList.Count > 0)
            {
                ore.MoveToContainer(player.inventory.containerBelt);
            }
            else
            {
                ore.Drop(player.transform.position, Vector3.up);
                PrintToChat(player, "Радиоактивный предмет брошен Вам под ноги!");
            }
            PrintToChat(player, $"> Вы нашли предмет <color=#32CD32>{newname}</color>!");
            return;
        }
       
        void OnRecyclerToggle(Recycler recycler, BasePlayer player)
        {
            if (recycler.IsOn()) return;
            for (int i = 0; i < 6; i++)
            {
                Item slot = recycler.inventory.GetSlot(i);
                if (slot == null) continue;
                if (slot.info.itemid == itemid) player.metabolism.radiation_poison.value = radiation;
            }
           
        }
       
        private object OnRecycleItem(Recycler recycler, Item item)
        {
            if (item.info.itemid == itemid)
            {
                item.UseItem(1);
                switch (item.skin)
                {
                    case 1499303078:
                        recycler.MoveItemToOutput(ItemManager.CreateByName("stones", 10000 + Random.Range(1000, 10000)));
                        break;
                    case 1499311722:
                        recycler.MoveItemToOutput(ItemManager.CreateByName("metal.fragments", 10000 + Random.Range(1000, 10000)));
                        break;
                    case 1499301592:
                        recycler.MoveItemToOutput(ItemManager.CreateByName("metal.refined", 750 + Random.Range(100, 500)));
                        break;
                    case 1499310834:
                        recycler.MoveItemToOutput(ItemManager.CreateByName("sulfur", 5000 + Random.Range(1000, 5000)));
                        break;
                    default:
                        return null;
                }
                return true;
            }
            return null;
        }
       
        private object CanCombineDroppedItem(DroppedItem item, DroppedItem targetItem)
        {
            if (item.item.info.itemid == itemid) return false;
           
            return null;
        }
       
        private object CanStackItem(Item item, Item targetItem)
        {
            if (item.info.itemid == itemid) return false;
           
            return null;
        }
       
        [ChatCommand("getore")]
        private void cmdgetore(BasePlayer player, string command, string[] args)
        {
            if (!player.IsAdmin)
            {
                PrintToChat(player, "Нет прав!");
                return;
            }
            if (args.Length != 1)
            {
                PrintToChat(player, $"Используйте: /getore [номер руды]\n1 - камень\n2 - метал\n3 - МВК\n4 - сера");
                return;
            }
            int ruda = Int32.Parse(args[0]);
            GiveOre(player, ruda);
            return;
        }
       
        [ChatCommand("orec")]
        private void cmdoretest(BasePlayer player)
        {
            if (!player.IsAdmin) return;
            int count = 0;
            for (int i = 0; i < 50; i++)
            {
                if (UnityEngine.Random.Range(0f, 100f) < chance) count++;
            }
            PrintToChat(player, $"Из 50 руд выпадет примерно {count.ToString()} особых");
        }
    }
}

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