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

FREE ZoneUI : 1.0.1 1.0.1

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

namespace Oxide.Plugins
{
    [Info("ZoneUI", "D420", "1.0.1")]
    [Description("Displays a UI message when entering a specific zone and removes it on exit.")]

    public class ZoneUI : RustPlugin
    {
        #region Configuration

        private string zoneID = "zone1"; // Example zone identifier
        private string message = "Welcome to the zone!";
        private string messageColor = "1.0 1.0 1.0 1.0"; // White text
        private string backgroundColor = "0.1 0.1 0.1 0.8"; // Dark translucent background

        private Vector2 uiPosition = new Vector2(0.5f, 0.95f); // Top middle
        private Vector2 uiSize = new Vector2(0.3f, 0.05f);     // Width and height

        #endregion

        #region Hooks

        // Called when the plugin is loaded
        private void Init()
        {
            LoadConfig();
        }

        // Called when a player enters a zone
        private void OnEnterZone(string zoneID, BasePlayer player)
        {
            if (zoneID == this.zoneID)
            {
                ShowUI(player);
            }
        }

        // Called when a player leaves a zone
        private void OnExitZone(string zoneID, BasePlayer player)
        {
            if (zoneID == this.zoneID)
            {
                DestroyUI(player);
            }
        }

        // Called when an entity enters a zone
        private void OnEntityEnterZone(string zoneID, BaseEntity entity)
        {
            // Optional logic for entities entering the zone (e.g., NPCs, vehicles)
            if (zoneID == this.zoneID)
            {
                Puts($"Entity {entity.ShortPrefabName} entered the zone.");
            }
        }

        // Compatibility: Called when a player enters the zone
        private void OnPlayerEnterZone(string zoneID, BasePlayer player)
        {
            OnEnterZone(zoneID, player);
        }

        // Compatibility: Called when a player exits the zone
        private void OnPlayerExitZone(string zoneID, BasePlayer player)
        {
            OnExitZone(zoneID, player);
        }

        #endregion

        #region UI Methods

        // Create and show the UI
        private void ShowUI(BasePlayer player)
        {
            CuiElementContainer container = new CuiElementContainer();

            // Background panel
            CuiElement panel = new CuiElement
            {
                Name = "ZoneUI",
                Parent = "Overlay",
                Components =
                {
                    new CuiImageComponent { Color = backgroundColor },
                    new CuiRectTransformComponent { AnchorMin = $"{uiPosition.x - uiSize.x / 2} {uiPosition.y - uiSize.y / 2}", AnchorMax = $"{uiPosition.x + uiSize.x / 2} {uiPosition.y + uiSize.y / 2}" }
                }
            };
            container.Add(panel);

            // Text element
            CuiElement text = new CuiElement
            {
                Parent = "ZoneUI",
                Components =
                {
                    new CuiTextComponent { Text = message, FontSize = 20, Align = TextAnchor.MiddleCenter, Color = messageColor },
                    new CuiRectTransformComponent { AnchorMin = "0 0", AnchorMax = "1 1" }
                }
            };
            container.Add(text);

            CuiHelper.AddUi(player, container);
        }

        // Destroy the UI
        private void DestroyUI(BasePlayer player)
        {
            CuiHelper.DestroyUi(player, "ZoneUI");
        }

        #endregion

        #region Configuration Loading and Saving

        protected override void LoadConfig()
        {
            base.LoadConfig();
            message = GetConfig("Message", message);
            zoneID = GetConfig("ZoneID", zoneID);
        }

        protected override void LoadDefaultConfig()
        {
            Config["Message"] = message;
            Config["ZoneID"] = zoneID;
        }

        private T GetConfig<T>(string key, T defaultValue)
        {
            if (Config[key] == null) return defaultValue;
            return (T)Convert.ChangeType(Config[key], typeof(T));
        }

        #endregion
    }
}

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