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

FREE MurderSkinManager : 0.0.1 0.0.1

Нет прав для скачивания
C#:
// Все права принадлежат дискорд сообществу https://discord.gg/VgNHPpNrz6
// Requires: EMInterface
// Requires: ImageLibrary
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using UI = Oxide.Plugins.EMInterface.UI;
using UI4 = Oxide.Plugins.EMInterface.UI4;
using Oxide.Game.Rust.Cui;
using Oxide.Core.Plugins;
using UnityEngine;
using Newtonsoft.Json;

namespace Oxide.Plugins
{
    [Info("MurderSkinManager", "Apwned", "0.0.1")]
    [Description("Manages costumes&skins of MurderGameMode")]
    internal class MurderSkinManager: RustPlugin
    {
        //Permissions
        const string perm_skinmanager_use = "MurderSkinManager.use";
        [PluginReference] private Plugin ImageLibrary;
        public static MurderSkinManager Instance { get; private set; } = new MurderSkinManager();
        const string skinpanel_UI = "murderskinmanager.skinpanelui";

        #region Fields
        static Dictionary<ulong, SkinPreferences> skinPreferences = new Dictionary<ulong, SkinPreferences>();
        #endregion

        #region Config
        static ConfigData Configuration;
        class ConfigData
        {
            [JsonProperty(PropertyName = "Listed costumes in the UI")]
            //string is kit name
            public Hash<string, SkinInfo> costumes { get; set; }
            [JsonProperty(PropertyName = "Listed revolvers in the UI")]
            public Hash<string, SkinInfo> revolverskins { get; set; }
            [JsonProperty(PropertyName = "Listed melees in the UI")]
            public Hash<string, SkinInfo> meleeskins { get; set; }
        }

        protected override void LoadConfig()
        {
            base.LoadConfig();
            Configuration = Config.ReadObject<ConfigData>();

            Config.WriteObject(Configuration, true);
        }
        protected override void LoadDefaultConfig() => Configuration = new ConfigData()
        {
            costumes = new Hash<string, SkinInfo>()
            {
                //Costumes are checked with their Key names& works with Kits plugin
                new KeyValuePair<string, SkinInfo>("defaultcostume", new SkinInfo("https://www.dropbox.com/s/blqabdyptm4zyh1/defaultcostume.png?dl=1","defaultcostumethumbnail")),
                new KeyValuePair<string, SkinInfo>("costume1", new SkinInfo("https://www.dropbox.com/s/ht55nnqasu21wna/costume1.png?dl=1","costume1thumbnail")),
                new KeyValuePair<string, SkinInfo>("costume2", new SkinInfo("https://www.dropbox.com/s/utsffmqodistl42/costume2.png?dl=1","costume2thumbnail")),
                new KeyValuePair<string, SkinInfo>("costume3", new SkinInfo("https://www.dropbox.com/s/0jsl9e29q9vy9u4/costume3.png?dl=1","costume3thumbnail")),
                new KeyValuePair<string, SkinInfo>("costume4", new SkinInfo("","costume4thumbnail"))
            },
            meleeskins = new Hash<string, SkinInfo>()
            {
                new KeyValuePair<string, SkinInfo>("trainwreckstvcombatknife", new SkinInfo("https://rustlabs.com/img/skins/324/11098.png","trainwreckstvcombatknife","knife.combat",2545769270)),
                new KeyValuePair<string, SkinInfo>("spoonkidscombatspoon", new SkinInfo("https://rustlabs.com/img/skins/324/11075.png","spoonkidscombatspoon","knife.combat",2468530027)),
                new KeyValuePair<string, SkinInfo>("emeraldknife", new SkinInfo("https://rustlabs.com/img/skins/324/39404.png","emeraldknife","knife.combat",1738307827)),
                new KeyValuePair<string, SkinInfo>("teaceremonyknife", new SkinInfo("https://rustlabs.com/img/skins/324/38804.png","teaceremonyknife","knife.combat",2187058228)),
                new KeyValuePair<string, SkinInfo>("toothedknife", new SkinInfo("https://rustlabs.com/img/skins/324/35805.png","toothedknife","knife.combat",1952506333)),
                new KeyValuePair<string, SkinInfo>("dreadlordknife", new SkinInfo("https://rustlabs.com/img/skins/324/35100.png","dreadlordknife","knife.combat",1910941833)),
                new KeyValuePair<string, SkinInfo>("razorknife", new SkinInfo("https://rustlabs.com/img/skins/324/32607.png","razorknife", "knife.combat",1739818618)),
                new KeyValuePair<string, SkinInfo>("bronzeravenknife", new SkinInfo("https://rustlabs.com/img/skins/324/32402.png","bronzeravenknife","knife.combat",1730634130)),
                new KeyValuePair<string, SkinInfo>("nukecombatknife", new SkinInfo("https://rustlabs.com/img/skins/324/32307.png","nukecombatknife","knife.combat",1706692846)),
                new KeyValuePair<string, SkinInfo>("combatknifefromhell", new SkinInfo("https://rustlabs.com/img/skins/324/32207.png","combatknifefromhell", "knife.combat",1719795241)),
                new KeyValuePair<string, SkinInfo>("thugknife", new SkinInfo("https://rustlabs.com/img/skins/324/32200.png","thugknife","knife.combat",1715608877)),
                new KeyValuePair<string, SkinInfo>("emperorsknife", new SkinInfo("https://rustlabs.com/img/skins/324/32003.png","emperorsknife","combatknife",1707332381)),
                new KeyValuePair<string, SkinInfo>("carbonelitecombatknife", new SkinInfo("https://rustlabs.com/img/skins/324/32002.png","carbonelitecombatknife","knife.combat",1706788762)),
                new KeyValuePair<string, SkinInfo>("glorycombatknife", new SkinInfo("https://rustlabs.com/img/skins/324/31901.png","glorycombatknife","knife.combat",1702783691)),
                new KeyValuePair<string, SkinInfo>("phantomcombatknife", new SkinInfo("https://rustlabs.com/img/skins/324/31900.png","phantomcombatknife","knife.combat",1702530691))
            },
            revolverskins = new Hash<string, SkinInfo>()
            {
                new KeyValuePair<string, SkinInfo>("neosoulpython", new SkinInfo("https://rustlabs.com/img/skins/324/47507.png","neosoulpython","pistol.python",2779090705)),
                new KeyValuePair<string, SkinInfo>("peterpartvpython", new SkinInfo("https://rustlabs.com/img/skins/324/11073.png","peterpartvpython", "pistol.python", 2470433447)),
                new KeyValuePair<string, SkinInfo>("venomouspythonrevolver", new SkinInfo("https://rustlabs.com/img/skins/324/37200.png","venomouspythonrevolver","pistol.python",2059988260)),
                new KeyValuePair<string, SkinInfo>("nomercypython", new SkinInfo("https://rustlabs.com/img/skins/324/33505.png", "nomercypython","pistol.python",1812135451)),
                new KeyValuePair<string, SkinInfo>("celticpython", new SkinInfo("https://rustlabs.com/img/skins/324/30805.png","celticpython","pistol.python",1624620555)),
                new KeyValuePair<string, SkinInfo>("temperedpython", new SkinInfo("https://rustlabs.com/img/skins/324/29303.png","temperedpython","pistol.python",1529514494)),
                new KeyValuePair<string, SkinInfo>("duelistpython", new SkinInfo("https://rustlabs.com/img/skins/324/28507.png","duelistpython","pistol.python",1455062983)),
                new KeyValuePair<string, SkinInfo>("slaughterpython", new SkinInfo("https://rustlabs.com/img/skins/324/27711.png","slaughterpython", "pistol.python",1356665596)),
                new KeyValuePair<string, SkinInfo>("punkpython", new SkinInfo("https://rustlabs.com/img/skins/324/26704.png","punkpython","pistol.python",1328632407)),
                new KeyValuePair<string, SkinInfo>("holypython", new SkinInfo("https://rustlabs.com/img/skins/324/26214.png","holypython","pistol.python",1265214612)),
                new KeyValuePair<string, SkinInfo>("trausispython", new SkinInfo("https://rustlabs.com/img/skins/324/25508.png","trausispython","pistol.python",1223105431)),
                new KeyValuePair<string, SkinInfo>("phantompython", new SkinInfo("https://rustlabs.com/img/skins/324/25208.png","phantompython","pistol.python",1214609010))

            }
        };
        protected override void SaveConfig() => Config.WriteObject(Configuration, true);
        #endregion

        #region Hooks
        void OnServerInitialized()
        {
            RegisterImages();
            permission.RegisterPermission(perm_skinmanager_use, this);
        }

        private void OnPlayerDisconnected(BasePlayer player)
        {
            if (skinPreferences.ContainsKey(player.userID))
                skinPreferences.Remove(player.userID);
        }
        #endregion

        #region UI
        internal void AddImage(string imageName, string url) => ImageLibrary.Call("AddImage", url, imageName, 0UL, null);
        internal string GetImage(string name) => (string)ImageLibrary.Call("GetImage", name);

        void RegisterImages()
        {
            AddImage("skinmanagermainpanel.sm", "https://www.dropbox.com/s/vh4c4xetbzc7j8x/skinmanagermainpanel.png?dl=1");
            AddImage("revolverskinslabel.sm", "https://www.dropbox.com/s/83oiq7sqhh9ln7l/revolverskinslabel.png?dl=1");
            AddImage("previouspg.sm", "https://www.dropbox.com/s/02v7wmmzib9z0pf/previousarrow.png?dl=1");
            AddImage("nextpg.sm", "https://www.dropbox.com/s/ywwnnckcf52hv1t/nextarrow.png?dl=1");
            AddImage("pagenumborder.sm", "https://www.dropbox.com/s/m7tf0e9gdfoxhfk/pagenumborder.png?dl=1");
            AddImage("meleeskinslabel.sm", "https://www.dropbox.com/s/7e4su0ahaij109n/meleeskinslabel.png?dl=1");
            AddImage("labelequipped.sm", "https://www.dropbox.com/s/mpssd0ljujmwxkh/labelequipped.png?dl=1");
            AddImage("labelequip.sm", "https://www.dropbox.com/s/mvxxsl6rxc67ga2/labelequip.png?dl=1");
            AddImage("itemcontainer.sm", "https://www.dropbox.com/s/hytmr8tzcemuqyk/itemcontainer.png?dl=1");
            AddImage("costumeslabel.sm", "https://www.dropbox.com/s/8u1surmqluhcd81/costumeslabel.png?dl=1");
            AddImage("closebuttonrounded.sm", "https://www.dropbox.com/s/crzcqax8ar2nl47/closebuttonrounded.png?dl=1");
            AddImage("categoryhighlight.sm", "https://www.dropbox.com/s/r5lfl57tgnti4f7/categoryhighlight.png?dl=1");
            AddImage("categoryhighlight2.sm", "https://www.dropbox.com/s/0c9tn09qewvah5f/categoryhighlight2.png?dl=1");
            AddImage("categoryhighlight3.sm", "https://www.dropbox.com/s/ukhxslklg3ydhlb/categoryhighlight3.png?dl=1");

            RegisterItemThumbnails();
        }
        void RegisterItemThumbnails()
        {
            foreach(SkinInfo info in Configuration.costumes.Values)
                AddImage(info.thumbnailname, info.thumbnailurl);

            foreach(SkinInfo info in Configuration.meleeskins.Values)
                AddImage(info.thumbnailname, info.thumbnailurl);

            foreach(SkinInfo info in Configuration.revolverskins.Values)
                AddImage(info.thumbnailname, info.thumbnailurl);
        }
        [ConsoleCommand("murderskinmanager.closeui")]
        void cmdCloseSkinManager(ConsoleSystem.Arg arg)
        {
            CuiHelper.DestroyUi(arg.Player(), skinpanel_UI);
        }
        [ConsoleCommand("murderskinmanager.select")]
        void cmdSelectSkin(ConsoleSystem.Arg arg)
        {
            BasePlayer player = arg.Player();
            int itemno = arg.GetInt(0);
            PageCategory category = (PageCategory)arg.GetInt(1);
            int pagenum = arg.GetInt(2);

            if (!skinPreferences.ContainsKey(arg.Player().userID))
                skinPreferences.Add(player.userID, new SkinPreferences());

            switch (category)
            {
                case PageCategory.Costumes:
                    KeyValuePair<string,SkinInfo> costume = Configuration.costumes.ElementAt(itemno);
                    skinPreferences[player.userID].costume = costume.Key;
                    break;
                case PageCategory.RevolverSkins:
                    KeyValuePair<string, SkinInfo> revolverskin = Configuration.revolverskins.ElementAt(itemno);
                    skinPreferences[player.userID].revolverSkin.skinname = revolverskin.Key;
                    skinPreferences[player.userID].revolverSkin.skinID = revolverskin.Value.skinID;
                    skinPreferences[player.userID].revolverSkin.itemshortname = revolverskin.Value.shortname;
                    break;
                case PageCategory.MeleeSkins:
                    KeyValuePair<string, SkinInfo> meleeskin = Configuration.meleeskins.ElementAt(itemno);
                    skinPreferences[player.userID].meleeSkin.skinname = meleeskin.Key;
                    skinPreferences[player.userID].meleeSkin.skinID =meleeskin.Value.skinID;
                    skinPreferences[player.userID].meleeSkin.itemshortname =meleeskin.Value.shortname;
                    break;
            }
            SendSkinPanel(player, category, pagenum);
        }
        [ConsoleCommand("murderskinmanager.ui")]
        void cmdSkinUI(ConsoleSystem.Arg arg)
        {
            if (arg.GetInt(1) == -1 || !PageHasElements((PageCategory)arg.GetInt(0), arg.GetInt(1)))
                return;
            BasePlayer player = arg.Player();

            SendSkinPanel(player, (PageCategory)arg.GetInt(0), arg.GetInt(1));
        }
        void SendSkinPanel(BasePlayer player, PageCategory category, int pagenum = 0)
        {
            const string closebutton_UI = "murderskinmanager.closebuttonui";
            const string previouspage_UI = "murderskinmanager.previouspageui";
            const string nextpage_UI = "murderskinmanager.nextpageui";
            const string pagenumborder_UI = "murderskinmanager.pagenumborderui";
            const string costumescategory_UI = "murderskinmanager.costumescategoryui";
            const string revolverskincategory_UI = "murderskinmanager.revolverskincategoryui";
            const string meleeskincategory_UI = "murderskinmanager.meleeskincategoryui";

            CuiElementContainer container = UI.Container(skinpanel_UI, "0 0 0 0", UI.TransformToUI4(310f, 1610f, 217f, 937f), true,"Overall");
            UI.Image(container, skinpanel_UI, GetImage("skinmanagermainpanel.sm"), UI4.Full);
            UI.Image(container, closebutton_UI ,skinpanel_UI, GetImage("closebuttonrounded.sm"), UI.TransformToUI4(1227f, 1269f, 661f, 693f, 1300f, 720f));
            UI.Label(container, closebutton_UI, "X", 9, UI4.Full, TextAnchor.MiddleCenter, "1 1 1 1", "PermanentMarker.ttf");
            UI.Button(container, closebutton_UI, "0 0 0 0", string.Empty, 1, UI4.Full, "murderskinmanager.closeui");

            UI.Image(container, skinpanel_UI, GetImage("brandlogo"), UI.TransformToUI4(574f, 726f, 661f, 690f, 1300f, 720f));

            UI.Image(container, nextpage_UI,skinpanel_UI, GetImage("nextpg.sm"), UI.TransformToUI4(1257f, 1288f, 295f, 333f, 1300f, 720f));
            UI.Button(container, nextpage_UI, "0 0 0 0", string.Empty, 1, UI4.Full, $"murderskinmanager.ui {((int)category)} {pagenum + 1}");

            UI.Image(container, previouspage_UI,skinpanel_UI, GetImage("previouspg.sm"), UI.TransformToUI4(12f, 43f, 295f, 333f, 1300f, 720f));
            UI.Button(container, previouspage_UI, "0 0 0 0", string.Empty, 1, UI4.Full, $"murderskinmanager.ui {((int)category)} {pagenum - 1}");

            UI.Image(container, pagenumborder_UI,skinpanel_UI, GetImage("pagenumborder.sm"), UI.TransformToUI4(626f, 673f, 22f, 59f, 1300f, 720f));
            UI.Label(container, pagenumborder_UI, (pagenum + 1).ToString(), 15, UI4.Full);

            //Highlight selected tab
            if(category == PageCategory.Costumes)
                UI.Image(container, skinpanel_UI, GetImage("categoryhighlight.sm"), UI.TransformToUI4(31f, 220f, 568f, 646f, 1300f, 720f));
            else if(category == PageCategory.RevolverSkins)
                UI.Image(container, skinpanel_UI, GetImage("categoryhighlight2.sm"), UI.TransformToUI4(266f, 506f, 561f, 649f, 1300f, 720f));
            else if(category == PageCategory.MeleeSkins)
                UI.Image(container, skinpanel_UI, GetImage("categoryhighlight3.sm"), UI.TransformToUI4(530f, 735f, 561f, 648f, 1300f, 720f));

            UI.Image(container, costumescategory_UI,skinpanel_UI, GetImage("costumeslabel.sm"), UI.TransformToUI4(62f, 194.7f, 597f, 617.58f, 1300f, 720f));
            UI.Button(container, costumescategory_UI, "0 0 0 0", string.Empty, 5, UI4.Full, "murderskinmanager.ui 0 0");
            UI.Image(container, revolverskincategory_UI,skinpanel_UI, GetImage("revolverskinslabel.sm"), UI.TransformToUI4(300f, 476.16f, 597f, 617.58f, 1300, 720f));
            UI.Button(container, revolverskincategory_UI, "0 0 0 0", string.Empty, 5, UI4.Full, "murderskinmanager.ui 1 0");
            UI.Image(container, meleeskincategory_UI,skinpanel_UI, GetImage("meleeskinslabel.sm"), UI.TransformToUI4(565f, 707f, 597f, 617.58f, 1300f, 720f));
            UI.Button(container, meleeskincategory_UI, "0 0 0 0", string.Empty, 5, UI4.Full, "murderskinmanager.ui 2 0");

            for (int i = pagenum * 10; i < (pagenum +1) * 10; i++)
            {
                AddItemLabel(player ,container, category, skinpanel_UI, i, pagenum);
            }

            CuiHelper.DestroyUi(player, skinpanel_UI);
            CuiHelper.AddUi(player, container);
        }
        void AddItemLabel(BasePlayer player,CuiElementContainer container, PageCategory category, string parent, int position, int pagenum)
        {
            const string skinpanellabel_UI = "murderskinmanager.panellabelui";
            float xoffset = (position % 5) * 243.71f;
            int yoffset = (position / (5 + (pagenum * 10))) * 243;
            
            if(category == PageCategory.Costumes)
            {
                KeyValuePair<string, SkinInfo> skin = Configuration.costumes.ElementAtOrDefault(position);
                if (skin.Equals(default(KeyValuePair<string,SkinInfo>)))
                    return;
                UI.Image(container, skinpanellabel_UI, parent, GetImage("itemcontainer.sm"), UI.TransformToUI4(57f + xoffset, 267f + xoffset, 334f - yoffset, 542f - yoffset, 1300f, 720f));
                UI.Image(container, skinpanellabel_UI, GetImage(skin.Value.thumbnailname), UI.TransformToUI4(19f, 190f, 33f, 205f, 210f, 205f));
                if (!skinPreferences.ContainsKey(player.userID) || skinPreferences[player.userID]?.costume != skin.Key)
                {
                    UI.Image(container,skinpanellabel_UI, GetImage("labelequip.sm"), UI.TransformToUI4(0f, 209f, 0f, 31f, 210f, 205f));
                    if (permission.UserHasPermission(player.UserIDString, perm_skinmanager_use))
                    {
                        UI.Label(container, skinpanellabel_UI, "Equip", 12, UI.TransformToUI4(0f, 209f, 0f, 31f, 210f, 205f));
                        UI.Button(container, skinpanellabel_UI, "0 0 0 0", string.Empty, 5, UI.TransformToUI4(0f, 209f, 0f, 31f, 210f, 205f), $"murderskinmanager.select {position} {((int)category)} {pagenum}");
                    }
                    else
                    {
                        UI.Label(container, skinpanellabel_UI, "Buy <color=#fed559>V</color><color=#fcacb2>I</color><color=#fd70da>P</color>", 12, UI.TransformToUI4(0f, 209f, 0f, 31f, 210f, 205f));
                    }
                }
                else if(skinPreferences[player.userID].costume == skin.Key)
                {
                    UI.Image(container, skinpanellabel_UI, GetImage("labelequipped.sm"), UI.TransformToUI4(0f, 209f, 0f, 31f, 210f, 205f));
                    UI.Label(container, skinpanellabel_UI, "Equipped", 12, UI.TransformToUI4(0f, 209f, 0f, 31f, 210f, 205f));
                }
            }
            else if(category == PageCategory.RevolverSkins)
            {
                KeyValuePair<string, SkinInfo> skin = Configuration.revolverskins.ElementAtOrDefault(position);
                if (skin.Equals(default(KeyValuePair<string, SkinInfo>)))
                    return;
                UI.Image(container, skinpanellabel_UI, parent, GetImage("itemcontainer.sm"), UI.TransformToUI4(57f + xoffset, 267f + xoffset, 334f - yoffset, 542f - yoffset, 1300f, 720f));
                UI.Image(container, skinpanellabel_UI, GetImage(skin.Value.thumbnailname), UI.TransformToUI4(19f, 190f, 33f, 205f, 210f, 205f));
                if (!skinPreferences.ContainsKey(player.userID) || skinPreferences[player.userID]?.revolverSkin?.skinname != skin.Key)
                {
                    UI.Image(container, skinpanellabel_UI, GetImage("labelequip.sm"), UI.TransformToUI4(0f, 209f, 0f, 31f, 210f, 205f));
                    if (permission.UserHasPermission(player.UserIDString, perm_skinmanager_use))
                    {
                        UI.Label(container, skinpanellabel_UI, "Equip", 12, UI.TransformToUI4(0f, 209f, 0f, 31f, 210f, 205f));
                        UI.Button(container, skinpanellabel_UI, "0 0 0 0", string.Empty, 5, UI.TransformToUI4(0f, 209f, 0f, 31f, 210f, 205f), $"murderskinmanager.select {position} {((int)category)} {pagenum}");
                    }
                    else
                    {
                        UI.Label(container, skinpanellabel_UI, "Buy <color=#fed559>V</color><color=#fcacb2>I</color><color=#fd70da>P</color>", 12, UI.TransformToUI4(0f, 209f, 0f, 31f, 210f, 205f));
                    }
                }
                else if (skinPreferences[player.userID].revolverSkin.skinname == skin.Key)
                {
                    UI.Image(container, skinpanellabel_UI, GetImage("labelequipped.sm"), UI.TransformToUI4(0f, 209f, 0f, 31f, 210f, 205f));
                    UI.Label(container, skinpanellabel_UI, "Equipped", 12, UI.TransformToUI4(0f, 209f, 0f, 31f, 210f, 205f));
                }

            }
            else if(category == PageCategory.MeleeSkins)
            {
                KeyValuePair<string, SkinInfo> skin = Configuration.meleeskins.ElementAtOrDefault(position);
                if (skin.Equals(default(KeyValuePair<string, SkinInfo>)))
                    return;
                UI.Image(container, skinpanellabel_UI, parent, GetImage("itemcontainer.sm"), UI.TransformToUI4(57f + xoffset, 267f + xoffset, 334f - yoffset, 542f - yoffset, 1300f, 720f));
                UI.Image(container, skinpanellabel_UI, GetImage(skin.Value.thumbnailname), UI.TransformToUI4(19f, 190f, 33f, 205f, 210f, 205f));
                if (!skinPreferences.ContainsKey(player.userID) || skinPreferences[player.userID]?.meleeSkin?.skinname != skin.Key)
                {
                    UI.Image(container, skinpanellabel_UI, GetImage("labelequip.sm"), UI.TransformToUI4(0f, 209f, 0f, 31f, 210f, 205f));
                    if (permission.UserHasPermission(player.UserIDString, perm_skinmanager_use))
                    {
                        UI.Label(container, skinpanellabel_UI, "Equip", 12, UI.TransformToUI4(0f, 209f, 0f, 31f, 210f, 205f));
                        UI.Button(container, skinpanellabel_UI, "0 0 0 0", string.Empty, 5, UI.TransformToUI4(0f, 209f, 0f, 31f, 210f, 205f), $"murderskinmanager.select {position} {((int)category)} {pagenum}");
                    }
                    else
                    {
                        UI.Label(container, skinpanellabel_UI, "Buy <color=#fed559>V</color><color=#fcacb2>I</color><color=#fd70da>P</color>", 12, UI.TransformToUI4(0f, 209f, 0f, 31f, 210f, 205f));
                    }
                }
                else if (skinPreferences[player.userID].meleeSkin.skinname == skin.Key)
                {
                    UI.Image(container, skinpanellabel_UI, GetImage("labelequipped.sm"), UI.TransformToUI4(0f, 209f, 0f, 31f, 210f, 205f));
                    UI.Label(container, skinpanellabel_UI, "Equipped", 12, UI.TransformToUI4(0f, 209f, 0f, 31f, 210f, 205f));
                }
            }
        }
        bool PageHasElements(PageCategory category, int pagenum)
        {
            int startindex = pagenum * 10;
            if(category == PageCategory.Costumes)
            {
                if (Configuration.costumes.IsNullOrEmpty())
                    return false;
                return Configuration.costumes.Count > startindex;
            }
            if (category == PageCategory.MeleeSkins)
            {
                if (Configuration.meleeskins.IsNullOrEmpty())
                    return false;
                return Configuration.meleeskins.Count > startindex;
            }
            if (category == PageCategory.RevolverSkins)
            {
                if (Configuration.revolverskins.IsNullOrEmpty())
                    return false;
                return Configuration.revolverskins.Count > startindex;
            }
            return false;
        }
#endregion

        #region Classes
        public class SkinInfo
        {
            public SkinInfo(string _thumbnailurl, string _thumbnailname, string _shortname = "", ulong _skinID = 0)
            {
                thumbnailurl = _thumbnailurl;
                thumbnailname = _thumbnailname;
                shortname = _shortname;
                skinID = _skinID;
            }
            [JsonProperty("Url of the thumbnail")]
            public string thumbnailurl { get; set; }
            [JsonProperty("Name of thumbnail image (Registering image to ImageLibrary) (210x172)")]
            public string thumbnailname { get; set; }
            [JsonProperty("SkinID")]
            public ulong skinID { get; set; }
            [JsonProperty("Item short name")]
            public string shortname {  get; set; }
        }

        public class SkinPreferences
        {
            public string costume { get; set; } = "defaultcostume";
            public Skin meleeSkin { get; set; } = new Skin();
            public Skin revolverSkin { get; set; } = new Skin();

            public class Skin
            {
                public ulong skinID { get; set; } = 0;
                public string skinname { get; set; } =String.Empty;
                public string itemshortname { get; set; } = String.Empty;
            }
        }
        #endregion

        #region Enums
        enum PageCategory { Costumes, RevolverSkins, MeleeSkins}
        #endregion

        #region API
        public static SkinPreferences GetPreferencesOfPlayer(BasePlayer player)
        {
            if(skinPreferences.ContainsKey(player.userID))
                return skinPreferences[player.userID];
            return new SkinPreferences();
        }
        #endregion
    }
}

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