- Регистрация
- 5 Мар 2012
- Сообщения
- 719
- Лучшие ответы
- 0
- Репутация
- 572
Как известно, в 0.3x функция Kick обрывает соединение с игроком не дожидаясь доставки сообщения и других пакетов с данными. Это сделано в целях защиты серверов. Сейчас я расскажу вам, как сделать доставку нужных нам данных игроку перед киком, максимально удобным способом.
Ко всем forward'ам:
В начало OnPlayerDisconnect:
В начало OnPlayerUpdate:
В конец мода или другое подходящее место:
Теперь если вы захотите кикнуть игрока, то нужно использовать функцию GKick(playerid, time).
playerid - это ID игрока, которого вы хотите кикнуть.
time (не обязательно) - время, через которое игрока кикнет если он будет в AFK (по умолчанию 5 секунд).
Если игрок не находится в AFK его кикнет сразу же после доставки всех нужных пакетов с данными.
На этом всё, удачного программирования!
Ко всем forward'ам:
PHP:
forward KickTimer(playerid);
PHP:
if(GetPVarInt(playerid, "Kick") != 0) KillTimer(GetPVarInt(playerid, "Kick"));
PHP:
if(GetPVarInt(playerid, "Kick") != 0) GKick(playerid);
PHP:
public KickTimer(playerid) return GKick(playerid);
stock GKick(playerid, time = 5000)
{
if(GetPVarInt(playerid, "Kick") == -1) Kick(playerid);
else if(!GetPVarInt(playerid, "Kick")) SetPVarInt(playerid, "Kick", SetTimerEx("KickTimer", time, 0, "d", playerid));
else
{
KillTimer(GetPVarInt(playerid, "Kick"));
SetPVarInt(playerid, "Kick", -1);
GKick(playerid);
}
return 1;
}
playerid - это ID игрока, которого вы хотите кикнуть.
time (не обязательно) - время, через которое игрока кикнет если он будет в AFK (по умолчанию 5 секунд).
Если игрок не находится в AFK его кикнет сразу же после доставки всех нужных пакетов с данными.
На этом всё, удачного программирования!
Последнее редактирование: