*** как там скачать инклуд тот? где кнопка то :D
Вид для печати
*** как там скачать инклуд тот? где кнопка то :D
Спасибо
Можно иначе.
Ко всем дефайнам:
Использование:PHP код:
#define SPVI SetPVarInt
#define GPVI GetPVarInt
В одно секундный таймер:PHP код:
SPVI(playerid, "kickPl", 1);
PHP код:
foreach(new i : Player)
if(GPVI(i, "kickPl") > 0) SPVI(i, "kickPl", GPVI(i, "kickPl")+1);
else Kick(i);
Да можно, только вот runtime error будет. Этот инклуд как раз исправляет его.
А если кик прям перед выполнением функции? На 999 миллисекунде
stabker, предлагает вот такой вариант:
Я немного изменил и оставил себе вот такой вариант:PHP код:
forward DisconnectPlayer(playerid, f, reason[]);
public DisconnectPlayer(playerid, f, reason[])
{
if(IsPlayerConnected(playerid))
{
if(!f) Kick(playerid);
else BanEx(playerid, reason);
}
return 1;
}
stock BanExKickEx(playerid, f, reason[])
{
new ping = GetPlayerPing(playerid);
if(ping > 1000) ping = 1000;
return SetTimerEx("DisconnectPlayer", ping+10, 0, "dds", playerid, f, reason);
}
#define Kick(%0) BanExKickEx(%0, 0, "0")
#define BanEx(%0,%1) BanExKickEx(%0, 1, %1)
PHP код:
forward DisconnectPlayer(playerid, bool:is_kicked, reason[]);
public DisconnectPlayer(playerid, bool:is_kicked, reason[]){
if(IsPlayerConnected(playerid))
if(is_kicked)Kick(playerid);
else BanEx(playerid, reason);
return true;
}
stock fix_kick(playerid, bool:is_kicked = true, reason[] = " "){
new fix_ping = GetPlayerPing(playerid) + 25;
return SetTimerEx("DisconnectPlayer", fix_ping>1000?1000:fix_ping, 0, "dds", playerid, is_kicked, reason);
}
#define Kick(%0) fix_kick(%0)
#define BanEx(%0,%1) fix_kick(%0, false, %1)
Чем вот это плохо?
forward KickPublic(playerid);
public KickPublic(playerid) { Kick(playerid); }
stock KickWithMessage(playerid, color, message[])
{
SendClientMessage(playerid, color, message);
SetTimerEx("KickPublic", 1000, 0, "d", playerid);
}
Вижу что проблемы только с таймером, а так работа автора темы актуальна еще. Спасибо.