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

FREE WelcomeGUI : 1.0.0 1.0.0

Нет прав для скачивания
C#:
using Oxide.Core;
using Oxide.Game.Rust.Cui;
using System;
using System.Collections.Generic;
using UnityEngine;

namespace Oxide.Plugins
{
    [Info("Welcome GUI", "Replce RustPLugin.ru", "1.0.0")]

	class WelcomeGUI : RustPlugin
	{ 
		private bool backroundimage;
		private bool Changed;
		private string text;
		private bool displayoneveryconnect;
		private string backroundimageurl;
		
		void Loaded()  
		{
			permission.RegisterPermission("welcomegui.usecmd", this);
			data = Interface.GetMod().DataFileSystem.ReadObject<Data>("WelcomeGUIdata");
			LoadVariables();
		}
		
		object GetConfig(string menu, string datavalue, object defaultValue)
        {
            var data = Config[menu] as Dictionary<string, object>;
            if (data == null)
            {
                data = new Dictionary<string, object>();
                Config[menu] = data;
                Changed = true;
            }
            object value;
            if (!data.TryGetValue(datavalue, out value))
            {
                value = defaultValue;
                data[datavalue] = value;
                Changed = true;
            }
            return value;  
        } 
		
		void LoadVariables() 
		{
			backroundimageurl = Convert.ToString(GetConfig("Фон", "Изображение", "https://i.ytimg.com/vi/yaqe1qesQ8c/maxresdefault.jpg"));
			backroundimage = Convert.ToBoolean(GetConfig("Фон", "Включить изображение", false));
			displayoneveryconnect = Convert.ToBoolean(GetConfig("Настройки", "Отображать при каждом подключении", true));
			text = Convert.ToString(GetConfig("Сообщение", "Формат сообщения", new List<string>{
            "<size=23><color=#F49F28>SERVERNAME</color> приветствует тебя, <color=#F49F28>{name}</color>!</size>",
			"На сервере разрешено играть не более 2 человек!",
			"",
			"",
			"— — — — — — — — — — — — — — — — — — — — — — — — — —",
			"Группа ВКонтакте - <color=#97EA57>VK.COM/</color>",
			"— — — — — — — — — — — — — — — — — — — — — — — — — —",
			"Донат услуги - <color=#97EA57>SITE.RU</color>",
			"— — — — — — — — — — — — — — — — — — — — — — — — — —",
			"IP Адрес сервера - <color=#97EA57>IP</color>",
			"— — — — — — — — — — — — — — — — — — — — — — — — — —",
			"",
			"",
			"Команды и возможности игроков <color=#FFEB95>/info</color>"

			}));
			
			if (Changed)
			{
				SaveConfig();
				Changed = false;
			
			}	
		}
		
		protected override void LoadDefaultConfig()
		{
			Puts("Создание нового файла конфигурации! Доработка от RustPlugin.ru!");
			Config.Clear();
			LoadVariables();
		}

		class Data
		{
			public List<string> Players = new List<string>{};
		}


		Data data;

		void Unloaded()
		{
			foreach (BasePlayer current in BasePlayer.activePlayerList)
			{
				CuiHelper.DestroyUi(current, "WelcomeGUI");
			}
		}
		
		void UseUI(BasePlayer player, string msg)
		{ 
			var elements = new CuiElementContainer();

			var mainName = elements.Add(new CuiPanel
			{
				Image =
				{
					Color = "0.1 0.1 0.1 0.9"
				},
				RectTransform =
				{
					AnchorMin = "0 0",
					AnchorMax = "1 1"
				},
				CursorEnabled = true
			}, "Overlay", "WelcomeGUI"); 
			if(backroundimage == true)
			{
				elements.Add(new CuiElement
				{  
					Parent = "WelcomeGUI",
					Components =
					{
						new CuiRawImageComponent
						{
							Url = backroundimageurl,
							Sprite = "assets/content/textures/generic/fulltransparent.tga"
						}, 
						new CuiRectTransformComponent
						{
							AnchorMin = "0 0",
							AnchorMax = "1 1"
						}
					}
				});
			}				 
			var Agree = new CuiButton
            {
                Button =
                {
                    Close = mainName,
                    Color = "0.48 0.48 0.48 1"
                },
                RectTransform =
                {
                    AnchorMin = "0.30 0.16",
					AnchorMax = "0.685 0.20"
                },
                Text =
                {
                    Text = "Начать игру",
                    FontSize = 19,
                    Align = TextAnchor.MiddleCenter
                }
            };
			elements.Add(new CuiLabel
			{
				Text =
                {
					Text = msg.Replace("{name}", player.displayName), 
                    FontSize = 17,
                    Align = TextAnchor.MiddleCenter
                },
                RectTransform =
                {
                    AnchorMin = "0 0.12",
                    AnchorMax = "1 0.9"
                }
			}, mainName);
			elements.Add(Agree, mainName);
			CuiHelper.AddUi(player, elements);
		}

		[ChatCommand("welcometo")]
		void cmdRulesTo(BasePlayer player, string cmd, string[] args)
		{
			if(!permission.UserHasPermission(player.userID.ToString(), "welcomegui.usecmd"))
			{
				SendReply(player, "У вас нет прав использовать эту команду!");
				return;
			}
			if(args.Length != 1)
			{
				SendReply(player, "Используйте: /welcometo \"target\" ");
				return;
			}
			BasePlayer target = BasePlayer.Find(args[0]);
			if(target == null)
			{
				SendReply(player, "Игрок не найден!");
				return;
			}
			string msg = "";
			foreach(var welcome in Config["Сообщение", "Формат сообщения"] as List<object>)
			msg = msg + welcome.ToString() + "\n";
			UseUI(target, msg.ToString());
			SendReply(player, "Отображается следующая информация <color=orange> " + target.displayName + "</color>");
			
		}		
			
		[ChatCommand("welcome")]
		void cmdRule(BasePlayer player, string cmd, string[] args)
		{
			string msg = "";
			foreach(var welcome in Config["Сообщение", "Формат сообщения"] as List<object>)
			msg = msg + welcome.ToString() + "\n";
			UseUI(player, msg.ToString());
		}

		void DisplayUI(BasePlayer player)
        {
            if (player.HasPlayerFlag(BasePlayer.PlayerFlags.ReceivingSnapshot))
            {
                timer.In(1, () => DisplayUI(player));
            }
            else 
			{
				string steamId = Convert.ToString(player.userID);
				if(displayoneveryconnect == true)
				{
					string msg = "";
					foreach(var welcome in Config["Сообщение", "Формат сообщения"] as List<object>)
					msg = msg + welcome.ToString() + "\n";
					UseUI(player, msg.ToString());
				}
				else 
				{			
					if(data.Players.Contains(steamId)) return;
					string msg = "";
					foreach(var welcome in Config["Сообщение", "Формат сообщения"] as List<object>)
					msg = msg + welcome.ToString() + "\n";
					UseUI(player, msg.ToString());
					data.Players.Add(steamId);	
					Interface.GetMod().DataFileSystem.WriteObject("WelcomeGUIdata", data);
				}
            }
        }
		
		
		void OnPlayerInit(BasePlayer player)		
		{
			DisplayUI(player);		
		}
	}
}

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