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

FREE WelcomePanel : 3.0.7 3.0.7

Нет прав для скачивания
C#:
using Newtonsoft.Json;
using Oxide.Core;
using Oxide.Core.Plugins;
using Oxide.Game.Rust.Cui;
using Oxide.Core.Configuration;
using Oxide.Core.Libraries.Covalence;
using System;
using System.IO;
using System.Linq;
using System.Collections.Generic;
using UnityEngine;
namespace Oxide.Plugins {
    [Info("WelcomePanel", "Sempai#3239", "3.0.7")]
    [Description("Welcome Panel")]
    public class WelcomePanel : RustPlugin {
#region [Dependencies]
        [PluginReference]
        Plugin ImageLibrary, WPKits, WPSocialLinks, WPVipRanks, WPWipeCycle, VoteMap;
        private void DependencyWarnings() {
            timer.Once(1f, () => {
                if (ImageLibrary == null) Puts($"(! MISSING) ImageLibrary not found, image load speed will be significantly slower.");
                string loadedAddons = LoadedAddons();
                if (loadedAddons != null) Puts($"(ADDONS LOADED){loadedAddons}");
                string addonsAvailable = AvailableAddons();
                if (addonsAvailable != null) Puts($"(NOT FOUND){addonsAvailable}");
            }
            );
        }
        private string LoadedAddons() {
            string addonsLoaded = null;
            if (WPKits != null) addonsLoaded = addonsLoaded + " WPKits,";
            if (WPSocialLinks != null) addonsLoaded = addonsLoaded + " WPSocialLinks,";
            if (WPVipRanks != null) addonsLoaded = addonsLoaded + " WPVipRanks,";
            if (WPWipeCycle != null) addonsLoaded = addonsLoaded + " WPWipeCycle,";
            if (VoteMap != null) addonsLoaded = addonsLoaded + " VoteMap";
            return addonsLoaded;
        }
        private string AvailableAddons() {
            string addonsAvailable = null;
            if (WPKits == null) addonsAvailable = addonsAvailable + " WPKits,";
            if (WPSocialLinks == null) addonsAvailable = addonsAvailable + " WPSocialLinks,";
            if (WPVipRanks == null) addonsAvailable = addonsAvailable + " WPVipRanks,";
            if (WPWipeCycle == null) addonsAvailable = addonsAvailable + " WPWipeCycle,";
            if (VoteMap == null) addonsAvailable = addonsAvailable + " VoteMap";
            return addonsAvailable;
        }
#region API Calls
        private void OpenAddOn_API(BasePlayer player, string _apiName) {
            if(_apiName == "WPKits") {
                WPKits.CallHook("ShowKits_Page1_API", player);
                return;
            }
            if(_apiName == "WPSocialLinks") {
                WPSocialLinks.CallHook("ShowLinks_API", player);
                return;
            }
            if(_apiName == "WPVipRanks") {
                WPVipRanks.CallHook("ShowVipRanks_API", player);
                return;
            }
            if(_apiName == "WPWipeCycle") {
                WPWipeCycle.CallHook("ShowWipeCycle_API", player);
                return;
            }
            if(_apiName == "VoteMap") {
                VoteMap.CallHook("ContentCui", player, 1, 0, true);
                return;
            }
        }
        private void CloseAddOn_API(BasePlayer player) {
            if (WPKits != null) WPKits.CallHook("CloseKits_API", player);
            if (WPSocialLinks != null) WPSocialLinks.CallHook("CloseLinks_API", player);
            if (WPVipRanks != null) WPVipRanks.CallHook("CloseVip_API", player);
            if (WPWipeCycle != null) WPWipeCycle.CallHook("CloseWipeCycle_API", player);
        }
#endregion
#endregion
#region [Fields]
        private List<string> cuiList = new List<string>() {
            "background", "background2", "offsetContainer", "mainPanel", "sidePanel", "titlePanel", "logoPanel", "closeButton", "contentPanel", "highlightBtn", "menuBtn1", "menuBtn2", "menuBtn3", "menuBtn4", "menuBtn5", "menuBtn6", "menuBtn7", "menuBtn8", "menuBtn9", "menuBtn10", "nextButton", "previousButton"
        }
        ;
        private List<string> tabList = new List<string>() {
            "Tab1", "Tab2", "Tab3", "Tab4", "Tab5", "Tab6", "Tab7", "Tab8", "Tab9", "Tab10"
        }
        ;
        private Dictionary<ulong, bool> isPlayerEditing = new Dictionary<ulong, bool>();
        private string panelNameEdit = null;
        private int anchor = 0;
        private float moveValue = 0.01f;
#endregion
#region [Hooks]
        private void OnServerInitialized() {
            PrintWarning("\n-----------------------------\n" + " Author - Sempai#3239\n" + " VK - https://vk.com/rustnastroika/n" + " Forum - https://whiteplugins.ru/n" + " Discord - https://discord.gg/5DPTsRmd3G/n" + "-----------------------------");
            LoadData();
            LoadPresetData();
            LoadPageData();
            LoadConfig();
            WriteCuiEntry();
            WritePageEntry();
            DependencyWarnings();
            RegisterCommands();
            RegisterPerms();
            //SetPresetValues(5);
            DownloadImages();
            foreach (var _player in BasePlayer.activePlayerList) {
                if (!_player.IsAdmin) return;
                WriteAdminEntry(_player);
            }
            //{CreateCui(_player); CreateTab(_player, 1, 1);}
        }
        private void OnPlayerConnected(BasePlayer player) {
            WriteAdminEntry(player);
            if (config.generalSettings.openOnConnect && presetData[$"{Name}"].presetInit) {
                if (config.generalSettings.openOnce) {
                    if (!presetData[$"{Name}"].seen.Contains(player.userID)) {
                        presetData[$"{Name}"].seen.Add(player.userID);
                        SavePresetData();
                        CreateCui(player, true);
                        CreateTab(player, config.generalSettings.openTab, 1);
                        return;
                    }
                    else return;
                }
                CreateCui(player, true);
                CreateTab(player, config.generalSettings.openTab, 1);
            }
        }
        void OnPlayerDisconnected(BasePlayer player) => BlockInput(player, false);
        private void OnNewSave() {
            presetData[$"{Name}"].seen.Clear();
            SavePresetData();
        }
        private void Unload() {
            foreach (var _player in BasePlayer.activePlayerList) {
                DestroyCui(_player);
                DestroyEditPanelUi(_player);
                CuiHelper.DestroyUi(_player, "l_offsetContainer");
                CuiHelper.DestroyUi(_player, "l_background");
                CloseAddOn_API(_player);
                DestroyPopUi(_player);
            }
        }
#endregion
#region [Image Handling]
        private void DownloadImages() {
            if (ImageLibrary == null) return;
            //image from data
            foreach (string element in cuiData.Keys) {
                if (CI(element)) ImageLibrary.Call("AddImage", cuiData[element].image, element);
            }
            //images from config
            //📝"Could have been solved better but customers got used to old config file so I didnt want to change it."
            if (config.tab1Settings.tabImageUrl.StartsWith("http") || config.tab1Settings.tabImageUrl.StartsWith("www")) ImageLibrary.Call("AddImage", config.tab1Settings.tabImageUrl, "tab1bg");
            if (config.tab2Settings.tabImageUrl.StartsWith("http") || config.tab2Settings.tabImageUrl.StartsWith("www")) ImageLibrary.Call("AddImage", config.tab2Settings.tabImageUrl, "tab2bg");
            if (config.tab3Settings.tabImageUrl.StartsWith("http") || config.tab3Settings.tabImageUrl.StartsWith("www")) ImageLibrary.Call("AddImage", config.tab3Settings.tabImageUrl, "tab3bg");
            if (config.tab4Settings.tabImageUrl.StartsWith("http") || config.tab4Settings.tabImageUrl.StartsWith("www")) ImageLibrary.Call("AddImage", config.tab4Settings.tabImageUrl, "tab4bg");
            if (config.tab5Settings.tabImageUrl.StartsWith("http") || config.tab5Settings.tabImageUrl.StartsWith("www")) ImageLibrary.Call("AddImage", config.tab5Settings.tabImageUrl, "tab5bg");
            if (config.tab6Settings.tabImageUrl.StartsWith("http") || config.tab6Settings.tabImageUrl.StartsWith("www")) ImageLibrary.Call("AddImage", config.tab6Settings.tabImageUrl, "tab6bg");
            if (config.tab7Settings.tabImageUrl.StartsWith("http") || config.tab7Settings.tabImageUrl.StartsWith("www")) ImageLibrary.Call("AddImage", config.tab7Settings.tabImageUrl, "tab7bg");
            if (config.tab8Settings.tabImageUrl.StartsWith("http") || config.tab8Settings.tabImageUrl.StartsWith("www")) ImageLibrary.Call("AddImage", config.tab8Settings.tabImageUrl, "tab8bg");
            if (config.tab9Settings.tabImageUrl.StartsWith("http") || config.tab9Settings.tabImageUrl.StartsWith("www")) ImageLibrary.Call("AddImage", config.tab9Settings.tabImageUrl, "tab9bg");
            if (config.tab10Settings.tabImageUrl.StartsWith("http") || config.tab10Settings.tabImageUrl.StartsWith("www")) ImageLibrary.Call("AddImage", config.tab10Settings.tabImageUrl, "tab10bg");
            //my images
            ImageLibrary.Call("AddImage", "https://rustplugins.net/products/welcomepanel/keyicons.png", "wasd_panelsText3");
            ImageLibrary.Call("AddImage", "https://rustplugins.net/products/welcomepanel/mouseicon.png", "mouse_panelsText3");
            ImageLibrary.Call("AddImage", "https://rustplugins.net/products/welcomepanel/Rkeyicon.png", "back_panelsText3");
            //wp layouts
            ImageLibrary.Call("AddImage", "https://rustplugins.net/products/welcomepanel/empty_template.png", "https://rustplugins.net/products/welcomepanel/empty_template.png");
            ImageLibrary.Call("AddImage", "https://rustplugins.net/products/welcomepanel/5/template5.jpg", "https://rustplugins.net/products/welcomepanel/5/template5.jpg");
            ImageLibrary.Call("AddImage", "https://rustplugins.net/products/welcomepanel/4/template_4.png", "https://rustplugins.net/products/welcomepanel/4/template_4.png");
            ImageLibrary.Call("AddImage", "https://rustplugins.net/products/welcomepanel/3/template3.png", "https://rustplugins.net/products/welcomepanel/3/template3.png");
            ImageLibrary.Call("AddImage", "https://rustplugins.net/products/welcomepanel/2/template2.png", "https://rustplugins.net/products/welcomepanel/2/template2.png");
            ImageLibrary.Call("AddImage", "https://codefling.com/uploads/monthly_2021_07/2.PNG.393e12443a8a8186523b2dcef616ee0c.PNG", "https://codefling.com/uploads/monthly_2021_07/2.PNG.393e12443a8a8186523b2dcef616ee0c.PNG");
        }
        private string Img(string name) {
            if (ImageLibrary != null) {
                if (!(bool) ImageLibrary.Call("HasImage", name)) return cuiData[name].image;
                else return (string) ImageLibrary?.Call("GetImage", name);
            }
            else return cuiData[name].image;
        }
        private string Img2(int tabNumber) {
            string[] images = {
                "empty", config.tab1Settings.tabImageUrl, config.tab2Settings.tabImageUrl, config.tab3Settings.tabImageUrl, config.tab4Settings.tabImageUrl, config.tab5Settings.tabImageUrl, config.tab6Settings.tabImageUrl, config.tab7Settings.tabImageUrl, config.tab8Settings.tabImageUrl, config.tab9Settings.tabImageUrl, config.tab10Settings.tabImageUrl
            }
            ;
            if (ImageLibrary != null) {
                if (!(bool) ImageLibrary.Call("HasImage", $"tab{tabNumber}bg")) return images[tabNumber];
                else return (string) ImageLibrary?.Call("GetImage", $"tab{tabNumber}bg");
            }
            else return images[tabNumber];
        }
        private string Img3(string url) {
            //img url been used as image names
            if (ImageLibrary != null) {
                if (!(bool) ImageLibrary.Call("HasImage", url)) return url;
                else return (string) ImageLibrary?.Call("GetImage", url);
            }
            else return url;
        }
        private bool CI(string name) {
            if (cuiData[name].image == null) {
                return false;
            }
            else {
                if (cuiData[name].image == "") return false;
                return true;
            }
        }
#endregion
#region [Commands]
        private void RegisterCommands() {
            int count = config.generalSettings.customCommands.Count();
            for (int i = 0; i < count; i++) {
                cmd.AddChatCommand(config.generalSettings.customCommands[i], this, "Wp_CustomCommands");
            }
        }
        private object Wp_CustomCommands(BasePlayer player, string command, string[] args) {
            if (!presetData[$"{Name}"].presetInit) {
                SendReply(player, "<size=15>You have to select template first.Please type <color=#cd412b>/wp_template</color>.</size> \n\nChanging template presets will overwrite 'cuiData.json' file, together with button names and title in config file! \nAlways backup your configs!.");
                return null;
            }
            int pageNumber = 1;
            if (args.Length > 0) {
                if (IsDigitsOnly(args[0])) pageNumber = Convert.ToInt32(args[0]);
            }
            if (config.generalSettings.customCommands.Contains(command)) {
                int index = config.generalSettings.customCommands.IndexOf(command);
                int tab = index + 1;
                CreateCui(player, true);
                CreateTab(player, tab, pageNumber);
            }
            return null;
        }
        [ConsoleCommand("welcomepanel_open")]
        private void welcomepanel_open(ConsoleSystem.Arg arg) {
            var player = arg?.Player();
            var args = arg.Args;
            if (arg.Player() == null) return;
            if (args.Length < 2) return;
            int tab = Convert.ToInt32(args[0]);
            int page = Convert.ToInt32(args[1]);
            DestroyPage(player);
            CreateTab(player, tab, page);
        }
        [ConsoleCommand("welcomepanel_close")]
        private void welcomepanel_close(ConsoleSystem.Arg arg) {
            var player = arg?.Player();
            if (arg.Player() == null) return;
            DestroyPage(player);
            DestroyCui(player);
            CuiHelper.DestroyUi(player, "l_offsetContainer");
            CuiHelper.DestroyUi(player, "l_background");
            DestroyPopUi(player);
            DestroyEditPanelUi(player);
            CloseAddOn_API(player);
        }
        [ConsoleCommand("welcomepanel_editpanel")]
        private void welcomepanel_editpanel(ConsoleSystem.Arg arg) {
            var player = arg?.Player();
            var args = arg.Args;
            if (arg.Player() == null) return;
            if (args.Length < 1) return;
            if (!player.IsAdmin) return;
            isPlayerEditing[player.userID] = true;
            panelNameEdit = args[0];
            DestroyEditPanelUi(player);
            CreateCui(player, false);
            CreateTab(player, 1, 1);
            //Puts($"{isPlayerEditing[player.userID]}");
        }
        [ConsoleCommand("wp_color")]
        private void wp_color(ConsoleSystem.Arg arg) {
            var player = arg?.Player();
            var args = arg.Args;
            if (arg.Player() == null) return;
            if (!player.IsAdmin) return;
            if (args == null) {
                player.ConsoleMessage($"Wrong usage.Example: wp_color \"0.16 0.34 0.49 1.0\" ");
                return;
            }
            if (args.Length > 1) {
                player.ConsoleMessage($"Wrong usage.Example: wp_color \"0.16 0.34 0.49 1.0\" ");
                return;
            }
            if (panelNameEdit == null) {
                player.ConsoleMessage($"You are not editing any panel currently.Type /wp_edit to start editing");
                return;
            }
            cuiData[panelNameEdit].color = args[0];
            SaveData();
            player.ConsoleMessage($"{panelNameEdit} color changed to {cuiData[panelNameEdit].color}");
        }
        [ConsoleCommand("wp_movevalue")]
        private void wp_movevalue(ConsoleSystem.Arg arg) {
            var player = arg?.Player();
            var args = arg.Args;
            if (arg.Player() == null) return;
            if (args.Length < 1) return;
            if (!player.IsAdmin) return;
            moveValue = Convert.ToSingle(args[0]);
            if (moveValue > 0.3) player.ConsoleMessage($"(!) High value, your panels will move significantly.");
            player.ConsoleMessage($"Moving value set to {moveValue}");
        }
        [ChatCommand("wp_edit")]
        private void wp_edit(BasePlayer player) {
            if (player == null) return;
            if (!player.IsAdmin) return;
            CreateEditPanelMenu(player);
        }
        [ChatCommand("wp_template")]
        private void wp_layout(BasePlayer player) {
            if (player == null) return;
            if (!player.IsAdmin) return;
            CreateLayoutMenu(player);
        }
        [ChatCommand("wp_populatepages")]
        private void populatepages(BasePlayer player) {
            if (player == null) return;
            if (!player.IsAdmin) return;
            foreach (string tab in pageData.Keys) {
                pageData[tab].page2.Add($"{tab} Page 2");
                pageData[tab].page3.Add($"{tab} Page 3");
                pageData[tab].page4.Add($"{tab} Page 4");
                pageData[tab].page5.Add($"{tab} Page 5");
            }
            SavePageData();
        }
#endregion
#region [Functions & Methods]
        private void RegisterPerms() {
            if (!config.generalSettings.permsEnabled) return;
            for (int i = 1; i < 11; i++) {
                permission.RegisterPermission($"welcomepanel.tab{i}", this);
            }
        }
        private bool CheckPerms(BasePlayer player, int tabNumber) {
            if (!config.generalSettings.permsEnabled) return true;
            if (permission.UserHasPermission(player.UserIDString, $"welcomepanel.tab{tabNumber}")) {
                return true;
            }
            else {
                return false;
            }
        }
        private void WriteCuiEntry() {
            foreach (string elementName in cuiList) {
                if (!cuiData.ContainsKey(elementName)) {
                    cuiData.Add(elementName, new CuiData());
                }
            }
            SaveData();
        }
        private void WritePageEntry() {
            foreach (string tab in tabList) {
                if (!pageData.ContainsKey(tab)) {
                    pageData.Add(tab, new PageData());
                }
            }
            SavePageData();
        }
        private void WriteAdminEntry(BasePlayer player) {
            if (!player.IsAdmin) return;
            if (!isPlayerEditing.ContainsKey(player.userID)) {
                isPlayerEditing.Add(player.userID, false);
            }
            else {
                isPlayerEditing[player.userID] = false;
            }
        }
        void OnPlayerInput(BasePlayer player, InputState input) {
            if (!player.IsAdmin) return;
            if (!isPlayerEditing.ContainsKey(player.userID)) return;
            if (isPlayerEditing[player.userID]) {
                if (input.WasJustPressed(BUTTON.FIRE_PRIMARY)) {
                    float anchorValue = 0f;
                    if (anchor == 1) {
                        anchorValue = GetSingleAnchor(cuiData[panelNameEdit].anchorMin, 0);
                        anchorValue = anchorValue + moveValue;
                        cuiData[panelNameEdit].anchorMin = $"{anchorValue} {GetSingleAnchor(cuiData[panelNameEdit].anchorMin, 1)}";
                        SaveData();
                    }
                    if (anchor == 2) {
                        anchorValue = GetSingleAnchor(cuiData[panelNameEdit].anchorMin, 1);
                        anchorValue = anchorValue + moveValue;
                        cuiData[panelNameEdit].anchorMin = $"{GetSingleAnchor(cuiData[panelNameEdit].anchorMin, 0)} {anchorValue}";
                        SaveData();
                    }
                    if (anchor == 3) {
                        anchorValue = GetSingleAnchor(cuiData[panelNameEdit].anchorMax, 0);
                        anchorValue = anchorValue + moveValue;
                        cuiData[panelNameEdit].anchorMax = $"{anchorValue} {GetSingleAnchor(cuiData[panelNameEdit].anchorMax, 1)}";
                        SaveData();
                    }
                    if (anchor == 4) {
                        anchorValue = GetSingleAnchor(cuiData[panelNameEdit].anchorMax, 1);
                        anchorValue = anchorValue + moveValue;
                        cuiData[panelNameEdit].anchorMax = $"{GetSingleAnchor(cuiData[panelNameEdit].anchorMax, 0)} {anchorValue}";
                        SaveData();
                    }
                    CreateCui(player, false, true);
                    CreateTab(player, 1, 2);
                    return;
                }
                if (input.WasJustPressed(BUTTON.FIRE_SECONDARY)) {
                    float anchorValue = 0f;
                    if (anchor == 1) {
                        anchorValue = GetSingleAnchor(cuiData[panelNameEdit].anchorMin, 0);
                        anchorValue = anchorValue - moveValue;
                        cuiData[panelNameEdit].anchorMin = $"{anchorValue} {GetSingleAnchor(cuiData[panelNameEdit].anchorMin, 1)}";
                        SaveData();
                    }
                    if (anchor == 2) {
                        anchorValue = GetSingleAnchor(cuiData[panelNameEdit].anchorMin, 1);
                        anchorValue = anchorValue - moveValue;
                        cuiData[panelNameEdit].anchorMin = $"{GetSingleAnchor(cuiData[panelNameEdit].anchorMin, 0)} {anchorValue}";
                        SaveData();
                    }
                    if (anchor == 3) {
                        anchorValue = GetSingleAnchor(cuiData[panelNameEdit].anchorMax, 0);
                        anchorValue = anchorValue - moveValue;
                        cuiData[panelNameEdit].anchorMax = $"{anchorValue} {GetSingleAnchor(cuiData[panelNameEdit].anchorMax, 1)}";
                        SaveData();
                    }
                    if (anchor == 4) {
                        anchorValue = GetSingleAnchor(cuiData[panelNameEdit].anchorMax, 1);
                        anchorValue = anchorValue - moveValue;
                        cuiData[panelNameEdit].anchorMax = $"{GetSingleAnchor(cuiData[panelNameEdit].anchorMax, 0)} {anchorValue}";
                        SaveData();
                    }
                    CreateCui(player, false, true);
                    CreateTab(player, 1, 2);
                    return;
                }
                if (input.WasJustPressed(BUTTON.FORWARD)) {
                    anchor = 4;
                    return;
                }
                if (input.WasJustPressed(BUTTON.BACKWARD)) {
                    anchor = 2;
                    return;
                }
                if (input.WasJustPressed(BUTTON.LEFT)) {
                    anchor = 1;
                    return;
                }
                if (input.WasJustPressed(BUTTON.RIGHT)) {
                    anchor = 3;
                    return;
                }
                if (input.WasJustPressed(BUTTON.RELOAD)) {
                    DestroyPage(player);
                    DestroyCui(player);
                    CreateEditPanelMenu(player);
                    isPlayerEditing[player.userID] = false;
                    return;
                }
                return;
            }
        }
        private float GetSingleAnchor(string anchor, int index) {
            //if (anchor == null) return null;
            string[] splitter = anchor.Split(' ');
            float converted = 0;
            if (splitter[index] != null) {
                converted = Convert.ToSingle(splitter[index]);
            }
            return converted;
        }
#endregion
#region [Utilities]
        [PluginReference]
        Plugin Economics, ServerRewards, WipeCountdown;
        List<ulong> isBlocked = new List<ulong>();
        //Replace Text
        private string R(BasePlayer player, string _text) {
            string text = _text;
            if (text.Contains("{playername}")) {
                string playerName = player.displayName;
                text = text.Replace("{playername}", playerName);
            }
            if (text.Contains("{pvp/pve}")) {
                bool pve = ConVar.Server.pve;
                if (pve) text = text.Replace("{pvp/pve}", "PVE");
                else text = text.Replace("{pvp/pve}", "PVP");
            }
            if (text.Contains("{maxplayers}")) {
                string max = $"{(int) ConVar.Server.maxplayers}";
                text = text.Replace("{maxplayers}", max);
            }
            if (text.Contains("{online}")) {
                string online = $"{(int) BasePlayer.activePlayerList.Count()}";
                text = text.Replace("{online}", online);
            }
            if (text.Contains("{sleeping}")) {
                string sleeping = $"{(int) BasePlayer.sleepingPlayerList.Count()}";
                text = text.Replace("{sleeping}", sleeping);
            }
            if (text.Contains("{joining}")) {
                string joining = $"{(int) ServerMgr.Instance.connectionQueue.Joining}";
                text = text.Replace("{joining}", joining);
            }
            if (text.Contains("{queued}")) {
                string queued = $"{(int) ServerMgr.Instance.connectionQueue.Queued}";
                text = text.Replace("{queued}", queued);
            }
            if (text.Contains("{worldsize}")) {
                string worldsize = $"{(int) ConVar.Server.worldsize}";
                text = text.Replace("{worldsize}", worldsize);
            }
            if (text.Contains("{hostname}")) {
                string hostname = ConVar.Server.hostname;
                text = text.Replace("{hostname}", hostname);
            }
            if (WipeCountdown != null) {
                if (text.Contains("{wipecountdown}")) {
                    string wipe = Convert.ToString(WipeCountdown.CallHook("GetCountdownFormated_API"));
                    text = text.Replace("{wipecountdown}", wipe);
                }
            }
            if (Economics != null) {
                if (text.Contains("{economics}")) {
                    string playersBalance = $"{Economics.Call<double>("Balance", player.UserIDString)}";
                    text = text.Replace("{economics}", playersBalance);
                }
            }
            if (ServerRewards != null) {
                if (text.Contains("{rp}")) {
                    string playersRP = $"{ServerRewards?.Call<int>("CheckPoints", player.userID)}";
                    text = text.Replace("{rp}", playersRP);
                }
            }
            return text;
        }
        //Editing Mode (disable fade while editing)
        private float Em(bool enabled, float fade) {
            if (enabled) return 0f;
            else return fade;
        }
        private void BlockInput(BasePlayer player, bool state) {
            /*
            if (!state) {
                if (isBlocked.Contains(player.userID)) isBlocked.Remove(player.userID);
                player.SetPlayerFlag(BasePlayer.PlayerFlags.Spectating, false); }
            else {
                if (!isBlocked.Contains(player.userID)) isBlocked.Add(player.userID);
                player.SetPlayerFlag(BasePlayer.PlayerFlags.Spectating, true); }
            */
        }
        object CanSpectateTarget(BasePlayer player) {
            if (isBlocked.Contains(player.userID)) return false;
            return null;
        }
        bool IsDigitsOnly(string str) {
            foreach (char c in str) {
                if (c < '0' || c > '9') return false;
            }
            return true;
        }
#endregion
#region [CUI]
        private void CreateCui(BasePlayer player, bool cursor, bool eM = false) {
#region Base
            //background
            var createBase = CUIClass.CreateOverlay("background", $"{cuiData["background"].color}", $"{cuiData["background"].anchorMin}", $"{cuiData["background"].anchorMax}", cursor, Em(eM, cuiData["background"].fade), $"{cuiData["background"].material}");
            if (CI("background")) CUIClass.CreateImage(ref createBase, "background", Img("background"), "0 0", "1 1", Em(eM, cuiData["background"].fade));
            CUIClass.CreatePanel(ref createBase, "background2", "Overlay", $"{cuiData["background2"].color}", $"{cuiData["background2"].anchorMin}", $"{cuiData["background2"].anchorMax}", false, Em(eM, cuiData["background2"].fade), $"{cuiData["background2"].material}");
            if (CI("background2")) CUIClass.CreateImage(ref createBase, "background2", Img("background2"), "0 0", "1 1", Em(eM, cuiData["background2"].fade));
            //container
            CUIClass.CreatePanel(ref createBase, "offsetContainer", "Overlay", $"{cuiData["offsetContainer"].color}", $"{cuiData["offsetContainer"].anchorMin}", $"{cuiData["offsetContainer"].anchorMax}", false, Em(eM, cuiData["offsetContainer"].fade), $"{cuiData["offsetContainer"].material}", "", "-680 -360", "680 360");
            if (CI("offsetContainer")) CUIClass.CreateImage(ref createBase, "offsetContainer", Img("offsetContainer"), "0.02 0", "1 1", Em(eM, cuiData["offsetContainer"].fade));
            //main panel
            CUIClass.CreatePanel(ref createBase, "mainPanel", "offsetContainer", $"{cuiData["mainPanel"].color}", $"{cuiData["mainPanel"].anchorMin}", $"{cuiData["mainPanel"].anchorMax}", false, Em(eM, cuiData["mainPanel"].fade), $"{cuiData["mainPanel"].material}");
            if (CI("mainPanel")) CUIClass.CreateImage(ref createBase, "mainPanel", Img("mainPanel"), "0 0", "1 1", Em(eM, cuiData["mainPanel"].fade));
            //side panel
            CUIClass.CreatePanel(ref createBase, "sidePanel", "offsetContainer", $"{cuiData["sidePanel"].color}", $"{cuiData["sidePanel"].anchorMin}", $"{cuiData["sidePanel"].anchorMax}", false, Em(eM, cuiData["sidePanel"].fade), $"{cuiData["sidePanel"].material}");
            if (CI("sidePanel")) CUIClass.CreateImage(ref createBase, "sidePanel", Img("sidePanel"), "0 0", "1 1", Em(eM, cuiData["sidePanel"].fade));
            //title panel
            CUIClass.CreatePanel(ref createBase, "titlePanel", "offsetContainer", $"{cuiData["titlePanel"].color}", $"{cuiData["titlePanel"].anchorMin}", $"{cuiData["titlePanel"].anchorMax}", false, Em(eM, cuiData["titlePanel"].fade), $"{cuiData["titlePanel"].material}");
            if (CI("titlePanel")) CUIClass.CreateImage(ref createBase, "titlePanel", Img("titlePanel"), "0 0", "1 1", Em(eM, cuiData["titlePanel"].fade));
            CUIClass.CreateText(ref createBase, "titleText", "titlePanel", $"{config.titleSettings.titleColor}", $"{R(player, config.titleSettings.titleText)}", 15, "0.00 0", "1 1", TextAnchor.MiddleLeft, $"{config.titleSettings.titleFontStyle}", $"{config.titleSettings.titleOutlineColor}", $"{config.titleSettings.titleOutlineThick} {config.titleSettings.titleOutlineThick}");
            //logo panel
            CUIClass.CreatePanel(ref createBase, "logoPanel", "offsetContainer", $"{cuiData["logoPanel"].color}", $"{cuiData["logoPanel"].anchorMin}", $"{cuiData["logoPanel"].anchorMax}", false, Em(eM, cuiData["logoPanel"].fade), $"{cuiData["logoPanel"].material}");
            if (CI("logoPanel")) CUIClass.CreateImage(ref createBase, "logoPanel", Img("logoPanel"), "0 0", "1 1", Em(eM, cuiData["logoPanel"].fade));
            //close button
            CUIClass.CreateButton(ref createBase, "closeButton", "offsetContainer", $"{cuiData["closeButton"].color}", $"{config.buttonSettings.closeBtnText}", 11, $"{cuiData["closeButton"].anchorMin}", $"{cuiData["closeButton"].anchorMax}", $"welcomepanel_close", "", "1 1 1 0.7", Em(eM, cuiData["closeButton"].fade), TextAnchor.MiddleCenter, $"robotocondensed-bold.ttf", $"{cuiData["closeButton"].material}");
            if (CI("closeButton")) CUIClass.CreateImage(ref createBase, "closeButton", Img("closeButton"), "0 0", "1 1", Em(eM, cuiData["closeButton"].fade));
#endregion
#region Buttons
            //Button 1
            if (config.tab1Settings.btnEnabled) {
                CUIClass.CreateButton(ref createBase, "menuBtn1", "offsetContainer", $"{cuiData["menuBtn1"].color}", $"{config?.tab1Settings.btnTitle}", 16, $"{cuiData["menuBtn1"].anchorMin}", $"{cuiData["menuBtn1"].anchorMax}", $"welcomepanel_open 1 1", "", "1 1 1 0.7", cuiData["menuBtn1"].fade, config.buttonSettings.mainAlign, $"{config?.buttonSettings.btnFontStyle}", $"{cuiData["menuBtn1"].material}");
                if (CI("menuBtn1")) CUIClass.CreateImage(ref createBase, "menuBtn1", Img("menuBtn1"), $"{config.buttonSettings.btnIconAnchor[0]}", $"{config.buttonSettings.btnIconAnchor[1]}", cuiData["menuBtn1"].fade);
            }
            //Button 2
            if (config.tab2Settings.btnEnabled) {
                CUIClass.CreateButton(ref createBase, "menuBtn2", "offsetContainer", $"{cuiData["menuBtn2"].color}", $"{config?.tab2Settings.btnTitle}", 16, $"{cuiData["menuBtn2"].anchorMin}", $"{cuiData["menuBtn2"].anchorMax}", $"welcomepanel_open 2 1", "", "1 1 1 0.7", cuiData["menuBtn2"].fade, config.buttonSettings.mainAlign, $"{config?.buttonSettings.btnFontStyle}", $"{cuiData["menuBtn2"].material}");
                if (CI("menuBtn2")) CUIClass.CreateImage(ref createBase, "menuBtn2", Img("menuBtn2"), $"{config.buttonSettings.btnIconAnchor[0]}", $"{config.buttonSettings.btnIconAnchor[1]}", cuiData["menuBtn2"].fade);
            }
            //Button 3
            if (config.tab3Settings.btnEnabled) {
                CUIClass.CreateButton(ref createBase, "menuBtn3", "offsetContainer", $"{cuiData["menuBtn3"].color}", $"{config?.tab3Settings.btnTitle}", 16, $"{cuiData["menuBtn3"].anchorMin}", $"{cuiData["menuBtn3"].anchorMax}", $"welcomepanel_open 3 1", "", "1 1 1 0.7", cuiData["menuBtn3"].fade, config.buttonSettings.mainAlign, $"{config?.buttonSettings.btnFontStyle}", $"{cuiData["menuBtn3"].material}");
                if (CI("menuBtn3")) CUIClass.CreateImage(ref createBase, "menuBtn3", Img("menuBtn3"), $"{config.buttonSettings.btnIconAnchor[0]}", $"{config.buttonSettings.btnIconAnchor[1]}", cuiData["menuBtn3"].fade);
            }
            //Button 4
            if (config.tab4Settings.btnEnabled) {
                CUIClass.CreateButton(ref createBase, "menuBtn4", "offsetContainer", $"{cuiData["menuBtn4"].color}", $"{config?.tab4Settings.btnTitle}", 16, $"{cuiData["menuBtn4"].anchorMin}", $"{cuiData["menuBtn4"].anchorMax}", $"welcomepanel_open 4 1", "", "1 1 1 0.7", cuiData["menuBtn4"].fade, config.buttonSettings.mainAlign, $"{config?.buttonSettings.btnFontStyle}", $"{cuiData["menuBtn4"].material}");
                if (CI("menuBtn4")) CUIClass.CreateImage(ref createBase, "menuBtn4", Img("menuBtn4"), $"{config.buttonSettings.btnIconAnchor[0]}", $"{config.buttonSettings.btnIconAnchor[1]}", cuiData["menuBtn4"].fade);
            }
            //Button 5
            if (config.tab5Settings.btnEnabled) {
                CUIClass.CreateButton(ref createBase, "menuBtn5", "offsetContainer", $"{cuiData["menuBtn5"].color}", $"{config?.tab5Settings.btnTitle}", 16, $"{cuiData["menuBtn5"].anchorMin}", $"{cuiData["menuBtn5"].anchorMax}", $"welcomepanel_open 5 1", "", "1 1 1 0.7", cuiData["menuBtn5"].fade, config.buttonSettings.mainAlign, $"{config?.buttonSettings.btnFontStyle}", $"{cuiData["menuBtn5"].material}");
                if (CI("menuBtn5")) CUIClass.CreateImage(ref createBase, "menuBtn5", Img("menuBtn5"), $"{config.buttonSettings.btnIconAnchor[0]}", $"{config.buttonSettings.btnIconAnchor[1]}", cuiData["menuBtn5"].fade);
            }
            //Button 6
            if (config.tab6Settings.btnEnabled) {
                CUIClass.CreateButton(ref createBase, "menuBtn6", "offsetContainer", $"{cuiData["menuBtn6"].color}", $"{config?.tab6Settings.btnTitle}", 16, $"{cuiData["menuBtn6"].anchorMin}", $"{cuiData["menuBtn6"].anchorMax}", $"welcomepanel_open 6 1", "", "1 1 1 0.7", cuiData["menuBtn6"].fade, config.buttonSettings.mainAlign, $"{config?.buttonSettings.btnFontStyle}", $"{cuiData["menuBtn6"].material}");
                if (CI("menuBtn6")) CUIClass.CreateImage(ref createBase, "menuBtn6", Img("menuBtn6"), $"{config.buttonSettings.btnIconAnchor[0]}", $"{config.buttonSettings.btnIconAnchor[1]}", cuiData["menuBtn6"].fade);
            }
            //Button 7
            if (config.tab7Settings.btnEnabled) {
                CUIClass.CreateButton(ref createBase, "menuBtn7", "offsetContainer", $"{cuiData["menuBtn7"].color}", $"{config?.tab7Settings.btnTitle}", 16, $"{cuiData["menuBtn7"].anchorMin}", $"{cuiData["menuBtn7"].anchorMax}", $"welcomepanel_open 7 1", "", "1 1 1 0.7", cuiData["menuBtn7"].fade, config.buttonSettings.mainAlign, $"{config?.buttonSettings.btnFontStyle}", $"{cuiData["menuBtn7"].material}");
                if (CI("menuBtn7")) CUIClass.CreateImage(ref createBase, "menuBtn7", Img("menuBtn7"), $"{config.buttonSettings.btnIconAnchor[0]}", $"{config.buttonSettings.btnIconAnchor[1]}", cuiData["menuBtn7"].fade);
            }
            //BUttom 8
            if (config.tab8Settings.btnEnabled) {
                CUIClass.CreateButton(ref createBase, "menuBtn8", "offsetContainer", $"{cuiData["menuBtn8"].color}", $"{config?.tab8Settings.btnTitle}", 16, $"{cuiData["menuBtn8"].anchorMin}", $"{cuiData["menuBtn8"].anchorMax}", $"welcomepanel_open 8 1", "", "1 1 1 0.7", cuiData["menuBtn8"].fade, config.buttonSettings.mainAlign, $"{config?.buttonSettings.btnFontStyle}", $"{cuiData["menuBtn8"].material}");
                if (CI("menuBtn8")) CUIClass.CreateImage(ref createBase, "menuBtn8", Img("menuBtn8"), $"{config.buttonSettings.btnIconAnchor[0]}", $"{config.buttonSettings.btnIconAnchor[1]}", cuiData["menuBtn8"].fade);
            }
            //Button 9
            if (config.tab9Settings.btnEnabled) {
                CUIClass.CreateButton(ref createBase, "menuBtn9", "offsetContainer", $"{cuiData["menuBtn9"].color}", $"{config?.tab9Settings.btnTitle}", 16, $"{cuiData["menuBtn9"].anchorMin}", $"{cuiData["menuBtn9"].anchorMax}", $"welcomepanel_open 9 1", "", "1 1 1 0.7", cuiData["menuBtn9"].fade, config.buttonSettings.mainAlign, $"{config?.buttonSettings.btnFontStyle}", $"{cuiData["menuBtn9"].material}");
                if (CI("menuBtn9")) CUIClass.CreateImage(ref createBase, "menuBtn9", Img("menuBtn9"), $"{config.buttonSettings.btnIconAnchor[0]}", $"{config.buttonSettings.btnIconAnchor[1]}", cuiData["menuBtn9"].fade);
            }
            //Button 10
            if (config.tab10Settings.btnEnabled) {
                CUIClass.CreateButton(ref createBase, "menuBtn10", "offsetContainer", $"{cuiData["menuBtn10"].color}", $"{config?.tab10Settings.btnTitle}", 16, $"{cuiData["menuBtn10"].anchorMin}", $"{cuiData["menuBtn10"].anchorMax}", $"welcomepanel_open 10 1", "", "1 1 1 0.7", cuiData["menuBtn10"].fade, config.buttonSettings.mainAlign, $"{config?.buttonSettings.btnFontStyle}", $"{cuiData["menuBtn10"].material}");
                if (CI("menuBtn10")) CUIClass.CreateImage(ref createBase, "menuBtn10", Img("menuBtn10"), $"{config.buttonSettings.btnIconAnchor[0]}", $"{config.buttonSettings.btnIconAnchor[1]}", cuiData["menuBtn10"].fade);
            }
#endregion
            DestroyCui(player);
            CuiHelper.AddUi(player, createBase);
            BlockInput(player, true);
        }
        private void DestroyCui(BasePlayer player) {
            BlockInput(player, false);
            CuiHelper.DestroyUi(player, "empty");
            CuiHelper.DestroyUi(player, "background");
            CuiHelper.DestroyUi(player, "background2");
            CuiHelper.DestroyUi(player, "offsetContainer");
        }
        private void CreateTab(BasePlayer player, int tabNumber, int pageNumber) {
#region Fields
            string bgImage = "def";
            string bgImage_Amin = "def";
            string bgImage_Amax = "def";
            string btn_Title = "def";
            string btn_FontStyle = "def";
            string btn_Icon = "def";
            List<string> tabText = new List<string>();
            string fontColor = "def";
            int fontSize = 0;
            string fontStyle = "def";
            string fontOutColor = "def";
            string fontOutThic = "def";
            TextAnchor textAnchor = TextAnchor.MiddleCenter;
            string addonName = "def";
#endregion
#region Config Container
            if(tabNumber == 1) {
                btn_Title = config.tab1Settings.btnTitle;
                bgImage = config.tab1Settings.tabImageUrl;
                bgImage_Amin = config.tab1Settings.tabImageAnchor[0];
                bgImage_Amax = config?.tab1Settings.tabImageAnchor[1];
                fontColor = config.tab1Settings.mainFontColor;
                tabText = config.tab1Settings.textLines;
                fontSize = config.tab1Settings.mainFontSize;
                textAnchor = config.tab1Settings.mainAlign;
                fontStyle = config.tab1Settings.mainFontStyle;
                fontOutColor = config.tab1Settings.fontOutlineColor;
                fontOutThic = config.tab1Settings.fontOutlineThick;
                btn_Icon = config.tab1Settings.btnIcon;
                addonName = config.extension.tab1;
            }
            if(tabNumber == 2) {
                btn_Title = config.tab2Settings.btnTitle;
                bgImage = config.tab2Settings.tabImageUrl;
                bgImage_Amin = config.tab2Settings.tabImageAnchor[0];
                bgImage_Amax = config?.tab2Settings.tabImageAnchor[1];
                fontColor = config.tab2Settings.mainFontColor;
                tabText = config.tab2Settings.textLines;
                fontSize = config.tab2Settings.mainFontSize;
                textAnchor = config.tab2Settings.mainAlign;
                fontStyle = config.tab2Settings.mainFontStyle;
                fontOutColor = config.tab2Settings.fontOutlineColor;
                fontOutThic = config.tab2Settings.fontOutlineThick;
                btn_Icon = config.tab2Settings.btnIcon;
                addonName = config.extension.tab2;
            }
            if(tabNumber == 3) {
                btn_Title = config.tab3Settings.btnTitle;
                bgImage = config.tab3Settings.tabImageUrl;
                bgImage_Amin = config.tab3Settings.tabImageAnchor[0];
                bgImage_Amax = config?.tab3Settings.tabImageAnchor[1];
                fontColor = config.tab3Settings.mainFontColor;
                tabText = config.tab3Settings.textLines;
                fontSize = config.tab3Settings.mainFontSize;
                textAnchor = config.tab3Settings.mainAlign;
                fontStyle = config.tab3Settings.mainFontStyle;
                fontOutColor = config.tab3Settings.fontOutlineColor;
                fontOutThic = config.tab3Settings.fontOutlineThick;
                btn_Icon = config.tab3Settings.btnIcon;
                addonName = config.extension.tab3;
            }
            if(tabNumber == 4) {
                btn_Title = config.tab4Settings.btnTitle;
                bgImage = config.tab4Settings.tabImageUrl;
                bgImage_Amin = config.tab4Settings.tabImageAnchor[0];
                bgImage_Amax = config?.tab4Settings.tabImageAnchor[1];
                fontColor = config.tab4Settings.mainFontColor;
                tabText = config.tab4Settings.textLines;
                fontSize = config.tab4Settings.mainFontSize;
                textAnchor = config.tab4Settings.mainAlign;
                fontStyle = config.tab4Settings.mainFontStyle;
                fontOutColor = config.tab4Settings.fontOutlineColor;
                fontOutThic = config.tab4Settings.fontOutlineThick;
                btn_Icon = config.tab4Settings.btnIcon;
                addonName = config.extension.tab4;
            }
            if(tabNumber == 5) {
                btn_Title = config.tab5Settings.btnTitle;
                bgImage = config.tab5Settings.tabImageUrl;
                bgImage_Amin = config.tab5Settings.tabImageAnchor[0];
                bgImage_Amax = config?.tab5Settings.tabImageAnchor[1];
                fontColor = config.tab5Settings.mainFontColor;
                tabText = config.tab5Settings.textLines;
                fontSize = config.tab5Settings.mainFontSize;
                textAnchor = config.tab5Settings.mainAlign;
                fontStyle = config.tab5Settings.mainFontStyle;
                fontOutColor = config.tab5Settings.fontOutlineColor;
                fontOutThic = config.tab5Settings.fontOutlineThick;
                btn_Icon = config.tab5Settings.btnIcon;
                addonName = config.extension.tab5;
            }
            if(tabNumber == 6) {
                btn_Title = config.tab6Settings.btnTitle;
                bgImage = config.tab6Settings.tabImageUrl;
                bgImage_Amin = config.tab6Settings.tabImageAnchor[0];
                bgImage_Amax = config?.tab6Settings.tabImageAnchor[1];
                fontColor = config.tab6Settings.mainFontColor;
                tabText = config.tab6Settings.textLines;
                fontSize = config.tab6Settings.mainFontSize;
                textAnchor = config.tab6Settings.mainAlign;
                fontStyle = config.tab6Settings.mainFontStyle;
                fontOutColor = config.tab6Settings.fontOutlineColor;
                fontOutThic = config.tab6Settings.fontOutlineThick;
                btn_Icon = config.tab6Settings.btnIcon;
                addonName = config.extension.tab6;
            }
            if(tabNumber == 7) {
                btn_Title = config.tab7Settings.btnTitle;
                bgImage = config.tab7Settings.tabImageUrl;
                bgImage_Amin = config.tab7Settings.tabImageAnchor[0];
                bgImage_Amax = config?.tab7Settings.tabImageAnchor[1];
                fontColor = config.tab7Settings.mainFontColor;
                tabText = config.tab7Settings.textLines;
                fontSize = config.tab7Settings.mainFontSize;
                textAnchor = config.tab7Settings.mainAlign;
                fontStyle = config.tab7Settings.mainFontStyle;
                fontOutColor = config.tab7Settings.fontOutlineColor;
                fontOutThic = config.tab7Settings.fontOutlineThick;
                btn_Icon = config.tab7Settings.btnIcon;
                addonName = config.extension.tab7;
            }
            if(tabNumber == 8) {
                btn_Title = config.tab8Settings.btnTitle;
                bgImage = config.tab8Settings.tabImageUrl;
                bgImage_Amin = config.tab8Settings.tabImageAnchor[0];
                bgImage_Amax = config?.tab8Settings.tabImageAnchor[1];
                fontColor = config.tab8Settings.mainFontColor;
                tabText = config.tab8Settings.textLines;
                fontSize = config.tab8Settings.mainFontSize;
                textAnchor = config.tab8Settings.mainAlign;
                fontStyle = config.tab8Settings.
// ... [Code preview truncated due to length. Full source in attached file] ...

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