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

FREE SvPanUi : 2.2.5 2.2.5

Нет прав для скачивания
C#:
// Все права принадлежат дискорд сообществу https://discord.gg/VgNHPpNrz6
 //Thank you for purchasing my plugin!
//It is forbidden to distribute this plugin for free and for a fee.//It is allowed to modify the plugin.//Discord of BUDAPESHTER#7439
using System;
using System.Collections.Generic;
using System.Linq;
using ConVar;
using Newtonsoft.Json;
using Oxide.Core;
using Oxide.Core.Libraries.Covalence;
using Oxide.Core.Plugins;
using Oxide.Game.Rust.Cui;
using UnityEngine;

namespace Oxide.Plugins
{
    [Info("SvPanUi", "BUDAPESHTER#7439", "2.2.5")]
    [Description("A great plugin for displaying server events and online players!")]
    class SvPanUi : RustPlugin
    {
        private PluginConfig _config;
        public string Layer = "LayerUi";
        public bool IsAir, IsHeli, IsTank, IsCargo, IsCh;
        public List<string> xClose = new List<string>();

        [PluginReference] 
        private Plugin ImageLibrary, Economics, ServerRewards;
        #region Hooks
        void OnServerInitialized()
        {
            if (!ImageLibrary)
            {
                PrintError("The plugin is not installed on the server [ImageLibrary]");
                Interface.Oxide.UnloadPlugin(Title);
                return;
            }
            if (!Economics) PrintError("The plugin is not installed on the server [Economics]");         
            if (!ServerRewards) PrintError("The plugin is not installed on the server [ServerRewards]");            
            EventCheck();
            if (_config.Logo.LogoStat)
            {
                ImageLibrary.Call("AddImage", _config.Image.Logo, "logo");
            }
            ImageLibrary.Call("AddImage", _config.Image.Bred, "bred");
            ImageLibrary.Call("AddImage", _config.Image.Air, "air");
            ImageLibrary.Call("AddImage", _config.Image.Cargo, "cargo");
            ImageLibrary.Call("AddImage", _config.Image.Heli, "heli");
            ImageLibrary.Call("AddImage", _config.Image.Ch, "ch");
            timer.Once(5, () =>
            {
                foreach (var player in BasePlayer.activePlayerList)
                {
                    if (player.IsNpc || player.IsSleeping() || player.IsReceivingSnapshot) continue;

                    if (!xClose.Contains($"{player.userID}")) CreatePanel(player);                                         
                }
                if (_config.Time.TimeUi)
                {
                    timer.Every(_config.Time.Timer, () =>
                    {
                        foreach (var players in BasePlayer.activePlayerList) if (!xClose.Contains($"{players.userID}")) EventInit(players, "time");
                    });
                }
                if (_config.Rewards.RewardStats)
                {
                    timer.Every(_config.Rewards.TimeRew, () =>
                    {
                        foreach (var players in BasePlayer.activePlayerList) if (!xClose.Contains($"{players.userID}")) EventInit(players, "sreward");
                    });
                }
            });       
        }       
        object OnPlayerSleep(BasePlayer player)
        {
            foreach (var players in BasePlayer.activePlayerList)
            {
                timer.Once(5, () =>
                {
                    if (!xClose.Contains($"{players.userID}")) EventInit(players, "online");
                });
            }
            return null;
        }
       void OnPlayerSleepEnded(BasePlayer player)
        {
            foreach (var players in BasePlayer.activePlayerList)
            {
                timer.Once(5, () =>
                {
                    if (!xClose.Contains($"{players.userID}")) EventInit(players, "online");
                });
            }
        }
        void Loaded()
        {
            Puts("Loaded SvPanUi!");
        }
        void Unload()
        {
            SaveCom();
            foreach (var player in BasePlayer.activePlayerList)
            {
                CuiHelper.DestroyUi(player, Layer);
            }
        }
        private string GetImg(string name)
        {
            return (string)ImageLibrary?.Call("GetImage", name) ?? "";
        }
        #region Config
        private class PluginConfig
        {
            [JsonProperty("MainPanel Settings")]
            public MainSettings MainPanel;
            [JsonProperty("NameServer Settings")]
            public TitleSettings Text;
            [JsonProperty("Economics Settings")]
            public EconomicsSettings Economics;
            [JsonProperty("ServerRewards Settings")]
            public RewardsSettings Rewards;
            [JsonProperty("Time Settings")]
            public TimeSettings Time;
            [JsonProperty("Image Settings")]
            public ImageSettings Image;
            [JsonProperty("OnlinePanel Settings")]
            public OnlineSettings OnlinePanel;
            [JsonProperty("Bradley Icon Settings")]
            public BradleySettings Bradley;
            [JsonProperty("Air Icon Settings")]
            public AirSettings Air;
            [JsonProperty("Cargo Icon Settings")]
            public CargoSettings Cargo;
            [JsonProperty("Heli Icon Settings")]
            public HeliSettings Heli;
            [JsonProperty("Ch Icon Settings")]
            public ChSettings Ch;
            [JsonProperty("Logo Icon Settings")]
            public LogoSettings Logo;

            #region MainSettings
            internal class MainSettings
            {
                [JsonProperty("AnchorMin")] public string AnchorMin;
                [JsonProperty("AnchorMax")] public string AnchorMax;
                [JsonProperty("OffsetMin")] public string OffsetMin;
                [JsonProperty("OffsetMax")] public string OffsetMax;
                [JsonProperty("Overlay or Hud")] public string UiOver;
                [JsonProperty("Chat Tag")] public string Tag;
            }
            #endregion
            #region EconomicsSettings
            internal class EconomicsSettings
            {
                [JsonProperty("On/Off (true/false)")] public bool EconStats;
                [JsonProperty("Parent OffsetMin")] public string OffsetMin;
                [JsonProperty("Parent OffsetMax")] public string OffsetMax;
                [JsonProperty("Parent Color")] public string ParenColor;
                [JsonProperty("$ OffsetMin")] public string OffsetMinSign;
                [JsonProperty("$ OffsetMax")] public string OffsetMaxSign;
                [JsonProperty("$ font size")] public int SizeFontSign;
                [JsonProperty("$ text color")] public string ColorSign;
                [JsonProperty("$ text")] public string TextSign;
                [JsonProperty("Balance text color")] public string ColorBal;
                [JsonProperty("Balance text font size")] public int SizeFontBal;
                [JsonProperty("Balance text OffsetMin")] public string OffsetMinBal;
                [JsonProperty("Balance text OffsetMax")] public string OffsetMaxBal;
            }
            #endregion
            #region RewardsSettings
            internal class RewardsSettings
            {
                [JsonProperty("On/Off (true/false)")] public bool RewardStats;
                [JsonProperty("Parent OffsetMin")] public string OffsetMin;
                [JsonProperty("Parent OffsetMax")] public string OffsetMax;
                [JsonProperty("Parent Color")] public string ParenColor;
                [JsonProperty("RP OffsetMin")] public string OffsetMinSign;
                [JsonProperty("RP OffsetMax")] public string OffsetMaxSign;
                [JsonProperty("RP font size")] public int SizeFontSign;
                [JsonProperty("RP text color")] public string ColorSign;
                [JsonProperty("RP text")] public string TextSign;
                [JsonProperty("Points color")] public string ColorRew;
                [JsonProperty("Points font size")] public int SizeFontRew;
                [JsonProperty("Points OffsetMin")] public string OffsetMinRew;
                [JsonProperty("Points OffsetMax")] public string OffsetMaxRew;
                [JsonProperty("Timer")] public int TimeRew;
            }
            #endregion
            #region TimeSettings
            internal class TimeSettings
            {
                [JsonProperty("AnchorMin")] public string AnchorMin;
                [JsonProperty("AnchorMax")] public string AnchorMax;
                [JsonProperty("OffsetMin")] public string OffsetMin;
                [JsonProperty("OffsetMax")] public string OffsetMax;
                [JsonProperty("Font size")] public int SizeFont;
                [JsonProperty("Font")] public string Font;
                [JsonProperty("Align")] public TextAnchor Align;
                [JsonProperty("Timer")] public int Timer;
                [JsonProperty("Time true/false")] public bool TimeUi;
            }
            #endregion
            #region TitleSettings
            internal class TitleSettings
            {
                [JsonProperty("AnchorMin")] public string AnchorMin;
                [JsonProperty("AnchorMax")] public string AnchorMax;
                [JsonProperty("OffsetMin")] public string OffsetMin;
                [JsonProperty("OffsetMax")] public string OffsetMax;
                [JsonProperty("Align")] public TextAnchor Align;
                [JsonProperty("Text color")] public string Color;
                [JsonProperty("NameServer")] public string TitleText;
                [JsonProperty("Font size")] public int SizeFont;
                [JsonProperty("Font")] public string Font;
            }
            #endregion
            #region ImageSettings
            internal class ImageSettings //images
            {
                [JsonProperty("Color of inactive images")] public string Color;
                [JsonProperty("Color of active images")] public string ColorAk;
                [JsonProperty("Picture Bradley")] public string Bred;
                [JsonProperty("Picture Air")] public string Air;
                [JsonProperty("Picture Cargo")] public string Cargo;
                [JsonProperty("Picture Heli")] public string Heli;
                [JsonProperty("Picture Ch")] public string Ch;
                [JsonProperty("Picture Logo")] public string Logo;

            }
            #endregion
            #region OnlinePanelSettings
            internal class OnlineSettings //onlinepanel
            {
                [JsonProperty("TextOnline")] public string OnlineTxt;
                [JsonProperty("ColorText")] public string ColorText;
                [JsonProperty("Align")] public TextAnchor Align;
                [JsonProperty("Font size")] public int SizeFont;
                [JsonProperty("Font")] public string Font;
                [JsonProperty("AnchorMin")] public string AnchorMin;
                [JsonProperty("AnchorMax")] public string AnchorMax;
                [JsonProperty("OffsetMin")] public string OffsetMin;
                [JsonProperty("OffsetMax")] public string OffsetMax;

            }
            #endregion
            #region Icon settings
            internal class LogoSettings
            {
                [JsonProperty("On/Off Logo(true/false)")] public bool LogoStat;
                [JsonProperty("AnchorMin")] public string AnchorMin;
                [JsonProperty("AnchorMax")] public string AnchorMax;
                [JsonProperty("OffsetMin")] public string OffsetMin;
                [JsonProperty("OffsetMax")] public string OffsetMax;
            }
            internal class BradleySettings
            {
                [JsonProperty("AnchorMin")] public string AnchorMin;
                [JsonProperty("AnchorMax")] public string AnchorMax;
                [JsonProperty("OffsetMin")] public string OffsetMin;
                [JsonProperty("OffsetMax")] public string OffsetMax;
            }
            internal class AirSettings
            {
                [JsonProperty("AnchorMin")] public string AnchorMin;
                [JsonProperty("AnchorMax")] public string AnchorMax;
                [JsonProperty("OffsetMin")] public string OffsetMin;
                [JsonProperty("OffsetMax")] public string OffsetMax;
            }
            internal class CargoSettings
            {
                [JsonProperty("AnchorMin")] public string AnchorMin;
                [JsonProperty("AnchorMax")] public string AnchorMax;
                [JsonProperty("OffsetMin")] public string OffsetMin;
                [JsonProperty("OffsetMax")] public string OffsetMax;
            }
            internal class HeliSettings
            {
                [JsonProperty("AnchorMin")] public string AnchorMin;
                [JsonProperty("AnchorMax")] public string AnchorMax;
                [JsonProperty("OffsetMin")] public string OffsetMin;
                [JsonProperty("OffsetMax")] public string OffsetMax;
            }
            internal class ChSettings
            {
                [JsonProperty("AnchorMin")] public string AnchorMin;
                [JsonProperty("AnchorMax")] public string AnchorMax;
                [JsonProperty("OffsetMin")] public string OffsetMin;
                [JsonProperty("OffsetMax")] public string OffsetMax;
            }
            #endregion
        }
        protected override void LoadDefaultConfig()
        {
            _config = new PluginConfig
            {
                MainPanel = new PluginConfig.MainSettings()
                {
                    AnchorMin = "0 1",
                    AnchorMax = "0 1",
                    OffsetMin = "0 0",
                    OffsetMax = "0 0",
                    UiOver = "Hud",
                    Tag = "SvPanUi",

                },
                Economics = new PluginConfig.EconomicsSettings()
                {
                    EconStats = true,
                    OffsetMin = "270 -25",
                    OffsetMax = "370 -5",
                    ParenColor = "0.11 0.38 0.16 0.7",
                    OffsetMinSign = "0 0",
                    OffsetMaxSign = "30 20",
                    SizeFontSign = 14,
                    ColorSign = "#fff",
                    TextSign = "$",
                    OffsetMinBal = "30 0",
                    OffsetMaxBal = "90 20",
                    ColorBal = "#fff",
                    SizeFontBal = 14         
                },
                Rewards = new PluginConfig.RewardsSettings()
                {
                    RewardStats = true,
                    OffsetMin = "270 -60",
                    OffsetMax = "370 -40",
                    ParenColor = "0.11 0.38 0.16 0.7",
                    OffsetMinSign = "0 0",
                    OffsetMaxSign = "30 20",
                    SizeFontSign = 14,
                    ColorSign = "#fff",
                    TextSign = "RP",
                    OffsetMinRew = "30 0",
                    OffsetMaxRew = "90 20",
                    ColorRew = "#fff",
                    SizeFontRew = 14,
                    TimeRew = 30
                },
                Time = new PluginConfig.TimeSettings()
                {
                    AnchorMin = "0 0",
                    AnchorMax = "0 0",
                    OffsetMin = "5 -78",
                    OffsetMax = "59 -60",
                    Font = "robotocondensed-bold.ttf",
                    SizeFont = 14,
                    Align = TextAnchor.MiddleCenter,
                    Timer = 10,
                    TimeUi = true
                },
                Image = new PluginConfig.ImageSettings()
                {
                    Color = "0 0 0 0.90",
                    ColorAk = "255 106 0 0.90",
                    Bred = "https://i.ibb.co/pLg31pD/22.png",
                    Air = "https://i.ibb.co/gdqxJp8/AirSv.png",
                    Cargo = "https://i.ibb.co/8sxWfrJ/4.png",
                    Heli = "https://i.ibb.co/cXNqzNd/1.png",
                    Ch = "https://i.ibb.co/wdLvftb/ChSv.png",
                    Logo = "https://i.ibb.co/WPpDvJk/image.png"
                },

                Text = new PluginConfig.TitleSettings()
                {
                    TitleText = "SERVERNAME",
                    Color = "1 1 1 0.74",
                    SizeFont = 16,
                    AnchorMin = "0 0",
                    AnchorMax = "0 0",
                    OffsetMin = "65 -24",
                    OffsetMax = "255 -2",
                    Font = "robotocondensed-bold.ttf",
                    Align = TextAnchor.MiddleCenter
                },
                OnlinePanel = new PluginConfig.OnlineSettings()
                {
                    OnlineTxt = "<size=12><color=#fff>ONLINE</color>: <color=#fff>{0}</color> | <color=#fff>OFFLINE</color>: <color=#fff>{1}</color> | <color=#fff>JOIN</color>: <color=#fff>{2}</color></size>",
                    SizeFont = 12,
                    ColorText = "#ffffffe9",
                    Font = "robotocondensed-bold.ttf",
                    Align = TextAnchor.MiddleCenter,
                    AnchorMin = "0 0",
                    AnchorMax = "0 0",
                    OffsetMin = "65 -60",
                    OffsetMax = "255 -45"
                },
                Logo = new PluginConfig.LogoSettings()
                {
                    AnchorMin = "0 0",
                    AnchorMax = "0 0",
                    OffsetMin = "3 -56",
                    OffsetMax = "60 -8",
                    LogoStat = true
                },
                Bradley = new PluginConfig.BradleySettings()
                {
                    AnchorMin = "0 0",
                    AnchorMax = "0 0",
                    OffsetMin = "65 -45",
                    OffsetMax = "95 -20"
                },
                Air = new PluginConfig.AirSettings()
                {
                    AnchorMin = "0 0",
                    AnchorMax = "0 0",
                    OffsetMin = "105 -45",
                    OffsetMax = "135 -20"
                },
                Cargo = new PluginConfig.CargoSettings()
                {
                    AnchorMin = "0 0",
                    AnchorMax = "0 0",
                    OffsetMin = "145 -45",
                    OffsetMax = "175 -20"
                },
                Heli = new PluginConfig.HeliSettings()
                {
                    AnchorMin = "0 0",
                    AnchorMax = "0 0",
                    OffsetMin = "185 -45",
                    OffsetMax = "215 -20"
                },
                Ch = new PluginConfig.ChSettings()
                {
                    AnchorMin = "0 0",
                    AnchorMax = "0 0",
                    OffsetMin = "225 -45",
                    OffsetMax = "255 -20"
                }

            };
        }
        protected override void LoadConfig() //load config
        {
            base.LoadConfig();
            _config = Config.ReadObject<PluginConfig>();
        }
        protected override void SaveConfig()
        {
            Config.WriteObject(_config);
        }

        #endregion
        #region Data
        private void Init()
        {
            LoadData();
        }
        private void OnServerSave()
        {
            int randomSave = UnityEngine.Random.Range(5, 20);
            timer.Once(randomSave, () =>
            {
                SaveCom();
            });            
        }
        private void SaveCom()
        {
            Interface.Oxide.DataFileSystem.WriteObject($"{Name}/PlayerList", xClose);
        }
        private void LoadData()
        {
            try
            {
                xClose = Interface.Oxide.DataFileSystem.ReadObject<List<string>>($"{Name}/PlayerList");
            }
            catch (Exception e)
            {
                PrintError(e.ToString());
            }
            if (xClose == null) xClose = new List<string>();
        }
        #endregion
        private void OnPlayerConnected(BasePlayer player)
        {
            if (!xClose.Contains($"{player.userID}")) CreatePanel(player);
            
            foreach (var players in BasePlayer.activePlayerList)
            {
                timer.Once(3, () =>
                {
                    if (!xClose.Contains($"{players.userID}")) EventInit(players, "online");
                });
            }
        }
        private void OnPlayerDisconnected(BasePlayer player, string reason)
        {
            foreach (var players in BasePlayer.activePlayerList)
            {
                timer.Once(3, () =>
                {
                    if (!xClose.Contains($"{players.userID}")) EventInit(players, "online");
                });
            }
        }
        #endregion
        #region Economics Hook
        private void OnEconomicsBalanceUpdated(string playerId, double amount)
        {
            BasePlayer player = BasePlayer.FindAwakeOrSleeping(playerId);
            if (player == null || !player.IsConnected) return;
            if (!xClose.Contains($"{player.userID}")) EventInit(player, "balance");
        }
        #endregion
        #region Commands
        [ChatCommand("xclose")]
        void ClosePanel(BasePlayer player)
        {
            if (!xClose.Contains($"{player.userID}"))
            {
                xClose.Add($"{player.userID}");
                CuiHelper.DestroyUi(player, Layer);
                SendChat(player, String.Format(lang.GetMessage("ClosePanel", this), _config.MainPanel.Tag));
            }
            else 
            {
                xClose.Remove($"{player.userID}");
                CreatePanel(player);
                SendChat(player, String.Format(lang.GetMessage("OpenPanel", this), _config.MainPanel.Tag));
            }           
        }
        #endregion
        #region UI
        void CreatePanel(BasePlayer player)
        {
            if (player == null) return;
            var SleepersCount = BasePlayer.sleepingPlayerList.Count.ToString();
            var JoiningCount = ServerMgr.Instance.connectionQueue.Joining.ToString();
            CuiHelper.DestroyUi(player, Layer);
            var cont = new CuiElementContainer //parent panel
            {
                {
                    new CuiPanel {
                        RectTransform = 
                        {
                            AnchorMin = _config.MainPanel.AnchorMin, 
                            AnchorMax = _config.MainPanel.AnchorMax
                        },
                        Image = 
                        {
                            Color = "0 0 0 0"
                        }
                    },
                    _config.MainPanel.UiOver, Layer
                }
            };
            //add logo
            if (_config.Logo.LogoStat)
            {
                cont.Add(new CuiElement
                {
                    Parent = Layer,
                    Name = "Logo",
                    Components =
                    {
                        new CuiRawImageComponent {  Png = GetImg("logo") },
                        new CuiRectTransformComponent
                        {
                            AnchorMin = _config.Logo.AnchorMin,
                            AnchorMax = _config.Logo.AnchorMax,
                            OffsetMin = _config.Logo.OffsetMin,
                            OffsetMax = _config.Logo.OffsetMax
                        }
                    }
                });
            }
            
            //add time
            if (_config.Time.TimeUi)
            {
                cont.Add(new CuiLabel
                {
                    RectTransform =
                    {
                    AnchorMin = _config.Time.AnchorMin,
                    AnchorMax = _config.Time.AnchorMax,
                    OffsetMin = _config.Time.OffsetMin,
                    OffsetMax = _config.Time.OffsetMax
                    },
                    Text = { Text = TOD_Sky.Instance.Cycle.DateTime.ToString("HH:mm"),
                    FontSize = _config.Time.SizeFont,
                    Font = _config.Time.Font,
                    Align = _config.Time.Align
                    }
                }, Layer, Layer + ".Time");
            }
            //add name
            cont.Add(new CuiElement
            {
                Parent = Layer,
                Name = ".Name",
                Components = {
                     new CuiTextComponent()
                     {
                        Color = _config.Text.Color,
                        Text = _config.Text.TitleText,
                        FontSize = _config.Text.SizeFont,
                        Align = _config.Text.Align,
                        Font = _config.Text.Font

                     },
                      new CuiOutlineComponent 
                      { 
                          Color = "0.3 0.3 0.3 0.62", 
                          Distance = "0.5 0.5" 
                      },
                        new CuiRectTransformComponent
                        {
                            AnchorMin = _config.Text.AnchorMin,
                            AnchorMax = _config.Text.AnchorMax,
                            OffsetMin = _config.Text.OffsetMin,
                            OffsetMax = _config.Text.OffsetMax
                        }
                }
            });
            //add brad
            cont.Add(new CuiPanel()
            {
                RectTransform =
                            {
                            AnchorMin = _config.Bradley.AnchorMin,
                            AnchorMax = _config.Bradley.AnchorMax,
                            OffsetMin = _config.Bradley.OffsetMin,
                            OffsetMax = _config.Bradley.OffsetMax
                            },

                Image =
                            {
                                Color = _config.Image.Color, Png = GetImg("bred")
                            },
            }, Layer, Layer + ".Brad");
            //add Air
            cont.Add(new CuiPanel()
            {
                RectTransform =
                            {
                            AnchorMin = _config.Air.AnchorMin,
                            AnchorMax = _config.Air.AnchorMax,
                            OffsetMin = _config.Air.OffsetMin,
                            OffsetMax = _config.Air.OffsetMax
                            },

                Image =
                            {
                                Color = _config.Image.Color, Png = GetImg("air")
                            },
            }, Layer, Layer + ".Air");
            //add Cargo
            cont.Add(new CuiPanel()
            {
                RectTransform =
                            {
                            AnchorMin = _config.Cargo.AnchorMin,
                            AnchorMax = _config.Cargo.AnchorMax,
                            OffsetMin = _config.Cargo.OffsetMin,
                            OffsetMax = _config.Cargo.OffsetMax
                            },

                Image =
                            {
                                Color = _config.Image.Color, Png = GetImg("cargo")
                            },
            }, Layer, Layer + ".Cargo");
            //add Heli
            cont.Add(new CuiPanel()
            {
                RectTransform =
                            {
                            AnchorMin = _config.Heli.AnchorMin,
                            AnchorMax = _config.Heli.AnchorMax,
                            OffsetMin = _config.Heli.OffsetMin,
                            OffsetMax = _config.Heli.OffsetMax
                            },

                Image =
                            {
                                Color = _config.Image.Color, Png = GetImg("heli")
                            },
            }, Layer, Layer + ".Heli");
            //add Ch
            cont.Add(new CuiPanel()
            {
                RectTransform =
                            {
                            AnchorMin = _config.Ch.AnchorMin,
                            AnchorMax = _config.Ch.AnchorMax,
                            OffsetMin = _config.Ch.OffsetMin,
                            OffsetMax = _config.Ch.OffsetMax
                            },

                Image =
                            {
                                Color = _config.Image.Color, Png = GetImg("ch")
                            },
            }, Layer, Layer + ".Ch");
            //add econom
            if(_config.Economics.EconStats && Economics)
            {
               
                cont.Add(new CuiPanel
                {
                    CursorEnabled = false,
                    RectTransform = 
                    {
                            AnchorMin = "0 0",
                            AnchorMax = "0 0",
                            OffsetMin = _config.Economics.OffsetMin,
                            OffsetMax = _config.Economics.OffsetMax
                    },
                    Image = 
                    { 
                        Color = _config.Economics.ParenColor
                    }
                }, Layer, Layer + ".Econom");

                cont.Add(new CuiElement
                {
                    Parent = Layer + ".Econom",
                    Name = ".TextEcom",
                    Components = {
                     new CuiTextComponent()
                     {
                        Color = _config.Economics.ColorSign,
                        Text = _config.Economics.TextSign,
                        FontSize = _config.Economics.SizeFontSign,
                        Align = TextAnchor.MiddleCenter,
                        Font = "robotocondensed-bold.ttf"

                     },
                      new CuiOutlineComponent
                      {
                          Color = "0.3 0.3 0.3 0.62",
                          Distance = "0.5 0.5"
                      },
                        new CuiRectTransformComponent
                        {
                            AnchorMin = "0 0",
                            AnchorMax = "0 0",
                            OffsetMin = _config.Economics.OffsetMinSign,
                            OffsetMax = _config.Economics.OffsetMaxSign
                        }
                }
                });
                cont.Add(new CuiElement
                {
                    Parent = Layer + ".Econom",
                    Name = ".TextBal",
                    Components = {
                     new CuiTextComponent()
                     {
                        Color = _config.Economics.ColorBal,
                        Text = FormattedMoney(player),
                        FontSize = _config.Economics.SizeFontBal,
                        Align = TextAnchor.MiddleCenter,
                        Font = "robotocondensed-bold.ttf"

                     },
                      new CuiOutlineComponent
                      {
                          Color = "0.3 0.3 0.3 0.62",
                          Distance = "0.5 0.5"
                      },
                        new CuiRectTransformComponent
                        {
                            AnchorMin = "0 0",
                            AnchorMax = "0 0",
                            OffsetMin = _config.Economics.OffsetMinBal,
                            OffsetMax = _config.Economics.OffsetMaxBal
                        }
                }
                });
            }
            //serverreward
            if (_config.Rewards.RewardStats && ServerRewards)
            {
                cont.Add(new CuiPanel
                {
                    CursorEnabled = false,
                    RectTransform =
                    {
                            AnchorMin = "0 0",
                            AnchorMax = "0 0",
                            OffsetMin = _config.Rewards.OffsetMin,
                            OffsetMax = _config.Rewards.OffsetMax
                    },
                    Image =
                    {
                        Color = _config.Rewards.ParenColor
                    }
                }, Layer, Layer + ".Rp");
                cont.Add(new CuiElement
                {
                    Parent = Layer + ".Rp",
                    Name = ".TextRpSign",
                    Components = {
                     new CuiTextComponent()
                     {
                        Color = _config.Rewards.ColorSign,
                        Text = _config.Rewards.TextSign,
                        FontSize = _config.Rewards.SizeFontSign,
                        Align = TextAnchor.MiddleCenter,
                        Font = "robotocondensed-bold.ttf"

                     },
                      new CuiOutlineComponent
                      {
                          Color = "0.3 0.3 0.3 0.62",
                          Distance = "0.5 0.5"
                      },
                        new CuiRectTransformComponent
                        {
                            AnchorMin = "0 0",
                            AnchorMax = "0 0",
                            OffsetMin = _config.Rewards.OffsetMinSign,
                            OffsetMax = _config.Rewards.OffsetMaxSign
                        }
                }
                });
                cont.Add(new CuiElement
                {
                    Parent = Layer + ".Rp",
                    Name = ".TextRp",
                    Components = {
                     new CuiTextComponent()
                     {
                        Color = _config.Rewards.ColorRew,
                        Text = $"{GetPoint(player)}",
                        FontSize = _config.Rewards.SizeFontRew,
                        Align = TextAnchor.MiddleCenter,
                        Font = "robotocondensed-bold.ttf"

                     },
                      new CuiOutlineComponent
                      {
                          Color = "0.3 0.3 0.3 0.62",
                          Distance = "0.5 0.5"
                      },
                      new CuiRectTransformComponent
                      {
                          AnchorMin = "0 0",
                          AnchorMax = "0 0",
                          OffsetMin = _config.Rewards.OffsetMinRew,
                          OffsetMax = _config.Rewards.OffsetMaxRew
                      }
                }
                });
            }
            //add online 
            cont.Add(new CuiElement
            {
                Parent = Layer,
                Name = Layer + ".Online",
                Components =
                {

                     new CuiTextComponent { 
                         Color = _config.OnlinePanel.ColorText, FontSize = _config.OnlinePanel.SizeFont, Align = _config.OnlinePanel.Align,
                         Text = string.Format(_config.OnlinePanel.OnlineTxt, BasePlayer.activePlayerList.Count, BasePlayer.sleepingPlayerList.Count,ServerMgr.Instance.connectionQueue.Joining + ServerMgr.Instance.connectionQueue.Queued)
                        },
                    new CuiOutlineComponent { Color = "0 0 0 1", Distance = "0.5 0.5" },
                    new CuiRectTransformComponent {AnchorMin = $"{_config.OnlinePanel.AnchorMin}", AnchorMax = $"{_config.OnlinePanel.AnchorMax}", OffsetMin = $"{_config.OnlinePanel.OffsetMin}", OffsetMax = $"{_config.OnlinePanel.OffsetMax}" }
                }
            });
            
            CuiHelper.AddUi(player, cont);
            EventInit(player, "air");
            EventInit(player, "ch");
            EventInit(player, "heli");
            EventInit(player, "cargo");
            EventInit(player, "bradley");
        }
        #endregion
        #region Check Event
        void OnEntitySpawned(BaseNetworkable entity)
        {
            if (entity is BaseHelicopter)
            {
                IsHeli = true;
                foreach (var basePlayer in BasePlayer.activePlayerList)
                    if (!xClose.Contains($"{basePlayer.userID}")) EventInit(basePlayer, "heli");
            }
            else if (entity is BradleyAPC)
            {
                IsTank = true;
                foreach (var basePlayer in BasePlayer.activePlayerList)
                    if (!xClose.Contains($"{basePlayer.userID}")) EventInit(basePlayer, "bradley");
            }
            else if (entity is CargoPlane)
            {
                IsAir = true;
                foreach (var basePlayer in BasePlayer.activePlayerList)
                    if (!xClose.Contains($"{basePlayer.userID}")) EventInit(basePlayer, "air");
            }
            else if (entity is CargoShip)
            {
                IsCargo = true;
                foreach (var basePlayer in BasePlayer.activePlayerList)
                    if (!xClose.Contains($"{basePlayer.userID}")) EventInit(basePlayer, "cargo");
            }
            else if (entity is CH47Helicopter)
            {
                IsCh = true;
                foreach (var basePlayer in BasePlayer.activePlayerList)
                    if (!xClose.Contains($"{basePlayer.userID}")) EventInit(basePlayer, "ch");
            }
        }
        void OnEntityKill(BaseNetworkable entity)
        {
            if (entity is CargoPlane)
            {
                IsAir = false;
                foreach (var basePlayer in BasePlayer.activePlayerList)
                    if (!xClose.Contains($"{basePlayer.userID}")) EventInit(basePlayer, "air");
            }
            else if (entity is CargoShip)
            {
                IsCargo = false;
                foreach (var basePlayer in BasePlayer.activePlayerList)
                    if (!xClose.Contains($"{basePlayer.userID}")) EventInit(basePlayer, "cargo");
            }
            else if (entity is BaseHelicopter)
            {
                IsHeli = false;
                foreach (var basePlayer in BasePlayer.activePlayerList)
                    if (!xClose.Contains($"{basePlayer.userID}")) EventInit(basePlayer, "heli");
            }
            else if (entity is BradleyAPC)
            {
                IsTank = false;
                foreach (var basePlayer in BasePlayer.activePlayerList)
                    if (!xClose.Contains($"{basePlayer.userID}")) EventInit(basePlayer, "bradley");
            }
            else if (entity is CH47Helicopter)
            {
                IsCh = false;
                foreach (var basePlayer in BasePlayer.activePlayerList)
                    if (!xClose.Contains($"{basePlayer.userID}")) EventInit(basePlayer, "ch");
            }
        }
        private void EventCheck()
        {
            foreach (var entity in BaseNetworkable.serverEntities.Where(p =>
                p is CargoPlane || p is BradleyAPC || p is BaseHelicopter || p is CargoShip ||
                p is CH47Helicopter))
            {
                if (entity is CargoPlane)
                    IsAir = true;
                if (entity is BradleyAPC)
                    IsTank = true;
                if (entity is BaseHelicopter)
                    IsHeli = true;
                if (entity is CargoShip)
                    IsCargo = true;
                if (entity is CH47Helicopter)
                    IsCh = true;
            }
        }
        #endregion   
        #region Init event
        private void EventInit(BasePlayer player, string type)
        {
            var SleepersCount = BasePlayer.sleepingPlayerList.Count.ToString();
            var JoiningCount = ServerMgr.Instance.connectionQueue.Joining.ToString();
            var cont = new CuiElementContainer();
            switch (type)
            {
                    case "bradley":
                    CuiHelper.DestroyUi(player, Layer + ".Brad");
                    if (IsTank)
                    {
                        //add brad
                        cont.Add(new CuiPanel()
                        {
                            RectTransform =
                            {
                            AnchorMin = _config.Bradley.AnchorMin,
                            AnchorMax = _config.Bradley.AnchorMax,
                            OffsetMin = _config.Bradley.OffsetMin,
                            OffsetMax = _config.Bradley.OffsetMax
                            },

                            Image =
                            {
                                Color = _config.Image.ColorAk, Png = GetImg("bred")
                            },
                        }, Layer, Layer + ".Brad");
                    }
                    else
                    {
                        CuiHelper.DestroyUi(player, Layer + ".Brad");
                        //add brad
                        cont.Add(new CuiPanel()
                        {
                            RectTransform =
                            {
                            AnchorMin = _config.Bradley.AnchorMin,
                            AnchorMax = _config.Bradley.AnchorMax,
                            OffsetMin = _config.Bradley.OffsetMin,
                            OffsetMax = _config.Bradley.OffsetMax
                            },

                            Image =
                            {
                                Color = _config.Image.Color, Png = GetImg("bred")
                            },
                        }, Layer, Layer + ".Brad");
                    }
                    CuiHelper.AddUi(player, cont);
                    break;
                case "air":
                    CuiHelper.DestroyUi(player, Layer + ".Air");
                    if (IsAir)
                    {
                        //add Air
                        cont.Add(new CuiPanel()
                        {
                            RectTransform =
                            {
                            AnchorMin = _config.Air.AnchorMin,
                            AnchorMax = _config.Air.AnchorMax,
                            OffsetMin = _config.Air.OffsetMin,
                            OffsetMax = _config.Air.OffsetMax
                            },

                            Image =
                            {
                                Color = _config.Image.ColorAk, Png = GetImg("air")
                            },
                        }, Layer, Layer + ".Air");
                    }
                    else
                    {
                        CuiHelper.DestroyUi(player, Layer + ".Air");
                        //add Air
                        cont.Add(new CuiPanel()
                        {
                            RectTransform =
                            {
                            AnchorMin = _config.Air.AnchorMin,
                            AnchorMax = _config.Air.AnchorMax,
                            OffsetMin = _config.Air.OffsetMin,
                            OffsetMax = _config.Air.OffsetMax
                            },

                            Image =
                            {
                                Color = _config.Image.Color, Png = GetImg("air")
                            },
                        }, Layer, Layer + ".Air");
                    }
                    CuiHelper.AddUi(player, cont);
                    break;
                case "cargo":
                    CuiHelper.DestroyUi(player, Layer + ".Cargo");
                    if (IsCargo)
                    {
                        //add Cargo
                        cont.Add(new CuiPanel()
                        {
                            RectTransform =
                            {
                            AnchorMin = _config.Cargo.AnchorMin,
                            AnchorMax = _config.Cargo.AnchorMax,
                            OffsetMin = _config.Cargo.OffsetMin,
                            OffsetMax = _config.Cargo.OffsetMax
                            },

                            Image =
                            {
                                Color = _config.Image.ColorAk, Png = GetImg("cargo")
                            },
                        }, Layer, Layer + ".Cargo");
                    }
                    else
                    {
                        CuiHelper.DestroyUi(player, Layer + ".Cargo");
                        //add Cargo
                        cont.Add(new CuiPanel()
                        {
                            RectTransform =
                            {
                            AnchorMin = _config.Cargo.AnchorMin,
                            AnchorMax = _config.Cargo.AnchorMax,
                            OffsetMin = _config.Cargo.OffsetMin,
                            OffsetMax = _config.Cargo.OffsetMax
                            },

                            Image =
                            {
                                Color = _config.Image.Color, Png = GetImg("cargo")
                            },
                        }, Layer, Layer + ".Cargo");
                    }
                    CuiHelper.AddUi(player, cont);
                    break;
                case "heli":
                    CuiHelper.DestroyUi(player, Layer + ".Heli");
                    if (IsHeli)
                    {
                        //add Heli
                        cont.Add(new CuiPanel()
                        {
                            RectTransform =
                            {
                            AnchorMin = _config.Heli.AnchorMin,
                            AnchorMax = _config.Heli.AnchorMax,
                            OffsetMin = _config.Heli.OffsetMin,
                            OffsetMax = _config.Heli.OffsetMax
                            },

                            Image =
                            {
                                Color = _config.Image.ColorAk, Png = GetImg("heli")
                            },
                        }, Layer, Layer + ".Heli");
                    }
                    else
                    {
                        CuiHelper.DestroyUi(player, Layer + ".Heli");
                        //add Heli
                        cont.Add(new CuiPanel()
                        {
                            RectTransform =
                            {
                            AnchorMin = _config.Heli.AnchorMin,
                            AnchorMax = _config.Heli.AnchorMax,
                            OffsetMin = _config.Heli.OffsetMin,
                            OffsetMax = _config.Heli.OffsetMax
                            },

                            Image =
                            {
                                Color = _config.Image.Color, Png = GetImg("heli")
                            },
                        }, Layer, Layer + ".Heli");
                    }
                    CuiHelper.AddUi(player, cont);
                    break;
                case "ch":
                    CuiHelper.DestroyUi(player, Layer + ".Ch");
                    if (IsCh)
                    {
                        //add Ch
                        cont.Add(new CuiPanel()
                        {
                            RectTransform =
                            {
                            AnchorMin = _config.Ch.AnchorMin,
                            AnchorMax = _config.Ch.AnchorMax,
                            OffsetMin = _config.Ch.OffsetMin,
                            OffsetMax = _config.Ch.OffsetMax
                            },

                            Image =
                            {
                                Color = _config.Image.ColorAk, Png = GetImg("ch")
                            },
                        }, Layer, Layer + ".Ch");
                    }
                    else
                    {
                        CuiHelper.DestroyUi(player, Layer + ".Ch");
                        //add Ch
         
// ... [Code preview truncated due to length. Full source in attached file] ...

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