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

FREE SecureAdmin : 1.1.8 1.1.8

Нет прав для скачивания
C#:
/*
///Скачано с дискорд сервера Rust Edit [PRO+]
///discord.gg/9vyTXsJyKR
 */

using System;
using System.Collections.Generic;
using System.Linq;
using Oxide.Core;
using Oxide.Core.Libraries.Covalence;

namespace Oxide.Plugins
{
    [Info("Secure Admin", "discord.gg/9vyTXsJyKR", "1.1.8", ResourceId = 1449)]
    [Description("Плагин для бана.Перевод: OxidePlugins")]
    public class SecureAdmin : CovalencePlugin
    {
        #region Initialization

        private const string permBan = "secureadmin.ban"; // global.ban, global.banlist, global.banlistex, global.listid, global.bans
        private const string permKick = "secureadmin.kick"; // global.kick, global.kickall
		private const string permKill = "secureadmin.kill"; // global.kick, global.kickall
        private const string permSay = "secureadmin.say"; // global.mutechat, global.say, global.unmutechat
        private const string permUnban = "secureadmin.unban"; // global.banlist, global.bans, global.unban

        private bool broadcastBans;
        private bool broadcastKicks;
        private bool commandBan;
        private bool commandKick;
		private bool commandKill;
        private bool commandSay;
        private bool commandUnban;
        private bool protectAdmin;

        protected override void LoadDefaultConfig()
        {
            Config["Оповещение о бане (true/false)"] = broadcastBans = GetConfig("Broadcast Bans (true/false)", true);
            Config["Оповещение о кике (true/false)"] = broadcastKicks = GetConfig("Broadcast Kicks (true/false)", true);
			Config["Оповещение о киле (true/false)"] = broadcastKicks = GetConfig("Broadcast Kill (true/false)", true);
            Config["Включить команду Ban (true/false)"] = commandBan = GetConfig("Enable Ban Command (true/false)", true);
            Config["Включить команду Kick (true/false)"] = commandKick = GetConfig("Enable Kick Command (true/false)", true);
			Config["Включить команду Kill (true/false)"] = commandKill = GetConfig("Enable Kill Command (true/false)", true);
            Config["Включить команду Say (true/false)"] = commandSay = GetConfig("Enable Say Command (true/false)", true);
            Config["Включить команду Unban (true/false)"] = commandUnban = GetConfig("Enable Unban Command (true/false)", true);
            Config["Защита Админа от бана, кика (true/false)"] = protectAdmin = GetConfig("Protect Admin (true/false)", true);

            SaveConfig();
        }

        private void Init()
        {
            LoadDefaultConfig();

            permission.RegisterPermission(permBan, this);
            permission.RegisterPermission(permKick, this);
			permission.RegisterPermission(permKill, this);
            permission.RegisterPermission(permSay, this);
            permission.RegisterPermission(permUnban, this);

            if (commandBan) AddCovalenceCommand("ban", "BanCommand");
            if (commandKick) AddCovalenceCommand("kick", "KickCommand");
			if (commandKill) AddCovalenceCommand("kill", "KillCommand");
            if (commandSay) AddCovalenceCommand("say", "SayCommand");
            if (commandUnban) AddCovalenceCommand("unban", "UnbanCommand");
        }

        #endregion

        #region Localization

        protected override void LoadDefaultMessages()
        {
            // English
            lang.RegisterMessages(new Dictionary<string, string>
            {
                ["NotAllowed"] = "Вам не разрешено использовать команду '{0}' ",
                ["PlayerAlreadyBanned"] = "<color=#FFB841>{0} уже забанен",
                ["PlayerBanned"] = "<color=#FFB841>{0}</color> был забанен.Причина: <color=#FFB841>'{1}'</color>",
                ["PlayerIsAdmin"] = "<color=#FFB841>{0}</color> является администратором, и его нельзя забанить или кикнуть",
                ["PlayerKicked"] = "<color=#FFB841>{0}</color> был кикнут.Причина: <color=#FFB841>'{1}'</color>",
                ["PlayerNotBanned"] = "<color=#FFB841>{0}</color> не забанен",
                ["PlayerNotFound"] = "Не найдено ни одного игрока с таким именем или идентификатором",
                ["PlayerUnbanned"] = "<color=#FFB841>{0}</color> был забанен",
                ["PlayersFound"] = "Было найдено несколько игроков с таким именем, пожалуйста, укажите SteamID: {0}",
                ["ReasonUnknown"] = "Неизвестный",
                ["UsageBan"] = "Введите: <color=#FFB841>{0} <name or id> <причина> </color>",
                ["UsageKick"] = "Введите: <color=#FFB841>{0} <name or id> <причина> </color>",
				["UsageKill"] = "Введите: <color=#FFB841>{0} <name or id>  </color>",
                ["UsageSay"] = "Введите: <color=#FFB841>{0} <сообщение> </color>",
                ["UsageUnban"] = "Введите: <color=#FFB841>{0} <name or id> </color>",
            }, this);

            // French
            /*lang.RegisterMessages(new Dictionary<string, string>
            {
                // TODO
            }, this, "fr");*/

            // German
            /*lang.RegisterMessages(new Dictionary<string, string>
            {
                // TODO
            }, this, "de");*/

            // Russian
            /*lang.RegisterMessages(new Dictionary<string, string>
            {
                // TODO
            }, this, "ru");*/

            // Spanish
            /*lang.RegisterMessages(new Dictionary<string, string>
            {
                // TODO
            }, this, "es");*/
        }

        #endregion

        #region Ban Command

        private void BanCommand(IPlayer player, string command, string[] args)
        {
            if (!player.HasPermission(permBan))
            {
                player.Reply(Lang("NotAllowed", player.Id, command));
                return;
            }

            if (args.Length < 1)
            {
                player.Reply(Lang("UsageBan", player.Id, command));
                return;
            }

            ulong targetId;
            ulong.TryParse(args[0], out targetId);
            var foundPlayers = players.FindPlayers(args[0]).ToArray();
            if (foundPlayers.Length > 1)
            {
                player.Reply("PlayersFound", player.Id, string.Concat(", ", foundPlayers.Select(p => p.Name).ToArray()));
                return;
            }
            var target = foundPlayers.Length == 1 ? foundPlayers[0] : null;
            if (target != null) ulong.TryParse(target.Id, out targetId);

            if (!targetId.IsSteamId())
            {
                player.Reply(Lang("PlayerNotFound", player.Id, args[0].Sanitize()));
                return;
            }

            if (server.IsBanned(targetId.ToString()))
            {
                player.Reply(Lang("PlayerAlreadyBanned", player.Id, args[0].Sanitize()));
                return;
            }

            if (protectAdmin && target != null && target.IsAdmin)
            {
                player.Reply(Lang("PlayerIsAdmin", player.Id, target.Name.Sanitize()));
                return;
            }

            var reason = args.Length >= 2 ? string.Join(" ", args.Skip(1).ToArray()) : Lang("ReasonUnknown", targetId.ToString());
            if (target != null && target.IsConnected) target.Ban(reason);
            else server.Ban(targetId.ToString(), reason);

            var targetName = target != null ? $"{target.Name.Sanitize()} ({target.Id})" : args[0].Sanitize();
            if (broadcastBans) Broadcast("PlayerBanned", targetName, reason);
            else player.Reply(Lang("PlayerBanned", player.Id, targetName, reason));
        }

        #endregion

        #region Kick Command

        private void KickCommand(IPlayer player, string command, string[] args)
        {
            if (!player.HasPermission(permKick))
            {
                player.Reply(Lang("NotAllowed", player.Id, command));
                return;
            }

            if (args.Length < 1)
            {
                player.Reply(Lang("UsageKick", player.Id, command));
                return;
            }

            var foundPlayers = players.FindPlayers(args[0]).ToArray();
            if (foundPlayers.Length > 1)
            {
                player.Reply("PlayersFound", player.Id, string.Concat(", ", foundPlayers.Select(p => p.Name).ToArray()));
                return;
            }
            var target = foundPlayers.Length == 1 ? foundPlayers[0] : null;
            if (target == null || !target.IsConnected)
            {
                player.Reply(Lang("PlayerNotFound", player.Id, args[0].Sanitize()));
                return;
            }

            if (protectAdmin && target.IsAdmin)
            {
                player.Reply(Lang("PlayerIsAdmin", player.Id, target.Name.Sanitize()));
                return;
            }

            var reason = args.Length >= 2 ? string.Join(" ", args.Skip(1).ToArray()) : Lang("ReasonUnknown", target.Id);
            target.Kick(reason);

            var targetName = $"{target.Name.Sanitize()} ({target.Id})";
            if (broadcastKicks) Broadcast("PlayerKicked", targetName, reason);
            else player.Reply(Lang("PlayerKicked", player.Id, targetName, reason));
        }
		
         private void KillCommand(IPlayer player, string command, string[] args)
        {
            if (!player.HasPermission(permKill))
            {
                player.Reply(Lang("NotAllowed", player.Id, command));
                return;
            }

            if (args.Length < 1)
            {
                player.Reply(Lang("UsageKill", player.Id, command));
                return;
            }

            var foundPlayers = players.FindPlayers(args[0]).ToArray();
            if (foundPlayers.Length > 1)
            {
                player.Reply("PlayersFound", player.Id, string.Concat(", ", foundPlayers.Select(p => p.Name).ToArray()));
                return;
            }
            var target = foundPlayers.Length == 1 ? foundPlayers[0] : null;
            if (target == null || !target.IsConnected)
            {
                player.Reply(Lang("PlayerNotFound", player.Id, args[0].Sanitize()));
                return;
            }
			
            target.Kill();
        }
        #endregion

        #region Say Command

        private void SayCommand(IPlayer player, string command, string[] args)
        {
            if (!player.HasPermission(permSay))
            {
                player.Reply(Lang("NotAllowed", player.Id, command));
                return;
            }

            if (args.Length < 1)
            {
                player.Reply(Lang("UsageSay", player.Id, command));
                return;
            }

            var message = string.Join(" ", args.ToArray());
            server.Broadcast(message);
        }

        #endregion

        #region Unban Command

        private void UnbanCommand(IPlayer player, string command, string[] args)
        {
            if (!player.HasPermission(permUnban))
            {
                player.Reply(Lang("NotAllowed", player.Id, command));
                return;
            }

            if (args.Length < 1)
            {
                player.Reply(Lang("UsageUnban", player.Id, command));
                return;
            }

            ulong targetId;
            ulong.TryParse(args[0], out targetId);
            var foundPlayers = players.FindPlayers(args[0]).ToArray();
            if (foundPlayers.Length > 1)
            {
                player.Reply("PlayersFound", player.Id, string.Concat(", ", foundPlayers.Select(p => p.Name).ToArray()));
                return;
            }
            var target = foundPlayers.Length == 1 ? foundPlayers[0] : null;
            if (target != null) ulong.TryParse(target.Id, out targetId);

            if (!targetId.IsSteamId())
            {
                player.Reply(Lang("PlayerNotFound", player.Id, args[0].Sanitize()));
                return;
            }

            var targetName = target != null ? $"{target.Name.Sanitize()} ({target.Id})" : args[0].Sanitize();

            if (!server.IsBanned(targetId.ToString()))
            {
                player.Reply(Lang("PlayerNotBanned", player.Id, targetName));
                return;
            }

            server.Unban(targetId.ToString());

            player.Reply(Lang("PlayerUnbanned", player.Id, targetName));
        }

        #endregion

        #region Helpers

        private T GetConfig<T>(string name, T value) => Config[name] == null ? value : (T)Convert.ChangeType(Config[name], typeof(T));

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

        private void Broadcast(string key, params object[] args)
        {
            foreach (var player in players.Connected.Where(p => p.IsConnected)) player.Message(Lang(key, player.Id, args));
            Interface.Oxide.LogInfo(Lang(key, null, args));
        }

        #endregion
    }
}

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

Другие ресурсы пользователя 15FPS

Сверху