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

FREE SoReport : 3.0.0 3.0.0

Нет прав для скачивания
C#:
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using Facepunch.Extend;
using Newtonsoft.Json;
using Oxide.Core;
using Oxide.Core.Libraries;
using Oxide.Core.Plugins;
using Oxide.Game.Rust.Cui;
using UnityEngine;
namespace Oxide.Plugins {
    [Info("SoReport", "TopPlugin.ru", "3.0.0")]
    public class SoReport : RustPlugin {
#region Data
        private ConfigData cfg {
            get;
            set;
        }
        private class ConfigData {
            [JsonProperty("Название сервера")]
            public string Lable;
            [JsonProperty("Включить дискорд?")]
            public bool discord;
            [JsonProperty("Dircord Report WebHook")]
            public string discordhook;
            [JsonProperty("Dircord PlayerSayDiscord WebHook")]
            public string discordhook2;
            [JsonProperty("Отправлять ли уведомления в телеграмм ?")]
            public bool TelegramUse = false;
            [JsonProperty("Название чата(Пригласить своего бота в чат)")]
            public string chatid = "НАЗВАНИЕ ЧАТА";
            [JsonProperty("Создать своего бота через BotFather и скопировать сюда токен")]
            public string botToken = "ТОКЕН";
            [JsonProperty("Отправлять ли уведомления в вконтакте ?")]
            public bool Vkontakte = false;
            [JsonProperty("Вк админа")]
            public string vkadmin = "";
            [JsonProperty("VK Token группы")]
            public string vkAcces = "";
            [JsonProperty("Cooldown")]
            public int cooldown;
            [JsonProperty("Причина 1")]
            public string res1 = "МАКРОСЫ";
            [JsonProperty("Причина 2")]
            public string res2 = "ЧЭТЫ";
            [JsonProperty("Причина 3")]
            public string res3 = "БАГОЮЗ";
            [JsonProperty("Причина 4")]
            public string res4 = "+3";
            [JsonProperty("Кол-во репортов для появление в панели модератора")]
            public int kolreport = 2;
            [JsonProperty("Кол-во репортов для подсветки красный в панели модератора")]
            public int redcolor = 10;
            [JsonProperty("Кол-во проверки для подсветки зеленым в панели модератора")]
            public int greencolor = 3;
            public static ConfigData GetNewConf() {
                var newConfig = new ConfigData();
                newConfig.Lable = "SoReport";
                newConfig.discord = false;
                newConfig.cooldown = 30;
                newConfig.discordhook = "";
                newConfig.discordhook2 = "";
                return newConfig;
            }
        }
        protected override void LoadDefaultConfig() {
            cfg = ConfigData.GetNewConf();
        }
        protected override void SaveConfig() {
            Config.WriteObject(cfg);
        }
        protected override void LoadConfig() {
            base.LoadConfig();
            try {
                cfg = Config.ReadObject<ConfigData>();
            }
            catch {
                LoadDefaultConfig();
            }
            NextTick(SaveConfig);
        }
        Dictionary<ulong, PlayerData> _playerData = new Dictionary<ulong, PlayerData>();
        class PlayerData {
            public string UserName;
            public int ReportCount;
            public int AlertCount;
            public double ReportCD = CurrentTime();
            public double IsCooldown => Math.Max(ReportCD - CurrentTime(), 0);
        }
#endregion
#region UI
        private static string Layer = "Report";
        private string Hud = "Hud";
        private string Overlay = "Overlay";
        private string regular = "robotocondensed-regular.ttf";
        private static string Sharp = "assets/content/ui/ui.background.tile.psd";
        private static string Blur = "assets/content/ui/uibackgroundblur.mat";
        private string radial = "assets/content/ui/ui.background.transparent.radial.psd";
        private CuiPanel _fon = new CuiPanel() {
            RectTransform = {
                AnchorMin = "0 0", AnchorMax = "1 1"
            }
            , Image = {
                Color = "0 0 0 0.87", Material = "assets/content/ui/uibackgroundblur.mat"
            }
        }
        ;
        private CuiPanel _mainFon = new CuiPanel() {
            RectTransform = {
                AnchorMin = "0.5 0.5", AnchorMax = "0.5 0.5", OffsetMin = "-1920 -1080", OffsetMax = "1920 1080"
            }
            , CursorEnabled = true, Image = {
                Color = "0.211200 0.2312312 0.312312312 0"
            }
        }
        ;
        private CuiPanel _redPanel = new CuiPanel() {
            RectTransform = {
                AnchorMin = "0 0", AnchorMax = "0.289 1"
            }
            , Image = {
                Color = "0.549 0.270 0.215 0.7", Material = ""
            }
        }
        ;
        private CuiPanel _modPanel = new CuiPanel() {
            RectTransform = {
                AnchorMin = "0.01 0.25", AnchorMax = "0.28 0.666358"
            }
            , Image = {
                Color = HexToRustFormat("#222222CC")
            }
        }
        ;
        private CuiPanel _mod2Panel = new CuiPanel() {
            RectTransform = {
                AnchorMin = "0.01 0.25", AnchorMax = "0.28 0.666358"
            }
            , Image = {
                Color = HexToRustFormat("#222222CC"), Material = Blur
            }
        }
        ;
        private CuiPanel _playersPanel = new CuiPanel() {
            RectTransform = {
                AnchorMin = "0.289 0", AnchorMax = "1 1"
            }
            , Image = {
                Color = "0.117 0.121 0.109 0.95"
            }
        }
        ;
        private CuiButton _close = new CuiButton() {
            RectTransform = {
                AnchorMin = "0.6567709 0.6496913", AnchorMax = "0.6659723 0.6645062"
            }
            , Button = {
                Close = Layer, Sprite = "assets/icons/vote_down.png", Color = "0.64 0.64 0.64 0.86",
            }
            , Text = {
                Text = ""
            }
        }
        ;
        private void StartUi(BasePlayer player) {
            var cont = new CuiElementContainer();
            cont.Add(new CuiPanel {
                RectTransform = {
                    AnchorMin = "0.276 0", AnchorMax = "0.945 1", OffsetMax = "0 0"
                }
                , Image = {
                    Color = "0.117 0.121 0.109 0.5"
                }
            }
            , "Menu_UI", Layer + "Main");
            if (permission.UserHasPermission(player.UserIDString, "soreport.admin")) cont.Add(new CuiButton() {
                Text = {
                    Text = "МОДЕРАТОР ПАНЕЛЬ", Align = TextAnchor.MiddleCenter
                }
                , Button = {
                    Color = "0.64 0.64 0.64 0.35", Command = "uisoreport modmenu open"
                }
                , RectTransform = {
                    AnchorMin = "0.29 0.25", AnchorMax = "0.455 0.32"
                }
            }
            , "Menu_UI", Layer + "BMod");
            CuiHelper.AddUi(player, cont);
            PlayerListLoad(player, 1);
            ReportFon(player);
        }
        private void Alert(ulong targetId) {
            var targetPlayer = BasePlayer.FindByID(targetId);
            if (targetPlayer == null) return;
            var cont = new CuiElementContainer();
            cont.Add(new CuiPanel() {
                RectTransform = {
                    AnchorMin = "0.5 0.5", AnchorMax = "0.5 0.5", OffsetMin = "-300 250", OffsetMax = "300 300"
                }
                , Image = {
                    Color = "0 0 0 0.64", Material = Blur
                }
            }
            , Overlay, "AlerUISo");
            cont.Add(new CuiElement() {
                Parent = "AlerUISo", Components = {
                    new CuiTextComponent() {
                        Align = TextAnchor.MiddleCenter, Text = "Вас вызвали на проверку напиши ваш дискорд /discord <color=purple>{ВАШ ДИСКОРД}</color>.Если вы покините сервер вы будете наказаны,за отказ вы тоже будете наказаны!"
                    }
                    , new CuiRectTransformComponent() {
                        AnchorMin = "0.09 0", AnchorMax = "0.9 1"
                    }
                }
            }
            );
            CuiHelper.AddUi(targetPlayer, cont);
        }
        private void ModeratorInterface(BasePlayer player, int page) {
            var cont = new CuiElementContainer();
            List<ulong> f;
            CuiHelper.DestroyUi(player, Layer + "Mod");
            cont.Add(_modPanel, Layer + "Main", Layer + "Mod");
            //Лейбл
            PlayerData playerData;
            if (!_playerData.TryGetValue(player.userID, out playerData)) return;
            if (page > 1) {
                cont.Add(new CuiButton() {
                    Button = {
                        Command = $"uisoreport nextpage mod {page - 1}", Color = HexToRustFormat("#4b602aCC")
                    }
                    , Text = {
                        Text = "<", Color = HexToRustFormat("#a1e432"), Align = TextAnchor.MiddleCenter
                    }
                    , RectTransform = {
                        AnchorMin = "0.42 0.01297505", AnchorMax = "0.4722021 0.06"
                    }
                }
                , Layer + "Mod");
            }
            else {
                cont.Add(new CuiButton() {
                    Button = {
                        Command = $"", Color = HexToRustFormat($"#24291dCC")
                    }
                    , Text = {
                        Text = "<", Color = HexToRustFormat("#a1e432"), Align = TextAnchor.MiddleCenter
                    }
                    , RectTransform = {
                        AnchorMin = "0.42 0.01297505", AnchorMax = "0.4722021 0.06"
                    }
                }
                , Layer + "Mod");
            }
            cont.Add(new CuiButton() {
                Button = {
                    Color = "0 0 0 0.64"
                }
                , Text = {
                    Text = page.ToString(), Color = HexToRustFormat("#a1e432"), Align = TextAnchor.MiddleCenter
                }
                , RectTransform = {
                    AnchorMin = "0.4786112 0.01297505", AnchorMax = "0.53 0.06"
                }
            }
            , Layer + "Mod");
            cont.Add(new CuiButton() {
                Button = {
                    Command = $"uisoreport nextpage mod {page + 1}", Color = HexToRustFormat("#4b602aCC")
                }
                , Text = {
                    Text = ">", Color = HexToRustFormat("#a1e432"), Align = TextAnchor.MiddleCenter
                }
                , RectTransform = {
                    AnchorMin = "0.53 0.01297505", AnchorMax = "0.59 0.06"
                }
            }
            , Layer + "Mod");
            cont.Add(new CuiElement() {
                Parent = Layer + "Mod", Components = {
                    new CuiTextComponent() {
                        Text = "МОДЕРАТОР", Color = "0.64 0.64 0.64 0.86", FontSize = 20
                    }
                    , new CuiRectTransformComponent() {
                        AnchorMin = "0.03044713 0.9", AnchorMax = "0.9742392 1"
                    }
                }
            }
            );
            foreach (var players in _playerData.Where(p => p.Value.ReportCount >= cfg.kolreport).Where(p => BasePlayer.FindByID(p.Key) != null).Select((i, t) => new {
                A = i, B = t - (page - 1) * 8
            }
            ).Skip((page - 1) * 8).Take(8)) {
                var target = BasePlayer.FindByID(players.A.Key);
                if (players.A.Value.AlertCount >= cfg.greencolor) {
                    cont.Add(new CuiElement() {
                        Parent = Layer + "Mod", Name = Layer + "Mod" + players.B, Components = {
                            new CuiImageComponent() {
                                Color = "0.00 0.78 0.00 0.25",
                            }
                            , new CuiRectTransformComponent {
                                AnchorMin = $"{0.03278887} {0.8 - Math.Floor((double) players.B / 1) * 0.1}", AnchorMax = $"{0.976581} {0.8923218 - Math.Floor((double) players.B / 1) * 0.1}"
                            }
                        }
                    }
                    );
                }
                else if (players.A.Value.ReportCount >= cfg.redcolor) {
                    cont.Add(new CuiElement() {
                        Parent = Layer + "Mod", Name = Layer + "Mod" + players.B, Components = {
                            new CuiImageComponent() {
                                Color = "0.50 0.00 0.00 0.35",
                            }
                            , new CuiRectTransformComponent {
                                AnchorMin = $"{0.03278887} {0.8 - Math.Floor((double) players.B / 1) * 0.1}", AnchorMax = $"{0.976581} {0.8923218 - Math.Floor((double) players.B / 1) * 0.1}"
                            }
                        }
                    }
                    );
                }
                else {
                    cont.Add(new CuiElement() {
                        Parent = Layer + "Mod", Name = Layer + "Mod" + players.B, Components = {
                            new CuiImageComponent() {
                                Color = "0.35 0.35 0.35 0.45",
                            }
                            , new CuiRectTransformComponent {
                                AnchorMin = $"{0.03278887} {0.8 - Math.Floor((double) players.B / 1) * 0.1}", AnchorMax = $"{0.976581} {0.8923218 - Math.Floor((double) players.B / 1) * 0.1}"
                            }
                        }
                    }
                    );
                }
                cont.Add(new CuiElement() {
                    Parent = Layer + "Mod" + players.B, Components = {
                        new CuiRawImageComponent() {
                            Png = GetImage(target.UserIDString)
                        }
                        , new CuiRectTransformComponent() {
                            AnchorMin = "0 0", AnchorMax = "0.1464023 0.9851253"
                        }
                    }
                }
                );
                cont.Add(new CuiElement() {
                    Parent = Layer + "Mod" + players.B, Components = {
                        new CuiTextComponent() {
                            Text = $" {target.displayName.ToUpper()}", Align = TextAnchor.MiddleLeft, FontSize = 16
                        }
                        , new CuiRectTransformComponent() {
                            AnchorMin = "0.1994236 0.2736453", AnchorMax = "1.003585 0.9851253"
                        }
                    }
                }
                );
                cont.Add(new CuiElement() {
                    Parent = Layer + "Mod" + players.B, Components = {
                        new CuiTextComponent() {
                            Text = $"  {target.userID}", Color = "0.64 0.64 0.64 0.64", Align = TextAnchor.UpperLeft, FontSize = 10, Font = regular
                        }
                        , new CuiRectTransformComponent() {
                            AnchorMin = "0.1994236 0.01242494", AnchorMax = "1.003585 0.4013513"
                        }
                    }
                }
                );
                cont.Add(new CuiButton() {
                    Button = {
                        Color = "0.64 0.64 0.64 0.86", Command = $"UISoReport profile {target.userID}", Sprite = "assets/icons/tools.png"
                    }
                    , RectTransform = {
                        AnchorMin = "0.8615944 0", AnchorMax = "0.9975222 1"
                    }
                    , Text = {
                        Text = ""
                    }
                }
                , Layer + "Mod" + players.B);
            }
            CuiHelper.AddUi(player, cont);
        }
        private void LoadProfile(BasePlayer player, ulong targetId) {
            PlayerData f;
            if (!_playerData.TryGetValue(targetId, out f)) return;
            var cont = new CuiElementContainer();
            CuiHelper.DestroyUi(player, Layer + "Profile");
            cont.Add(_mod2Panel, "Menu_UI", Layer + "Profile");
            cont.Add(new CuiElement() {
                Parent = Layer + "Profile", Components = {
                    new CuiTextComponent() {
                        Align = TextAnchor.MiddleCenter, Text = f.UserName.ToUpper(), FontSize = 25
                    }
                    , new CuiRectTransformComponent() {
                        AnchorMin = "0.03270523 0.9434662", AnchorMax = "0.927317 0.9870253"
                    }
                }
            }
            );
            cont.Add(new CuiElement() {
                Parent = Layer + "Profile", Components = {
                    new CuiRawImageComponent() {
                        Png = GetImage(targetId.ToString())
                    }
                    , new CuiRectTransformComponent() {
                        AnchorMin = "0.3160769 0.65", AnchorMax = "0.6369192 0.9416128"
                    }
                }
            }
            );
            cont.Add(new CuiElement() {
                Parent = Layer + "Profile", Components = {
                    new CuiTextComponent() {
                        Align = TextAnchor.MiddleCenter, Text = "Кол-во репортов: " + f.ReportCount, Color = "0.64 0.64 0.64 0.64", FontSize = 10
                    }
                    , new CuiRectTransformComponent() {
                        AnchorMin = "0.316077 0.6", AnchorMax = "0.6369191 0.64"
                    }
                }
            }
            );
            cont.Add(new CuiElement() {
                Parent = Layer + "Profile", Components = {
                    new CuiTextComponent() {
                        Align = TextAnchor.MiddleCenter, Text = "Кол-во проверок: " + f.AlertCount, Color = "0.64 0.64 0.64 0.64", FontSize = 10
                    }
                    , new CuiRectTransformComponent() {
                        AnchorMin = "0.316077 0.55", AnchorMax = "0.6369191 0.59"
                    }
                }
            }
            );
            cont.Add(new CuiButton() {
                Button = {
                    Color = "0.65 0.65 0.65 0.45", Command = $"uisoreport alert {targetId}"
                }
                , Text = {
                    Text = "ВЫЗВАТЬ НА ПРОВЕРКУ", Color = "0.64 0.64 0.64 0.87", Align = TextAnchor.MiddleCenter
                }
                , RectTransform = {
                    AnchorMin = "0.09125336 0.47", AnchorMax = "0.8570592 0.54"
                }
            }
            , Layer + "Profile");
            cont.Add(new CuiButton() {
                Button = {
                    Color = "1 1 1 1", Sprite = "assets/icons/circle_open.png", Close = Layer + "Profile"
                }
                , Text = {
                    Text = ""
                }
                , RectTransform = {
                    AnchorMin = "0.4120954 0.36", AnchorMax = "0.5151403 0.46"
                }
            }
            , Layer + "Profile");
            cont.Add(new CuiButton() {
                Button = {
                    Color = "1 1 1 1", Sprite = "assets/icons/vote_down.png", Close = Layer + "Profile"
                }
                , Text = {
                    Text = ""
                }
                , RectTransform = {
                    AnchorMin = "0.4120954 0.36", AnchorMax = "0.5151403 0.46"
                }
            }
            , Layer + "Profile");
            CuiHelper.AddUi(player, cont);
        }
        private void ReportFon(BasePlayer player) {
            var cont = new CuiElementContainer();
            List<ulong> f;
            CuiHelper.DestroyUi(player, Layer + "Red");
            cont.Add(_redPanel, Layer + "Main", Layer + "Red");
            //Лейбл
            PlayerData playerData;
            if (!_playerData.TryGetValue(player.userID, out playerData)) return;
            cont.Add(new CuiElement() {
                Parent = Layer + "Red", Components = {
                    new CuiTextComponent() {
                        Text = "РЕПОРТ", Align = TextAnchor.MiddleLeft, Color = "0.929 0.882 0.847 0.8", FontSize = 33
                    }
                    , new CuiRectTransformComponent() {
                        AnchorMin = "0.09 0.91", AnchorMax = "1 1"
                    }
                }
            }
            );
            if (playerData.IsCooldown > 0) {
                cont.Add(new CuiElement() {
                    Parent = Layer + "Red", Components = {
                        new CuiTextComponent() {
                            Text = "Подождите: " + FormatTime(TimeSpan.FromSeconds(playerData.IsCooldown), "ru"), Color = "0.929 0.882 0.847 0.8", FontSize = 15, Align = TextAnchor.MiddleRight, Font = regular
                        }
                        , new CuiRectTransformComponent() {
                            AnchorMin = "0.03044713 0.9258574", AnchorMax = "0.9742392 0.9766592"
                        }
                    }
                }
                );
            }
            //Инфо
            cont.Add(new CuiElement() {
                Parent = Layer + "Red", Components = {
                    new CuiTextComponent() {
                        Text = "Не забывайте что жалобу можно отравить не только на <b>одного человека</b>, а сразу на <b>шестерых</b>.", Color = "0.64 0.64 0.64 0.86", FontSize = 12, Font = regular
                    }
                    , new CuiRectTransformComponent() {
                        AnchorMin = "0.03513062 0.146427", AnchorMax = "0.976581 0.214087"
                    }
                }
            }
            );
            //Первая причина
            cont.Add(new CuiButton() {
                Text = {
                    Text = cfg.res1, Color = "0.64 0.64 0.64 0.86", Align = TextAnchor.MiddleCenter
                }
                , Button = {
                    Color = "0 0 0 0.64", Command = $"UiSoReport reportsend {cfg.res1}"
                }
                , RectTransform = {
                    AnchorMin = "0.03747275 0.07877186", AnchorMax = "0.4941462 0.1390175"
                }
            }
            , Layer + "Red");
            //Вторая причина
            cont.Add(new CuiButton() {
                Text = {
                    Text = cfg.res2, Color = "0.64 0.64 0.64 0.86", Align = TextAnchor.MiddleCenter
                }
                , Button = {
                    Color = "0 0 0 0.64", Command = $"UiSoReport reportsend {cfg.res2}"
                }
                , RectTransform = {
                    AnchorMin = "0.5128826 0.07877186", AnchorMax = "0.9695571 0.1390175"
                }
            }
            , Layer + "Red");
            //3 причина
            cont.Add(new CuiButton() {
                Text = {
                    Text = cfg.res3, Color = "0.64 0.64 0.64 0.86", Align = TextAnchor.MiddleCenter
                }
                , Button = {
                    Color = "0 0 0 0.64", Command = $"UiSoReport reportsend {cfg.res3}"
                }
                , RectTransform = {
                    AnchorMin = "0.5128826 0.01204333", AnchorMax = "0.9695571 0.07228888"
                }
            }
            , Layer + "Red");
            //4 причина
            cont.Add(new CuiButton() {
                Text = {
                    Text = cfg.res4, Color = "0.64 0.64 0.64 0.86", Align = TextAnchor.MiddleCenter
                }
                , Button = {
                    Color = "0 0 0 0.64", Command = $"UiSoReport reportsend {cfg.res4}"
                }
                , RectTransform = {
                    AnchorMin = "0.03981462 0.01204333", AnchorMax = "0.4964881 0.07228888"
                }
            }
            , Layer + "Red");
            if (_reportList.TryGetValue(player.userID, out f)) {
                foreach (var players in f.Select((i, t) => new {
                    A = i, B = t
                }
                )) {
                    var target = BasePlayer.FindByID(players.A);
                    if (target == null) continue;
                    cont.Add(new CuiElement() {
                        Parent = Layer + "Red", Name = Layer + "Red" + players.B, Components = {
                            new CuiImageComponent() {
                                Color = "0.64 0.64 0.64 0.45",
                            }
                            , new CuiRectTransformComponent {
                                AnchorMin = $"{0.03278887} {0.8387395 - Math.Floor((double) players.B / 1) * 0.058}", AnchorMax = $"{0.976581} {0.8923218 - Math.Floor((double) players.B / 1) * 0.058}"
                            }
                        }
                    }
                    );
                    cont.Add(new CuiElement() {
                        Parent = Layer + "Red" + players.B, Components = {
                            new CuiRawImageComponent() {
                                Png = GetImage(target.UserIDString)
                            }
                            , new CuiRectTransformComponent() {
                                AnchorMin = "0 0", AnchorMax = "0.1464023 0.9851253"
                            }
                        }
                    }
                    );
                    cont.Add(new CuiElement() {
                        Parent = Layer + "Red" + players.B, Components = {
                            new CuiTextComponent() {
                                Text = $" {target.displayName.ToUpper()}", Align = TextAnchor.MiddleLeft, FontSize = 16
                            }
                            , new CuiRectTransformComponent() {
                                AnchorMin = "0.1994236 0.2736453", AnchorMax = "1.003585 0.9851253"
                            }
                        }
                    }
                    );
                    cont.Add(new CuiElement() {
                        Parent = Layer + "Red" + players.B, Components = {
                            new CuiTextComponent() {
                                Text = $"  {target.userID}", Color = "0.64 0.64 0.64 0.64", Align = TextAnchor.UpperLeft, FontSize = 10, Font = regular
                            }
                            , new CuiRectTransformComponent() {
                                AnchorMin = "0.1994236 0.01242494", AnchorMax = "1.003585 0.4013513"
                            }
                        }
                    }
                    );
                    cont.Add(new CuiButton() {
                        Button = {
                            Color = "0.64 0.64 0.64 0.86", Command = $"UISoReport remove {target.userID}", Sprite = "assets/icons/vote_down.png"
                        }
                        , RectTransform = {
                            AnchorMin = "0.8515944 0", AnchorMax = "0.9975222 1"
                        }
                        , Text = {
                            Text = ""
                        }
                    }
                    , Layer + "Red" + players.B);
                }
            }
            CuiHelper.AddUi(player, cont);
        }
        private void PlayerListLoad(BasePlayer player, int page, string find = "") {
            var cont = new CuiElementContainer();
            CuiHelper.DestroyUi(player, Layer + "Players");
            cont.Add(_playersPanel, Layer + "Main", Layer + "Players");
            ;
            if (page > 1) {
                cont.Add(new CuiButton() {
                    Button = {
                        Command = $"uisoreport nextpage players {page - 1}", Color = HexToRustFormat("#4b602aCC")
                    }
                    , Text = {
                        Text = "<", Color = HexToRustFormat("#a1e432"), Align = TextAnchor.MiddleCenter
                    }
                    , RectTransform = {
                        AnchorMin = "0.4305381 0.01297505", AnchorMax = "0.4722021 0.05097298"
                    }
                }
                , Layer + "Players");
            }
            else {
                cont.Add(new CuiButton() {
                    Button = {
                        Command = $"", Color = HexToRustFormat($"#24291dCC")
                    }
                    , Text = {
                        Text = "<", Color = HexToRustFormat("#a1e432"), Align = TextAnchor.MiddleCenter
                    }
                    , RectTransform = {
                        AnchorMin = "0.4305381 0.01297505", AnchorMax = "0.4722021 0.05097298"
                    }
                }
                , Layer + "Players");
            }
            cont.Add(new CuiButton() {
                Button = {
                    Color = "0 0 0 0.64"
                }
                , Text = {
                    Text = page.ToString(), Color = HexToRustFormat("#a1e432"), Align = TextAnchor.MiddleCenter
                }
                , RectTransform = {
                    AnchorMin = "0.4786112 0.01297505", AnchorMax = "0.5202752 0.05097298"
                }
            }
            , Layer + "Players");
            cont.Add(new CuiButton() {
                Button = {
                    Command = $"uisoreport nextpage players {page + 1}", Color = HexToRustFormat("#4b602aCC")
                }
                , Text = {
                    Text = ">", Color = HexToRustFormat("#a1e432"), Align = TextAnchor.MiddleCenter
                }
                , RectTransform = {
                    AnchorMin = "0.5256162 0.01297505", AnchorMax = "0.5672802 0.05097298"
                }
            }
            , Layer + "Players");
            cont.Add(new CuiElement() {
                Parent = Layer + "Players", Components = {
                    new CuiTextComponent() {
                        Text = "НАЙДИ ИГРОКА(-ОВ)", Color = "0.64 0.64 0.64 0.86", FontSize = 15
                    }
                    , new CuiRectTransformComponent() {
                        AnchorMin = "0.02672157 0.9277115", AnchorMax = "0.3984902 0.9785135"
                    }
                }
            }
            );
            cont.Add(new CuiElement() {
                Parent = Layer + "Players", Components = {
                    new CuiTextComponent() {
                        Text = "НА КОТОРОГО ХОЧЕШЬ ПОЖАЛОВАТЬСЯ", Color = "0.64 0.64 0.64 0.34", FontSize = 9
                    }
                    , new CuiRectTransformComponent() {
                        AnchorMin = "0.02776662 0.9341984", AnchorMax = "0.3963884 0.9564412"
                    }
                }
            }
            );
            //Инфо
            cont.Add(new CuiElement() {
                Parent = Layer + "Players", Components = {
                    new CuiImageComponent() {
                        Color = "0.64 0.64 0.64 0.35"
                    }
                    , new CuiRectTransformComponent() {
                        AnchorMin = "0.5256127 0.936052", AnchorMax = "0.9710997 0.9785135"
                    }
                }
            }
            );
            cont.Add(new CuiElement() {
                Parent = Layer + "Players", Components = {
                    new CuiTextComponent() {
                        Text = "   НАЙТИ ИГРОКА ПО НИКУ/STEAMID", Align = TextAnchor.MiddleLeft, Color = "0.64 0.64 0.64 0.10"
                    }
                    , new CuiRectTransformComponent() {
                        AnchorMin = "0.5256127 0.936052", AnchorMax = "0.9710997 0.9785135"
                    }
                }
            }
            );
            cont.Add(new CuiElement() {
                Parent = Layer + "Players", Components = {
                    new CuiInputFieldComponent() {
                        Text = "", Color = "0.64 0.64 0.64 0.64", Align = TextAnchor.MiddleLeft, Command = $"UISoReport find {page} "
                    }
                    , new CuiRectTransformComponent() {
                        AnchorMin = "0.5256127 0.936052", AnchorMax = "0.9710997 0.9785135"
                    }
                }
            }
            );
            cont.Add(new CuiElement() {
                Parent = Layer + "Players", Components = {
                    new CuiImageComponent() {
                        Sprite = "assets/icons/examine.png", Color = "0.64 0.64 0.64 0.64"
                    }
                    , new CuiRectTransformComponent() {
                        AnchorMin = "0.9207384 0.936052", AnchorMax = "0.9710997 0.9785135"
                    }
                }
            }
            );
            if (find != "" && BasePlayer.Find(find) != null) {
                var targetPlayer = BasePlayer.Find(find);
                cont.Add(new CuiElement() {
                    Parent = Layer + "Players", Name = Layer + "Players" + "0", Components = {
                        new CuiImageComponent() {
                            Color = "0.64 0.64 0.64 0.25"
                        }
                        , new CuiRectTransformComponent {
                            AnchorMin = "0.02964282 0.8609824", AnchorMax = "0.3365291 0.9117843"
                        }
                    }
                }
                );
                cont.Add(new CuiElement() {
                    Parent = Layer + "Players" + "0", Components = {
                        new CuiRawImageComponent() {
                            Png = GetImage(targetPlayer.UserIDString)
                        }
                        , new CuiRectTransformComponent() {
                            AnchorMin = "0 0", AnchorMax = "0.199423 0.9851253"
                        }
                    }
                }
                );
                cont.Add(new CuiElement() {
                    Parent = Layer + "Players" + "0", Components = {
                        new CuiTextComponent() {
                            Text = $" {targetPlayer.displayName.ToUpper()}", Align = TextAnchor.MiddleLeft, FontSize = 16
                        }
                        , new CuiRectTransformComponent() {
                            AnchorMin = "0.1994236 0.2736453", AnchorMax = "1.003585 0.9851253"
                        }
                    }
                }
                );
                cont.Add(new CuiElement() {
                    Parent = Layer + "Players" + "0", Components = {
                        new CuiTextComponent() {
                            Text = $"  {targetPlayer.userID}", Color = "0.64 0.64 0.64 0.64", Align = TextAnchor.UpperLeft, FontSize = 10, Font = regular
                        }
                        , new CuiRectTransformComponent() {
                            AnchorMin = "0.1994236 0.01242494", AnchorMax = "1.003585 0.4013513"
                        }
                    }
                }
                );
                cont.Add(new CuiButton() {
                    Button = {
                        Color = "0 0 0 0", Command = $"UISoReport add {page} {targetPlayer.userID}"
                    }
                    , RectTransform = {
                        AnchorMin = "0 0", AnchorMax = "1 1"
                    }
                    , Text = {
                        Text = ""
                    }
                }
                , Layer + "Players" + "0");
            }
            else {
                foreach (var players in BasePlayer.activePlayerList.Select((i, t) => new {
                    A = i, B = t - (page - 1) * 45
                }
                ).Skip((page - 1) * 45).Take(45)) {
                    List<ulong> f;
                    if (_reportList.TryGetValue(player.userID, out f) && f.Contains(players.A.userID)) {
                        cont.Add(new CuiElement() {
                            Parent = Layer + "Players", Name = Layer + "Players" + players.B, Components = {
                                new CuiImageComponent() {
                                    Color = HexToRustFormat("#93c9415a")
                                }
                                , new CuiRectTransformComponent {
                                    AnchorMin = $"{0.02964282 + players.B * 0.315 - Math.Floor((double) players.B / 3) * 3 * 0.315} {0.8609824 - Math.Floor((double) players.B / 3) * 0.058}", AnchorMax = $"{0.3365291 + players.B * 0.315 - Math.Floor((double) players.B / 3) * 3 * 0.315} {0.9117843 - Math.Floor((double) players.B / 3) * 0.058}"
                                }
                            }
                        }
                        );
                    }
                    else {
                        cont.Add(new CuiElement() {
                            Parent = Layer + "Players", Name = Layer + "Players" + players.B, Components = {
                                new CuiImageComponent() {
                                    Color = "0.64 0.64 0.64 0.25"
                                }
                                , new CuiRectTransformComponent {
                                    AnchorMin = $"{0.02964282 + players.B * 0.315 - Math.Floor((double) players.B / 3) * 3 * 0.315} {0.8609824 - Math.Floor((double) players.B / 3) * 0.058}", AnchorMax = $"{0.3365291 + players.B * 0.315 - Math.Floor((double) players.B / 3) * 3 * 0.315} {0.9117843 - Math.Floor((double) players.B / 3) * 0.058}"
                                }
                            }
                        }
                        );
                    }
                    cont.Add(new CuiElement() {
                        Parent = Layer + "Players" + players.B, Components = {
                            new CuiRawImageComponent() {
                                Png = GetImage(players.A.UserIDString)
                            }
                            , new CuiRectTransformComponent() {
                                AnchorMin = "0 0", AnchorMax = "0.199423 0.9851253"
                            }
                        }
                    }
                    );
                    cont.Add(new CuiElement() {
                        Parent = Layer + "Players" + players.B, Components = {
                            new CuiTextComponent() {
                                Text = $" {players.A.displayName.ToUpper()}", Align = TextAnchor.MiddleLeft, FontSize = 16
                            }
                            , new CuiRectTransformComponent() {
                                AnchorMin = "0.1994236 0.2736453", AnchorMax = "1.003585 0.9851253"
                            }
                        }
                    }
                    );
                    cont.Add(new CuiElement() {
                        Parent = Layer + "Players" + players.B, Components = {
                            new CuiTextComponent() {
                                Text = $"  {players.A.userID}", Color = "0.64 0.64 0.64 0.64", Align = TextAnchor.UpperLeft, FontSize = 10, Font = regular
                            }
                            , new CuiRectTransformComponent() {
                                AnchorMin = "0.1994236 0.01242494", AnchorMax = "1.003585 0.4013513"
                            }
                        }
                    }
                    );
                    cont.Add(new CuiButton() {
                        Button = {
                            Color = "0 0 0 0", Command = $"UISoReport add {page} {players.A.userID}"
                        }
                        , RectTransform = {
                            AnchorMin = "0 0", AnchorMax = "1 1"
                        }
                        , Text = {
                            Text = ""
                        }
                    }
                    , Layer + "Players" + players.B);
                }
            }
            CuiHelper.AddUi(player, cont);
        }
#endregion
#region Commands
        [ChatCommand("discord")]
        private void SayDiscord(BasePlayer player, string c, string[] a) {
            if (!_alertList.ContainsValue(player.userID)) {
                ReplySend(player, "Вы не на проверке!");
                return;
            }
            if (a.Length < 1) {
                ReplySend(player, "/discord {ВАШ ДИСКОРД}");
                return;
            }
            var arg = string.Join(" ", a.ToArray());
            var admin = BasePlayer.FindByID(_alertList.First(p => p.Value == player.userID).Key);
            ReplySend(player, "Дискорд успешно отправлен!");
            if (admin != null) ReplySend(admin, $"Игрок {player.displayName}[{player.userID}] отправил свой дискорд: {arg}");
            if (cfg.Vkontakte) webrequest.Enqueue("https://api.vk.com/method/messages.send?user_ids=" + cfg.vkadmin + "&message=" + $"Игрок {player.displayName}[{player.userID}] отправил свой дискорд: {arg}" + "&v=5.92" + "&random_id=" + UnityEngine.Random.Range(Int32.MinValue, Int32.MaxValue) + "&access_token=" + cfg.vkAcces, null, (code, response) => {
            }
            , this);
            if(cfg.TelegramUse) webrequest.Enqueue($"https://api.telegram.org/bot{cfg.botToken}/sendMessage?chat_id=@{cfg.chatid}&text=Игрок {player.displayName}[{player.userID}] отправил свой дискорд: {arg}", null, (code, response) => {
                if(code == 400) Puts("Chat not found");
            }
            , this, RequestMethod.POST);
            if (cfg.discord) SendDiscord("SendPlayerDiscord", $"Игрок {player.displayName}[{player.userID}] отправил свой дискорд: {arg}", cfg.discordhook2);
        }
        [ConsoleCommand("UISoReport")]
        private void SoCommands(ConsoleSystem.Arg arg) {
            var targetPlayer = arg.Player();
            switch (arg.Args[0]) {
                case "nextpage" : if (arg.Args[1] == "players") PlayerListLoad(targetPlayer, arg.Args[2].ToInt());
                if (arg.Args[1] == "mod") ModeratorInterface(targetPlayer, arg.Args[2].ToInt());
                break;
                case "alert" : ulong ss;
                if (_alertList.TryGetValue(targetPlayer.userID, out ss)) {
                    var target = BasePlayer.FindByID(ss);
                    ReplySend(target, $"Проверка окончена!");
                    ReplySend(targetPlayer, $"Вы закончили проверку игрока {target.displayName}");
                    CuiHelper.DestroyUi(target, "AlerUISo");
                    _alertList.Remove(targetPlayer.userID);
                }
                else if (!_alertList.ContainsValue(ulong.Parse(arg.Args[1]))) {
                    PlayerData data;
                    if (!_playerData.TryGetValue(ulong.Parse(arg.Args[1]), out data)) return;
                    data.AlertCount += 1;
                    _alertList.Add(targetPlayer.userID, ulong.Parse(arg.Args[1]));
                    Alert(ulong.Parse(arg.Args[1]));
                }
                break;
                case "find" : if(arg.Args.Length < 3) return;
                PlayerListLoad(targetPlayer, arg.Args[1].ToInt(), arg.Args[2]);
                break;
                case "add" : List<ulong> f;
                if (_reportList.TryGetValue(targetPlayer.userID, out f)) {
                    if (!f.Contains(ulong.Parse(arg.Args[2]))) if (f.Count < 6) f.Add(ulong.Parse(arg.Args[2]));
                }
                else _reportList.Add(targetPlayer.userID, new List<ulong>() {
                    ulong.Parse(arg.Args[2]),
                }
                );
                PlayerListLoad(targetPlayer, arg.Args[1].ToInt());
                ReportFon(targetPlayer);
                break;
                case "remove" : if (_reportList.TryGetValue(targetPlayer.userID, out f)) f.Remove(ulong.Parse(arg.Args[1]));
                PlayerListLoad(targetPlayer, 1);
                ReportFon(targetPlayer);
                break;
                case "reportsend" : PlayerData playerDat;
                if (!_playerData.TryGetValue(targetPlayer.userID, out playerDat)) return;
                if (playerDat.IsCooldown > 0) return;
                if (_reportList.TryGetValue(targetPlayer.userID, out f)) {
                    string text = $"Игрок {targetPlayer.displayName}[{targetPlayer.userID}] пожаловался по причине {arg.Args[1]} на игрока(-ов):";
                    if (f.Count < 1) return;
                    foreach (var reportSend in f) {
                        var target = BasePlayer.FindByID(reportSend);
                        if (target == null) continue;
                        PlayerData dataPlayer;
                        if (_playerData.TryGetValue(target.userID, out dataPlayer)) {
                            dataPlayer.ReportCount += 1;
                            text += $"\n{target.displayName} [{target.userID}] \nКол-во репортов: {dataPlayer.ReportCount}\nSteam: [КЛИК](https://steamcommunity.com/profiles/{target.userID})";
                        }
                    }
                    f.Clear();
                    if (cfg.discord) SendDiscord("REPORT", text, cfg.discordhook);
                    if (cfg.Vkontakte) webrequest.Enqueue("https://api.vk.com/method/messages.send?user_ids=" + cfg.vkadmin + "&message=" + text + "&v=5.92" + "&random_id=" + UnityEngine.Random.Range(Int32.MinValue, Int32.MaxValue) + "&access_token=" + cfg.vkAcces, null, (code, response) => {
                    }
                    , this);
                    if(cfg.TelegramUse) webrequest.Enqueue($"https://api.telegram.org/bot{cfg.botToken}/sendMessage?chat_id=@{cfg.chatid}&text={text}", null, (code, response) => {
                        if(code == 400) Puts("Chat not found");
                    }
                    , this, RequestMethod.POST);
                    Puts(text);
                    playerDat.ReportCD = cfg.cooldown + CurrentTime();
                }
                PlayerListLoad(targetPlayer, 1);
                ReportFon(targetPlayer);
                break;
                case "modmenu" : if (arg.Args[1] == "open") {
                    CuiHelper.DestroyUi(targetPlayer, Layer + "BMod");
                    ModeratorInterface(targetPlayer, 1);
                }
                break;
                case "profile" : LoadProfile(targetPlayer, ulong.Parse(arg.Args[1]));
                break;
            }
        }
        [ChatCommand("alert")]
        private void AlertCommand(BasePlayer player, string c, string[] a) {
            if (permission.UserHasPermission(player.UserIDString, "soreport.admin")) {
                if (a.Length < 1) {
                    ReplySend(player, "/alert {НИК/STEAMID}");
                    return;
                }
                var arg = String.Join(" ", a.ToArray());
               
// ... [Code preview truncated due to length. Full source in attached file] ...

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

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

Сверху