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

FREE HealthChange : 1.0.0 1.0.0

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

namespace Oxide.Plugins
{
    [Info("HealthChange", "CA$HR(discord: CASHR#6906)", "1.0.0")]
    internal class HealthChange : RustPlugin
    {
        #region Static

        private static HealthChange _;
        private Configuration _config;

        #endregion

        #region Config

        private class Configuration
        {
            [JsonProperty(PropertyName = "Список настроек хп по привилегиям", ObjectCreationHandling = ObjectCreationHandling.Replace)]
            public Dictionary<string, int> HPList = new Dictionary<string, int>()
            {
                ["heathchange.default"] = 100,
                ["heathchange.vip"] = 150,
                ["heathchange.elite"] = 200, 
            };
            
            [JsonProperty(PropertyName = "Список настроек урона по привилегиям", ObjectCreationHandling = ObjectCreationHandling.Replace)]
            public Dictionary<string, float> DamageList = new Dictionary<string, float>()
            {
                ["heathchange.default"] = 1,
                ["heathchange.vip"] = 1.2f,
                ["heathchange.elite"] = 1.5f,
            };
        }

        protected override void LoadConfig()
        {
            base.LoadConfig();
            try
            {
                _config = Config.ReadObject<Configuration>();
                if (_config == null) throw new Exception();
                SaveConfig();
            }
            catch
            {
                PrintError("Your configuration file contains an error.Using default configuration values.");
                LoadDefaultConfig();
            }
        }

        protected override void SaveConfig()
        {
            Config.WriteObject(_config);
        }

        protected override void LoadDefaultConfig()
        {
            _config = new Configuration();
        }

        #endregion

        #region OxideHooks

        private void OnServerInitialized()
        {
            _ = this;
            foreach (var check in _config.HPList)
            {
                permission.RegisterPermission(check.Key, this);
            }
            foreach (var check in _config.DamageList)
            {
                permission.RegisterPermission(check.Key, this);
            }
            PrintError("|-----------------------------------|");
            PrintWarning($"|  Plugin {Title} v{Version} is loaded  |");
            PrintWarning("|          Discord: CASHR#6906      |");
            PrintError("|-----------------------------------|");

        }

        private object OnEntityTakeDamage(BaseEntity entity, HitInfo info)
        {
            if (entity == null || info == null) return null;
            var attacker = info.InitiatorPlayer;
            if (attacker == null) return null;
            var damage = GetDamage(attacker);
            info.damageTypes.ScaleAll(damage);
            return null;
        }
        private void OnPlayerRespawned(BasePlayer player)
        {
            UpdateHealth(player, GetMaxHP(player));
        }

        private void OnPlayerConnected(BasePlayer player)
        {
            UpdateHealth(player, GetMaxHP(player));
        }
        private void UpdateHealth(BasePlayer player,float amount)
        {
            var modifiers = new List<ModifierDefintion>();
            modifiers.Clear();

            float HealthPercent = 0;
            amount = amount < 0 ? 0 : amount;
            if (amount < 100)
                HealthPercent = (100f - amount) / 100f * -1;
            else
                HealthPercent = amount / 100f - 1;
            var modifier = new ModifierDefintion()
            {
                type = Modifier.ModifierType.Max_Health, duration = 86400, source = Modifier.ModifierSource.Tea,
                value = HealthPercent,
            };
            modifiers.Add(modifier);
            player.modifiers.Add(modifiers); 
        }
        private int GetMaxHP(BasePlayer player)
        {
            int damage = 100;
            foreach (var check in _config.HPList)
            {
                if(permission.UserHasPermission(player.UserIDString, check.Key))
                    damage = Math.Max(check.Value, damage);
            }
            return damage;
        }
        private float GetDamage(BasePlayer player)
        {
            float damage = 1f;
            foreach (var check in _config.DamageList)
            {
                if(permission.UserHasPermission(player.UserIDString, check.Key))
                    damage = Math.Max(check.Value, damage);
            }
            return damage;
        }
        private void Unload()
        {
            _ = null;
        }

        #endregion


        #region Function

        private void DestroyAll<T>()
        {
            var objects = UnityEngine.Object.FindObjectsOfType(typeof(T));
            objects?.ToList().ForEach(UnityEngine.Object.Destroy);
        }

        #endregion
    }
}

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