Smart
Ученик
Всем привет!
В этом уроке я раскажу, как сделать пинг-кикер, возможно кому-то понадобится.
И так:
1) Откройте pawno.exe
2) Создайте новый скрипт-файл (CTRL+N)
3) Удалить все, что в нем есть
4) Теперь, давайте сделаем сам скрипт.
А) Сначала вы должны добавить следующее в верхней части вашего скрипта:
Теперь мы можем использовать основные функции скриптов, такие как SendClientMessage и так далее.
Б) Теперь давайте создадим определитель. Мы будем использовать "maxping" его можно разместить в любой части скрипта
Также позволяет определить maxlagtimes, что это объясню чуть позже.
Итак, теперь наш скрипт должен выглядеть так:
В) Теперь мы должны создать функцию, чтобы мы могли проверить игрока.
Г) Теперь у нас есть функция, но на самом деле она не работает. Чтобы ее включить, мы сделаем одну вещь:
Д) И так скрипт почти готов, осталось добавить:
В этом уроке я раскажу, как сделать пинг-кикер, возможно кому-то понадобится.
И так:
1) Откройте pawno.exe
2) Создайте новый скрипт-файл (CTRL+N)
3) Удалить все, что в нем есть
4) Теперь, давайте сделаем сам скрипт.
А) Сначала вы должны добавить следующее в верхней части вашего скрипта:
PHP:
#include <a_samp>
Б) Теперь давайте создадим определитель. Мы будем использовать "maxping" его можно разместить в любой части скрипта
PHP:
if(playerping > maxping)
if(playerping > 600) // мы определили maxping в 600.
Итак, теперь наш скрипт должен выглядеть так:
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;
}
