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

FREE BloodPackage : 1.0.5 1.0.5

Нет прав для скачивания
C#:
using Oxide.Core.Plugins;
using UnityEngine;
using Oxide.Game.Rust.Cui;
using System.Collections.Generic;
using System;
using Random = UnityEngine.Random;
using Newtonsoft.Json;
using Oxide.Core;
using System.Linq;
namespace Oxide.Plugins {
    [Info("BloodPackage", "setfps", "1.0.5")]
    public class BloodPackage : RustPlugin {
        [PluginReference]
        private Plugin ImageLibrary;
        [PluginReference]
        private Plugin setfps;
        void OnServerInitialized() {
            if (!plugins.Exists("ImageLibrary")) {
                PrintError("Плагин ImageLibrary не обнаружен");
                Interface.Oxide.UnloadPlugin("BloodPackage");
                return;
            }
            ImageLibrary.Call("AddImage", "https://i.imgur.com/hGNLb0C.png", "blood");
            BasePlayer.activePlayerList.ToList().ForEach(OnPlayerInit);
            if (!setfps) {
                PrintWarning("Разработка плагинов - vk.com/bloodeyesplugins");
                return;
            }
        }
#region Config
        private ConfigData configData;
        class ConfigData {
            [JsonProperty(PropertyName = "Настройка")]
            public krov Blood {
                get;
                set;
            }
            public class krov {
                [JsonProperty(PropertyName = "Основные настройки")]
                public bloodkrov nadoconfig {
                    get;
                    set;
                }
                public class bloodkrov {
                    [JsonProperty("Сколько нужно 'пакетиков с кровью' для того, чтобы игрок 'встал'")]
                    public int blood {
                        get;
                        set;
                    }
                    [JsonProperty("Включить тряску экрана после использования 'пакетика с кровью'?")]
                    public bool TryaskaTryaska = false;
                    [JsonProperty("Выпадение 'пакетика крови' с животного?")]
                    public bool enable = true;
                    [JsonProperty("Шанс выпадания 'пакетика крови' с добычи животного (если работает параметр выше)")]
                    public int chance = 10;
                    [JsonProperty("Сколько 'пакетиков с кровью' выпадает при добыче? (если включен параметр выше)")]
                    public int kolvo = 1;
                }
            }
        }
#endregion
        protected override void LoadConfig() {
            base.LoadConfig();
            configData = Config.ReadObject<ConfigData>();
            Config.WriteObject(configData, true);
        }
        protected override void LoadDefaultConfig() {
            configData = GetBaseConfig();
        }
        protected override void SaveConfig() => Config.WriteObject(configData, true);
        private ConfigData GetBaseConfig() => new ConfigData {
            Blood = new ConfigData.krov {
                nadoconfig = new ConfigData.krov.bloodkrov {
                    blood = 1,
                }
            }
        }
        ;
#region Hooks
        void OnPlayerInit(BasePlayer player) {
            if (player.IsReceivingSnapshot) {
                NextTick(() => OnPlayerInit(player));
                return;
            }
            ImageLibrary.Call("GetImage", "blood");
        }
        private void GetConfig<T>(string menu, string key, ref T varObject) {
            if (Config[menu, key] != null) {
                varObject = Config.ConvertValue<T>(Config[menu, key]);
            }
            else {
                Config[menu, key] = varObject;
            }
        }
        private static List<string> Effects = new List<string> {
            "assets/prefabs/tools/jackhammer/effects/strike_screenshake.prefab", "assets/prefabs/weapons/doubleshotgun/effects/attack_shake.prefab", "assets/prefabs/weapons/hatchet/effects/strike_screenshake.prefab", "assets/prefabs/weapons/rock/effects/strike_screenshake.prefab", "assets/prefabs/weapons/smg/effects/attack_shake.prefab", "assets/prefabs/weapons/torch/effects/strike_screenshake.prefab"
        }
        ;
        private void Tryaska(BasePlayer player, float amount) {
            if (Math.Abs(amount - 0.25f * 100) < 0.5 || player.IsDead()) return;
            Effect tryska = new Effect(Effects.GetRandom(), player, 0, new Vector3(), new Vector3());
            EffectNetwork.Send(tryska, player.Connection);
            amount += 0.25f;
            timer.Once(0.25f, () => Tryaska(player, amount));
        }
        void OnPlayerWound(BasePlayer player) {
            if (player == null) return;
            DrawUI(player);
        }
        private void OnPlayerRecover(BasePlayer player) {
            if (player == null) return;
            DestroyAll(player);
        }
        void OnPlayerRespawn(BasePlayer player) {
            DestroyAll(player);
        }
        private void OnPlayerRespawned(BasePlayer player) {
            DestroyAll(player);
        }
        private void DestroyAll(BasePlayer player) {
            CuiHelper.DestroyUi(player, "BloodPackage_UI");
        }
        void OnDispenserGather(ResourceDispenser dispenser, BaseEntity entity, Item item) {
            if (configData.Blood.nadoconfig.enable) {
                if (dispenser.gatherType == ResourceDispenser.GatherType.Flesh) {
                    if (Random.Range(0, 100) <= configData.Blood.nadoconfig.chance) {
                        if (dispenser.GetComponent<BaseEntity>().ShortPrefabName == "bear.corpse" || dispenser.GetComponent<BaseEntity>().ShortPrefabName == "wolf.corpse" || dispenser.GetComponent<BaseEntity>().ShortPrefabName == "boar.corpse" || dispenser.GetComponent<BaseEntity>().ShortPrefabName == "player.corpse") {
                            (entity as BasePlayer).inventory.GiveItem(ItemManager.CreateByName("blood", configData.Blood.nadoconfig.kolvo));
                            (entity as BasePlayer).SendConsoleCommand($"note.inv {item.info.itemid} 1 \"Пакетик с кровью\"");
                        }
                    }
                }
            }
        }
        void OnPlayerDeath(BasePlayer player, HitInfo info) {
            DestroyAll(player);
        }
        void Unload() {
            foreach (BasePlayer player in BasePlayer.activePlayerList) {
                DestroyAll(player);
            }
        }
#endregion
#region Commands
        [ConsoleCommand("BloodPackageUI_One")]
        private void CmdHandler(ConsoleSystem.Arg args) {
            BasePlayer player = args.Player();
            if (player == null) return;
            if (!player.IsWounded()) return;
            var itemcount = player.inventory.GetAmount(ItemManager.FindItemDefinition("blood").itemid);
            if (itemcount >= configData.Blood.nadoconfig.blood) {
                player.inventory.Take(null, ItemManager.FindItemDefinition("blood").itemid, 1);
            }
            else {
                SendReply(player, "У вас недостаточно пакетов с кровью");
                return;
            }
            player.StopWounded();
            DestroyAll(player);
            if (configData.Blood.nadoconfig.TryaskaTryaska) {
                Tryaska(player, 0);
            }
            SendReply(player, "Вы <color=#689656>успешно</color> использовали пакет крови");
        }
#endregion
#region UI
        void DrawUI(BasePlayer player) {
            var itemcount = player.inventory.GetAmount(ItemManager.FindItemDefinition("blood").itemid);
            string Layer = "BloodPackage_UI";
            CuiElementContainer container = new CuiElementContainer();
            container.Add(new CuiPanel {
                CursorEnabled = true, Image = {
                    Color = "0 0 0 0"
                }
                , RectTransform = {
                    AnchorMin = "0.5 0", AnchorMax = "0.5 0", OffsetMin = "-264 18", OffsetMax = "-204 78"
                }
            }
            , "Overlay", Layer);
            container.Add(new CuiElement {
                Parent = Layer, Components = {
                    new CuiRawImageComponent() {
                        Png = (string) ImageLibrary.Call("GetImage", "blood"), Color = "0 0 0 0.4",
                    }
                    , new CuiRectTransformComponent() {
                        AnchorMin = "0 0", AnchorMax = "1 1", OffsetMin = "0 0", OffsetMax = "0 0"
                    }
                }
            }
            );
            container.Add(new CuiButton {
                RectTransform = {
                    AnchorMin = "0 0", AnchorMax = "1 1", OffsetMin = "0 0", OffsetMax = "0 0"
                }
                , Button = {
                    Color = "0.968627453 0.92451568632 0.882352948 0.03529412", Command = "BloodPackageUI_One", Close = Layer
                }
                , Text = {
                    Text = $"У ВАС: {itemcount}", Align = TextAnchor.MiddleCenter, FontSize = 10
                }
            }
            , Layer);
            CuiHelper.AddUi(player, container);
        }
#endregion
    }
}

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