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

FREE StopDamageMan : 1.1.0 1.1.0

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

namespace Oxide.Plugins
{
    [Info("StopDamageMan", "FuzeEffect", "1.1.0")]
    class StopDamageMan : RustPlugin
    {
        #region Varibles
        public List<ulong> PlayerStopDamage = new List<ulong>();
        #endregion

        #region Hooks

        void OnServerInitialized()
        {
            LoadDefaultMessages();
            permission.RegisterPermission("stopdamageman.use", this);
            PlayerStopDamage = Oxide.Core.Interface.Oxide.DataFileSystem.ReadObject<List<ulong>>("StopDamageMan/PlayerList");

            PrintError($"-----------------------------------");
            PrintError($"           StopDamageMan           ");
            PrintError($"          Created - Sky Eye        ");
            PrintError($"      Author = FuzeEffect#5212     ");
            PrintError($"    https://vk.com/skyeyeplugins   ");
            PrintError($"-----------------------------------");
        }

        void Unload()
        {
            Oxide.Core.Interface.Oxide.DataFileSystem.WriteObject("StopDamageMan/PlayerList", PlayerStopDamage);
        }

        void OnServerSave()
        {
            Oxide.Core.Interface.Oxide.DataFileSystem.WriteObject("StopDamageMan/PlayerList", PlayerStopDamage);
        }

        private void OnEntityTakeDamage(BaseCombatEntity entity, HitInfo hitInfo)
        {
            BasePlayer damager = hitInfo.InitiatorPlayer;
            if (entity == null || hitInfo == null || damager == null) return;
            if(PlayerStopDamage.Contains(damager.userID))
            {
                hitInfo.damageTypes.ScaleAll(0);
            }   
        }

        #endregion

        #region Commands

        [ChatCommand("sdm_add")]
        void AddPlayerNoDamageList(BasePlayer player, string command, string[] args)
        {
            if(!player.IsAdmin || !permission.UserHasPermission(player.UserIDString, "stopdamageman.use")) return; 

            var targetPlayer = FindPlayerByPartialName(args[0]);
            if (targetPlayer == null)
            {
                SendReply(player, lang.GetMessage("NOT_FOUND", this));
                return;
            }

            if (!PlayerStopDamage.Contains(targetPlayer.userID))
            {
                PlayerStopDamage.Add(targetPlayer.userID);
                SendReply(player, String.Format(lang.GetMessage("PLAYER_ACCEPT", this), targetPlayer.displayName));
            }
            else { SendReply(player, String.Format(lang.GetMessage("PLAYER_NDM", this), targetPlayer.displayName)); }
            
        }

        [ChatCommand("sdm_remove")]
        void RemovePlayerNoDamageList(BasePlayer player, string command, string[] args)
        {
            if (!player.IsAdmin || !permission.UserHasPermission(player.UserIDString, "stopdamageman.use")) return;

            var targetPlayer = FindPlayerByPartialName(args[0]);
            if (targetPlayer == null)
            {
                SendReply(player, lang.GetMessage("NOT_FOUND", this));
                return;
            }

            if (PlayerStopDamage.Contains(targetPlayer.userID))
            {
                PlayerStopDamage.Remove(targetPlayer.userID);
                SendReply(player, String.Format(lang.GetMessage("PLAYER_DICLINE", this), targetPlayer.displayName));
            }
            else { SendReply(player, String.Format(lang.GetMessage("PLAYER_YDM", this), targetPlayer.displayName)); }

        }

        #endregion

        #region HelpMetods

        private BasePlayer FindPlayerByPartialName(string name)
        {
            if (string.IsNullOrEmpty(name))
                return null;
            BasePlayer player = null;
            name = name.ToLower();
            var awakePlayers = BasePlayer.activePlayerList.ToArray();
            foreach (var p in awakePlayers)
            {
                if (p.net == null || p.net.connection == null)
                    continue;

                if (p.displayName == name)
                {
                    if (player != null)
                        return null;
                    player = p;
                }
            }

            if (player != null)
                return player;
            foreach (var p in awakePlayers)
            {
                if (p.net == null || p.net.connection == null)
                    continue;

                if (p.displayName.ToLower().IndexOf(name) >= 0)
                {
                    if (player != null)
                        return null;
                    player = p;
                }
            }

            return player;
        }

        #endregion

        #region Lang
        private new void LoadDefaultMessages()
        {
            PrintWarning("Языковой файл загружается...");
            timer.In(2.5f, () => {
                Dictionary<string, string> Lang = new Dictionary<string, string>
                {
                    ["NOT_FOUND"] = "Введите конкретное значение или ник",
                    ["PLAYER_ACCEPT"] = "Игроку {0} успешно отключен урон",
                    ["PLAYER_DICLINE"] = "Игроку {0} успешно включен урон",
                    ["PLAYER_NDM"] = "У игрока {0} уже отключен урон",
                    ["PLAYER_YDM"] = "У игрока {0} уже включен урон",
                };
                lang.RegisterMessages(Lang, this, "en");
                PrintWarning("Языковой файл успешно загружен");
            });
        }
        #endregion
    }
}

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