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

FREE Reserved : 1.0.0 1.0.0

Нет прав для скачивания
C#:
// Все права принадлежат дискорд сообществу https://discord.gg/VgNHPpNrz6
/*
TODO:
- Add option for dynamic number of slots based on 'reserved.slot' usage
- Add option to KickForReserved to allow full maxplayers usage until needed
- Add option to use reserved slot only if no regular slots available
*/

using System;
using System.Collections.Generic;

namespace Oxide.Plugins
{
    [Info("Reserved", "Wulf/lukespragg", "1.0.0")]
    [Description("Reserves a number of slots so that reserved players can connect.")]

    class Reserved : CovalencePlugin
    {
        // Do NOT edit this file, instead edit Reserved.json in oxide/config and Reserved.en.json in oxide/lang,
        // or create a language file for another language using the 'en' file as a default.#region Configuration

        //int UseDynamicSlots => GetConfig("UseDynamicSlots", true);
        //bool KickForReserved => GetConfig("KickForReserved", false);
        int ReservedSlots => GetConfig("ReservedSlots", 5);

        protected override void LoadDefaultConfig()
        {
            //Config["UseDynamicSlots"] = UseDynamicSlots;
            //Config["KickForReserved"] = KickForReserved;
            Config["ReservedSlots"] = ReservedSlots;
            SaveConfig();
        }

        #endregion

        #region Localization

        void LoadDefaultMessages()
        {
            var messages = new Dictionary<string, string>
            {
                {"ReservedSlotsOnly", "Only reserved slots available"}
            };
            lang.RegisterMessages(messages, this);
        }

        #endregion

        #region Initialization

        void Loaded()
        {
#if !HURTWORLD && !RUST
            throw new NotSupportedException($"This plugin does not support {(covalence.Game ?? "this game")}");
#endif

            LoadDefaultConfig();
            LoadDefaultMessages();
            permission.RegisterPermission("reserved.slot", this);
        }

        #endregion

        #region Reserved Check

#if HURTWORLD
        object CanClientLogin(PlayerSession session)
        {
            var curPlayers = GameManager.Instance.GetPlayerCount();
            var maxPlayers = GameManager.Instance.ServerConfig.MaxPlayers;

            if ((curPlayers + ReservedSlots) >= maxPlayers && !HasPermission(session.SteamId.ToString(), "reserved.slot"))
            {
                GameManager.Instance.KickPlayer(session.SteamId.ToString(), GetMessage("ReservedSlotsOnly", session.SteamId.ToString()));
                return true;
            }

            return null;
        }
#endif

#if RUST
        object CanClientLogin(Network.Connection connection)
        {
            var curPlayers = BasePlayer.activePlayerList.Count;
            var maxPlayers = ConVar.Server.maxplayers;

            if ((curPlayers + ReservedSlots) >= maxPlayers && !HasPermission(connection.userid.ToString(), "reserved.slot"))
            {
                return GetMessage("ReservedSlotsOnly", connection.userid.ToString());
            }

            return null;
        }
#endif

        #endregion

        #region Helper Methods

        T GetConfig<T>(string name, T defaultValue)
        {
            if (Config[name] == null) return defaultValue;
            return (T)Convert.ChangeType(Config[name], typeof(T));
        }

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

        bool HasPermission(string steamId, string perm) => permission.UserHasPermission(steamId, perm);

        #endregion
    }
}

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