As of SA-MP 0.3x, any action taken directly before BanEx() (such as sending a message withSendClientMessage) will not reach the player. A timer must be used to delay the ban.
forward BanExPublic(playerid, reason[]);
public BanExPublic(playerid, reason[])
{
BanEx(playerid, reason);
}
stock BanExWithMessage(playerid, color, message[], reason[])
{
//reason - The ban reason to be used for BanEx.
SendClientMessage(playerid, color, message);
SetTimerEx("BanExPublic", 1000, false, "d", playerid, reason);
}
public OnPlayerCommandText(playerid, cmdtext[])
{
if(strcmp(cmdtext, "/banme", true) == 0)
{
//Bans the player who executed this command.
BanExWithMessage(playerid, 0xFF0000FF, "You have been banned!", "Request");
return 1;
}
return 0;
}
CMD:ban(playerid, params[])
{
//Pridaj podmienku pre admina
new id,string[250];
if(sscanf(params,"is",id,string)) return SendClientMessage(playerid,-1,"Použitie : /ban [ Player ID ] [ Dovod ]");
if(!IsPlayerConnected(id)) return SendClientMessage(playerid,-1,"Hráč neni k dizpozicii");
SetTimerEx("BanExPublic", 1000, false, "d", playerid, reason);
format(string,sizeof(string),"Administrátor %s zabanoval hráča %s [ Dovod : %s ]",Jmeno(playerid),Jmeno(id),string);
SendClientMessageToAll(0xFF0000FF,string);
return 1;
}
forward BanExPublic(playerid, reason[]);
public BanExPublic(playerid, reason[])
{
BanEx(playerid, reason);
}
stock Jmeno(playerid)
{
new n[40];
GetPlayerName(playerid,n,sizeof(n));
return n;
}
To isté platí aj pre KICK