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

FREE Ping : 1.2.3 1.2.3

Нет прав для скачивания
C#:
// Все права принадлежат дискорд сообществу https://discord.gg/VgNHPpNrz6
/*
TODO:
- Add chat/console commands to check ping
- Add optional banning instead of kicking
- Add warning and timed kick option
*/

using System;
using System.Collections.Generic;

namespace Oxide.Plugins
{
    [Info("Ping", "Wulf/lukespragg", "1.2.3")]
    [Description("Automatic kicking of players with high pings.")]

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

        bool BroadcastKick => GetConfig("BroadcastKick", true);
        bool HighPingKick => GetConfig("HighPingKick", true);
        int PingLimit => GetConfig("PingLimit", 200);

        protected override void LoadDefaultConfig()
        {
            Config["BroadcastKick"] = BroadcastKick;
            Config["HighPingKick"] = HighPingKick;
            Config["PingLimit"] = PingLimit; // Milliseconds
            SaveConfig();
        }

        #endregion

        #region Localization

        void LoadDefaultMessages()
        {
            var messages = new Dictionary<string, string>
            {
                {"PingTooHigh", "Ping is too high: {ping}ms"},
                {"PlayerKicked", "{name} kicked for high ping ({ping}ms)"}
                //{"YourPing", "You have a ping of {ping}ms"}
            };
            lang.RegisterMessages(messages, this);
        }

        #endregion

        #region Initialization

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

            LoadDefaultConfig();
            LoadDefaultMessages();
            permission.RegisterPermission("ping.bypass", this);
            //cmd.AddChatCommand(config.Settings.Command, this, ChatPing);
            //cmd.AddConsoleCommand("global." + config.Settings.Command, this, ConsolePing);
        }

        #endregion

        #region Ping Check

        void HandlePing(string name, string steamId, int ping)
        {
            if (HasPermission(steamId, "ping.bypass") || ping < PingLimit) return;

            if (BroadcastKick)
                server.Broadcast(GetMessage("PlayerKicked").Replace("{name}", name).Replace("{ping}", ping.ToString()));
            if (HighPingKick)
                players.GetOnlinePlayer(steamId).Kick(GetMessage("PingTooHigh").Replace("{ping}", ping.ToString()));
        }

        #if HURTWORLD
        void OnPlayerInit(PlayerSession session)
        {
            timer.In(5f, () =>
            {
                if (!session.IsLoaded) return;
                HandlePing(session.Name, session.SteamId.ToString(), session.Player.averagePing);
            });
        }
        #endif

        #if RUST
        void OnPlayerInit(BasePlayer player)
        {
            timer.In(5f, () =>
            {
                if (!player.IsConnected()) return;
                HandlePing(player.displayName, player.UserIDString, Network.Net.sv.GetAveragePing(player.net.connection));
            });
        #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 оценок
Сверху