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

FREE MlrsTracker : 1.2.0 1.2.0

Нет прав для скачивания
C#:
// Все права принадлежат дискорд сообществу https://discord.gg/VgNHPpNrz6
using Newtonsoft.Json;
using Oxide.Core.Libraries;
using System;
using System.Collections.Generic;
using UnityEngine;
namespace Oxide.Plugins {
    [Info("MLRS Tracker", "Rogder Dodger", "1.2.0")]
    [Description("Tracks Firing of MLRS ")]
    internal class MlrsTracker : RustPlugin {
#region Configuration
        private const string DefaultWebhookURL = "https://support.discord.com/hc/en-us/articles/228383668-Intro-to-Webhooks";
        private Configuration _config;
        private class Configuration {
            [JsonProperty(PropertyName = "Log To Console")]
            public bool LogToConsole = true;
            [JsonProperty(PropertyName = "Log To Discord")]
            public bool LogToDiscord = true;
            [JsonProperty(PropertyName = "Discord Webhook URL")]
            public string DiscordHookUrl = DefaultWebhookURL;
        }
        protected override void LoadConfig() {
            base.LoadConfig();
            try {
                _config = Config.ReadObject<Configuration>();
                if (_config == null) throw new Exception();
                SaveConfig();
            }
            catch {
                PrintError("Your configuration file contains an error.Using default configuration values.");
                LoadDefaultConfig();
            }
        }
        protected override void LoadDefaultConfig() {
            PrintWarning("A new configuration file is being generated.");
            _config = new Configuration {
                LogToConsole = true, LogToDiscord = true, DiscordHookUrl = DefaultWebhookURL,
            }
            ;
        }
        protected override void SaveConfig() {
            Config.WriteObject(_config);
        }
#endregion
#region hooks
        private void Init() {
            var cfg = Config.ReadObject<Configuration>();
            if (cfg.DiscordHookUrl == DefaultWebhookURL) {
                PrintWarning($"Please set the discord webhook in the configuration file and reload the plugin");
            }
        }
        void OnMlrsFired(MLRS mlrs, BasePlayer player) {
            var msg = $"{player.displayName}/{player.userID} Fired MLRS Rockets At {GetGrid(mlrs.TrueHitPos)} " + "```teleportpos " + Math.Round(mlrs.TrueHitPos.x, 2) + "," + Math.Round(mlrs.TrueHitPos.y, 2) + "," + Math.Round(mlrs.TrueHitPos.z, 2) + "```";
            if (_config.LogToConsole) {
                Puts(msg);
            }
            if (_config.LogToDiscord) {
                SendToDiscord(msg);
            }
        }
#endregion
#region Discord
        void SendToDiscord(string message) {
            var contentBody = new WebHookContentBody {
                Content = message
            }
            ;
            webrequest.Enqueue(_config.DiscordHookUrl, JsonConvert.SerializeObject(contentBody, new JsonSerializerSettings {
                NullValueHandling = NullValueHandling.Ignore
            }
            ), (headerCode, headerResult) => {
                if (headerCode >= 200 && headerCode <= 204) {
                }
                else {
                    Puts($"Failed to send to discord: {headerCode} - {headerResult}");
                }
            }
            , this, RequestMethod.POST, new Dictionary<string, string> {
                {
                    "Content-Type", "application/json"
                }
            }
            );
        }
        private class WebHookContentBody {
            [JsonProperty(PropertyName = "content")]
            public string Content;
        }
#endregion
#region methods
        private string GetGrid(Vector3 pos) {
            char letter = 'A';
            var x = Mathf.Floor((pos.x + (ConVar.Server.worldsize / 2)) / 146.3f) % 26;
            var count = Mathf.Floor(Mathf.Floor((pos.x + (ConVar.Server.worldsize / 2)) / 146.3f) / 26);
            var z = (Mathf.Floor(ConVar.Server.worldsize / 146.3f)) - Mathf.Floor((pos.z + (ConVar.Server.worldsize / 2)) / 146.3f);
            letter = (char)(letter + x);
            var secondLetter = count <= 0 ? string.Empty : ((char)('A' + (count - 1))).ToString();
            return $"{secondLetter}{letter}{z}";
        }
#endregion
    }
}

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