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

FREE PillsHere : 3.2.1 3.2.1

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

namespace Oxide.Plugins
{
    [Info("Pills Here", "Wulf", "3.2.1")]
    [Description("Recovers health, hunger, and/or hydration by set amounts on item use")]
    class PillsHere : CovalencePlugin
    {
        #region Configuration

        private Configuration config;

        public class Configuration
        {
            [JsonProperty("Calories amount (0.0 - 500.0)")]
            public float CaloriesAmount = 50f;

            [JsonProperty("Health amount (0.0 - 100.0)")]
            public float HealthAmount = 10f;

            [JsonProperty("Hydration amount (0.0 - 250.0)")]
            public float HydrationAmount = 25f;

            [JsonProperty("Item ID or short name to use")]
            public string ItemIdOrShortName = "antiradpills";

            [JsonProperty("Use permission system")]
            public bool UsePermissions = true;

            public string ToJson() => JsonConvert.SerializeObject(this);

            public Dictionary<string, object> ToDictionary() => JsonConvert.DeserializeObject<Dictionary<string, object>>(ToJson());
        }

        protected override void LoadDefaultConfig() => config = new Configuration();

        protected override void LoadConfig()
        {
            base.LoadConfig();
            try
            {
                config = Config.ReadObject<Configuration>();
                if (config == null)
                {
                    throw new JsonException();
                }

                if (!config.ToDictionary().Keys.SequenceEqual(Config.ToDictionary(x => x.Key, x => x.Value).Keys))
                {
                    LogWarning("Configuration appears to be outdated; updating and saving");
                    SaveConfig();
                }
            }
            catch
            {
                LogWarning($"Configuration file {Name}.json is invalid; using defaults");
                LoadDefaultConfig();
            }
        }

        protected override void SaveConfig()
        {
            LogWarning($"Configuration changes saved to {Name}.json");
            Config.WriteObject(config, true);
        }

        #endregion Configuration

        #region Initialization

        private const string permUse = "pillshere.use";

        private void Init()
        {
            permission.RegisterPermission(permUse, this);

            // Check if item name or ID used is old or not set
            if (string.IsNullOrEmpty(config.ItemIdOrShortName) || config.ItemIdOrShortName == "1685058759")
            {
                LogWarning("Old or no item configured, using default item: antiradpills");
                config.ItemIdOrShortName = "antiradpills";
                SaveConfig();
            }
        }

        #endregion Initialization

        #region Item Handling

        private void OnItemUse(Item item)
        {
            // Check if item name or ID used matches what is configured
            if (item.info.itemid.ToString() != config.ItemIdOrShortName && item.info.shortname != config.ItemIdOrShortName) // -1432674913 or antiradpills
            {
                return;
            }

            // Check of item was used by a real player
            BasePlayer player = item.GetOwnerPlayer();
            if (player == null)
            {
                return;
            }

            // Check if player has permission to use this
            if (config.UsePermissions && !permission.UserHasPermission(player.UserIDString, permUse))
            {
                return;
            }

            // Heal player and restore calories and hydration
            float targetHydration = player.metabolism.hydration.lastValue + config.HydrationAmount;
            player.metabolism.hydration.value = Mathf.Clamp(targetHydration, player.metabolism.hydration.min, player.metabolism.hydration.max); // Max: 250
            float targetCalories = player.metabolism.calories.lastValue + config.CaloriesAmount;
            player.metabolism.calories.value = Mathf.Clamp(targetCalories, player.metabolism.calories.min, player.metabolism.calories.max); // Max: 500
            player.Heal(config.HealthAmount);
        }

        #endregion Item Handling
    }
}

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