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

FREE ReJack : 1.0.1 1.0.1

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

namespace Oxide.Plugins
{
    [Info("ReJack", "RFC1920", "1.0.1")]
    [Description("Field reloading of jackhammer")]
    class ReJack : RustPlugin
    {
        ConfigData configData;
        public static ReJack Instance = null;
        private const string permReJack = "rejack.use";
        List<ulong> activeJack = new List<ulong>();

        void OnServerInitialized()
        {
            Instance = this;
            LoadConfigVariables();
            AddCovalenceCommand("rejack", "RejackCmd");
            AddCovalenceCommand("repjack", "RepairCmd");
            permission.RegisterPermission(permReJack, this);
        }

        #region Message
        private string Lang(string key, string id = null, params object[] args) => string.Format(lang.GetMessage(key, this, id), args);
        private void Message(IPlayer player, string key, params object[] args) => player.Message(Lang(key, player.Id, args));
        private void LMessage(IPlayer player, string key, params object[] args) => player.Reply(Lang(key, player.Id, args));
        #endregion

        protected override void LoadDefaultMessages()
        {
            lang.RegisterMessages(new Dictionary<string, string>
            {
                ["notauthorized"] = "You don't have permission to use this command.",
                ["repaired"] = "Your jackhammer has been repaired.",
                ["refilled"] = "Your jackhammer has been refilled.",
                ["repairjack"] = "Jackhammer can be used for repair for {0} seconds.",
                ["repairjacked"] = "Jackhammer function back to normal",
                ["itemrepaired"] = "Item fully repaired"
            }, this);
        }

        [Command ("rejack")]
        private void RejackCmd(IPlayer iplayer, string command, string[] args)
        {
            if (iplayer == null) return;
            if (configData.Options.usePermission && !iplayer.HasPermission(permReJack))
            {
                Message(iplayer, "notauthorized");
                return;
            }

            var player = iplayer.Object as BasePlayer;
            foreach (Item item in player.inventory.containerBelt.itemList)
            {
                if(item.info.name.Equals("jackhammer.item"))
                {
                    if (configData.Options.repairFully) item.info.condition.max = 500;
                    Effect.server.Run("assets/bundled/prefabs/fx/repairbench/itemrepair.prefab", player.transform.position);
                    item.condition = item.info.condition.max;
                    item.MarkDirty();
                    Message(iplayer, "repaired");
                }
            }
        }

        [Command ("repjack")]
        private void RepairCmd(IPlayer iplayer, string command, string[] args)
        {
            if (iplayer == null) return;
            if (configData.Options.usePermission && !iplayer.HasPermission(permReJack))
            {
                Message(iplayer, "notauthorized");
                return;
            }

            var player = iplayer.Object as BasePlayer;
            player.gameObject.AddComponent<RepairJack>();
        }

        private object OnEntityTakeDamage(BaseCombatEntity entity, HitInfo hitinfo)
        {
            if (entity == null) return null;
            var player = hitinfo.Initiator as BasePlayer;
            if (player == null) return null;

            if (!activeJack.Contains(player.userID)) return null;

            if (entity.health >= entity.MaxHealth())
            {
                Message(player.IPlayer, "itemrepaired");
                return null;
            }

            entity.health += 20f;
            return true;
        }

        void Unload()
        {
            foreach(var pl in BasePlayer.activePlayerList)
            {
                UnityEngine.Object.Destroy(pl.gameObject.GetComponent<RepairJack>());
            }
        }

        class RepairJack : MonoBehaviour
        {
            BasePlayer player;
            float time;

            void Awake()
            {
                player = GetComponentInParent<BasePlayer>();
                Instance.activeJack.Add(player.userID);
                time = Instance.configData.Options.repjacktime;
                Instance.Message(player.IPlayer, "repairjack", time.ToString());
                Destroy(this, time);
            }

            void OnDestroy()
            {
                Instance.Message(player.IPlayer, "repairjacked");
                Instance.activeJack.Remove(player.userID);
            }
        }

        private void OnPlayerInput(BasePlayer player, InputState input)
        {
            if (player == null || input == null) return;
            if (configData.Options.usePermission && !player.IPlayer.HasPermission(permReJack)) return;

            if(input.WasJustPressed(BUTTON.RELOAD))
            {
                var held = player.GetHeldEntity();
                if (held == null) return;

                if (held is Jackhammer)
                {
                    var item = player.GetActiveItem();
                    if (item == null) return;

                    Effect.server.Run("assets/prefabs/clothes/diving.tank/effects/tank_refill.prefab", player.transform.position);
                    if (configData.Options.repairFully) item.info.condition.max = 500;
                    item.condition = item.info.condition.max;
                    item.MarkDirty();
                    Message(player.IPlayer, "refilled");
                }
            }
        }

        #region config
        protected override void LoadDefaultConfig()
        {
            Puts("Creating new config file.");
            var config = new ConfigData
            {
                Options = new Options()
                {
                    usePermission = false,
                    repairFully = false,
                    repjacktime = 30f
                }
            };
            SaveConfig(config);
        }

        private void LoadConfigVariables()
        {
            configData = Config.ReadObject<ConfigData>();

            configData.Version = Version;
            SaveConfig(configData);
        }

        private void SaveConfig(ConfigData config)
        {
            Config.WriteObject(config, true);
        }

        public class ConfigData
        {
            public Options Options = new Options();
            public VersionNumber Version;
        }

        public class Options
        {
            public bool usePermission;
            public bool repairFully;
            public float repjacktime;
        }
        #endregion
    }
}

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