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

FREE Relocated : 1.0.1 1.0.1

Нет прав для скачивания
C#:
using UnityEngine;
using System.Collections.Generic;
using System.Globalization;
using Oxide.Core;
using Oxide.Game.Rust.Cui;
namespace Oxide.Plugins {
    [Info("Relocated", "Death", "1.0.1")]
    [Description("Display a GUI screen with information to new server location. Useful when changing server IPs.")]
    class Relocated : RustPlugin {
#region Hooks
        void Init() {
            LoadConfigVariables();
        }
        void Unload() {
            foreach (var player in BasePlayer.activePlayerList) {
                CuiHelper.DestroyUi(player, "main");
            }
        }
        void OnPlayerSleepEnded(BasePlayer player) {
            CuiElementContainer container = UI.Container("main", UI.Color(configData.Design.BodyPanel_Color, configData.Design.BodyPanel_Opacity), new UI4(0, 0, 1, 1), true);
            UI.Label(ref container, "main", $"<color={configData.Design.ImportantText_Color}>{configData.Info.HeaderText.Replace(" {
                0
            }
            ", configData.Info.ServerName)}</color>", 25, new UI4(0.2f, 0.7f, 0.8f, 1), TextAnchor.MiddleCenter);
            UI.Label(ref container, "main", configData.Info.SubHeaderText.Replace("{0}", $"<color={configData.Design.ImportantText_Color}</color>{player.displayName}</color>").Replace("{1}", Interface.Oxide.Config.Options.Modded ? "modded" : "community"), 16, new UI4(0.2f, 0.6f, 0.8f, 0.7f), TextAnchor.MiddleCenter);
            UI.Label(ref container, "main", configData.Info.ConnectInfo.Replace("{0}", $"<color={configData.Design.ImportantText_Color}>connect {configData.Info.NewServerIP}</color>").Replace("{1}", $"<color={configData.Design.ImportantText_Color}>{configData.Info.ServerName}</color>").Replace("{2}", Interface.Oxide.Config.Options.Modded ? "modded" : "community"), 16, new UI4(0.2f, 0.3f, 0.8f, 0.4f), TextAnchor.MiddleCenter);
            UI.Button(ref container, "main", UI.Color(configData.Design.Button_Color, configData.Design.Button_Opacity), "Print To Console", 10, new UI4(0.38f, 0.17f, 0.48f, 0.2f), $"r_print");
            UI.Button(ref container, "main", UI.Color(configData.Design.Button_Color, configData.Design.Button_Opacity), "Exit", 10, new UI4(0.52f, 0.17f, 0.62f, 0.2f), "r_exit");
            CuiHelper.AddUi(player, container);
        }
#endregion
#region Functions
#region CallBacks
        [ConsoleCommand("r_exit")]
        void Exit(ConsoleSystem.Arg arg) {
            if (arg == null || arg.Player() == null) {
                return;
            }
            if (configData.Info.KickOnExit) {
                arg.Player().Kick(configData.Info.KickReason.Replace("{0}", configData.Info.NewServerIP));
            }
            else {
                CuiHelper.DestroyUi(arg.Player(), "main");
            }
        }
        [ConsoleCommand("r_print")]
        void Print(ConsoleSystem.Arg arg) {
            if (arg == null || arg.Player() == null) {
                return;
            }
            arg.Player().SendConsoleCommand($"echo connect {configData.Info.NewServerIP}");
        }
#endregion
#region Config
        private ConfigData configData;
        class ConfigData {
            public Info Info = new Info();
            public Design Design = new Design();
        }
        class Info {
            public string ServerName = ConVar.Server.hostname;
            public string NewServerIP = "123.456.789:1234";
            public string HeaderText = "{0} has moved!";
            public string SubHeaderText = "Greetings {0}! Our server has moved locations and is under a new IP address. Because of this, you'll have to search for our server under the {1} tab or connect with the information below.";
            public string ConnectInfo = "Connect to our new server by pressing F1 and typing {0} or searching {1} under the {2} tab!";
            public string PrintInfo = "connect {0}";
            public bool KickOnExit = true;
            public string KickReason = "Our server has moved to {0}!";
        }
        class Design {
            public string ImportantText_Color = "#188FF3";
            public string BodyText_Color = "#fffffff";
            public string BodyPanel_Color = "000000";
            public float BodyPanel_Opacity = 0.9f;
            public string Button_Color = "008000";
            public float Button_Opacity = 0.9f;
        }
        private void LoadConfigVariables() {
            configData = Config.ReadObject<ConfigData>();
            SaveConfig(configData);
        }
        protected override void LoadDefaultConfig() {
            var config = new ConfigData();
            SaveConfig(config);
        }
        void SaveConfig(ConfigData config) {
            Config.WriteObject(config, true);
        }
#endregion
#region GUI - Framework
        public static class UI {
            static public CuiElementContainer Container(string panel, string color, UI4 dimensions, bool useCursor = false, string parent = "Overlay") {
                CuiElementContainer container = new CuiElementContainer() {
                    {
                        new CuiPanel {
                            Image = {
                                Color = color
                            }
                            , RectTransform = {
                                AnchorMin = dimensions.GetMin(), AnchorMax = dimensions.GetMax()
                            }
                            , CursorEnabled = useCursor
                        }
                        , new CuiElement().Parent = parent, panel
                    }
                }
                ;
                return container;
            }
            static public void Label(ref CuiElementContainer container, string panel, string text, int size, UI4 dimensions, TextAnchor align = TextAnchor.MiddleCenter) {
                container.Add(new CuiLabel {
                    Text = {
                        FontSize = size, Align = align, Text = text
                    }
                    , RectTransform = {
                        AnchorMin = dimensions.GetMin(), AnchorMax = dimensions.GetMax()
                    }
                }
                , panel);
            }
            static public void Button(ref CuiElementContainer container, string panel, string color, string text, int size, UI4 dimensions, string command, TextAnchor align = TextAnchor.MiddleCenter) {
                container.Add(new CuiButton {
                    Button = {
                        Color = color, Command = command, FadeIn = 0f
                    }
                    , RectTransform = {
                        AnchorMin = dimensions.GetMin(), AnchorMax = dimensions.GetMax()
                    }
                    , Text = {
                        Text = text, FontSize = size, Align = align
                    }
                }
                , panel);
            }
            public static string Color(string hexColor, float alpha) {
                if (hexColor.StartsWith("#")) hexColor = hexColor.Substring(1);
                int red = int.Parse(hexColor.Substring(0, 2), NumberStyles.AllowHexSpecifier);
                int green = int.Parse(hexColor.Substring(2, 2), NumberStyles.AllowHexSpecifier);
                int blue = int.Parse(hexColor.Substring(4, 2), NumberStyles.AllowHexSpecifier);
                return $"{(double)red / 255} {(double)green / 255} {(double)blue / 255} {alpha}";
            }
        }
        public class UI4 {
            public float xMin, yMin, xMax, yMax;
            public UI4(float xMin, float yMin, float xMax, float yMax) {
                this.xMin = xMin;
                this.yMin = yMin;
                this.xMax = xMax;
                this.yMax = yMax;
            }
            public string GetMin() => $"{xMin} {yMin}";
            public string GetMax() => $"{xMax} {yMax}";
        }
#endregion
#endregion
    }
}

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