Kick — различия между версиями

Материал из Pro-Pawn Wiki
Перейти к: навигация, поиск
Строка 23: Строка 23:
 
SendClientMessage(targetid, -1, !"Соединение было закрыто администратором.");
 
SendClientMessage(targetid, -1, !"Соединение было закрыто администратором.");
 
SetTimerEx(!"@_DelayedKick", 800, false, !"d", playerid);
 
SetTimerEx(!"@_DelayedKick", 800, false, !"d", playerid);
return SendClientMessage(playerid, -1, string);
+
return SendClientMessage(playerid, -1, !"Соединение игрока было успешно закрыто.");
 
}
 
}
  

Версия 01:15, 8 августа 2018

Описание:

Закрывает соединение между сервером и клиентом (игроком).

Параметры:

(playerid)
playerid ID игрока, для которого нужно закрыть соединение.


Возвращаемое значение:

Всегда возвращает 1.

Если незадолго до закрытия соединения с игроком были совершены какие-либо действия (например, отправка сообщений с помощью SendClientMessage()), эффект от этих действий не будет виден на стороне игрока. Для обхода этой проблемы можно создать таймер с задержкой в 200-1000 миллисекунд и из него вызывать функцию Kick(), либо использовать уже готовое решение, например, dc_kickfix.inc или u_kickfix.inc.

Пример использования:

CMD:kick(playerid, params[])
{
    if (0 == IsPlayerAdmin(playerid))
        return SendClientMessage(playerid, -1, !"Вы не администратор сервера!");
    extract params -> new player:targetid; else // sscanf2
        return SendClientMessage(playerid, -1, !"Использование: /kick [ID игрока/часть ника]");
    if (targetid == INVALID_PLAYER_ID)
        return SendClientMessage(playerid, -1, !"Игрок не найден.");
    SendClientMessage(targetid, -1, !"Соединение было закрыто администратором.");
    SetTimerEx(!"@_DelayedKick", 800, false, !"d", playerid);
    return SendClientMessage(playerid, -1, !"Соединение игрока было успешно закрыто.");
}

@_DelayedKick(playerid);
@_DelayedKick(playerid)
    return Kick(playerid);