[Урок] Выводим сообщения перед киком (0.3x)

Уроки по скриптингу

Moderator: SJplayer

Avatar
Topic author
Invi_Sasha M
Мл. сержант
Мл. сержант
Posts: 34
With us: 7 years 4 months

[Урок] Выводим сообщения перед киком (0.3x)

Post #1by Invi_Sasha » 22 May 2013, 21:56

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

Ко всем forward'ам:

Code: Select all

forward KickTimer(playerid);   

В начало OnPlayerDisconnect:

Code: Select all

if(GetPVarInt(playerid"Kick") != 0KillTimer(GetPVarInt(playerid"Kick"));   

В начало OnPlayerUpdate:

Code: Select all

if(GetPVarInt(playerid"Kick") != 0GKick(playerid);   

В конец мода или другое подходящее место:

Code: Select all

public KickTimer(playerid) return GKick(playerid); 

stock GKick(playeridtime 5000

    if(
GetPVarInt(playerid"Kick") == -1Kick(playerid); 
    else if(!
GetPVarInt(playerid"Kick")) SetPVarInt(playerid"Kick"SetTimerEx("KickTimer"time0"d"playerid)); 
    else 
    { 
        
KillTimer(GetPVarInt(playerid"Kick")); 
        
SetPVarInt(playerid"Kick", -1); 
        
GKick(playerid); 
    } 
    return 
1
}   


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

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

! ! !


Return to “Уроки”

Who is online

Users browsing this forum: 1 guest