Доступ к архиву

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

[Урок] Cоздание кика при высоком пинге

Статус
В этой теме нельзя размещать новые ответы.

Smart

Ученик
Всем привет!

В этом уроке я раскажу, как сделать пинг-кикер, возможно кому-то понадобится.

И так:


1) Откройте pawno.exe
2) Создайте новый скрипт-файл (CTRL+N)
3) Удалить все, что в нем есть

4) Теперь, давайте сделаем сам скрипт.

А) Сначала вы должны добавить следующее в верхней части вашего скрипта:

PHP:
#include <a_samp>
Теперь мы можем использовать основные функции скриптов, такие как SendClientMessage и так далее.

Б) Теперь давайте создадим определитель. Мы будем использовать "maxping" его можно разместить в любой части скрипта
PHP:
if(playerping > maxping)
if(playerping > 600) // мы определили maxping в 600.
Также позволяет определить maxlagtimes, что это объясню чуть позже.

Итак, теперь наш скрипт должен выглядеть так:

PHP:
#include <a_samp>
#define maxping 600
#define maxlagtimes 5
В) Теперь мы должны создать функцию, чтобы мы могли проверить игрока.
PHP:
new pLagTimes[MAX_PLAYERS]; // Это переменная, некая система обнаружения лагов игрока.
new string[128], pName[MAX_PLAYER_NAME];
new pPing; // создаем новую переменную и для хранения
// Я поставил их вне цикла, так что цикл будет быстрее.

forward CheckPing(); // Если мы сделаем какую-либо публичную функцию, мы должны поставить ее вперед, или она не будет работать.
public CheckPing()
{
    for(new i = 0; i < MAX_PLAYERS;i++)
    {
        if(IsPlayerConnected(i))
        {
            pPing = GetPlayerPing(i);
            if(pPing > maxping) // Если игрок в пинг превышает пинг, то его кикает
            {
                pLagTimes[i]++; // Мы добавляем 1 время задержки. Когда игрок достигает 5 секунд, он получит кик.

                if(pLagTimes[i] == maxlagtimes)
                {
                    GetPlayerName(playerid, pName, sizeof(pName)); // Этим мы получаем имена игроков и сохранить его в строку.
                    format(string, sizeof string, "Игрок %s кикнут. Причина - высокий пинг! (%d/%d)", pName, pPing, maxping); // Сообщение что игрок кикнут, можете самостоятельно отредактировать
                    SendClientMessageToAll(-1, string);

                    Kick(i); // Сам кик
                }
            }
        }
    }
}
Г) Теперь у нас есть функция, но на самом деле она не работает. Чтобы ее включить, мы сделаем одну вещь:
PHP:
public OnFilterScriptInit()
{
    SetTimer("Checkping", 1000*5, 1); // Таймер, функция CheckPing будет выполнятся каждые 5 секунд. 1 в конце означает, что она будет повторяться.
    return 1;
}
Д) И так скрипт почти готов, осталось добавить:
PHP:
public OnPlayerConnect(playerid) // Когда новый игрок соединяется.
{
    pLagTimes[playerid] = 0; // устанавливаем pLagTimes[playerid] на 0.
    return 1;
}
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу