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

FREE RecoveryItems : 1.0.1 1.0.1

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

namespace Oxide.Plugins
{
    [Info("RecoveryItems", "RedMat", "1.0.1", ResourceId = 2091)]
    [Description("If you wear an item it is recovered.")] 
    class RecoveryItems : RustPlugin
    {
        #region Global variables
        // Global variables declared area
        string gstrItemListFileNm = "RecoveryItemsData";
        string gstrItemListInfoFileNm = "RecoveryItemsDataInfo";

        #region Timer
        Timer gobjTimer = null;
        #endregion

        #endregion

        #region Init
        void Init()
        {
            LoadDefaultMessages();

            // permission set
            permission.RegisterPermission("recoveryitems.use", this);
        }
        #endregion

        #region Localization

        void LoadDefaultMessages()
        {
            lang.RegisterMessages(new Dictionary<string, string>
            {
                ["NoPermission"] = "No permission",
                ["TimeChange"] = "The HP recovery time has changed.",
                ["ItemAdd"] = "Item Add.",
                ["ItemDel"] = "Item Delete",
                ["StartHeal"] = "Start Heal",
                ["Help"] = "Help : /hpitem command[add, del] itemID Amount"
            }, this);
        }

        #endregion

        #region Runtime plug-ins loaded
        /// <summary>
        /// Runtime plug-ins loaded
        /// </summary>
        void Loaded()
        {
            recoveryItemsData = Interface.Oxide.DataFileSystem.ReadObject<RecoveryItemsData>(gstrItemListFileNm);
            recoveryItemsDataInfo = Interface.Oxide.DataFileSystem.ReadObject<RecoveryItemsDataInfo>(gstrItemListInfoFileNm);

            // Default Value
            if (!recoveryItemsData.glstRecoveryItemsData.Contains(2007564590)) recoveryItemsData.glstRecoveryItemsData.Add(2007564590);
            if (!recoveryItemsDataInfo.glstRecoveryItemsDataInfo.ContainsKey(2007564590)) recoveryItemsDataInfo.glstRecoveryItemsDataInfo.Add(2007564590, 1);

            Interface.Oxide.DataFileSystem.WriteObject(gstrItemListFileNm, recoveryItemsData);
            Interface.Oxide.DataFileSystem.WriteObject(gstrItemListInfoFileNm, recoveryItemsDataInfo);

            fStartTimer();
        }
        #endregion

        #region user function

        #region Timer
        private void fStartTimer()
        {
            Single sglTimer = Single.Parse(Config["HpRecoveryTime"].ToString());

            List<int> lstItemData = recoveryItemsData.glstRecoveryItemsData;
            Dictionary<int, int> dctRecoveryItemsDataInfo = recoveryItemsDataInfo.glstRecoveryItemsDataInfo;

            #region í íì´ë¨¸ ì²ë¦¬
            if (gobjTimer != null) gobjTimer.Destroy();
            gobjTimer = timer.Repeat(sglTimer, 0, () =>
            {
                // Search in all your (login)
                for (int i = 0; i < BasePlayer.activePlayerList.Count; i++)
                {
                    BasePlayer objPlayer = new BasePlayer();

                    objPlayer = BasePlayer.activePlayerList[i];

                    // Apply the amount of recovered items set
                    for (int y = 0; y < lstItemData.Count; y++)
                    {
                        // Check whether the item is set
                        if (dctRecoveryItemsDataInfo.ContainsKey(lstItemData[y]))
                        {
                            if ((bool)fGetWear(objPlayer, lstItemData[y]))
                            {
                                objPlayer.Heal(dctRecoveryItemsDataInfo[lstItemData[y]]);
                            }
                        }
                    }
                }
            });
            #endregion
        }
        #endregion
        
        #region Whether to wear a particular item
        private bool fGetWear(BasePlayer pobjBasePlayer, int pintItemID)
        {
            Item objWearItem = pobjBasePlayer.inventory.containerWear.FindItemByItemID(pintItemID);

            if (objWearItem != null)
            {
                return true;
            }

            return false;
        }
        #endregion

        #region ChatCommand

        [ChatCommand("rt")]
        void fChatCmdHpTime(BasePlayer pbasPlayer, string pstrCmd, string[] args)
        {
            string strParam = "";
            string strConfig = Config["HpRecoveryTime"].ToString();
            Single sglHpTime = 5f;

            // Check permissions
            if (!permission.UserHasPermission(pbasPlayer.UserIDString, "recoveryitems.use"))
            {
                SendReply(pbasPlayer, Lang("NoPermission", pbasPlayer.UserIDString));
                return;
            }

            if (args.Length > 0)
            {
                strParam = args[0];
                Single.TryParse(strParam, out sglHpTime);
            }

            Single.TryParse(strConfig, out sglHpTime);

            if (strConfig == null || sglHpTime < 1)
            {
                Config["HpRecoveryTime"] = 5f;
            }
            else
            {
                Config["HpRecoveryTime"] = sglHpTime;
            }

            SaveConfig();

            SendReply(pbasPlayer, Lang("TimeChange", pbasPlayer.UserIDString));

            fStartTimer();
        }

        [ChatCommand("ri")]
        void fChatCmdHpItem(BasePlayer pbasPlayer, string pstrCmd, string[] args)
        {
            // Check permissions
            if (!permission.UserHasPermission(pbasPlayer.UserIDString, "recoveryitems.use"))
            {
                SendReply(pbasPlayer, Lang("NoPermission", pbasPlayer.UserIDString));
                return;
            }

            if (args.Length > 3)
            {
                SendReply(pbasPlayer, Lang("Help", pbasPlayer.UserIDString));
            }
            else
            {
                switch(args[0])
                {
                    case "add":
                        if (!recoveryItemsData.glstRecoveryItemsData.Contains(int.Parse(args[1])))
                        {
                            recoveryItemsData.glstRecoveryItemsData.Add(int.Parse(args[1]));
                        }

                        if (!recoveryItemsDataInfo.glstRecoveryItemsDataInfo.ContainsKey(int.Parse(args[1])))
                        {
                            recoveryItemsDataInfo.glstRecoveryItemsDataInfo.Add(int.Parse(args[1]), int.Parse(args[2]));
                        }

                        SendReply(pbasPlayer, Lang("ItemAdd", pbasPlayer.UserIDString));
                        break;
                    case "del":
                        if (recoveryItemsData.glstRecoveryItemsData.Contains(int.Parse(args[1])))
                        {
                            recoveryItemsData.glstRecoveryItemsData.Remove(int.Parse(args[1]));
                        }

                        if (recoveryItemsDataInfo.glstRecoveryItemsDataInfo.ContainsKey(int.Parse(args[1])))
                        {
                           recoveryItemsDataInfo.glstRecoveryItemsDataInfo.Remove(int.Parse(args[1]));
                        }

                        SendReply(pbasPlayer, Lang("ItemDel", pbasPlayer.UserIDString));
                        break;
                    default:
                        SendReply(pbasPlayer, Lang("Help", pbasPlayer.UserIDString));
                        break;
                }

                Interface.Oxide.DataFileSystem.WriteObject(gstrItemListFileNm, recoveryItemsData);
                Interface.Oxide.DataFileSystem.WriteObject(gstrItemListInfoFileNm, recoveryItemsDataInfo);

                fStartTimer();
                SendReply(pbasPlayer, Lang("StartHeal", pbasPlayer.UserIDString));
            }
        }

        #endregion

        #region Config File Create
        protected override void LoadDefaultConfig()
        {
            PrintWarning("Creating a new configuration file");
            Config.Clear();
            Config["HpRecoveryTime"] = 5;
            SaveConfig();
        }
        #endregion

        #region DataFile Create
        RecoveryItemsData recoveryItemsData;
        RecoveryItemsDataInfo recoveryItemsDataInfo;

        class RecoveryItemsData
        {
            public List<int> glstRecoveryItemsData = new List<int>();

            public RecoveryItemsData()
            {
            }
        }

        class RecoveryItemsDataInfo
        {
            public Dictionary<int, int> glstRecoveryItemsDataInfo = new Dictionary<int, int>();

            public RecoveryItemsDataInfo()
            {
            }
        }
        #endregion

        string Lang(string key, string id = null, params object[] args) => string.Format(lang.GetMessage(key, this, id), args);

        #endregion
    }
}

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