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

Description: Уроки по скриптингу
Moderator: SJplayer

Invi_Sasha M
Topic author, Мл. сержант
Мл. сержант
Avatar
Invi_Sasha M
Topic author, Мл. сержант
Мл. сержант
Posts: 34
Joined: 20 May 2013
With us: 11 years 6 months

#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 (over the past 5 minutes)

Users browsing this forum: 1 guest