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

FREE EasyRadar : 1.0.0 1.0.0

Нет прав для скачивания
C#:
// EasyRadar by Vegas Rust
using System;
using UnityEngine;

namespace Oxide.Plugins
{
    [Info("EasyRadar", "Vegas Rust", "1.0.0")]
    [Description("EasyRadar by Vegas Rust — simple admin player radar.")]
    public class EasyRadar : RustPlugin
    {
        private const string ChatPrefix = "<size=12><color=#44CC66>EasyRadar</color> » ";

        private PluginConfig config;

        private class PluginConfig
        {
            public float MaxDistance = 100f;
        }

        protected override void LoadDefaultConfig()
        {
            config = new PluginConfig();
            SaveConfig();
        }

        protected override void LoadConfig()
        {
            base.LoadConfig();
            config = Config.ReadObject<PluginConfig>() ?? new PluginConfig();
            if (config.MaxDistance < 1f)
                config.MaxDistance = 100f;
        }

        protected override void SaveConfig() => Config.WriteObject(config, true);

        private void Init() => LoadConfig();

        private void Unload()
        {
            foreach (var player in BasePlayer.activePlayerList)
            {
                if (player == null) continue;
                var component = player.GetComponent<RadarBehaviour>();
                if (component != null)
                    UnityEngine.Object.Destroy(component);
            }
        }

        [ChatCommand("radar")]
        private void RadarCommand(BasePlayer player, string command, string[] args)
        {
            if (player == null || !player.IsConnected) return;
            if (player.net.connection.authLevel == 0) return;
            if (args.Length > 0) return;

            var component = player.GetComponent<RadarBehaviour>();
            if (component != null)
            {
                UnityEngine.Object.Destroy(component);
                player.ChatMessage($"{ChatPrefix}Disabled.");
                return;
            }

            StartRadar(player);
        }

        private void StartRadar(BasePlayer player)
        {
            var existing = player.GetComponent<RadarBehaviour>();
            if (existing != null)
                UnityEngine.Object.Destroy(existing);

            var behaviour = player.gameObject.AddComponent<RadarBehaviour>();
            behaviour.rate = 1f;
            behaviour.dist = config.MaxDistance;
            behaviour.player = player;
            behaviour.Init();

            player.ChatMessage($"{ChatPrefix}Enabled.");
        }

        public class RadarBehaviour : FacepunchBehaviour
        {
            public float rate;
            public float dist;
            public BasePlayer player;

            public void Init()
            {
                InvokeRepeating(nameof(UpdateRadar), rate, rate);
            }

            private void UpdateRadar()
            {
                if (player == null || !player.IsConnected)
                {
                    Destroy(this);
                    return;
                }

                foreach (var connection in player.net.group.subscribers)
                {
                    if (!connection.active) continue;

                    var user = connection.player as BasePlayer;
                    if (user == null || user.userID == player.userID) continue;
                    if (connection.authLevel == 2 && player.Connection.authLevel == 1) continue;

                    var distance = Math.Round((user.transform.position - player.transform.position).magnitude);
                    if (distance > dist) continue;

                    player.SendConsoleCommand(
                        "ddraw.text",
                        rate,
                        Color.white,
                        user.transform.position + new Vector3(0, 1.9f, 0),
                        $"{user.displayName} | {distance}m");
                }
            }

            private void OnDestroy()
            {
                CancelInvoke(nameof(UpdateRadar));
            }
        }
    }
}

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