• Страница 1 из 1
  • 1
Выводим сообщения перед киком (0.3x)
Дмитрий Дата: Суббота, 23.03.2013, 16:22 | Сообщение # 1 | Сообщить о нерабочей теме


Аватар для Дмитрий

Как известно, в 0.3x функция Kick обрывает соединение с игроком не дожидаясь доставки сообщения и других пакетов с данными. Это сделано в целях защиты серверов. Сейчас я расскажу вам, как сделать доставку нужных нам данных игроку перед киком, максимально удобным способом.

[spoiler="Ко всем forward'ам:"]
Код
forward KickTimer(playerid);  

[/spoiler]

[spoiler="В начало OnPlayerDisconnect:"]
Код
if(GetPVarInt(playerid, "Kick") != 0) KillTimer(GetPVarInt(playerid, "Kick"));    

[/spoiler]

[spoiler="В начало OnPlayerUpdate:"]
Код
if(GetPVarInt(playerid, "Kick") != 0) GKick(playerid);   

[/spoiler]

[spoiler="В конец мода или другое подходящее место:"]
Код
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;
}    

[/spoiler]

Теперь если вы захотите кикнуть игрока, то нужно использовать функцию GKick(playerid, time).
playerid - это ID игрока, которого вы хотите кикнуть.
time (не обязательно) - время, через которое игрока кикнет если он будет в AFK (по умолчанию 5 секунд).
Если игрок не находится в AFK его кикнет сразу же после доставки всех нужных пакетов с данными.

На этом всё, удачного программирования!
Автор: XemyL


From Russia With Love!
  • Страница 1 из 1
  • 1
Поиск: