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

FREE PlayerManager : 1.0.5 1.0.5

Нет прав для скачивания
C#:
// Все права принадлежат дискорд сообществу https://discord.gg/VgNHPpNrz6
using System.Collections.Generic;
using System;
using System.Reflection;
using System.Data;
using UnityEngine;
using Oxide.Core;
using Oxide.Core.Configuration;
using Oxide.Core.Logging;
using System.Linq;
using Oxide.Core.Plugins;
using Rust;
namespace Oxide.Plugins {
    [Info("PlayerManager", "Reneb", "1.0.5", ResourceId= 1535)]
    class PlayerManager : RustPlugin {
        [PluginReference]
        Plugin PlayerDatabase;
        [PluginReference]
        Plugin EnhancedBanSystem;
        [PluginReference]
        Plugin chatmute;
        static string permissionPM = "playermanager.gui";
        static string permissionKICK = "playermanager.kick";
        static string permissionBAN = "playermanager.ban";
        static string permissionTP = "playermanager.tp";
        static string permissionIPs = "playermanager.ips";
        static List<object> ExternalCommandsList = DefaultExternalCommands();
        void Loaded() {
            if (!permission.PermissionExists(permissionPM)) permission.RegisterPermission(permissionPM, this);
            if (!permission.PermissionExists(permissionKICK)) permission.RegisterPermission(permissionKICK, this);
            if (!permission.PermissionExists(permissionBAN)) permission.RegisterPermission(permissionBAN, this);
            if (!permission.PermissionExists(permissionTP)) permission.RegisterPermission(permissionTP, this);
            if (!permission.PermissionExists(permissionIPs)) permission.RegisterPermission(permissionIPs, this);
            foreach (object ecmdsRAW in ExternalCommandsList) {
                var ecmds = ecmdsRAW as Dictionary<string, object>;
                if (!permission.PermissionExists(ecmds["permission"].ToString())) permission.RegisterPermission(ecmds["permission"].ToString(), this);
            }
        }
        void Unload() {
            foreach (BasePlayer player in BasePlayer.activePlayerList) {
                DestroyGUI(player, "PlayerManagerOverlay");
                DestroyGUI(player, "DialogOverlay");
            }
        }
        protected override void LoadDefaultConfig() {
        }
        private void CheckCfg<T>(string Key, ref T var) {
            if (Config[Key] is T) var = (T)Config[Key];
            else Config[Key] = var;
        }
        void Init() {
            CheckCfg<string>("Permission - GUI", ref permissionPM);
            CheckCfg<string>("Permission - GUI - Kick", ref permissionKICK);
            CheckCfg<string>("Permission - GUI - Ban", ref permissionBAN);
            CheckCfg<string>("Permission - GUI - TP", ref permissionTP);
            CheckCfg<string>("Permission - GUI - IPs", ref permissionIPs);
            CheckCfg<List<object>>("External Commands", ref ExternalCommandsList);
            CheckCfg<Dictionary<string, object>>("Options", ref dialogActions);
            var messages = new Dictionary<string, string> {
                {
                    "PlayerKicked", "<color=orange>SERVER:</color> {0} was kicked from the server ({1})"
                }
                , {
                    "YouKicked", "You were kicked from the server ({0})"
                }
                , {
                    "PlayerBanned", "<color=orange>SERVER:</color> {0} - {1} was banned from the server ({2})"
                }
                , {
                    "YouBanned", "You were banned from the server ({0})"
                }
            }
            ;
            lang.RegisterMessages(messages, this);
            SaveConfig();
        }
        static List<object> DefaultExternalCommands() {
            return new List<object> {
                new Dictionary<string, object> {
                    {
                        "permission" , "playermanager.canmute"
                    }
                    , {
                        "commands" , new List<object> {
                            new Dictionary<string, object> {
                                {
                                    "color", "1 0 0 0.4"
                                }
                                , {
                                    "text", "mute"
                                }
                                , {
                                    "cmd" , "player.mute {steamid}"
                                }
                            }
                            , new Dictionary<string, object> {
                                {
                                    "color", "0 1 0 0.4"
                                }
                                , {
                                    "text", "unmute"
                                }
                                , {
                                    "cmd" , "player.unmute {steamid}"
                                }
                            }
                        }
                    }
                    , {
                        "name" , "Mute"
                    }
                }
                , new Dictionary<string, object> {
                    {
                        "permission" , "playermanager.canjail"
                    }
                    , {
                        "commands" , new List<object> {
                            new Dictionary<string, object> {
                                {
                                    "color", "1 0 0 0.4"
                                }
                                , {
                                    "text", "Jail"
                                }
                                , {
                                    "cmd" , "player.jail {steamid}"
                                }
                            }
                            , new Dictionary<string, object> {
                                {
                                    "color", "0 1 0 0.4"
                                }
                                , {
                                    "text", "Free"
                                }
                                , {
                                    "cmd" , "player.free {steamid}"
                                }
                            }
                        }
                    }
                    , {
                        "name" , "Jail"
                    }
                }
            }
            ;
        }
        Hash<ulong, PlayerMGUI> playerGUI = new Hash<ulong, PlayerMGUI>();
        class PlayerMGUI {
            public string section;
            public string subsection;
            public int page;
            public string select;
            public string search;
        }
        class DialogOptions {
            public Dictionary<string, string> option = new Dictionary<string, string>();
            public string action;
        }
        class ExternalCommands {
            public string permission;
            public List<ExternalCommand> commands;
            public string name;
        }
        class ExternalCommand {
            public string color;
            public string text;
            public string cmd;
        }
        void RefreshFullUI(BasePlayer player) {
            DestroyGUI(player, "PlayerManagerOverlay");
            AddUI(player, parentoverlay);
            playerGUI[player.userID].section = "players";
            playerGUI[player.userID].subsection = playerGUI[player.userID].search != string.Empty ? "search" : "online";
            playerGUI[player.userID].page = 0;
            playerGUI[player.userID].select = string.Empty;
            string TextPlayer = GenerateText("PlayerManagerOverlay", "Players", "20", "0.05", "0.15", "0.94", "0.99");
            string ButtonPlayer = GenerateButton("PlayerManagerOverlay", "playermanager.show players", "0.1 0.1 0.1 0.5", "0.05", "0.15", "0.94", "0.99");
            AddUI(player, TextPlayer);
            AddUI(player, ButtonPlayer);
            RefreshGUI(player, "section");
        }
        void RefreshGUI(BasePlayer player, string ttype) {
            switch(ttype) {
                case "section" : RefreshSection(player);
                break;
            }
        }
        void RefreshSection(BasePlayer player) {
            if(playerGUI[player.userID] == null) {
                DestroyGUI(player, "PlayerManagerOverlay");
                return;
            }
            switch(playerGUI[player.userID].section) {
                case "players" : DestroyGUI(player, "PlayerListSection");
                CreateSectionPlayers(player);
                RefreshSubSection(player);
                break;
            }
        }
        void RefreshSubSection(BasePlayer player) {
            if (playerGUI[player.userID] == null) {
                DestroyGUI(player, "PlayerManagerOverlay");
                return;
            }
            switch (playerGUI[player.userID].section) {
                case "players" : UpdateSubSectionPlayers(player);
                break;
            }
        }
        void AddUI(BasePlayer player, string json) {
            CommunityEntity.ServerInstance.ClientRPCEx(new Network.SendInfo {
                connection = player.net.connection
            }
            , null, "AddUI", new Facepunch.ObjectList(json, null, null, null, null));
        }
        void DestroyGUI(BasePlayer player, string GUIName) {
            Game.Rust.Cui.CuiHelper.DestroyUi(player, GUIName);
        }
        void CreateSectionPlayers(BasePlayer player) {
            AddUI(player, playerlistsectionoverlay);
        }
        string playerlistsectionoverlay = @"[
			{
				""name"": ""PlayerListSection"",
				""parent"": ""PlayerManagerOverlay"",
				""components"":
				[
					{
						 ""type"":""UnityEngine.UI.Image"",
						 ""color"":""0.1 0.1 0.1 0.8"",
					},
					{
						""type"":""RectTransform"",
						""anchormin"": ""0.01 0.06"",
						""anchormax"": ""0.4 0.90""
					},
					{
						""type"":""NeedsCursor"",
					}
				]
			},
            {
                            ""parent"": ""PlayerListSection"",
                            ""components"":
                            [
                                {
                                    ""type"":""UnityEngine.UI.Text"",
                                    ""text"":""All"",
                                    ""fontSize"":20,
                                    ""align"": ""MiddleCenter"",
                                },
                                {
                                    ""type"":""RectTransform"",
                                    ""anchormin"": ""0 0.95"",
                                    ""anchormax"": ""0.20 1""
                                }
                            ]
                        },
                        {
                            ""parent"": ""PlayerListSection"",
                            ""components"":
                            [
                                {
                                    ""type"":""UnityEngine.UI.Button"",
                                    ""color"": ""0.5 0.5 0.5 0.2"",
                                    ""command"":""playermanager.subsection all"",
                                    ""imagetype"": ""Tiled""
                                },
                                {
                                    ""type"":""RectTransform"",
                                    ""anchormin"": ""0 0.95"",
                                    ""anchormax"": ""0.20 1""
                                }
                            ]
                        }, 
                    {
                            ""parent"": ""PlayerListSection"",
                            ""components"":
                            [
                                {
                                    ""type"":""UnityEngine.UI.Text"",
                                    ""text"":""Online"",
                                    ""fontSize"":20,
                                    ""align"": ""MiddleCenter"",
                                },
                                {
                                    ""type"":""RectTransform"",
                                    ""anchormin"": ""0.20 0.95"",
                                    ""anchormax"": ""0.40 1""
                                }
                            ]
                        },
                        {
                            ""parent"": ""PlayerListSection"",
                            ""components"":
                            [
                                {
                                    ""type"":""UnityEngine.UI.Button"",
                                    ""color"": ""0.5 0.5 0.5 0.2"",
                                    ""command"":""playermanager.subsection online"",
                                    ""imagetype"": ""Tiled""
                                },
                                {
                                    ""type"":""RectTransform"",
                                    ""anchormin"": ""0.20 0.95"",
                                    ""anchormax"": ""0.40 1""
                                }
                            ]
                        },
                        {
                            ""parent"": ""PlayerListSection"",
                            ""components"":
                            [
                                {
                                    ""type"":""UnityEngine.UI.Text"",
                                    ""text"":""Sleepers"",
                                    ""fontSize"":20,
                                    ""align"": ""MiddleCenter"",
                                },
                                {
                                    ""type"":""RectTransform"",
                                    ""anchormin"": ""0.40 0.95"",
                                    ""anchormax"": ""0.60 1""
                                }
                            ]
                        },
                        {
                            ""parent"": ""PlayerListSection"",
                            ""components"":
                            [
                                {
                                    ""type"":""UnityEngine.UI.Button"",
                                    ""color"": ""0.5 0.5 0.5 0.2"",
                                    ""command"":""playermanager.subsection sleepers"",
                                    ""imagetype"": ""Tiled""
                                },
                                {
                                    ""type"":""RectTransform"",
                                    ""anchormin"": ""0.40 0.95"",
                                    ""anchormax"": ""0.60 1""
                                }
                            ]
                        },
                        {
                            ""parent"": ""PlayerListSection"",
                            ""components"":
                            [
                                {
                                    ""type"":""UnityEngine.UI.Text"",
                                    ""text"":""Search"",
                                    ""fontSize"":20,
                                    ""align"": ""MiddleCenter"",
                                },
                                {
                                    ""type"":""RectTransform"",
                                    ""anchormin"": ""0.60 0.95"",
                                    ""anchormax"": ""0.80 1""
                                }
                            ]
                        },
                        {
                            ""parent"": ""PlayerListSection"",
                            ""components"":
                            [
                                {
                                    ""type"":""UnityEngine.UI.Button"",
                                    ""color"": ""0.5 0.5 0.5 0.2"",
                                    ""command"":""playermanager.subsection search"",
                                    ""imagetype"": ""Tiled""
                                },
                                {
                                    ""type"":""RectTransform"",
                                    ""anchormin"": ""0.60 0.95"",
                                    ""anchormax"": ""0.80 1""
                                }
                            ]
                        },
                        {
                            ""parent"": ""PlayerListSection"",
                            ""components"":
                            [
                                {
                                    ""type"":""UnityEngine.UI.Text"",
                                    ""text"":""Banned"",
                                    ""fontSize"":20,
                                    ""align"": ""MiddleCenter"",
                                },
                                {
                                    ""type"":""RectTransform"",
                                    ""anchormin"": ""0.80 0.95"",
                                    ""anchormax"": ""1 1""
                                }
                            ]
                        },
                        {
                            ""parent"": ""PlayerListSection"",
                            ""components"":
                            [
                                {
                                    ""type"":""UnityEngine.UI.Button"",
                                    ""color"": ""0.5 0.5 0.5 0.2"",
                                    ""command"":""playermanager.subsection banned"",
                                    ""imagetype"": ""Tiled""
                                },
                                {
                                    ""type"":""RectTransform"",
                                    ""anchormin"": ""0.8 0.95"",
                                    ""anchormax"": ""1 1""
                                }
                            ]
                        },
                        {
                            ""parent"": ""PlayerListSection"",
                            ""components"":
                            [
                                {
                                    ""type"":""UnityEngine.UI.Text"",
                                    ""text"":""<<"",
                                    ""fontSize"":20,
                                    ""align"": ""MiddleCenter"",
                                },
                                {
                                    ""type"":""RectTransform"",
                                    ""anchormin"": ""0 0"",
                                    ""anchormax"": ""0.5 0.05""
                                }
                            ]
                        },
                        {
                            ""parent"": ""PlayerListSection"",
                            ""components"":
                            [
                                {
                                    ""type"":""UnityEngine.UI.Button"",
                                    ""color"": ""0.5 0.5 0.5 0.2"",
                                    ""command"":""playermanager.page previous"",
                                    ""imagetype"": ""Tiled""
                                },
                                {
                                    ""type"":""RectTransform"",
                                    ""anchormin"": ""0 0"",
                                    ""anchormax"": ""0.5 0.05""
                                }
                            ]
                        },
                        {
                            ""parent"": ""PlayerListSection"",
                            ""components"":
                            [
                                {
                                    ""type"":""UnityEngine.UI.Text"",
                                    ""text"":"">>"",
                                    ""fontSize"":20,
                                    ""align"": ""MiddleCenter"",
                                },
                                {
                                    ""type"":""RectTransform"",
                                    ""anchormin"": ""0.5 0"",
                                    ""anchormax"": ""1 0.05""
                                }
                            ]
                        },
                        {
                            ""parent"": ""PlayerListSection"",
                            ""components"":
                            [
                                {
                                    ""type"":""UnityEngine.UI.Button"",
                                    ""color"": ""0.5 0.5 0.5 0.2"",
                                    ""command"":""playermanager.page next"",
                                    ""imagetype"": ""Tiled""
                                },
                                {
                                    ""type"":""RectTransform"",
                                    ""anchormin"": ""0.5 0"",
                                    ""anchormax"": ""1 0.05""
                                }
                            ]
                        }
		]
		";
        string selectoverlay = @"[
			{
            ""name"": ""PlayerManagerSelectOverlay"",
				""parent"": ""PlayerManagerOverlay"",
				""components"":
				[
					{
						 ""type"":""UnityEngine.UI.Image"",
						 ""color"":""0.1 0.1 0.1 0.8"",
					},
					{
						""type"":""RectTransform"",
						""anchormin"": ""0.41 0.11"",
						""anchormax"": ""0.99 0.89""
					},
					{
						""type"":""NeedsCursor"",
					}
				]
			}
		]
		";
        string playerlistsubsectionoverlay = @"[
			{
				""name"": ""PlayerListSubSection"",
				""parent"": ""PlayerListSection"",
				""components"":
				[
					{
						 ""type"":""UnityEngine.UI.Image"",
						 ""color"":""0.1 0.1 0.1 0.8"",
					},
					{
						""type"":""RectTransform"",
						""anchormin"": ""0 0.06"",
						""anchormax"": ""1 0.94""
					},
					{
						""type"":""NeedsCursor"",
					}
				]
			}
		]
		";
        void UpdateSelect(BasePlayer player) {
            DestroyGUI(player, "PlayerManagerSelectOverlay");
            AddUI(player, selectoverlay);
            switch (playerGUI[player.userID].section) {
                case "players" : if (playerGUI[player.userID].select == string.Empty) return;
                string steamid = GenerateText("PlayerManagerSelectOverlay", playerGUI[player.userID].select, "20", "0", "0.40", "0.90", "0.95");
                AddUI(player, steamid);
                var playerdata = (PlayerDatabase?.Call("GetPlayerData", playerGUI[player.userID].select, "default") as Dictionary<string, object>);
                BasePlayer targetplayer = FindBasePlayerPlayer(playerGUI[player.userID].select);
                string name = "Unknown Player";
                if (playerdata != null) {
                    if (playerdata["name"] != null) {
                        name = playerdata["name"] as string;
                        string nametext = GenerateText("PlayerManagerSelectOverlay", name, "20", "0.40", "0.80", "0.90", "0.95");
                        AddUI(player, nametext);
                    }
                }
                else {
                    string text = GenerateText("PlayerManagerSelectOverlay", targetplayer != null ? targetplayer.displayName : "Unknown Player Data", "20", "0.40", "0.80", "0.90", "0.95");
                    AddUI(player, text);
                }
                if (player.net.connection.authLevel > 1 || permission.UserHasPermission(player.userID.ToString(), permissionKICK)) {
                    string kicktext = GenerateText("PlayerManagerSelectOverlay", "KICK", "20", "0.40", "0.60", "0.85", "0.90");
                    string kickbutton = GenerateButton("PlayerManagerSelectOverlay", "playermanager.dialog kick", "1 0.4 0 0.8", "0.40", "0.60", "0.85", "0.90");
                    AddUI(player, kicktext);
                    AddUI(player, kickbutton);
                }
                if (player.net.connection.authLevel > 1 || permission.UserHasPermission(player.userID.ToString(), permissionBAN)) {
                    string bantext = GenerateText("PlayerManagerSelectOverlay", "BAN", "20", "0.60", "0.80", "0.85", "0.90");
                    string banbutton = GenerateButton("PlayerManagerSelectOverlay", "playermanager.dialog ban", "1 0 0 0.8", "0.60", "0.80", "0.85", "0.90");
                    AddUI(player, bantext);
                    AddUI(player, banbutton);
                }
                string tptext = string.Empty;
                string tpbutton = string.Empty;
                if (player.net.connection.authLevel > 1 || permission.UserHasPermission(player.userID.ToString(), permissionTP)) {
                    if (targetplayer != null) {
                        tptext = GenerateText("PlayerManagerSelectOverlay", string.Format("Current Position {0} {1} {2}", targetplayer.transform.position.x.ToString(), targetplayer.transform.position.y.ToString(), targetplayer.transform.position.z.ToString()), "12", "0.10", "0.60", "0.75", "0.85");
                        tpbutton = GenerateButton("PlayerManagerSelectOverlay", string.Format("playermanager.teleport {0} {1} {2}", targetplayer.transform.position.x.ToString(), targetplayer.transform.position.y.ToString(), targetplayer.transform.position.z.ToString()), "0 1 0 0.2", "0.60", "1", "0.78", "0.82");
                    }
                    if (targetplayer == null || tptext == string.Empty) {
                        var playertpdata = (PlayerDatabase?.Call("GetPlayerData", playerGUI[player.userID].select, "Last Position") as Dictionary<string, object>);
                        if (playertpdata != null) {
                            tptext = GenerateText("PlayerManagerSelectOverlay", string.Format("Last Position {0} {1} {2}", playertpdata["x"].ToString(), playertpdata["y"].ToString(), playertpdata["z"].ToString()), "12", "0.10", "0.60", "0.75", "0.85");
                            tpbutton = GenerateButton("PlayerManagerSelectOverlay", string.Format("playermanager.teleport {0} {1} {2}", playertpdata["x"].ToString(), playertpdata["y"].ToString(), playertpdata["z"].ToString()), "0 1 0 0.2", "0.60", "1", "0.78", "0.82");
                        }
                        else {
                            tptext = GenerateText("PlayerManagerSelectOverlay", "Last Position - Unknown", "12", "0.10", "0.60", "0.75", "0.85");
                            tpbutton = GenerateButton("PlayerManagerSelectOverlay", "playermanager.teleport", "1 0 0 0.2", "0.60", "1", "0.78", "0.82");
                        }
                    }
                    string tpbuttontext = GenerateText("PlayerManagerSelectOverlay", "Teleport", "10", "0.60", "1", "0.78", "0.82");
                    AddUI(player, tptext);
                    AddUI(player, tpbuttontext);
                    AddUI(player, tpbutton);
                }
                var fc = PlayerDatabase?.Call("GetPlayerData", playerGUI[player.userID].select, "First Connection") as Dictionary<string, object>;
                if (fc != null) {
                    string fctext = GenerateText("PlayerManagerSelectOverlay", string.Format("First Connection: {0}", TimeMinToString(fc["0"].ToString())), "10", "0.01", "0.30", "0.70", "0.75");
                    AddUI(player, fctext);
                }
                if (targetplayer != null && targetplayer.IsConnected()) {
                    string lstext = GenerateText("PlayerManagerSelectOverlay", "Last Seen: Player is Connected", "10", "0.31", "0.60", "0.70", "0.75");
                    AddUI(player, lstext);
                }
                else {
                    var ls = PlayerDatabase?.Call("GetPlayerData", playerGUI[player.userID].select, "Last Seen") as Dictionary<string, object>;
                    if (ls != null) {
                        string lstext = GenerateText("PlayerManagerSelectOverlay", string.Format("Last Seen: {0}", TimeMinToString(ls["0"].ToString())), "10", "0.31", "0.60", "0.70", "0.75");
                        AddUI(player, lstext);
                    }
                }
                var tp = PlayerDatabase?.Call("GetPlayerData", playerGUI[player.userID].select, "Time Played") as Dictionary<string, object>;
                if (tp != null) {
                    string playedtext = GenerateText("PlayerManagerSelectOverlay", string.Format("Time Played: {0}", SecondsToString(tp["0"].ToString())), "10", "0.61", "1", "0.70", "0.75");
                    AddUI(player, playedtext);
                }
                string banreason = string.Empty;
                if (isBanned(ulong.Parse(playerGUI[player.userID].select), out banreason)) {
                    AddUI(player, GenerateText("PlayerManagerSelectOverlay", string.Format("BANNED: {0}", banreason), "15", "0.01", "0.6", "0.65", "0.70", "MiddleLeft"));
                }
                var lnames = PlayerDatabase?.Call("GetPlayerData", playerGUI[player.userID].select, "Names") as Dictionary<string, object>;
                if (lnames != null) {
                    AddUI(player, GenerateText("PlayerManagerSelectOverlay", "Used Names", "10", "0.01", "0.4", "0.60", "0.65", "MiddleLeft"));
                    decimal currentnum = 0m;
                    foreach (KeyValuePair<string, object> pair in lnames) {
                        decimal currenty = 0.57m - currentnum * 0.03m;
                        string nametext = GenerateText("PlayerManagerSelectOverlay", pair.Value.ToString(), "10", "0.04", "0.4", currenty.ToString(), (currenty + 0.03m).ToString(), "MiddleLeft");
                        AddUI(player, nametext);
                        currentnum++;
                    }
                }
                if (player.net.connection.authLevel > 1 || permission.UserHasPermission(player.userID.ToString(), permissionIPs)) {
                    var lips = PlayerDatabase?.Call("GetPlayerData", playerGUI[player.userID].select, "IPs") as Dictionary<string, object>;
                    if (lips != null) {
                        AddUI(player, GenerateText("PlayerManagerSelectOverlay", "Used IPs", "10", "0.6", "1", "0.60", "0.65", "MiddleLeft"));
                        decimal currentnum = 0m;
                        foreach (KeyValuePair<string, object> pair in lips) {
                            decimal currenty = 0.57m - currentnum * 0.03m;
                            string iptext = GenerateText("PlayerManagerSelectOverlay", pair.Value.ToString(), "10", "0.63", "1", currenty.ToString(), (currenty + 0.03m).ToString(), "MiddleLeft");
                            AddUI(player, iptext);
                            currentnum++;
                        }
                    }
                }
                AddUI(player, GenerateText("PlayerManagerSelectOverlay", "External Plugins", "15", "0.1", "1", "0.30", "0.35", "MiddleLeft"));
                decimal epy = 0m;
                foreach(var ecmdsRAW in ExternalCommandsList) {
                    var ecmds = ecmdsRAW as Dictionary<string, object>;
                    if (player.net.connection.authLevel > 1 || permission.UserHasPermission(player.userID.ToString(), ecmds["permission"].ToString())) {
                        decimal yeppos = 0.29m - epy * 0.04m;
                        AddUI(player, GenerateText("PlayerManagerSelectOverlay", ecmds["name"].ToString(), "10", "0.1", "0.5", (yeppos - 0.04m).ToString(), yeppos.ToString(), "MiddleLeft"));
                        decimal epx = 0m;
                        foreach(var ecmdRAW in (ecmds["commands"] as List<object>)) {
                            var ecmd = ecmdRAW as Dictionary<string, object>;
                            decimal xeppos = 0.6m + epx * 0.05m;
                            AddUI(player, GenerateText("PlayerManagerSelectOverlay", ecmd["text"].ToString(), "10", xeppos.ToString(), (xeppos + 0.05m).ToString(), (yeppos - 0.04m).ToString(), yeppos.ToString()));
                            AddUI(player, GenerateButton("PlayerManagerSelectOverlay", ecmd["cmd"].ToString().Replace("{steamid}", playerGUI[player.userID].select).Replace("{name}", name), ecmd["color"].ToString(), xeppos.ToString(), (xeppos + 0.05m).ToString(), (yeppos - 0.04m).ToString(), yeppos.ToString()));
                            epx++;
                        }
                        epy++;
                    }
                }
                break;
            }
        }
        string SecondsToString(string time) {
            return SecondsToString(decimal.Parse(time));
        }
        string SecondsToString(decimal time) {
            decimal days = Math.Floor(time / 86400);
            time -= days * 86400;
            decimal hours = Math.Floor(time / 3600);
            time -= hours * 3600;
            decimal minutes = Math.Floor(time / 60);
            time -= minutes * 60;
            return string.Format("{0}d {1}h {2}m {3}s", days.ToString(), hours.ToString(), minutes.ToString(), Math.Floor(time).ToString());
        }
        string TimeMinToString(string time) {
            return TimeMinToString(double.Parse(time));
        }
        string TimeMinToString(double time) {
            TimeSpan timespan = TimeSpan.FromSeconds(time);
            DateTime date = new DateTime(1970, 1, 1, 0, 0, 0) + timespan;
            return string.Format("{0}:{1} {2}/{3}/{4}", date.Hour.ToString(), date.Minute.ToString(), date.Month.ToString(), date.Day.ToString(), date.Year.ToString());
        }
        private BasePlayer FindBasePlayerPlayer(string steamid) {
            return FindBasePlayerPlayer(ulong.Parse(steamid));
        }
        private BasePlayer FindBasePlayerPlayer(ulong steamid) {
            foreach (BasePlayer player in BasePlayer.activePlayerList) {
                if (player.userID == steamid) return player;
            }
            foreach (BasePlayer player in BasePlayer.sleepingPlayerList) {
                if (player.userID == steamid) return player;
            }
            return null;
        }
        void UpdateSubSectionPlayers(BasePlayer player) {
            DestroyGUI(player, "PlayerListSubSection");
            AddUI(player, playerlistsubsectionoverlay);
            Dictionary<string, string> playerList = new Dictionary<string, string>();
            ;
            switch(playerGUI[player.userID].subsection) {
                case "all" : if (PlayerDatabase != null) {
                    var playerLists = (PlayerDatabase.Call("GetAllKnownPlayers") as HashSet<string>).ToList();
                    foreach (string playerl in playerLists) {
                        var playerdata = (PlayerDatabase.Call("GetPlayerData", playerl, "default") as Dictionary<string, object>);
                        string name = "Unknown Player";
                        if (playerdata != null) {
                            if (playerdata["name"] != null) {
                                name = playerdata["name"] as string;
                            }
                        }
                        playerList.Add(playerl, name);
                    }
                }
                else {
                    foreach (BasePlayer tplayer in BasePlayer.activePlayerList) {
                        if (!playerList.ContainsKey(tplayer.userID.ToString())) playerList.Add(tplayer.userID.ToString(), tplayer.displayName);
                    }
                    foreach (BasePlayer tplayer in BasePlayer.sleepingPlayerList) {
                        if (!playerList.ContainsKey(tplayer.userID.ToString())) playerList.Add(tplayer.userID.ToString(), tplayer.displayName);
                    }
                }
                break;
                case "online" : foreach(BasePlayer tplayer in BasePlayer.activePlayerList) {
                    if(!playerList.ContainsKey(tplayer.userID.ToString())) playerList.Add(tplayer.userID.ToString(), tplayer.displayName);
                }
                break;
                case "search" : if (playerGUI[player.userID].search == string.Empty) {
                    string searchtext = GenerateText("PlayerListSubSection", "You need to use /playermanager PARTIALNAME/STEAMID", "10", "0.01", "1.0", "0.90", "0.93", "MiddleLeft");
                    AddUI(player, searchtext);
                }
                else {
                    if (PlayerDatabase != null) {
                        var playerLists2 = (PlayerDatabase.Call("GetAllKnownPlayers") as HashSet<string>).ToList();
                        foreach (string playerl in playerLists2) {
                            var playerdata = (PlayerDatabase.Call("GetPlayerData", playerl, "default") as Dictionary<string, object>);
                            string name = "Unknown Player";
                            if (playerdata != null) {
                                if (playerdata["name"] != null) {
                                    name = playerdata["name"] as string;
                                }
                            }
                            if (name.ToLower().Contains(playerGUI[player.userID].search)) playerList.Add(playerl, name);
                        }
                    }
                    else {
                        foreach (BasePlayer tplayer in BasePlayer.activePlayerList) {
                            if (!playerList.ContainsKey(tplayer.userID.ToString()) && tplayer.displayName.ToLower().Contains(playerGUI[player.userID].search)) playerList.Add(tplayer.userID.ToString(), tplayer.displayName);
                        }
                        foreach (BasePlayer tplayer in BasePlayer.sleepingPlayerList) {
                            if (!playerList.ContainsKey(tplayer.userID.ToString()) && tplayer.displayName.ToLower().Contains(playerGUI[player.userID].search)) playerList.Add(tplayer.userID.ToString(), tplayer.displayName);
                        }
                    }
                }
                break;
                case "sleepers" : foreach (BasePlayer tplayer in BasePlayer.sleepingPlayerList) {
                    if (!playerList.ContainsKey(tplayer.userID.ToString())) playerList.Add(tplayer.userID.ToString(), tplayer.displayName);
                }
                break;
                case "banned" : foreach (ServerUsers.User user in ServerUsers.GetAll(ServerUsers.UserGroup.Banned)) {
                    var playerdata = (PlayerDatabase?.Call("GetPlayerData", user.steamid.ToString(), "default") as Dictionary<string, object>);
                    string name = user.username;
                    if (playerdata != null) {
                        if (playerdata["name"] != null) {
                            name = playerdata["name"] as string;
                        }
                    }
                    playerList.Add(user.steamid.ToString(), name);
                }
                if(EnhancedBanSystem != null) {
                    var banlist = EnhancedBanSystem.Call("BannedPlayers") as List<string>;
                    if(banlist != null) {
                        foreach(string userid in banlist) {
                            if (playerList.ContainsKey(userid)) continue;
                            var name = "Unknown Player";
                            var bandata = EnhancedBanSystem.Call("GetBanData", userid) as Dictionary<string, object>;
                            if(bandata != null) {
                                if (bandata.ContainsKey("name")) name = bandata["name"].ToString();
                                if (name == "Unknown Player") {
                                    var playerdata = (PlayerDatabase?.Call("GetPlayerData", userid, "default") as Dictionary<string, object>);
                                    if (playerdata != null) {
                                        if (playerdata["name"] != null) {
                                            name = playerdata["name"] as string;
                                        }
                                    }
                                }
                            }
                            playerList.Add(userid, name);
                        }
                    }
                }
                /*
                    DynamicConfigFile ebslist = Interface.Oxide.DataFileSystem.GetFile("ebsbanlist");
                    foreach(KeyValuePair<string,object> pair in ebslist)
                    {
                        if (pair.Key == null) continue;
                        if (pair.Value == null) continue;
                        if (playerList.ContainsKey(pair.Key)) continue;
                        var playerbanlistdata = pair.Value as Dictionary<string, object>;
                        if (playerbanlistdata == null) continue;
                        var name = "Unknown Player";
                        if(playerbanlistdata != null)
                            name = playerbanlistdata["name"].ToString();
                        var playerdata = (PlayerDatabase.Call("GetPlayerData", pair.Key.ToString(), "default") as Dictionary<string, object>);
                        if (playerdata != null)
                        {
                            if (playerdata["name"] != null)
                            {
                                name = playerdata["name"] as string;
                            }
                        }
                        playerList.Add(pair.Key.ToString(), name);
                    }*/
                break;
                default : break;
            }
            var items = from pair in playerList orderby pair.Value ascending select pair;
            decimal p = 0.0m;
            int page = (playerGUI[player.userID]).page;
            foreach(KeyValuePair<string, string> pair in items) {
                if (p >= page) {
                    decimal currentheight = (0.94m - 0.03m * (p- page));
                    string playertext = GenerateText("PlayerListSubSection", string.Format("{0} - {1}", pair.Key, pair.Value), "10", "0.01", "1.0", (currentheight - 0.03m).ToString(), (currentheight).ToString(), "MiddleLeft");
                    string playerbutton = GenerateButton("PlayerListSubSection", string.Format("playermanager.select {0}", pair.Key), "0 0 0 0", "0.01", "1.0", (currentheight - 0.03m).ToString(), (currentheight).ToString());
                    AddUI(player, playertext);
                    AddUI(player, playerbutton);
                }
                if (p > page + 25m) break;
                p++;
            }
        }
        bool isBanned(ulong steamid, out string reason) {
            reason = string.Empty;
            ServerUsers.User user = ServerUsers.Get(steamid);
            if(user != null) {
                if(user.group == ServerUsers.UserGroup.Banned) {
                    reason = user.notes;
                    return true;
                }
            }
            if(EnhancedBanSystem != null) {
                var bandata = EnhancedBanSystem.Call("GetBanData", steamid) as Dictionary<string, object>;
                if (bandata != null) {
                    if (bandata.ContainsKey("reason")) {
                        reason = bandata["reason"].ToString();
                        return true;
                    }
                }
            }
            /*
            DynamicConfigFile ebslist = Interface.Oxide.DataFileSystem.GetFile("ebsbanlist");
            if(ebslist[steamid.ToString()] != null)
            {
                var bandata = ebslist[steamid.ToString()] as Dictionary<string, object>;
                if(bandata.ContainsKey("steamID"))
                {
                    reason = bandata.ContainsKey("reason") ? bandata["reason"].ToString() : "Unknown";
                    return true;
                }
            }*/
            return false;
        }
        string parentoverlay = @"[
			{
				""name"": ""PlayerManagerOverlay"",
				""parent"": ""HUD/Overlay"",
				""components"":
				[
					{
						 ""type"":""UnityEngine.UI.Image"",
						 ""color"":""0.1 0.1 0.1 0.8"",
					},
					{
						""type"":""RectTransform"",
						""anchormin"": ""0 0"",
						""anchormax"": ""1 1""
					},
					{
						""type"":""NeedsCursor"",
					}
				]
			},
			{
				""parent"": ""PlayerManagerOverlay"",
				""components"":
				[
					{
						""type"":""UnityEngine.UI.Text"",
						""text"":""Close"",
						""fontSize"":20,
						""align"": ""MiddleCenter"",
					},
					{
						""type"":""RectTransform"",
						""anchormin"": ""0 0.01"",
						""anchormax"": ""1 0.05""
					},
				]
			},
			{
				""parent"": ""PlayerManagerOverlay"",
				""components"":
				[
					{
						""type"":""UnityEngine.UI.Button"",
						""command"":""playermanager.close"",
						""color"": ""0.5 0.5 0.5 0.2"",
						""imagetype"": ""Tiled""
					},
					{
						""type"":""RectTransform"",
						""anchormin"": ""0 0.01"",
						""anchormax"": ""1 0.05""
					}
				]
			}
		]
		";
        static Dictionary<string, object> dialogActions = new Dictionary<string, object> {
            {
                "ban" , new List<object> {
                    {
                        "Wallhack"
                    }
                    , {
                        "Speedhacker"
                    }
                    , {
                        "Hacker"
                    }
                    , {
                        "Aimbot"
                    }
                    , {
                        "Spawnhack"
                    }
                    , {
                        "Glitch"
                    }
                    , {
                        "Disrespectfull"
                    }
                    , {
                        "Other"
                    }
                }
            }
            , {
                "kick" , new List<object> {
                    {
                        "Disrespectfull"
                    }
                    , {
                        "Watch you language"
                    }
                    , {
                        "Change Name"
                    }
                    , {
                        "Other"
                    }
                }
            }
            , {
                "timelimit" , new List<object> {
                    {
                        "0"
                    }
                    , {
                        "1"
                    }
                    , {
                        "60"
                    }
                    , {
                        "300"
                    }
                    , {
                        "600"
                    }
                    , {
                        "3600"
                    }
                    , {
                        "86400"
                    }
                    , {
                        "172800"
                    }
                    , {
                        "259200"
                    }
                    , {
                        "604800"
                    }
                }
            }
        }
        ;
        void RefreshDialog(BasePlayer player) {
            if (playerDialog[player.userID] == null) return;
            if (playerGUI[player.userID] == null) return;
            DestroyGUI(player, "Dialog
// ... [Code preview truncated due to length. Full source in attached file] ...

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