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

FREE WPKits : 1.1.4 1.1.4

Нет прав для скачивания
C#:
using System;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System.Collections.Generic;
using Oxide.Core;
using Oxide.Core.Libraries;
using Oxide.Core.Libraries.Covalence;
using Oxide.Core.Plugins;
using Oxide.Game.Rust.Cui;
using UnityEngine;
using System;
using System.Linq;
namespace Oxide.Plugins {
    [Info("WPKits", "David", "1.1.4")]
    [Description("Kits Addon for Welcome Panel")]
    public class WPKits : RustPlugin {
        [PluginReference]
        Plugin Kits, WelcomePanel, ImageLibrary;
#region [Further Customization]
        //Kit Anchors
        private string[] anchors = {
            "0.105 0.7-0.480 0.95", "0.520 0.7-0.885 0.95", "0.105 0.4-0.480 0.65", "0.520 0.4-0.895 0.65", "0.105 0.10-0.480 0.35", "0.520 0.10-0.895 0.35",
        }
        ;
        private Dictionary<string, string> _p = new Dictionary<string, string> {
            // "NEXT" BUTTON
            {
                "bn_Amin", "0.93 0.43"
            }
            , {
                "bn_Amax", "0.97 0.62"
            }
            ,  // "PREVIOUS" BUTTON
            {
                "bp_Amin", "0.03 0.43"
            }
            , {
                "bp_Amax", "0.07 0.62"
            }
            ,  // SUB PANELS
            //LOGO PANEL
            {
                "lp_Amin", "0.03 0.33"
            }
            , {
                "lp_Amax", "0.32 0.94"
            }
            ,  //TEXT PANEL
            {
                "tp_Amin", "0.34 0.33"
            }
            , {
                "tp_Amax", "0.97 0.94"
            }
            ,  //BUTTON CLAIM
            {
                "btn_Amin", "0.34 0.05"
            }
            , {
                "btn_Amax", "0.97 0.28"
            }
            ,  //BUTTON INFO
            {
                "btn1_Amin", "0.03 0.05"
            }
            , {
                "btn1_Amax", "0.32 0.28"
            }
            ,
        }
        ;
#endregion
#region [Hooks]
        private void OnServerInitialized() {
            LoadConfig();
            DownloadImages();
            foreach (string kit in config.kits.Keys) kitsList.Add(kit);
        }
        private void Loaded() {
            if (WelcomePanel == null) Puts(" Core plugin WelcomePanel is not loaded.");
            if (Kits == null) Puts(" Core plugin Kits is not loaded.");
        }
        private void Unload() {
            foreach (var player in BasePlayer.activePlayerList) CloseKits_API(player);
        }
#endregion
#region [Image Handling]
        private void DownloadImages() {
            foreach (string kit in config.kits.Keys) {
                ImageLibrary.Call("AddImage", config.kits[kit].image, config.kits[kit].image);
            }
        }
        private string Img(string url) {
            if (ImageLibrary != null) {
                if (!(bool) ImageLibrary.Call("HasImage", url)) return url;
                else return (string) ImageLibrary?.Call("GetImage", url);
            }
            else return url;
        }
#endregion
#region [Commands]
        [ConsoleCommand("getkit")]
        private void getkit(ConsoleSystem.Arg arg) {
            var player = arg?.Player();
            var args = arg.Args;
            if (arg.Player() == null) return;
            if (args.Length < 1) return;
            if (player.IsDead()) return;
            arg.Player().SendConsoleCommand($"chat.say \"/{config.otherSet.kitCommand} {args[0]}\" ");
            bool _isOnCd = IsKitOnCd(player, $"{args[0]}");
            if (_isOnCd) {
                ShowKits(player, Convert.ToInt32(args[1]));
            }
            else {
                timer.Once(0.5f, () => {
                    ShowKits(player, Convert.ToInt32(args[1]));
                }
                );
            }
        }
        [ConsoleCommand("notif_cmd_close")]
        private void notif_cmd_close(ConsoleSystem.Arg arg) {
            var player = arg?.Player();
            if (arg.Player() == null) return;
            CloseNotif(player);
        }
        [ConsoleCommand("wpkits_page")]
        private void wpkits_page(ConsoleSystem.Arg arg) {
            var player = arg?.Player();
            var args = arg.Args;
            if (arg.Player() == null) return;
            if (args.Length > 1) return;
            ShowKits(player, Convert.ToInt32(args[0]));
        }
        [ConsoleCommand("wpkits_info")]
        private void wpkits_info(ConsoleSystem.Arg arg) {
            var player = arg?.Player();
            var args = arg.Args;
            if (arg.Player() == null) return;
            if (args.Length > 1) return;
            CreateNotif(player, config.kits[args[0]].desc, config.kits[args[0]].image, args[0]);
        }
        [ConsoleCommand("wpkits_import")]
        private void wpkits_import(ConsoleSystem.Arg arg) {
            var player = arg?.Player();
            var args = arg.Args;
            if (arg.Player() != null) {
                if (!player.IsAdmin) return;
            }
            if (args == null) {
                ImportAllKits();
                OnServerInitialized();
                return;
            }
            if (args.Length > 1) {
                Puts($"Kit name can't contain spaces, it has to be one word.Display name can be changed later.");
                if (arg.Player() != null) SendReply(player, $"<color=#DA6D11>Kit name can't contain spaces, it has to be one word.Display name can be changed later.</color>");
                return;
            }
            if (args.Length == 1) {
                JObject kit = (JObject) Kits.Call("GetKitObject", $"{args[0]}");
                if (kit == null) {
                    Puts($"Kit \"{args[0]}\" NOT FOUND");
                    SendReply(player, $"<size=12>KIT</size> \"{args[0]}\" <size=12><color=#DA6D11>NOT FOUND</color></size>");
                    return;
                }
                if (!config.kits.ContainsKey(args[0])) {
                    config.kits.Add(args[0], new WPKits.Configuration.KitProperties());
                    config.kits[args[0]].displayName = $"{kit.SelectToken("Name")}";
                    config.kits[args[0]].displayName = config.kits[args[0]].displayName.Replace("_", " ");
                    config.kits[args[0]].image = $"{kit.SelectToken("KitImage")}";
                    config.kits[args[0]].text = "Short kit description.\nCOOLDOWN: <b><color=#1175A5>{kitCooldown}</color></b> \nUSES LEFT: <b><color=#1175A5>{kitUsesLeft}</color></b>";
                    config.kits[args[0]].desc = $"<size=15><b>{config.kits[args[0]].displayName}</b></size>" + "\n\n{kitDescription}\n\n{kitItemList}";
                    SaveConfig();
                    OnServerInitialized();
                    Puts($"Kit \"{args[0]}\" IMPORTED");
                    SendReply(player, $"<size=12>KIT</size> \"{args[0]}\" <size=12><color=#3CB201>IMPORTED</color></size>");
                }
                else {
                    Puts($"Kit \"{args[0]}\" ALREADY IMPORTED");
                    SendReply(player, $"<size=12>KIT</size> \"{args[0]}\" <size=12><color=#DA6D11>ALREADY IMPORTED</color></size>");
                }
            }
        }
#endregion
#region [Kits API]
        private string KitUsesLeft(BasePlayer player, string _kitName) {
            int _kitMaxUses = Convert.ToInt32(Kits?.CallHook("GetKitMaxUses", _kitName));
            int _kitTimesUsed = Convert.ToInt32(Kits?.CallHook("GetPlayerKitUses", player.userID, _kitName));
            string _kitUsesLeft = Convert.ToString(_kitMaxUses - _kitTimesUsed);
            return _kitUsesLeft;
        }
        private bool IsKitOnCd(BasePlayer player, string _kitName) {
            double _currentCd = Convert.ToDouble(Kits?.CallHook("GetPlayerKitCooldown", player.userID, _kitName));
            if (_currentCd == 0) {
                return false;
            }
            return true;
        }
        private string GetKitCd(string _kitName) {
            int _kitCdInt = Convert.ToInt32(Kits?.CallHook("GetKitCooldown", _kitName));
            TimeSpan cooldownTS = TimeSpan.FromSeconds(_kitCdInt);
            string cooldownFormated = string.Format("{0:D1}D {1:D2}:{2:D2}:{3:D2}", cooldownTS.Days, cooldownTS.Hours, cooldownTS.Minutes, cooldownTS.Seconds);
            if (_kitCdInt < 86400) cooldownFormated = string.Format("{0:D2}:{1:D2}:{2:D2}", cooldownTS.Hours, cooldownTS.Minutes, cooldownTS.Seconds);
            string _kitCd = $"{cooldownFormated}";
            return _kitCd;
        }
        private string GetCurrentKitCd(BasePlayer player, string _kitName) {
            int _currentCdInt = Convert.ToInt32(Kits?.CallHook("GetPlayerKitCooldown", player.userID, _kitName));
            TimeSpan cooldownTS = TimeSpan.FromSeconds(_currentCdInt);
            string cooldownFormated = string.Format("{0:D1}D {1:D2}:{2:D2}:{3:D2}", cooldownTS.Days, cooldownTS.Hours, cooldownTS.Minutes, cooldownTS.Seconds);
            if (_currentCdInt < 86400) cooldownFormated = string.Format("{0:D2}:{1:D2}:{2:D2}", cooldownTS.Hours, cooldownTS.Minutes, cooldownTS.Seconds);
            string _currentCd = $"{cooldownFormated}";
            return _currentCd;
        }
        private string GetKitDesc(string _kitName) {
            return Convert.ToString(Kits?.CallHook("GetKitDescription", _kitName));
            ;
        }
        private string Replace_Text(BasePlayer player, string _kitName, string _text) {
            return _text.Replace("{kitItemList}", KitItemList(_kitName)).Replace("{kitUsesLeft}", KitUsesLeft(player, _kitName)).Replace("{kitCooldown}", GetKitCd(_kitName)).Replace("{kitDescription}", GetKitDesc(_kitName)).Replace("Full desciption of Kit", " ");
        }
        private string Button_Cooldown_Text(BasePlayer player, string _kitName) {
            bool _isOnCd = IsKitOnCd(player, _kitName);
            string _playerCd = GetCurrentKitCd(player, _kitName);
            var kit = (JObject) Kits.Call("GetKitObject", _kitName);
            int cost = Convert.ToInt32(kit.SelectToken("Cost"));
            string perm = (string) kit.SelectToken("RequiredPermission");
            int kitUseLimit = Convert.ToInt32(Kits?.CallHook("GetKitMaxUses", _kitName));
            int kitTimesUsed = Convert.ToInt32(Kits?.CallHook("GetPlayerKitUses", player.userID, _kitName));
            if (_isOnCd) {
                return _playerCd;
            }
            else {
                if (perm != "" && perm != null) {
                    if (!permission.UserHasPermission(player.UserIDString, perm)) return $"{gl("noPerms")}";
                }
                if (kitUseLimit != 0) {
                    if (kitUseLimit - kitTimesUsed < 1) return $"{gl("noUses")}";
                }
                if (cost != 0) {
                    return $"{cost} {config.otherSet.kitCurrency}";
                }
                return $"{gl("claim")}";
            }
        }
        private string Button_ColorChange(BasePlayer player, string _kitName) {
            bool isOnCd = IsKitOnCd(player, _kitName);
            var kit = (JObject) Kits.Call("GetKitObject", _kitName);
            string perm = (string) kit.SelectToken("RequiredPermission");
            int kitUseLimit = Convert.ToInt32(Kits?.CallHook("GetKitMaxUses", _kitName));
            int kitTimesUsed = Convert.ToInt32(Kits?.CallHook("GetPlayerKitUses", player.userID, _kitName));
            string red = config.otherSet.oncdBtnColor;
            string green = config.otherSet.claimBtnColor;
            if (isOnCd) {
                return red;
            }
            if (perm != "" && perm != null) {
                if (!permission.UserHasPermission(player.UserIDString, perm)) return config.otherSet.infoBtnColor;
            }
            if (kitUseLimit != 0) {
                if (kitUseLimit - kitTimesUsed < 1) return red;
            }
            return green;
        }
#endregion
#region [Cui API]
        private void ShowKits_Page1_API(BasePlayer player) => ShowKits(player);
        private void ImportAllKits() {
            if (Interface.Oxide.DataFileSystem.ExistsDatafile($"Kits/kits_data")) {
                try {
                    var kitdata = Interface.Oxide.DataFileSystem.GetDatafile("Kits/kits_data");
                    string json = JsonConvert.SerializeObject(kitdata.Get("_kits"));
                    JObject _json = JObject.Parse(json);
                    foreach (var item in _json) {
                        if (item.Key.Contains(" ")) {
                            Puts($"Kit \"{item.Key}\" NOT IMPORTED (reason: name contains spaces)");
                            foreach (var player in BasePlayer.activePlayerList) {
                                if(player.IsAdmin) SendReply(player, $"<size=12>KIT</size> \"{item.Key}\" <size=12><color=#E33B30>NOT IMPORTED</color></size> (reason: name contains spaces)");
                            }
                            continue;
                        }
                        JObject kit = (JObject) Kits.Call("GetKitObject", $"{item.Key}");
                        if (!config.kits.ContainsKey(item.Key)) {
                            config.kits.Add(item.Key, new WPKits.Configuration.KitProperties());
                            config.kits[item.Key].displayName = $"{kit.SelectToken("Name")}";
                            config.kits[item.Key].displayName = config.kits[item.Key].displayName.Replace("_", " ");
                            config.kits[item.Key].image = $"{kit.SelectToken("KitImage")}";
                            config.kits[item.Key].text = "Short kit description.\nCOOLDOWN: <b><color=#1175A5>{kitCooldown}</color></b> \nUSES LEFT: <b><color=#1175A5>{kitUsesLeft}</color></b>";
                            config.kits[item.Key].desc = $"<size=15><b>{config.kits[item.Key].displayName}</b></size>" + "\n\n{kitDescription}\n\n{kitItemList}";
                            Puts($"Kit \"{item.Key}\" IMPORTED");
                            foreach (var player in BasePlayer.activePlayerList) {
                                if(player.IsAdmin) SendReply(player, $"<size=12>KIT</size> \"{item.Key}\" <size=12><color=#3CB201>IMPORTED</color></size>");
                            }
                        }
                        else {
                            Puts($"Kit \"{item.Key}\" ALREADY IMPORTED");
                            foreach (var player in BasePlayer.activePlayerList) {
                                if(player.IsAdmin) SendReply(player, $"<size=12>KIT</size> \"{item.Key}\" <size=12><color=#DA6D11>ALREADY IMPORTED</color></size>");
                            }
                        }
                    }
                    SaveConfig();
                }
                catch {
                    Puts("Something went wrong while importing kits, make sure your kits_data.json is valid and without errors.");
                    foreach (var player in BasePlayer.activePlayerList) {
                        if(player.IsAdmin) SendReply(player, "Something went wrong while importing kits, make sure your kits_data.json is valid and without errors.");
                    }
                }
            }
            else {
                Puts("data/Kits/kits_data.json was not found.");
                foreach (var player in BasePlayer.activePlayerList) {
                    if(player.IsAdmin) SendReply(player, "data/Kits/kits_data.json was not found.");
                }
            }
        }
        private string KitItemList(string kitName) {
            JObject kit = (JObject) Kits.Call("GetKitObject", $"{kitName}");
            if (kit == null) {
                Puts($"(!ERROR) Kit '{kitName}' does not exist.");
                return "Something went wrong while trying to import item list.";
            }
            string result = "";
            var _belt = kit.SelectToken("BeltItems");
            foreach (var item in _belt) {
                string shortname = $"{item.SelectToken("Shortname")}";
                string amount = $"{item.SelectToken("Amount")}";
                var itemDef = ItemManager.FindItemDefinition(shortname);
                if (itemDef == null) result += $"{amount}x <WRONG SHORTNAME>\n";
                else result += $"{amount}x <b>{itemDef.displayName.translated}</b>\n";
            }
            var _main = kit.SelectToken("MainItems");
            foreach (var item in _main) {
                string shortname = $"{item.SelectToken("Shortname")}";
                string amount = $"{item.SelectToken("Amount")}";
                var itemDef = ItemManager.FindItemDefinition(shortname);
                if (itemDef == null) result += $"{amount}x <WRONG SHORTNAME>\n";
                else result += $"{amount}x <b>{itemDef.displayName.translated}</b>\n";
            }
            var _wear = kit.SelectToken("WearItems");
            foreach (var item in _wear) {
                string shortname = $"{item.SelectToken("Shortname")}";
                string amount = $"{item.SelectToken("Amount")}";
                var itemDef = ItemManager.FindItemDefinition(shortname);
                if (itemDef == null) result += $"{amount}x <WRONG SHORTNAME>\n";
                else result += $"{amount}x <b>{itemDef.displayName.translated}</b>\n";
            }
            return result;
        }
        List<string> kitsList = new List<string>();
        private void ShowKits(BasePlayer player, int page = 0) {
            int startingPos = page * 6;
            int itemsLeft = kitsList.Count - startingPos;
            int itemsToShow = itemsLeft;
            if (itemsToShow > 6) itemsToShow = 6;
            var container = CUIClass.CreateOverlay("empty", "0 0 0 0.0", "0 0", "0 0", false, 0.0f, $"assets/icons/iconmaterial.mat");
            if (config.kits.Count() < 1) {
                CUIClass.CreateText(ref container, "noKits_text", "imagePanel", "1 1 1 1", "<size=20>Your kit list in config is empty.</size>\nIf you wish to import all kits from RustKits plugin, use console command 'wpkits_import'", 17, "0 0", "1 1", TextAnchor.MiddleCenter, $"robotocondensed-bold.ttf", config.otherSet.fontOutlineColor, $"{config.otherSet.fontOutlineThickness} {config.otherSet.fontOutlineThickness}");
                CuiHelper.DestroyUi(player, "noKits_text");
                CuiHelper.AddUi(player, container);
            }
            for (var i = 0; i < itemsToShow; i++) {
                string kitName = kitsList[i + startingPos];
                string[] splitA = anchors[i].Split('-');
                if ((bool) Kits.Call("IsKit", kitName)) {
                    string shortText = Replace_Text(player, kitName, config.kits[kitName].text);
                    string buttonText = Button_Cooldown_Text(player, kitName);
                    string buttonColor = Button_ColorChange(player, kitName);
                    CUIClass.CreatePanel(ref container, $"kit_panel{i}", "imagePanel", config.otherSet.mainColor, splitA[0], splitA[1], false, config.otherSet.fade, "assets/content/ui/uibackgroundblur.mat");
                    CUIClass.CreatePanel(ref container, "logo_panel", $"kit_panel{i}", config.otherSet.secColor, _p["lp_Amin"], _p["lp_Amax"], false, config.otherSet.fade, "assets/content/ui/uibackgroundblur.mat");
                    CUIClass.CreatePanel(ref container, "text_panel", $"kit_panel{i}", config.otherSet.secColor, _p["tp_Amin"], _p["tp_Amax"], false, config.otherSet.fade, "assets/content/ui/uibackgroundblur.mat");
                    CUIClass.CreateButton(ref container, "btn_panel", $"kit_panel{i}", $"{buttonColor}", buttonText, 11, _p["btn_Amin"], _p["btn_Amax"], $"getkit {kitName} {page}", "", "1 1 1 1", config.otherSet.fade, TextAnchor.MiddleCenter, $"robotocondensed-bold.ttf");
                    CUIClass.CreateButton(ref container, "btn_panel", $"kit_panel{i}", config.otherSet.infoBtnColor, $"{gl("info")}", 11, _p["btn1_Amin"], _p["btn1_Amax"], $"wpkits_info {kitName}", "", "1 1 1 1", config.otherSet.fade, TextAnchor.MiddleCenter, $"robotocondensed-bold.ttf");
                    CUIClass.CreateText(ref container, "name", "text_panel", "1 1 1 1", config.kits[kitName].displayName, 20, "0.040 0", "1 0.95", TextAnchor.UpperLeft, $"robotocondensed-bold.ttf", config.otherSet.fontOutlineColor, $"{config.otherSet.fontOutlineThickness} {config.otherSet.fontOutlineThickness}");
                    CUIClass.CreateText(ref container, "text", "text_panel", "1 1 1 1", shortText, 10, "0.040 0", "1 0.60", TextAnchor.UpperLeft, $"robotocondensed-regular.ttf", config.otherSet.fontOutlineColor, $"{config.otherSet.fontOutlineThickness} {config.otherSet.fontOutlineThickness}");
                    CUIClass.CreateImage(ref container, "logo_panel", Img($"{config.kits[kitName].image}"), "0.05 0.05", "0.95 0.95", config.otherSet.fade);
                }
                else {
                    CUIClass.CreatePanel(ref container, $"kit_panel{i}", "imagePanel", config.otherSet.mainColor, splitA[0], splitA[1], false, config.otherSet.fade, "assets/content/ui/uibackgroundblur.mat");
                    CUIClass.CreateText(ref container, "name", $"kit_panel{i}", "1 1 1 1", $"Kit '{kitName}' does not exist.", 15, "0.0 0", "1 1", TextAnchor.MiddleCenter, $"robotocondensed-bold.ttf", config.otherSet.fontOutlineColor, $"{config.otherSet.fontOutlineThickness} {config.otherSet.fontOutlineThickness}");
                }
            }
            if (page != 0) CUIClass.CreateButton(ref container, "btn_prev", "imagePanel", config.otherSet.mainColor, "<", 12, _p["bp_Amin"], _p["bp_Amax"], $"wpkits_page {page - 1}", "", "1 1 1 1", 0f, TextAnchor.MiddleCenter, $"robotocondensed-bold.ttf");
            if (itemsLeft > 6) CUIClass.CreateButton(ref container, "btn_next", "imagePanel", config.otherSet.mainColor, ">", 15, _p["bn_Amin"], _p["bn_Amax"], $"wpkits_page {page + 1}", "", "1 1 1 1", 0f, TextAnchor.MiddleCenter, $"robotocondensed-bold.ttf");
            CuiHelper.DestroyUi(player, "btn_prev");
            CuiHelper.DestroyUi(player, "btn_next");
            CuiHelper.DestroyUi(player, "empty");
            for (var i = 0; i < 7; i++) CuiHelper.DestroyUi(player, $"kit_panel{i}");
            CuiHelper.AddUi(player, container);
        }
        private void CloseKits_API(BasePlayer player) {
            CuiHelper.DestroyUi(player, "btn_prev");
            CuiHelper.DestroyUi(player, "btn_next");
            CuiHelper.DestroyUi(player, "main_not");
            CuiHelper.DestroyUi(player, "empty");
            for (var i = 0; i < 7; i++) CuiHelper.DestroyUi(player, $"kit_panel{i}");
        }
        private void CreateNotif(BasePlayer player, string _text, string _icon, string _kitName) {
            string _textReplaced = Replace_Text(player, _kitName, _text);
            var _uiNotification = CUIClass.CreateOverlay("main_not", "0.19 0.19 0.19 0.90", "0 0", "1 1", true, 0.0f, $"assets/content/ui/uibackgroundblur.mat");
            CUIClass.CreatePanel(ref _uiNotification, "blurr2", "main_not", "0 0 0 0.95", "0 0", "1 1", false, 0f, "assets/content/ui/uibackgroundblur.mat");
            CUIClass.CreatePanel(ref _uiNotification, "main_panel", "main_not", "0.19 0.19 0.19 0.99", "0.35 0.25", "0.65 0.75", false, 0f, "assets/content/ui/uibackgroundblur.mat");
            CUIClass.CreateText(ref _uiNotification, "text_title", "main_panel", "1 1 1 1", _textReplaced, 12, "0.1 0", "0.9 0.75", TextAnchor.UpperCenter, $"robotocondensed-regular.ttf", config.otherSet.fontOutlineColor, $"{config.otherSet.fontOutlineThickness} {config.otherSet.fontOutlineThickness}");
            CUIClass.CreateImage(ref _uiNotification, "main_panel", Img($"{_icon}"), "0.435 0.8", "0.565 0.95");
            CUIClass.CreateButton(ref _uiNotification, "close_btn", "main_panel", "0.56 0.20 0.15 1.0", "✘", 11, "0.9 0.9", "0.97 0.97", "notif_cmd_close", "", "1 1 1 1", 0f, TextAnchor.MiddleCenter, $"robotocondensed-bold.ttf");
            CloseNotif(player);
            CuiHelper.AddUi(player, _uiNotification);
        }
        private void CloseNotif(BasePlayer player) {
            CuiHelper.DestroyUi(player, "main_not");
        }
#endregion
#region [Cui Class]
        public class CUIClass {
            public static CuiElementContainer CreateOverlay(string _name, string _color, string _anchorMin, string _anchorMax, bool _cursorOn = false, float _fade = 1f, string _mat ="") {
                var _element = new CuiElementContainer() {
                    {
                        new CuiPanel {
                            Image = {
                                Color = _color, Material = _mat, FadeIn = _fade
                            }
                            , RectTransform = {
                                AnchorMin = _anchorMin, AnchorMax = _anchorMax
                            }
                            , CursorEnabled = _cursorOn
                        }
                        , new CuiElement().Parent = "Overlay", _name
                    }
                }
                ;
                return _element;
            }
            public static void CreatePanel(ref CuiElementContainer _container, string _name, string _parent, string _color, string _anchorMin, string _anchorMax, bool _cursorOn = false, float _fade = 1f, string _mat2 ="") {
                _container.Add(new CuiPanel {
                    Image = {
                        Color = _color, Material = _mat2, FadeIn = _fade
                    }
                    , RectTransform = {
                        AnchorMin = _anchorMin, AnchorMax = _anchorMax
                    }
                    , CursorEnabled = _cursorOn
                }
                , _parent, _name);
            }
            public static void CreateImage(ref CuiElementContainer _container, string _parent, string _image, string _anchorMin, string _anchorMax, float _fade = 0f) {
                if (_image.StartsWith("http") || _image.StartsWith("www")) {
                    _container.Add(new CuiElement {
                        Parent = _parent, Components = {
                            new CuiRawImageComponent {
                                Url = _image, Sprite = "assets/content/textures/generic/fulltransparent.tga", FadeIn = _fade
                            }
                            , new CuiRectTransformComponent {
                                AnchorMin = _anchorMin, AnchorMax = _anchorMax
                            }
                        }
                    }
                    );
                }
                else {
                    _container.Add(new CuiElement {
                        Parent = _parent, Components = {
                            new CuiRawImageComponent {
                                Png = _image, Sprite = "assets/content/textures/generic/fulltransparent.tga", FadeIn = _fade
                            }
                            , new CuiRectTransformComponent {
                                AnchorMin = _anchorMin, AnchorMax = _anchorMax
                            }
                        }
                    }
                    );
                }
            }
            public static void CreateInput(ref CuiElementContainer _container, string _name, string _parent, string _color, int _size, string _anchorMin, string _anchorMax, string _font = "permanentmarker.ttf", string _command = "command.processinput", TextAnchor _align = TextAnchor.MiddleCenter) {
                _container.Add(new CuiElement {
                    Parent = _parent, Name = _name, Components = {
                        new CuiInputFieldComponent {
                            Text = "0", CharsLimit = 11, Color = _color, IsPassword = false, Command = _command, Font = _font, FontSize = _size, Align = _align
                        }
                        , new CuiRectTransformComponent {
                            AnchorMin = _anchorMin, AnchorMax = _anchorMax
                        }
                    }
                    ,
                }
                );
            }
            public static void CreateText(ref CuiElementContainer _container, string _name, string _parent, string _color, string _text, int _size, string _anchorMin, string _anchorMax, TextAnchor _align = TextAnchor.MiddleCenter, string _font = "robotocondensed-bold.ttf", string _outlineColor = "", string _outlineScale ="") {
                _container.Add(new CuiElement {
                    Parent = _parent, Name = _name, Components = {
                        new CuiTextComponent {
                            Text = _text, FontSize = _size, Font = _font, Align = _align, Color = _color, FadeIn = 0f,
                        }
                        , new CuiOutlineComponent {
                            Color = _outlineColor, Distance = _outlineScale
                        }
                        , new CuiRectTransformComponent {
                            AnchorMin = _anchorMin, AnchorMax = _anchorMax
                        }
                    }
                    ,
                }
                );
            }
            public static void CreateButton(ref CuiElementContainer _container, string _name, string _parent, string _color, string _text, int _size, string _anchorMin, string _anchorMax, string _command = "", string _close = "", string _textColor = "0.843 0.816 0.78 1", float _fade = 1f, TextAnchor _align = TextAnchor.MiddleCenter, string _font = "") {
                _container.Add(new CuiButton {
                    Button = {
                        Close = _close, Command = _command, Color = _color, Material = "assets/content/ui/uibackgroundblur-ingamemenu.mat", FadeIn = _fade
                    }
                    , RectTransform = {
                        AnchorMin = _anchorMin, AnchorMax = _anchorMax
                    }
                    , Text = {
                        Text = _text, FontSize = _size, Align = _align, Color = _textColor, Font = _font, FadeIn = _fade
                    }
                }
                , _parent, _name);
            }
        }
#endregion
#region [Config]
        private Configuration config;
        protected override void LoadConfig() {
            base.LoadConfig();
            config = Config.ReadObject<Configuration>();
            SaveConfig();
        }
        protected override void LoadDefaultConfig() {
            config = Configuration.CreateConfig();
        }
        protected override void SaveConfig() => Config.WriteObject(config);
        class Configuration {
            [JsonProperty(PropertyName = "Settings")]
            public OtherSet otherSet {
                get;
                set;
            }
            public class OtherSet {
                [JsonProperty("Kits Currency Name")]
                public string kitCurrency {
                    get;
                    set;
                }
                [JsonProperty("Kit Claim Command (from Kits config)")]
                public string kitCommand {
                    get;
                    set;
                }
                [JsonProperty("Main Panel Color")]
                public string mainColor {
                    get;
                    set;
                }
                [JsonProperty("Secondary Panel Color")]
                public string secColor {
                    get;
                    set;
                }
                [JsonProperty("Claim Button Color")]
                public string claimBtnColor {
                    get;
                    set;
                }
                [JsonProperty("On Cooldown Button Color")]
                public string oncdBtnColor {
                    get;
                    set;
                }
                [JsonProperty("Info Button Color")]
                public string infoBtnColor {
                    get;
                    set;
                }
                [JsonProperty("Fade In Value")]
                public float fade {
                    get;
                    set;
                }
                [JsonProperty("Font Outline Color")]
                public string fontOutlineColor {
                    get;
                    set;
                }
                [JsonProperty("Font Outline Thickness")]
                public string fontOutlineThickness {
                    get;
                    set;
                }
            }
            [JsonProperty(PropertyName = "Kits")]
            public Dictionary<string, KitProperties> kits {
                get;
                set;
            }
            public class KitProperties {
                [JsonProperty("» Display Name")]
                public string displayName {
                    get;
                    set;
                }
                [JsonProperty("» Image")]
                public string image {
                    get;
                    set;
                }
                [JsonProperty("» Short Text")]
                public string text {
                    get;
                    set;
                }
                [JsonProperty("» Description")]
                public string desc {
                    get;
                    set;
                }
            }
            public static Configuration CreateConfig() {
                return new Configuration {
                    otherSet = new WPKits.Configuration.OtherSet {
                        kitCurrency = "scrap", kitCommand = "kit", fontOutlineColor = "0 0 0 1", fontOutlineThickness = "1", fade = 0.3f, mainColor = "0.25 0.25 0.25 0.65", secColor = "0.19 0.19 0.19 0.85", claimBtnColor = "0.31 0.37 0.20 1.0", oncdBtnColor = "0.56 0.20 0.15 1.0", infoBtnColor = "0.19 0.19 0.19 0.85",
                    }
                    , kits = new Dictionary<string, KitProperties> {
                    }
                    ,
                }
                ;
            }
        }
#endregion
#region Localization
        protected override void LoadDefaultMessages() {
            lang.RegisterMessages(new Dictionary<string, string> {
                ["info"]
                = "KIT INFO", ["claim"] = "CLAIM KIT", ["noPerms"] = "NO PERMISSION", ["noUses"] = "NO USES LEFT",
            }
            , this);
        }
        private string gl(string _message) => lang.GetMessage(_message, this);
#endregion
    }
}

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