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

FREE AutomaticCountdownSave : 2.2.2 2.2.2

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

namespace Oxide.Plugins
{
    [Info("Automatic Countdown Save", "zeppelino", "2.2.2")]
    [Description("Initiate a countdown before the server saves.")]

    class AutomaticCountdownSave : RustPlugin
    {
        private int countdownInSeconds;
        private int serverSaveInterval;
        private Timer saveTimer;
        private bool useGameTips;
        private int chatMessageSize;

        protected override void LoadDefaultConfig()
        {
            Config["CountdownInSeconds"] = 10;
            Config["ServerSaveInterval"] = 600;
            Config["UseGameTips"] = true;
            Config["ChatMessageSize"] = 14;
            SaveConfig();
        }

        private void Init()
        {
            LoadConfigValues();
            LoadDefaultMessages();
        }

        private void LoadConfigValues()
        {
            countdownInSeconds = Convert.ToInt32(Config["CountdownInSeconds"]);
            serverSaveInterval = Convert.ToInt32(Config["ServerSaveInterval"]);
            useGameTips = Convert.ToBoolean(Config["UseGameTips"]);

            if (Config["ChatMessageSize"] == null)
            {
                Config["ChatMessageSize"] = 14;
                SaveConfig();
                Puts("Added missing ChatMessageSize to config with default value 14");
            }
            chatMessageSize = Convert.ToInt32(Config["ChatMessageSize"]);
        }

        private void LoadDefaultMessages()
        {
            lang.RegisterMessages(new Dictionary<string, string>
            {
                ["CountdownMessage"] = "The Server saves in {0} Second{1}",
                ["SaveMessage"] = "The Server saves now. Expect some lag"
            }, this);
        }

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

        private void OnServerSave()
        {
            Puts($"Waiting for the next server save...");
            timer.Once(1f, () => StartCountdown());
        }

        private void StartCountdown()
        {
            int initialCountdown = serverSaveInterval - countdownInSeconds;

            if (initialCountdown <= 0)
            {
                initialCountdown = 1;
            }

            Puts($"Server save countdown started! Saving in {initialCountdown} second{(initialCountdown != 1 ? "s" : "")}.");

            if (saveTimer != null && !saveTimer.Destroyed)
            {
                saveTimer.Destroy();
                HideGameTipsForAll();
            }

            saveTimer = timer.Once(initialCountdown, () => StartCountdownTimer());
        }

        private void StartCountdownTimer()
        {
            saveTimer = timer.Repeat(1f, countdownInSeconds, () =>
            {
                string countdownMessage = string.Format(GetMessage("CountdownMessage"), countdownInSeconds, countdownInSeconds != 1 ? "s" : "");

                if (useGameTips)
                {
                    CreateGameTipAll(countdownMessage);
                }
                else
                {
                    Server.Broadcast($"[+{chatMessageSize}]{countdownMessage}[/+]");
                }

                countdownInSeconds--;

                if (countdownInSeconds <= 0)
                {
                    if (!useGameTips)
                    {
                        string saveMessage = GetMessage("SaveMessage");
                        Server.Broadcast($"[+{chatMessageSize}]{saveMessage}[/+]");
                    }
                    else
                    {
                        CreateGameTipAll(GetMessage("SaveMessage"));
                    }

                    Puts("Save Countdown finished. Server Saving...");
                    countdownInSeconds = Convert.ToInt32(Config["CountdownInSeconds"]);
                    timer.Once(1f, () => HideGameTipsForAll());
                }
            });
        }

        private void CreateGameTipAll(string text)
        {
            foreach (BasePlayer player in BasePlayer.activePlayerList)
            {
                CreateGameTip(text, player);
            }
        }

        private void CreateGameTip(string text, BasePlayer player)
        {
            if (player == null)
                return;

            player.SendConsoleCommand("gametip.showgametip", text);
        }

        private void HideGameTipsForAll()
        {
            foreach (BasePlayer player in BasePlayer.activePlayerList)
            {
                player.SendConsoleCommand("gametip.hidegametip");
            }
        }

        [ConsoleCommand("gametipfalse")]
        private void gametipfalse(ConsoleSystem.Arg args)
        {
            if (args.Connection != null && args.Connection.authLevel < 2)
            {
                args.ReplyWith("You don't have permission to use this command.");
                return;
            }
            Config["UseGameTips"] = false;
            SaveConfig();
            covalence.Server.Command("o.reload AutomaticCountdownSave");
        }

        [ConsoleCommand("gametiptrue")]
        private void gametiptrue(ConsoleSystem.Arg args)
        {
            if (args.Connection != null && args.Connection.authLevel < 2)
            {
                args.ReplyWith("You don't have permission to use this command.");
                return;
            }
            Config["UseGameTips"] = true;
            SaveConfig();
            covalence.Server.Command("o.reload AutomaticCountdownSave");
        }

        [ConsoleCommand("saveintervalrefresh")]
        private void CmdSaveIntervalRefresh(ConsoleSystem.Arg args)
        {
            if (args.Connection != null && args.Connection.authLevel < 2)
            {
                args.ReplyWith("You don't have permission to use this command.");
                return;
            }
            float saveInterval = ConVar.Server.saveinterval;

            Config["ServerSaveInterval"] = saveInterval;
            SaveConfig();
            covalence.Server.Command("o.reload AutomaticCountdownSave");

            Puts($"Server save interval has been refreshed in the plugin config and set to: {saveInterval}");
        }

        [ConsoleCommand("countdown5s")]
        private void countdown5s(ConsoleSystem.Arg args)
        {
            if (args.Connection != null && args.Connection.authLevel < 2)
            {
                args.ReplyWith("You don't have permission to use this command.");
                return;
            }

            Config["CountdownInSeconds"] = 5;
            SaveConfig();
            covalence.Server.Command("o.reload AutomaticCountdownSave");

            args.ReplyWith("Countdown set to 5 seconds.");
        }

        [ConsoleCommand("countdown10s")]
        private void countdown10s(ConsoleSystem.Arg args)
        {
            if (args.Connection != null && args.Connection.authLevel < 2)
            {
                args.ReplyWith("You don't have permission to use this command.");
                return;
            }

            Config["CountdownInSeconds"] = 10;
            SaveConfig();
            covalence.Server.Command("o.reload AutomaticCountdownSave");

            args.ReplyWith("Countdown set to 10 seconds.");
        }

        [ConsoleCommand("countdown15s")]
        private void countdown15s(ConsoleSystem.Arg args)
        {
            if (args.Connection != null && args.Connection.authLevel < 2)
            {
                args.ReplyWith("You don't have permission to use this command.");
                return;
            }

            Config["CountdownInSeconds"] = 15;
            SaveConfig();
            covalence.Server.Command("o.reload AutomaticCountdownSave");

            args.ReplyWith("Countdown set to 15 seconds.");
        }

        [ConsoleCommand("countdown30s")]
        private void Countdown30s(ConsoleSystem.Arg args)
        {
            if (args.Connection != null && args.Connection.authLevel < 2)
            {
                args.ReplyWith("You don't have permission to use this command.");
                return;
            }

            Config["CountdownInSeconds"] = 30;
            SaveConfig();
            covalence.Server.Command("o.reload AutomaticCountdownSave");

            args.ReplyWith("Countdown set to 30 seconds.");
        }


        const string CUI = @"[{
      ""name"":""menu"",
      ""parent"":""Overlay"",
      ""components"":[
         {
            ""type"":""NeedsCursor""
         },
         {
            ""type"":""RectTransform"",
            ""anchormin"":""0.3432308 0.3259261"",
            ""anchormax"":""0.6401055 0.6481483"",
            ""offsetmin"":""0 0"",
            ""offsetmax"":""0 0""
         }
      ]
   },
   {
      ""name"":""top"",
      ""parent"":""menu"",
      ""components"":[
         {
            ""type"":""UnityEngine.UI.Image"",
            ""color"":""0.04313726 0.04313726 0.04313726 1""
         },
         {
            ""type"":""RectTransform"",
            ""anchormin"":""-5.662441E-06 0.8218389"",
            ""anchormax"":""1 1"",
            ""offsetmin"":""0 0"",
            ""offsetmax"":""0 0""
         }
      ]
   },
   {
      ""name"":""exit_button"",
      ""parent"":""top"",
      ""components"":[
         {
            ""type"":""UnityEngine.UI.Button"",
            ""close"":""menu"",
            ""color"":""0.7647059 0.1882353 0.1882353 1""
         },
         {
            ""type"":""RectTransform"",
            ""anchormin"":""0.9280667 0.2612895"",
            ""anchormax"":""0.9842069 0.777418"",
            ""offsetmin"":""0 0"",
            ""offsetmax"":""0 0""
         }
      ]
   },
   {
      ""name"":""exit_button_text"",
      ""parent"":""exit_button"",
      ""components"":[
         {
            ""type"":""UnityEngine.UI.Text"",
            ""text"":""x"",
            ""fontSize"":21,
            ""font"":""robotocondensed-bold.ttf"",
            ""align"":""MiddleCenter"",
            ""color"":""0 0 0 1""
         },
         {
            ""type"":""RectTransform"",
            ""anchormin"":""-0.2812483 -0.1625018"",
            ""anchormax"":""1.28124 1.243747"",
            ""offsetmin"":""0 0"",
            ""offsetmax"":""0 0""
         }
      ]
   },
   {
      ""name"":""topbar_text"",
      ""parent"":""top"",
      ""components"":[
         {
            ""type"":""UnityEngine.UI.Text"",
            ""text"":""Save Countdown Announcer - Editor""
         },
         {
            ""type"":""RectTransform"",
            ""anchormin"":""0.04385996 0.2709669"",
            ""anchormax"":""0.6543832 0.67742"",
            ""offsetmin"":""0 0"",
            ""offsetmax"":""0 0""
         }
      ]
   },
   {
      ""name"":""bottom"",
      ""parent"":""menu"",
      ""components"":[
         {
            ""type"":""UnityEngine.UI.Image"",
            ""color"":""0.08627451 0.08627451 0.08627451 1""
         },
         {
            ""type"":""RectTransform"",
            ""anchormin"":""-5.890615E-08 -0.08908099"",
            ""anchormax"":""1.000006 0.8298852"",
            ""offsetmax"":""0 0""
         }
      ]
   },
   {
      ""name"":""cluster"",
      ""parent"":""bottom"",
      ""components"":[
         {
            ""type"":""RectTransform"",
            ""anchormin"":""0.2333323 0.2157597"",
            ""anchormax"":""0.7666632 0.7817382"",
            ""offsetmax"":""0 0""
         }
      ]
   },
   {
      ""name"":""gametips"",
      ""parent"":""cluster"",
      ""components"":[
         {
            ""type"":""UnityEngine.UI.Image"",
            ""color"":""0.1098039 0.1098039 0.1098039 1""
         },
         {
            ""type"":""RectTransform"",
            ""anchormin"":""0 0.6839765"",
            ""anchormax"":""1.006568 1"",
            ""offsetmax"":""0 0""
         }
      ]
   },
   {
      ""name"":""text_gametips"",
      ""parent"":""gametips"",
      ""components"":[
         {
            ""type"":""UnityEngine.UI.Text"",
            ""text"":""Gametips"",
            ""fontSize"":13,
            ""align"":""MiddleCenter""
         },
         {
            ""type"":""RectTransform"",
            ""anchormin"":""0 0"",
            ""anchormax"":""0.4182947 0.9964995"",
            ""offsetmax"":""0 0""
         }
      ]
   },
   {
      ""name"":""true"",
      ""parent"":""gametips"",
      ""components"":[
         {
            ""type"":""UnityEngine.UI.Button"",
            ""command"":""gametiptrue"",
            ""close"":""hide_saved"",
            ""color"":""0.3529412 0.4862745 0.3529412 1""
         },
         {
            ""type"":""RectTransform"",
            ""anchormin"":""0.4594804 0.300702"",
            ""anchormax"":""0.6993428 0.6853152"",
            ""offsetmin"":""0 0"",
            ""offsetmax"":""0 0""
         }
      ]
   },
   {
      ""name"":""text_true"",
      ""parent"":""true"",
      ""components"":[
         {
            ""type"":""UnityEngine.UI.Text"",
            ""text"":""true"",
            ""fontSize"":11,
            ""align"":""MiddleCenter""
         },
         {
            ""type"":""RectTransform"",
            ""anchormin"":""0.005413651 0.04545313"",
            ""anchormax"":""1 1.045456"",
            ""offsetmax"":""0 0""
         }
      ]
   },
   {
      ""name"":""false"",
      ""parent"":""gametips"",
      ""components"":[
         {
            ""type"":""UnityEngine.UI.Button"",
            ""command"":""gametipfalse"",
            ""close"":""hide_saved"",
            ""color"":""0.8039216 0.345098 0.2313726 1""
         },
         {
            ""type"":""RectTransform"",
            ""anchormin"":""0.7143847 0.300702"",
            ""anchormax"":""0.9542471 0.6853153"",
            ""offsetmax"":""0 0""
         }
      ]
   },
   {
      ""name"":""text_false"",
      ""parent"":""false"",
      ""components"":[
         {
            ""type"":""UnityEngine.UI.Text"",
            ""text"":""false"",
            ""fontSize"":11,
            ""align"":""MiddleCenter""
         },
         {
            ""type"":""RectTransform"",
            ""anchormin"":""0.01903913 0.04545316"",
            ""anchormax"":""1.019039 0.9999998"",
            ""offsetmax"":""0 0""
         }
      ]
   },
   {
      ""name"":""interval"",
      ""parent"":""cluster"",
      ""components"":[
         {
            ""type"":""UnityEngine.UI.Image"",
            ""color"":""0.1098039 0.1098039 0.1098039 1""
         },
         {
            ""type"":""RectTransform"",
            ""anchormin"":""0 0.3414343"",
            ""anchormax"":""1.006568 0.6574578"",
            ""offsetmin"":""0 0"",
            ""offsetmax"":""0 0""
         }
      ]
   },
   {
      ""name"":""text_interval"",
      ""parent"":""interval"",
      ""components"":[
         {
            ""type"":""UnityEngine.UI.Text"",
            ""text"":""Save Interval"",
            ""fontSize"":13,
            ""align"":""MiddleCenter""
         },
         {
            ""type"":""RectTransform"",
            ""anchormin"":""0 0"",
            ""anchormax"":""0.4182947 0.9964994"",
            ""offsetmin"":""0 0"",
            ""offsetmax"":""0 0""
         }
      ]
   },
   {
      ""name"":""refresh"",
      ""parent"":""interval"",
      ""components"":[
         {
            ""type"":""UnityEngine.UI.Button"",
            ""command"":""saveintervalrefresh"",
            ""close"":""hide_refreshed"",
            ""color"":""0.2216572 0.4356023 0.7565105 1""
         },
         {
            ""type"":""RectTransform"",
            ""anchormin"":""0.5477172 0.2832204"",
            ""anchormax"":""0.8745183 0.667834"",
            ""offsetmax"":""0 0""
         }
      ]
   },
   {
      ""name"":""text_refresh"",
      ""parent"":""refresh"",
      ""components"":[
         {
            ""type"":""UnityEngine.UI.Text"",
            ""text"":""Refresh"",
            ""fontSize"":11,
            ""align"":""MiddleCenter""
         },
         {
            ""type"":""RectTransform"",
            ""anchormin"":""5.364418E-07 4.410744E-06"",
            ""anchormax"":""1 1"",
            ""offsetmax"":""0 0""
         }
      ]
   },
   {
      ""name"":""countdown"",
      ""parent"":""cluster"",
      ""components"":[
         {
            ""type"":""UnityEngine.UI.Image"",
            ""color"":""0.1098039 0.1098039 0.1098039 1""
         },
         {
            ""type"":""RectTransform"",
            ""anchormin"":""0 0"",
            ""anchormax"":""1.006568 0.3160233"",
            ""offsetmin"":""0 0"",
            ""offsetmax"":""0 0""
         }
      ]
   },
   {
      ""name"":""text_countdown"",
      ""parent"":""countdown"",
      ""components"":[
         {
            ""type"":""UnityEngine.UI.Text"",
            ""text"":""Countdown"",
            ""fontSize"":13,
            ""align"":""MiddleCenter""
         },
         {
            ""type"":""RectTransform"",
            ""anchormin"":""0 0"",
            ""anchormax"":""0.4182947 0.9964994"",
            ""offsetmin"":""0 0"",
            ""offsetmax"":""0 0""
         }
      ]
   },
   {
      ""name"":""countdown5s"",
      ""parent"":""countdown"",
      ""components"":[
         {
            ""type"":""UnityEngine.UI.Button"",
            ""command"":""countdown5s"",
            ""close"":""hide_changed"",
            ""color"":""0.3529412 0.4862745 0.3529412 1""
         },
         {
            ""type"":""RectTransform"",
            ""anchormin"":""0.4594809 0.2748239"",
            ""anchormax"":""0.552283 0.6594381"",
            ""offsetmax"":""0 0""
         }
      ]
   },
   {
      ""name"":""text_5s"",
      ""parent"":""countdown5s"",
      ""components"":[
         {
            ""type"":""UnityEngine.UI.Text"",
            ""text"":""5s"",
            ""fontSize"":10,
            ""align"":""MiddleCenter""
         },
         {
            ""type"":""RectTransform"",
            ""anchormin"":""0.1 0.1"",
            ""anchormax"":""1.000002 0.9672718"",
            ""offsetmax"":""0 0""
         }
      ]
   },
   {
      ""name"":""countdown10s"",
      ""parent"":""countdown"",
      ""components"":[
         {
            ""type"":""UnityEngine.UI.Button"",
            ""command"":""countdown10s"",
            ""close"":""hide_changed"",
            ""color"":""0.3529412 0.4862745 0.3529412 1""
         },
         {
            ""type"":""RectTransform"",
            ""anchormin"":""0.5673251 0.2748239"",
            ""anchormax"":""0.6830034 0.6594381"",
            ""offsetmin"":""0 0"",
            ""offsetmax"":""0 0""
         }
      ]
   },
   {
      ""name"":""text_10s"",
      ""parent"":""countdown10s"",
      ""components"":[
         {
            ""type"":""UnityEngine.UI.Text"",
            ""text"":""10s"",
            ""fontSize"":10,
            ""align"":""MiddleCenter""
         },
         {
            ""type"":""RectTransform"",
            ""anchormin"":""0.1 0.1"",
            ""anchormax"":""0.9717538 0.967272"",
            ""offsetmin"":""0 0"",
            ""offsetmax"":""0 0""
         }
      ]
   },
   {
      ""name"":""countdown15s"",
      ""parent"":""countdown"",
      ""components"":[
         {
            ""type"":""UnityEngine.UI.Button"",
            ""command"":""countdown15s"",
            ""close"":""hide_changed"",
            ""color"":""0.3529412 0.4862745 0.3529412 1""
         },
         {
            ""type"":""RectTransform"",
            ""anchormin"":""0.6980453 0.2748239"",
            ""anchormax"":""0.8137236 0.6594381"",
            ""offsetmin"":""0 0"",
            ""offsetmax"":""0 0""
         }
      ]
   },
   {
      ""name"":""text_15s"",
      ""parent"":""countdown15s"",
      ""components"":[
         {
            ""type"":""UnityEngine.UI.Text"",
            ""text"":""15s"",
            ""fontSize"":10,
            ""align"":""MiddleCenter""
         },
         {
            ""type"":""RectTransform"",
            ""anchormin"":""0.1 0.1"",
            ""anchormax"":""0.9717538 0.967272"",
            ""offsetmax"":""0 0""
         }
      ]
   },
   {
      ""name"":""countdown30s"",
      ""parent"":""countdown"",
      ""components"":[
         {
            ""type"":""UnityEngine.UI.Button"",
            ""command"":""countdown30s"",
            ""close"":""hide_changed"",
            ""color"":""0.3529412 0.4862745 0.3529412 1""
         },
         {
            ""type"":""RectTransform"",
            ""anchormin"":""0.8287655 0.2748239"",
            ""anchormax"":""0.9444438 0.6594381"",
            ""offsetmax"":""0 0""
         }
      ]
   },
   {
      ""name"":""text_30s"",
      ""parent"":""countdown30s"",
      ""components"":[
         {
            ""type"":""UnityEngine.UI.Text"",
            ""text"":""30s"",
            ""fontSize"":10,
            ""align"":""MiddleCenter""
         },
         {
            ""type"":""RectTransform"",
            ""anchormin"":""0.1 0.1"",
            ""anchormax"":""0.9717538 0.967272"",
            ""offsetmax"":""0 0""
         }
      ]
   },
   {
      ""name"":""text_saved"",
      ""parent"":""bottom"",
      ""components"":[
         {
            ""type"":""UnityEngine.UI.Text"",
            ""text"":""Saved."",
            ""fontSize"":13,
            ""align"":""MiddleCenter"",
            ""color"":""0.2662668 0.5423159 0.2601298 1""
         },
         {
            ""type"":""RectTransform"",
            ""anchormin"":""0.7771899 0.6128826"",
            ""anchormax"":""0.9526277 0.7723573"",
            ""offsetmax"":""0 0""
         }
      ]
   },
   {
      ""name"":""text_refreshed"",
      ""parent"":""bottom"",
      ""components"":[
         {
            ""type"":""UnityEngine.UI.Text"",
            ""text"":""Refreshed!"",
            ""fontSize"":13,
            ""align"":""MiddleCenter"",
            ""color"":""0.2627451 0.5411765 0.2588235 1""
         },
         {
            ""type"":""RectTransform"",
            ""anchormin"":""0.7771899 0.4190115"",
            ""anchormax"":""0.9526277 0.5784863"",
            ""offsetmin"":""0 0"",
            ""offsetmax"":""0 0""
         }
      ]
   },
   {
      ""name"":""text_changed"",
      ""parent"":""bottom"",
      ""components"":[
         {
            ""type"":""UnityEngine.UI.Text"",
            ""text"":""Changed."",
            ""fontSize"":13,
            ""align"":""MiddleCenter"",
            ""color"":""0.2627451 0.5411765 0.254902 1""
         },
         {
            ""type"":""RectTransform"",
            ""anchormin"":""0.7771899 0.2220137"",
            ""anchormax"":""0.9526277 0.3814878"",
            ""offsetmin"":""0 0"",
            ""offsetmax"":""0 0""
         }
      ]
   },
   {
      ""name"":""hide_saved"",
      ""parent"":""menu"",
      ""components"":[
         {
            ""type"":""UnityEngine.UI.Image"",
            ""color"":""0.08627451 0.08627451 0.08627451 1""
         },
         {
            ""type"":""RectTransform"",
            ""anchormin"":""0.7824569 0.4879309"",
            ""anchormax"":""0.9578955 0.6373563"",
            ""offsetmax"":""0 0""
         }
      ],
      ""fadeOut"":1.0
   },
   {
      ""name"":""hide_changed"",
      ""parent"":""menu"",
      ""components"":[
         {
            ""type"":""UnityEngine.UI.Image"",
            ""color"":""0.08627451 0.08627451 0.08627451 1""
         },
         {
            ""type"":""RectTransform"",
            ""anchormin"":""0.7824569 0.1028737"",
            ""anchormax"":""0.9578956 0.2522988"",
            ""offsetmin"":""0 0"",
            ""offsetmax"":""0 0""
         }
      ],
      ""fadeOut"":1.0
   },
   {
      ""name"":""hide_refreshed"",
      ""parent"":""menu"",
      ""components"":[
         {
            ""type"":""UnityEngine.UI.Image"",
            ""color"":""0.08627451 0.08627451 0.08627451 1""
         },
         {
            ""type"":""RectTransform"",
            ""anchormin"":""0.7842112 0.2982759"",
            ""anchormax"":""0.9596498 0.4477012"",
            ""offsetmin"":""0 0"",
            ""offsetmax"":""0 0""
         }
      ],
      ""fadeOut"":1.0
   }
]";

        [ChatCommand("sca")]
        private void ShowGUI(BasePlayer player, string command, string[] args)
        {
            if (player != null && player.IsAdmin)
            {
                CuiHelper.DestroyUi(player, "menu");
                CuiHelper.AddUi(player, CUI);
            }
            else
            {
                player.ChatMessage("You don't have permission to use this command.");
            }
        }

        private void Unload()
        {
            HideGameTipsForAll();
        }

        private void OnPlayerDisconnected(BasePlayer player, string reason)
        {
            CuiHelper.DestroyUi(player, "menu");
        }
    }
}

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