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

FREE ElasticPopulation : 1.0.7 1.0.7

Нет прав для скачивания
C#:
// Все права принадлежат дискорд сообществу https://discord.gg/VgNHPpNrz6
using Oxide.Core;
using Oxide.Core.Plugins;
using System;

namespace Oxide.Plugins
{
    [Info("ElasticPopulation", "Papa", "1.0.7")]
    [Description("Dynamically adjusts server max population based on current player count with optimized cooldown handling.")]
    public class ElasticPopulation : RustPlugin
    {
        private ConfigData configData;
        private bool timerActive = false;

        class ConfigData
        {
            public int MaxPlayersOffset { get; set; }
            public float CooldownPeriod { get; set; }
            public int MaximumPopulation { get; set; }
            public int MinimumPopulation { get; set; }
            public bool ConsoleMessagesEnabled { get; set; }
        }

        protected override void LoadDefaultConfig()
        {
            Puts("Creating a new configuration file.");
            configData = new ConfigData
            {
                MaxPlayersOffset = 1,
                CooldownPeriod = 10.0f,
                MaximumPopulation = 200,
                MinimumPopulation = 100,
                ConsoleMessagesEnabled = true
            };
            SaveConfig();
        }

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

        protected override void SaveConfig()
        {
            Config.WriteObject(configData);
        }

        private void OnServerInitialized()
        {
            SetMaxPlayers();
        }

        private void OnPlayerConnected(BasePlayer player)
        {
            StartCooldownTimer();
        }

        private void OnPlayerDisconnected(BasePlayer player, string reason)
        {
            StartCooldownTimer();
        }

        private void SetMaxPlayers()
        {
            int currentPlayers = BasePlayer.activePlayerList.Count;
            int newMaxPlayers = Math.Max(currentPlayers + configData.MaxPlayersOffset, configData.MinimumPopulation);
            newMaxPlayers = Math.Min(newMaxPlayers, configData.MaximumPopulation);

            if (ConVar.Server.maxplayers != newMaxPlayers)
            {
                ConVar.Server.maxplayers = newMaxPlayers;
                if (configData.ConsoleMessagesEnabled)
                {
                    Puts($"Max players adjusted to: {newMaxPlayers}");
                }
            }
        }

        private void StartCooldownTimer()
        {
            if (timerActive)
            {
                return;
            }

            timerActive = true;
            timer.Once(configData.CooldownPeriod, () =>
            {
                SetMaxPlayers();
                timerActive = false;
            });
        }
    }
}

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