Доступ к архиву

Переход в группу "Пользователь"

300.00
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

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

Статус
В этой теме нельзя размещать новые ответы.

XemyL

Изучающий
Пользователь
Регистрация
5 Мар 2012
Сообщения
719
Лучшие ответы
0
Репутация
572
Как известно, в 0.3x функция Kick обрывает соединение с игроком не дожидаясь доставки сообщения и других пакетов с данными. Это сделано в целях защиты серверов. Сейчас я расскажу вам, как сделать доставку нужных нам данных игроку перед киком, максимально удобным способом.

Ко всем forward'ам:
PHP:
forward KickTimer(playerid);
В начало OnPlayerDisconnect:
PHP:
if(GetPVarInt(playerid, "Kick") != 0) KillTimer(GetPVarInt(playerid, "Kick"));
В начало OnPlayerUpdate:
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;
}
Теперь если вы захотите кикнуть игрока, то нужно использовать функцию GKick(playerid, time).
playerid - это ID игрока, которого вы хотите кикнуть.
time (не обязательно) - время, через которое игрока кикнет если он будет в AFK (по умолчанию 5 секунд).
Если игрок не находится в AFK его кикнет сразу же после доставки всех нужных пакетов с данными.

На этом всё, удачного программирования!
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу