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

FREE CheckPlayers : 0.2 0.2

Нет прав для скачивания
C#:
using Newtonsoft.Json;
using Oxide.Core;
using Oxide.Core.Plugins;
using Oxide.Game.Rust.Cui;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Globalization;
using System.Linq;
using UnityEngine;
///Скачано с дискорд сервера Rust Edit [PRO+]
///discord.gg/9vyTXsJyKR
namespace Oxide.Plugins {
    [Info("CheckPlayers", "discord.gg/9vyTXsJyKR", "0.2")]
    class CheckPlayers : RustPlugin {
        //Данный плагин принадлежит группе vk.com/vkbotrust
        //Данный плагин предоставляется в существующей форме,
        //"как есть", без каких бы то ни было явных или
        //подразумеваемых гарантий, разработчик не несет
        //ответственность в случае его неправильного использования.#region Vars
        [PluginReference]
        Plugin VKBot;
        private Dictionary<BasePlayer, BasePlayer> PlayersCheckList = new Dictionary<BasePlayer, BasePlayer>();
        //admin, target
        private BasePlayer CheckCMDPlayer = null;
#endregion
#region Config
        private ConfigData config;
        private class ConfigData {
            [JsonProperty(PropertyName = "Основные настройки")]
            public MainSettings mainSet {
                get;
                set;
            }
            public class MainSettings {
                [JsonProperty(PropertyName = "Привилегия для команд вызова на проверку/завершения проверки")]
                [DefaultValue("vkbot.checkplayers")]
                public string PlCheckPerm {
                    get;
                    set;
                }
                = "checkplayers.use";
                [JsonProperty(PropertyName = "Текст уведомления")]
                [DefaultValue("Вы подозреваетесь в использовании читов/макросов.\n Вам необходимо пройти проверку.Напишите свой скайп или дискорд через команду: /contact.\n Если Вы покинете сервер, Вас забанят на всех наших серверах.\n У вас всего 5 минут для отправки данных иначе так же получите бан.")]
                public string PlCheckText {
                    get;
                    set;
                }
                = "Вы подозреваетесь в использовании читов/макросов.\n Вам необходимо пройти проверку.Напишите свой скайп или дискорд через команду: /contact.\n Если Вы покинете сервер, Вас забанят на всех наших серверах.\n У вас всего 5 минут для отправки данных иначе так же получите бан.";
                [JsonProperty(PropertyName = "Бан игрока при выходе с сервера во время проверки")]
                [DefaultValue(true)]
                public bool AutoBan {
                    get;
                    set;
                }
                = true;
                [JsonProperty(PropertyName = "Бан игрока при выходе игрока с сервера с причиной Kicked: Steam: InvalidAuthSession")]
                [DefaultValue(true)]
                public bool KickedSteamInvalidAuthSession {
                    get;
                    set;
                }
                = true;
                [JsonProperty(PropertyName = "Кастомная команда для автобана (оставить none если не нужно).Пример: banid {steamid} {reason} 4d")]
                [DefaultValue("none")]
                public string BanCmd {
                    get;
                    set;
                }
                = "none";
                [JsonProperty(PropertyName = "Позиция GUI AnchorMin (дефолт 0 0.826)")]
                [DefaultValue("0 0.826")]
                public string GUIAnchorMin {
                    get;
                    set;
                }
                = "0 0.826";
                [JsonProperty(PropertyName = "Позиция GUI AnchorMax (дефолт 1 0.965)")]
                [DefaultValue("1 0.965")]
                public string GUIAnchorMax {
                    get;
                    set;
                }
                = "1 0.965";
                [JsonProperty(PropertyName = "Команда вызова игрока на проверку")]
                [DefaultValue("alert")]
                public string CMDalert {
                    get;
                    set;
                }
                = "alert";
                [JsonProperty(PropertyName = "Команда завершения проверки игрока")]
                [DefaultValue("unalert")]
                public string CMDunalert {
                    get;
                    set;
                }
                = "unalert";
                [JsonProperty(PropertyName = "Команда отправки контакта администратору")]
                [DefaultValue("contact")]
                public string CMDcontact {
                    get;
                    set;
                }
                = "contact";
                [JsonProperty(PropertyName = "Отправка контакта админу в ВК (при вызове на проверку консольной командой)")]
                [DefaultValue(false)]
                public bool admMsg {
                    get;
                    set;
                }
                = false;
                [JsonProperty(PropertyName = "Отправка контакта в беседу ВК (при вызове на проверку консольной командой)")]
                [DefaultValue(false)]
                public bool admChat {
                    get;
                    set;
                }
                = false;
            }
        }
        private void LoadVariables() {
            bool changed = false;
            Config.Settings.DefaultValueHandling = DefaultValueHandling.Populate;
            config = Config.ReadObject<ConfigData>();
            if (config.mainSet == null) {
                config.mainSet = new ConfigData.MainSettings();
                changed = true;
            }
            Config.WriteObject(config, true);
            if (changed) PrintWarning("Конфигурационный файл обновлен.");
        }
        protected override void LoadDefaultConfig() {
            var configData = new ConfigData {
                mainSet = new ConfigData.MainSettings()
            }
            ;
            Config.WriteObject(configData, true);
            PrintWarning("Поддержи разработчика! Вступи в группу vk.com/vkbotrust");
        }
#endregion
#region OxideHooks
        void OnServerInitialized() {
            LoadVariables();
            if (!permission.PermissionExists(config.mainSet.PlCheckPerm)) permission.RegisterPermission(config.mainSet.PlCheckPerm, this);
            cmd.AddChatCommand(config.mainSet.CMDalert, this, "CheckPlayerChat");
            cmd.AddChatCommand(config.mainSet.CMDunalert, this, "UnCheckPlayerChat");
            cmd.AddChatCommand(config.mainSet.CMDcontact, this, "Sendcontact");
            cmd.AddConsoleCommand(config.mainSet.CMDalert, this, "CheckPlayerCMD");
            cmd.AddConsoleCommand(config.mainSet.CMDunalert, this, "StopCheckPlayerCMD");
        }
        void Loaded() => LoadMessages();
        void Unload() => UnloadAllGUI();
        void OnPlayerDisconnected(BasePlayer player, string reason) {
            if (CheckCMDPlayer == player) {
                CheckCMDPlayer = null;
                PrintWarning($"Игрок {player.displayName} отключился во время проверки.Причина: {reason}.");
                if (config.mainSet.AutoBan && reason == "Disconnected") {
                    if (config.mainSet.BanCmd == "none") {
                        player.IPlayer.Ban("Отказ от проверки");
                    }
                    else {
                        string cmd = config.mainSet.BanCmd.Replace("{steamid}", player.UserIDString);
                        cmd = cmd.Replace("{reason}", "ОтказОтПроверки");
                        rust.RunServerCommand(cmd);
                    }
                    if (player.IsConnected) {
                        player.Kick("banned");
                    }
                }
            }
            if (PlayersCheckList.ContainsValue(player)) {
                CuiHelper.DestroyUi(player, "AlertGUI");
                foreach (var check in PlayersCheckList.Keys.ToList()) {
                    if (PlayersCheckList[check] == player) {
                        if (BasePlayer.activePlayerList.Contains(check)) {
                            PrintToChat($"<size=15>Игрок вызванный на проверку покинул сервер.Причина: <color=#049906>{reason}</color>.</size>");
                        }
                        PlayersCheckList.Remove(check);
                    }
                }
                if (config.mainSet.AutoBan && reason == "Disconnected") {
                    if (config.mainSet.BanCmd == "none") {
                        player.IPlayer.Ban("Отказ от проверки");
                    }
                    else {
                        string cmd = config.mainSet.BanCmd.Replace("{steamid}", player.UserIDString);
                        cmd = cmd.Replace("{reason}", "ОтказОтПроверки");
                        rust.RunServerCommand(cmd);
                    }
                    if (player.IsConnected) {
                        player.Kick("banned");
                    }
                }
                if (config.mainSet.KickedSteamInvalidAuthSession && reason == "Kicked: Steam: InvalidAuthSession") {
                    if (config.mainSet.BanCmd == "none") {
                        player.IPlayer.Ban("Отказ от проверки Kicked: Steam: InvalidAuthSession");
                    }
                    else {
                        string cmd = config.mainSet.BanCmd.Replace("{steamid}", player.UserIDString);
                        cmd = cmd.Replace("{reason}", "ОтказОтПроверки");
                        rust.RunServerCommand(cmd);
                    }
                    if (player.IsConnected) {
                        player.Kick("banned");
                    }
                }
            }
            if (PlayersCheckList.ContainsKey(player)) {
                var target = PlayersCheckList[player];
                if (BasePlayer.activePlayerList.Contains(target)) {
                    CuiHelper.DestroyUi(target, "AlertGUI");
                    PrintToChat(target, string.Format(GetMsg("АдминистраторОтключился", player)));
                }
                PlayersCheckList.Remove(player);
            }
        }
#endregion
#region Commands
        private void CheckPlayerChat(BasePlayer player, string cmd, string[] args) {
            if (!permission.UserHasPermission(player.userID.ToString(), config.mainSet.PlCheckPerm)) {
                PrintToChat(player, string.Format(GetMsg("НетПрав", player)));
                return;
            }
            if (!VKBot) {
                PrintToChat(player, "Плагин VKBot не установлен!");
                return;
            }
            if (PlayersCheckList.ContainsKey(player)) {
                PrintToChat(player, string.Format(GetMsg("ПроверкаНеЗакончена", player), config.mainSet.CMDunalert));
                return;
            }
            if (PlayersCheckList.ContainsValue(player)) {
                PrintToChat(player, string.Format(GetMsg("ВыНаПроверке", player)));
                return;
            }
            if (CheckCMDPlayer == player) {
                PrintToChat(player, string.Format(GetMsg("ВыНаПроверке", player)));
                return;
            }
            PListUI(player);
        }
        private void UnCheckPlayerChat(BasePlayer player, string cmd, string[] args) {
            if (!permission.UserHasPermission(player.userID.ToString(), config.mainSet.PlCheckPerm)) {
                PrintToChat(player, string.Format(GetMsg("НетПрав", player)));
                return;
            }
            if (!PlayersCheckList.ContainsKey(player)) {
                PrintToChat(player, string.Format(GetMsg("НетПроверок", player)));
                return;
            }
            var target = PlayersCheckList[player];
            if (!BasePlayer.activePlayerList.Contains(target)) return;
            CuiHelper.DestroyUi(target, "AlertGUI");
            PrintToChat(player, string.Format(GetMsg("ПроверкаЗакончена", player), target.displayName));
            PlayersCheckList.Remove(player);
        }
        private void CheckPlayerCMD(ConsoleSystem.Arg arg) {
            if (arg.IsAdmin != true) {
                return;
            }
            if (CheckCMDPlayer != null) {
                PrintWarning($"Сначала закончите предыдущую проверку командой /{config.mainSet.CMDunalert}");
                return;
            }
            if (arg.Args == null || arg.Args.Length < 1) {
                PrintWarning($"Команда вызова на проверку из консоли: {config.mainSet.CMDalert} steamid/name");
                PrintWarning($"Команда вызова на проверку в чате: /{config.mainSet.CMDalert}");
                return;
            }
            var targets = FindPlayersOnline(arg.Args[0]);
            if (targets.Count <= 0) {
                PrintWarning($"Не удалось найти игрока {arg.Args[0]}");
                return;
            }
            if (targets.Count > 1) {
                PrintWarning($"Найдено несколько игроков:");
                Puts(string.Join(", ", targets.ConvertAll(p => p.displayName).ToArray()));
                return;
            }
            var target = targets[0];
            if (PlayersCheckList.ContainsValue(target)) {
                PrintWarning("Игрок уже на проверке.");
                return;
            }
            if (PlayersCheckList.ContainsKey(target)) {
                PrintWarning("Этот игрок выполняет проверку, вы не можете сейчас его вызвать.");
                return;
            }
            CheckCMDPlayer = target;
            StartGUI(target);
            PrintWarning($"Вы вызвали игрока {target.displayName} на проверку.");
        }
        private void Sendcontact(BasePlayer player, string cmd, string[] args) {
            if (CheckCMDPlayer != player && !PlayersCheckList.ContainsValue(player)) {
                PrintToChat(player, string.Format(GetMsg("НеНаПроверке", player)));
                return;
            }
            if (args.Length < 1) {
                PrintToChat(player, string.Format(GetMsg("КомандаКонтакт", player), config.mainSet.CMDcontact));
                return;
            }
            string contact = args[0];
            string text = string.Format($"Игрок {player.displayName} прислал Вам свои контакты для проверки: {contact}", player.displayName, player.UserIDString);
            if (CheckCMDPlayer == player) {
                PrintWarning(text);
                if (config.mainSet.admChat) VKBot?.Call("VKAPIChatMsg", text);
                if (config.mainSet.admMsg) {
                    var reciverID = (string)VKBot?.Call("AdminVkID");
                    if (reciverID != null) VKBot?.Call("VKAPIMsg", text, "", reciverID, false);
                }
            }
            if (PlayersCheckList.ContainsValue(player)) {
                ulong adminid = 0;
                foreach (var admin in PlayersCheckList.Keys) {
                    if (PlayersCheckList[admin] == player) adminid = admin.userID;
                }
                if (adminid == 0) return;
                var userVK = (string)VKBot?.Call("GetUserVKId", adminid);
                if (userVK == null) return;
                VKBot?.Call("VKAPIMsg", text, "", userVK, false);
            }
        }
        private void StopCheckPlayerCMD(ConsoleSystem.Arg arg) {
            if (arg.IsAdmin != true) {
                return;
            }
            if (CheckCMDPlayer == null) {
                PrintWarning("Нет игроков на проверке.");
                return;
            }
            if (BasePlayer.activePlayerList.Contains(CheckCMDPlayer)) {
                CuiHelper.DestroyUi(CheckCMDPlayer, "AlertGUI");
                PrintWarning($"Вы закончили проверку игрока {CheckCMDPlayer.displayName}");
                CheckCMDPlayer = null;
            }
        }
        [ConsoleCommand("checkplayers.gui")]
        private void PListCMD(ConsoleSystem.Arg arg) {
            BasePlayer player = arg.Player();
            if (player == null) return;
            if (!permission.UserHasPermission(player.userID.ToString(), config.mainSet.PlCheckPerm)) {
                PrintToChat(player, string.Format(GetMsg("НетПрав", player)));
                return;
            }
            if (arg.Args == null) return;
            switch (arg.Args[0]) {
                case "close" : CuiHelper.DestroyUi(player, "PListGUI");
                break;
                case "alert" : ulong targetid = 0;
                if (!ulong.TryParse(arg.Args[1], out targetid)) {
                    PrintToChat(player, string.Format(GetMsg("ИгрокНеНайден", player)));
                    return;
                }
                var target = BasePlayer.FindByID(targetid);
                if (target == null) {
                    PrintToChat(player, string.Format(GetMsg("ИгрокНеНайден", player)));
                    return;
                }
                StartCheck(player, target);
                break;
                case "page" : int page;
                if (arg.Args.Length < 3) return;
                if (!Int32.TryParse(arg.Args[1], out page)) return;
                GUIManager.Get(player).Page = page;
                CuiHelper.DestroyUi(player, "PListGUI");
                PListUI(player);
                break;
            }
        }
#endregion
#region GUIBuilder
        private CuiElement Panel(string name, string color, string anMin, string anMax, string parent = "Hud", bool cursor = false) {
            var Element = new CuiElement() {
                Name = name, Parent = parent, Components = {
                    new CuiImageComponent {
                        Color = color
                    }
                    , new CuiRectTransformComponent {
                        AnchorMin = anMin, AnchorMax = anMax
                    }
                }
            }
            ;
            if (cursor) {
                Element.Components.Add(new CuiNeedsCursorComponent());
            }
            return Element;
        }
        private CuiElement Text(string parent, string color, string text, TextAnchor pos, int fsize, string anMin = "0 0", string anMax = "1 1", string fname = "robotocondensed-bold.ttf") {
            var Element = new CuiElement() {
                Parent = parent, Components = {
                    new CuiTextComponent() {
                        Color = color, Text = text, Align = pos, Font = fname, FontSize = fsize
                    }
                    , new CuiRectTransformComponent {
                        AnchorMin = anMin, AnchorMax = anMax
                    }
                }
            }
            ;
            return Element;
        }
        private CuiElement Button(string name, string parent, string command, string color, string anMin, string anMax) {
            var Element = new CuiElement() {
                Name = name, Parent = parent, Components = {
                    new CuiButtonComponent {
                        Command = command, Color = color
                    }
                    , new CuiRectTransformComponent {
                        AnchorMin = anMin, AnchorMax = anMax
                    }
                }
            }
            ;
            return Element;
        }
        private void UnloadAllGUI() {
            foreach (var player in BasePlayer.activePlayerList) {
                CuiHelper.DestroyUi(player, "PListGUI");
                CuiHelper.DestroyUi(player, "AlertGUI");
            }
        }
#endregion
#region AlertPlayerGUI
        private void StartGUI(BasePlayer player) {
            CuiElementContainer container = new CuiElementContainer();
            container.Add(Panel("AlertGUI", "64 0 0 0.65", config.mainSet.GUIAnchorMin, config.mainSet.GUIAnchorMax));
            container.Add(Text("AlertGUI", "1 1 1 1", String.Format(config.mainSet.PlCheckText), TextAnchor.MiddleCenter, 23));
            CuiHelper.AddUi(player, container);
        }
        private void StopGui(BasePlayer player) {
            CuiHelper.DestroyUi(player, "AlertGUI");
        }
#endregion
#region PlayersListGUI
        private void PListUI(BasePlayer player) {
            string text = "Выберите игрока которого хотите вызвать на проверку.";
            List<BasePlayer> players = new List<BasePlayer>();
            foreach (var pl in BasePlayer.activePlayerList) {
                if (pl == player) continue;
                players.Add(pl);
            }
            if (players.Count == 0) {
                PrintToChat(player, "На сервере нет никого кроме вас.");
                return;
            }
            players = players.OrderBy(x => x.displayName).ToList();
            int maxPages = CalculatePages(players.Count);
            string pageNum = (maxPages > 1) ? $" - {GUIManager.Get(player).Page}" : "";
            CuiElementContainer container = new CuiElementContainer();
            container.Add(Panel("PListGUI", "0 0 0 0.75", "0.2 0.125", "0.8 0.9", "Hud", true));
            container.Add(Panel("header", "0 0 0 0.75", "0 0.93", "1 1", "PListGUI"));
            if (maxPages != 1) text = text + " Страница " + pageNum.ToString();
            container.Add(Text("header", "1 1 1 1", text, TextAnchor.MiddleCenter, 20));
            container.Add(Button("close", "header", "checkplayers.gui close", "1 0 0 1", "0.94 0.01", "1.0 0.98"));
            container.Add(Text("close", "1 1 1 1", "X", TextAnchor.MiddleCenter, 20));
            container.Add(Panel("playerslist", "0 0 0 0.75", "0 0", "1 0.9", "PListGUI"));
            var page = GUIManager.Get(player).Page;
            int playerCount = (page * 100) - 100;
            for (int j = 0; j < 20; j++) {
                for (int i = 0; i < 5; i++) {
                    if (players.ToArray().Length <= playerCount) continue;
                    string AnchorMin = (0.2f * i).ToString() + " " + (1f - (0.05f * j) - 0.05f).ToString();
                    string AnchorMax = ((0.2f * i) + 0.2f).ToString() + " " + (1f - (0.05f * j)).ToString();
                    string playerName = players.ToArray()[playerCount].displayName;
                    string id = players.ToArray()[playerCount].UserIDString;
                    container.Add(Panel($"pn{id}", "0 0 0 0", AnchorMin, AnchorMax, "playerslist"));
                    container.Add(Button($"plbtn{id}", $"pn{id}", $"checkplayers.gui alert {id}", "0 0 0 0.85", "0.05 0.05", "0.95 0.95"));
                    container.Add(Text($"plbtn{id}", "1 1 1 1", UserName(playerName), TextAnchor.MiddleCenter, 18));
                    playerCount++;
                }
            }
            if (page < maxPages) {
                container.Add(Button("npg", "PListGUI", $"checkplayers.gui page {(page + 1).ToString()}", "0 0 0 0.75", "1.025 0.575", "1.1 0.675"));
                container.Add(Text("npg", "1 1 1 1", ">>", TextAnchor.MiddleCenter, 16));
            }
            if (page > 1) {
                container.Add(Button("ppg", "PListGUI", $"checkplayers.gui page {(page - 1).ToString()}", "0 0 0 0.75", "1.025 0.45", "1.1 0.55"));
                container.Add(Text("ppg", "1 1 1 1", ">>", TextAnchor.MiddleCenter, 16));
            }
            CuiHelper.AddUi(player, container);
        }
        int CalculatePages(int value) => (int)Math.Ceiling(value / 100d);
        class GUIManager {
            public static Dictionary<BasePlayer, GUIManager> Players = new Dictionary<BasePlayer, GUIManager>();
            public int Page = 1;
            public static GUIManager Get(BasePlayer player) {
                if (Players.ContainsKey(player)) return Players[player];
                Players.Add(player, new GUIManager());
                return Players[player];
            }
        }
#endregion
#region Main
        private void StartCheck(BasePlayer admin, BasePlayer target) {
            if (PlayersCheckList.ContainsValue(target)) {
                PrintToChat(admin, string.Format(GetMsg("ИгрокУжеНаПроверке", admin)));
                return;
            }
            if (PlayersCheckList.ContainsKey(target)) {
                PrintToChat(admin, string.Format(GetMsg("ИгрокВыполняетПроверку", admin)));
                return;
            }
            if (CheckCMDPlayer == target) {
                PrintToChat(admin, string.Format(GetMsg("ИгрокУжеНаПроверке", admin)));
                return;
            }
            var userVK = (string)VKBot?.Call("GetUserVKId", admin.userID);
            if (userVK == null) {
                PrintToChat(admin, string.Format(GetMsg("НетВК", admin)));
                return;
            }
            PlayersCheckList.Add(admin, target);
            StartGUI(target);
            PrintToChat(admin, string.Format(GetMsg("ИгрокВызванНаПроверку", admin), target.displayName));
        }
#endregion
#region Helpers
        private string UserName(string name) {
            if (name.Length > 15) {
                name = name.Remove(12) + "...";
            }
            return name;
        }
        private static List<BasePlayer> FindPlayersOnline(string nameOrIdOrIp) {
            var players = new List<BasePlayer>();
            if (string.IsNullOrEmpty(nameOrIdOrIp)) return players;
            foreach (var activePlayer in BasePlayer.activePlayerList) {
                if (activePlayer.UserIDString.Equals(nameOrIdOrIp)) players.Add(activePlayer);
                else if (!string.IsNullOrEmpty(activePlayer.displayName) && activePlayer.displayName.Contains(nameOrIdOrIp, CompareOptions.IgnoreCase)) players.Add(activePlayer);
                else if (activePlayer.net?.connection != null && activePlayer.net.connection.ipaddress.Equals(nameOrIdOrIp)) players.Add(activePlayer);
            }
            return players;
        }
#endregion
#region Langs
        private void LoadMessages() {
            lang.RegisterMessages(new Dictionary<string, string> {
                {
                    "ИгрокОтключился", "<size=15>Игрок вызванный на проверку покинул сервер.Причина: <color=#049906>{0}</color>.</size>"
                }
                , {
                    "АдминистраторОтключился", "<size=15>Администратор отключился от сервера, ожидайте следующей проверки.</size>"
                }
                , {
                    "НетПрав", "<size=15>У вас нет прав для использования данной команды</size>"
                }
                , {
                    "НетВК", "<size=15>Сначала добавьте и подтвердите свой профиль ВК командой /vk</size>"
                }
                , {
                    "ИгрокНеНайден", "<size=15>Игрок не найден</size>"
                }
                , {
                    "ВыНаПроверке", "<size=15>Вас вызвали на проверку, вы не можете использовать эту команду сейчас.</size>"
                }
                , {
                    "ПроверкаЗакончена", "<size=15>Вы закончили проверку игрока <color=#049906>{0}</color></size>"
                }
                , {
                    "ИгрокУжеНаПроверке", "<size=15>Этого игрока уже вызвали на проверку</size>"
                }
                , {
                    "НетПроверок", "<size=15>У вас нет активных проверок.</size>"
                }
                , {
                    "ИгрокВыполняетПроверку", "<size=15>Этот игрок выполняет проверку, вы не можете сейчас его вызвать.</size>"
                }
                , {
                    "ПроверкаНеЗакончена", "<size=15>Сначала закончите предыдущую проверку командой /{0}</size>"
                }
                , {
                    "ИгрокВызванНаПроверку", "<size=15>Вы вызвали игрока <color=#049906>{0}</color> на проверку</size>"
                }
                , {
                    "НеНаПроверке", "<size=15>Вас не вызывали на проверку.Приятной игры <color=#049906>:)</color></size>"
                }
                , {
                    "КонтактОтправлен", "<size=15>Ваши контактные данные были отправлены администратору.Ожидайте звонка.</size>"
                }
                , {
                    "КомандаКонтакт", "<size=15>Команда <color=#049906>/{0} Ваш_Ник</color></size>"
                }
                , {
                    "Сообщение администратору", "[CheckPlayers] Игрок {0} (steamcommunity.com/profiles/{1}/) предоставил контактные данные для проверки: {2}"
                }
            }
            , this);
        }
        string GetMsg(string key, BasePlayer player = null) => GetMsg(key, player.UserIDString);
        string GetMsg(string key, object userID = null) => lang.GetMessage(key, this, userID == null ? null : userID.ToString());
#endregion
    }
}

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

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

Сверху