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

FREE EventNotifier : 1.3.3 1.3.3

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

namespace Oxide.Plugins
{
    [Info("EventNotifier", "Kalvi", "1.3.3")]
    [Description("Notifies players of various events.")]
    public class EventNotifier : RustPlugin
    {
        private const string configFileName = "EventNotifier";
        
        private ConfigData configData;

        private class ConfigData
        {
            public bool NotifyCargoPlane { get; set; }
            public bool NotifyTank { get; set; }
            public bool NotifyCargoShip { get; set; }
            public bool NotifyChinook { get; set; }
            public bool NotifyAttackHelicopter { get; set; }
            public bool ShowDirection { get; set; }
        }

        private void Init()
        {
            LoadConfigData();
        }

        private void LoadConfigData()
        {
            configData = Config.ReadObject<ConfigData>();
            if (configData == null)
            {
                configData = new ConfigData
                {
                    NotifyCargoPlane = true,
                    NotifyTank = true,
                    NotifyCargoShip = true,
                    NotifyChinook = true,
                    NotifyAttackHelicopter = true,
                    ShowDirection = true
                };
                SaveConfigData();
            }
        }

        protected override void LoadDefaultConfig()
        {
            Config.WriteObject(GetDefaultConfig(), true);
        }

        private ConfigData GetDefaultConfig()
        {
            return new ConfigData
            {
                NotifyCargoPlane = true,
                NotifyTank = true,
                NotifyCargoShip = true,
                NotifyChinook = true,
                NotifyAttackHelicopter = true,
                ShowDirection = true
            };
        }

        private void SaveConfigData()
        {
            Config.WriteObject(configData, true);
        }

        private void OnEntitySpawned(BaseEntity entity)
        {
            if (entity == null) return;

            var entityName = entity.ShortPrefabName;
            string message = null;
            string direction = configData.ShowDirection ? $" towards {GetDirection(entity.transform.position)}" : "";

            switch (entityName)
            {
                case "cargo_plane":
                    if (configData.NotifyCargoPlane)
                        message = Lang("CargoPlaneNotification", direction);
                    break;
                case "cargoshiptest":
                    if (configData.NotifyCargoShip)
                        message = Lang("CargoShipNotification", direction);
                    break;
                case "ch47.entity":
                    if (configData.NotifyChinook)
                        message = Lang("ChinookNotification", direction);
                    break;
                case "patrolhelicopter":
                    if (configData.NotifyAttackHelicopter)
                        message = Lang("AttackHelicopterNotification", direction);
                    break;
                case "bradleyapc":
                    if (configData.NotifyTank)
                        message = Lang("TankNotification", "");
                    break;
            }

            if (message != null)
            {
                PrintToChat(message);
            }
        }

        private string GetDirection(Vector3 position)
        {
            float angle = Mathf.Atan2(position.z, position.x) * Mathf.Rad2Deg;
            if (angle < 0) angle += 360;

            if (angle >= 315 || angle < 45)
                return "East";
            else if (angle >= 45 && angle < 135)
                return "North";
            else if (angle >= 135 && angle < 225)
                return "West";
            else
                return "South";
        }

        #region Lang API
        protected override void LoadDefaultMessages()
        {
            lang.RegisterMessages(new Dictionary<string, string>
            {
                ["CargoPlaneNotification"] = "<color=#00FF00>Cargo Plane has spawned{0}!</color>",
                ["TankNotification"] = "<color=#FF0000>Tank has spawned!</color>",
                ["CargoShipNotification"] = "<color=#0000FF>Cargo Ship has spawned{0}!</color>",
                ["ChinookNotification"] = "<color=#FFFF00>Chinook has spawned{0}!</color>",
                ["AttackHelicopterNotification"] = "<color=#FF00FF>Attack Helicopter has spawned{0}!</color>"
            }, this);
        }

        private string Lang(string key, params object[] args)
        {
            return string.Format(lang.GetMessage(key, this), args);
        }
        #endregion
    }
}

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