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

FREE FunNoCold : 1.0.0 1.0.0

Нет прав для скачивания
C#:
using System.Collections.Generic;
using Oxide.Core;

namespace Oxide.Plugins
{
    [Info("FunNoCold", "Dopler", "1.0.0")]
    [Description("Убирает эффект холода у игрока при наличии соответствующего разрешения")]
    public class FunNoCold : RustPlugin
    {
        #region Configuration
        private Configuration config;
        private HashSet<ulong> immunePlayers = new();

        private sealed class Configuration
        {
            public float ImmunePlayerTemperature = 25.0f;
            public VersionNumber Version = new(1, 0, 1);
        }

        protected override void LoadConfig()
        {
            base.LoadConfig();
            try
            {
                config = Config.ReadObject<Configuration>();
                if (config == null) throw new System.Exception("Config is null");
                UpdateConfigValues();
            }
            catch
            {
                LoadDefaultConfig();
            }
            SaveConfig();
        }

        protected override void LoadDefaultConfig()
        {
            config = new Configuration();
            Puts("Создана конфигурация по умолчанию.");
        }

        private void UpdateConfigValues()
        {
            if (config.Version < new VersionNumber(1, 0, 1))
            {
                config.Version = new VersionNumber(1, 0, 1);
            }
        }
        #endregion

        #region Hooks
        private const string PermissionUse = "funnocold.use";

        private void OnServerInitialized()
        {
            permission.RegisterPermission(PermissionUse, this);

            foreach (var player in BasePlayer.activePlayerList)
            {
                if (permission.UserHasPermission(player.UserIDString, PermissionUse))
                    immunePlayers.Add(player.userID);
            }
        }

        private void OnPlayerConnected(BasePlayer player)
        {
            if (permission.UserHasPermission(player.UserIDString, PermissionUse))
                immunePlayers.Add(player.userID);
        }

        private void OnPlayerDisconnected(BasePlayer player, string reason)
        {
            immunePlayers.Remove(player.userID);
        }

        private void OnUserPermissionGranted(string id, string permName)
        {
            if (permName == PermissionUse && ulong.TryParse(id, out var userId))
                immunePlayers.Add(userId);
        }

        private void OnUserPermissionRevoked(string id, string permName)
        {
            if (permName == PermissionUse && ulong.TryParse(id, out var userId))
                immunePlayers.Remove(userId);
        }

        private object OnRunPlayerMetabolism(PlayerMetabolism metabolism, BaseCombatEntity entity, float delta)
        {
            if (metabolism == null) return null;
            if (entity is not BasePlayer player || !player.IsConnected || player.IsNpc)
                return null;

            if (immunePlayers.Contains(player.userID))
            {
                metabolism.temperature.value = config.ImmunePlayerTemperature;
            }

            return null;
        }
        #endregion
    }
}

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