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

FREE WipeTimerEnhanced : 1.5.6 1.5.6

Нет прав для скачивания
C#:
using Facepunch;
using Newtonsoft.Json;
using Oxide.Core;
using Oxide.Core.Libraries.Covalence;
using Oxide.Core.Plugins;
using Rust;
using System;
using System.Collections.Generic;
using System.ComponentModel;

namespace Oxide.Plugins
{
    [Info("Wipe Timer Enhanced", "ZTL/FastBurst", "1.5.6")]
    [Description("Allows players to check when the next wipe is")]
    class WipeTimerEnhanced : RustPlugin
    {
        #region Configuration

        private static WipeTimerEnhanced Instance;

        private new void LoadDefaultMessages()
        {
            //English
            lang.RegisterMessages(new Dictionary<string, string>
            {
                ["CommandWipe"] = "Time until next wipe: {0}"
            }, this);
        }

        #endregion

        void Init()
        {
            Instance = this;
            //try
            //{
            //    LoadVariables();
            //}
            //catch
            //{
            //    PrintWarning("Could not read config, creating new default config");
            //    LoadDefaultConfig();
            //}
        }

        private void OnNewSave(string filename) => SaveWipeData();

        private void SaveWipeData()
        {
            var date = DateTime.Now;
            date = date.AddDays(configData.Settings.AutoWipeIntervalDays); // Adds 7 days to the date
            configData.Settings.year = date.Year;
            configData.Settings.month = date.Month;
            configData.Settings.day = date.Day;
            PrintWarning("Server was just wiped, updating Wipe Schedule");
            Config.WriteObject(configData, true);
            SaveConfig();
        }

        [ChatCommand("wipe")]
        void cmdWipe(BasePlayer player, string command, string[] args)
        {
            DateTime date1 = new DateTime(configData.Settings.year, configData.Settings.month, configData.Settings.day, configData.Settings.hour, configData.Settings.min, configData.Settings.sec);
            System.TimeSpan diff1 = date1.Subtract(DateTime.Now);

            string time = string.Format("{0}d:{1}h:{2}m", diff1.Days, diff1.Hours, diff1.Minutes);
            SendReply(player, "<color=#aaff55>" + Lang("CommandWipe", player.UserIDString, time) + "</color>");
        }

        [ChatCommand("wipesave")]
        void cmdWipeSave(BasePlayer player, string command, string[] args)
        {
            DateTime date1 = new DateTime(configData.Settings.year, configData.Settings.month, configData.Settings.day, configData.Settings.hour, configData.Settings.min, configData.Settings.sec);
            System.TimeSpan diff1 = date1.Subtract(DateTime.Now);

            string time = string.Format("{0}d:{1}h:{2}m", diff1.Days, diff1.Hours, diff1.Minutes);
            SendReply(player, "<color=#aaff55>" + Lang("CommandWipe", player.UserIDString, time) + "</color>");
            SaveWipeData();
        }

        object OnPlayerChat(BasePlayer player, string message)
        {
            DateTime date1 = new DateTime(configData.Settings.year, configData.Settings.month, configData.Settings.day, configData.Settings.hour, configData.Settings.min, configData.Settings.sec);
            System.TimeSpan diff1 = date1.Subtract(DateTime.Now);

            string time = string.Format("{0}d:{1}h:{2}m", diff1.Days, diff1.Hours, diff1.Minutes);
            if (message.Contains("wipe") && configData.Settings.AutoRespond)
            {
                SendReply(player, "<color=#aaff55>" + Lang("CommandWipe", player.UserIDString, time + "</color>"));
            }
            return null;
        }

        void OnPlayerConnected(BasePlayer player)
        {
            DateTime date1 = new DateTime(configData.Settings.year, configData.Settings.month, configData.Settings.day, configData.Settings.hour, configData.Settings.min, configData.Settings.sec);
            System.TimeSpan diff1 = date1.Subtract(DateTime.Now);

            string time = string.Format("{0}d:{1}h:{2}m", diff1.Days, diff1.Hours, diff1.Minutes);
            if (configData.Settings.AnnouceOnConnect)
            {
                SendReply(player, "<color=#aaff55>" + Lang("CommandWipe", player.UserIDString, time + "</color>"));
            }
        }

        T GetConfig<T>(string name, T value) => Config[name] == null ? value : (T)Convert.ChangeType(Config[name], typeof(T));

        string Lang(string key, string id = null, params object[] args) => string.Format(lang.GetMessage(key, this, id), args);

        #region Config        
        private ConfigData configData;
        class ConfigData
        {
            [JsonProperty(PropertyName = "Wipe Timer Settings")]
            public Options Settings { get; set; }

            public class Options
            {
                [JsonProperty(PropertyName = "AutoRespond to Chat")]
                public bool AutoRespond { get; set; }
                [JsonProperty(PropertyName = "Broadcast to players on join")]
                public bool AnnouceOnConnect { get; set; }
                [JsonProperty(PropertyName = "Wipe cycle days length (default 7 for weekly wipes)")]
                public int AutoWipeIntervalDays { get; set; }
                [JsonProperty(PropertyName = "Current year")]
                public int year { get; set; }
                [JsonProperty(PropertyName = "Month of the year")]
                public int month { get; set; }
                [JsonProperty(PropertyName = "Day of the month")]
                public int day { get; set; }
                [JsonProperty(PropertyName = "Hour of the day")]
                public int hour { get; set; }
                [JsonProperty(PropertyName = "Minutes of the hour")]
                public int min { get; set; }
                [JsonProperty(PropertyName = "Seconds of the minutes")]
                public int sec { get; set; }
            }
            public Oxide.Core.VersionNumber Version { get; set; }
        }

        protected override void LoadConfig()
        {
            base.LoadConfig();
            configData = Config.ReadObject<ConfigData>();

            if (configData.Version < Version)
                UpdateConfigValues();

            Config.WriteObject(configData, true);
        }

        protected override void LoadDefaultConfig() => configData = GetBaseConfig();

        private ConfigData GetBaseConfig()
        {
            return new ConfigData
            {
                Settings = new ConfigData.Options
                {
                    AnnouceOnConnect = true,
                    AutoRespond = true,
                    AutoWipeIntervalDays = 7,
                    day = 2,
                    hour = 15,
                    min = 0,
                    month = 7,
                    sec = 0,
                    year = 2026
                },
                Version = Version
            };
        }

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

        private void UpdateConfigValues()
        {
            PrintWarning("Config update detected! Updating config values...");

            ConfigData baseConfig = GetBaseConfig();

            if (configData.Version < new Core.VersionNumber(1, 5, 1))
                configData = baseConfig;

            configData.Version = Version;
            PrintWarning("Config update completed!");
        }
        #endregion
    }
}

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