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

FREE HWCustomMapName : 1.5.3 1.5.3

Нет прав для скачивания
C#:
// Все права принадлежат дискорд сообществу https://discord.gg/VgNHPpNrz6
using System;
using Steamworks;
using System.Linq;
using Newtonsoft.Json;
using System.Collections.Generic;

namespace Oxide.Plugins
{
    [Info("HW Custom Map Name", "klauz24", "1.5.3"), Description("Changes map name at the server list.")]
    internal class HWCustomMapName : CovalencePlugin
    {
        private DateTime _nextWipe;

        private Configuration _config;

        private class Configuration
        {
            [JsonProperty("Map name")]
            public string MapName = "by klauz24";

            [JsonProperty("Random map name")]
            public RandomMapName RMN = new RandomMapName();

            [JsonProperty("Wipe countdown")]
            public WipeCountdown WPC = new WipeCountdown();

            public class RandomMapName
            {
                [JsonProperty("Enable random map name")]
                public bool EnableRandomMapName = false;

                [JsonProperty(PropertyName = "Random map names")]
                public List<string> RandomMapNames { get; set; } = new List<string>
                {
                    "by",
                    "klauz24"
                };
            }

            public class WipeCountdown
            {
                [JsonProperty("Enable wipe countdown")]
                public bool EnableWipeCountdown = false;

                [JsonProperty("Wipe countdown format")]
                public string WipeCountdownFormat = "Wipe in: {0}";

                [JsonProperty("Next wipe year")]
                public int NextWipeYear = 2020;

                [JsonProperty("Next wipe month")]
                public int NextWipeMonth = 7;

                [JsonProperty("Next wipe day")]
                public int NextWipeDay = 12;

                [JsonProperty("Next wipe hour")]
                public int NextWipeHours = 11;

                [JsonProperty("Next wipe minutes")]
                public int NextWipeMinutes = 0;
            }

            public string ToJson() => JsonConvert.SerializeObject(this);

            public Dictionary<string, object> ToDictionary() => JsonConvert.DeserializeObject<Dictionary<string, object>>(ToJson());
        }

        protected override void LoadDefaultConfig() => _config = new Configuration();

        protected override void LoadConfig()
        {
            base.LoadConfig();
            try
            {
                _config = Config.ReadObject<Configuration>();
                if (_config == null)
                {
                    throw new JsonException();
                }

                if (!_config.ToDictionary().Keys.SequenceEqual(Config.ToDictionary(x => x.Key, x => x.Value).Keys))
                {
                    PrintWarning("Configuration appears to be outdated; updating and saving");
                    SaveConfig();
                }
            }
            catch
            {
                PrintWarning($"Configuration file {Name}.json is invalid; using defaults");
                LoadDefaultConfig();
            }
        }

        protected override void SaveConfig()
        {
            PrintWarning($"Configuration changes saved to {Name}.json");
            Config.WriteObject(_config, true);
        }

        protected override void LoadDefaultMessages()
        {
            lang.RegisterMessages(new Dictionary<string, string>
            {
                {"Days", "{0}d.{1}h."},
                {"Hours", "{0}h.{1}m."},
                {"Minutes", "{0}m.{1}s."},
                {"Seconds", "{0}s."}
            }, this);
        }

        private void OnServerInitialized()
        {
            _nextWipe = new DateTime(_config.WPC.NextWipeYear, _config.WPC.NextWipeMonth, _config.WPC.NextWipeDay, _config.WPC.NextWipeHours, _config.WPC.NextWipeMinutes, 00);
            timer.Every(1f, () =>
            {
                var str = GetMapName();
                UpdateMapName(str);
            });
        }

        private string GetMapName()
        {
            if (_config.RMN.EnableRandomMapName && _config.WPC.EnableWipeCountdown)
            {
                PrintWarning("Random map name and wipe countdown are enabled, please choose one of them or disable both.");
                return "Error, check console.";
            }
            if (_config.RMN.EnableRandomMapName)
            {
                var randomEntry = _config.RMN.RandomMapNames[new Random().Next(0, _config.RMN.RandomMapNames.Count)];
                return randomEntry;
            }
            if (_config.WPC.EnableWipeCountdown)
            {
                var time = (_nextWipe - DateTime.Now).TotalSeconds;
                return string.Format(_config.WPC.WipeCountdownFormat, FormatTime(time));
            }
            return _config.MapName;
        }

        private string FormatTime(double time)
        {
            var timeSpan = TimeSpan.FromSeconds(time);
            if (timeSpan.TotalSeconds < 1)
            {
                return null;
            }
            if (Math.Floor(timeSpan.TotalDays) >= 1)
            {
                return string.Format(Lang("Days"), timeSpan.Days, timeSpan.Hours);
            }
            if (Math.Floor(timeSpan.TotalMinutes) >= 60)
            {
                return string.Format(Lang("Hours"), timeSpan.Hours, timeSpan.Minutes);
            }
            if (Math.Floor(timeSpan.TotalSeconds) >= 60)
            {
                return string.Format(Lang("Minutes"), timeSpan.Minutes, timeSpan.Seconds);
            }
            return string.Format(Lang("Seconds"), timeSpan.Seconds);
        }

        private string Lang(string key) => lang.GetMessage(key, this);

        private void UpdateMapName(string str)
        {
#if HURTWORLD
            SteamGameServer.SetMapName(str);
#endif
#if RUST
            SteamServer.MapName = str;
#endif
        }
    }
}

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