CMD:ban(playerid,params[]) {
if(PlayerInfo[playerid][LoggedIn] == 1) {
if(PlayerInfo[playerid][Level] >= 2) {
new tmp[128], tmp2[128], Index; tmp = strtok(params,Index), tmp2 = strtok(params,Index);
if(isnull(params)) return SendClientMessage(playerid, red, "USAGE: /ban [playerid] [reason]");
if(isnull(tmp2)) return SendClientMessage(playerid, red, "ERROR: You must give a reason");
new player1, playername[MAX_PLAYER_NAME], adminname[MAX_PLAYER_NAME], string[128];
player1 = strval(tmp);
if(IsPlayerConnected(player1) && player1 != INVALID_PLAYER_ID && player1 != playerid && (PlayerInfo[player1][Level] != ServerInfo[MaxAdminLevel]) ) {
GetPlayerName(player1, playername, sizeof(playername)); GetPlayerName(playerid, adminname, sizeof(adminname));
new year,month,day,hour,minuite,second; getdate(year, month, day); gettime(hour,minuite,second);
CMDMessageToAdmins(playerid,"BAN");
format(string,sizeof(string),"%s has been banned by Administrator %s [Reason: %s] [Date: %d/%d/%d] [Time: %d:%d]",playername,adminname,params[2],day,month,year,hour,minuite);
SendClientMessageToAll(grey,string);
SaveToFile("BanLog",string);
aresetpall(player1);
print(string);
if(udb_Exists(PlayerName2(player1)) && PlayerInfo[player1][LoggedIn] == 1) dUserSetINT(PlayerName2(player1)).("banned",1);
format(string,sizeof(string),"banned by Administrator %s. Reason: %s", adminname, params[2] );
return BanEx(player1, string);
} else return SendClientMessage(playerid, red, "Player is not connected or is yourself or is the highest level admin");
} else return SendClientMessage(playerid,red,"ERROR: You are not a high enough level to use this command");
} else return SendClientMessage(playerid,red,"ERROR: You must be logged in to use this commands");
}
public OnPlayerConnect(playerid)
{
new PlayerName[128],string[128], file[256];
GetPlayerName(playerid, PlayerName, sizeof(PlayerName));
new tmp3[50]; GetPlayerIp(playerid,tmp3,50);
if (dUserINT(PlayerName2(playerid)).("banned") == 1)
{
SendClientMessage(playerid, red, "This name is banned from this server!");
SendClientMessage(playerid, red, "If You Think,Its Mistake,Please Make Appeal Here , Http://wx-play.cf");
format(string,sizeof(string),"%s ID:%d was auto kicked. Reason: Name banned from server",PlayerName,playerid);
SendClientMessageToAll(grey, string); print(string);
SaveToFile("KickLog",string); Kick(playerid);
}
if (dUserINT(PlayerName2(playerid)).("banned") == 1)
{
SendClientMessage(playerid, red, "This name is banned from this server!");
SendClientMessage(playerid, red, "If You Think,Its Mistake,Please Make Appeal Here , Http://wx-play.cf");
format(string,sizeof(string),"%s ID:%d was auto kicked. Reason: Name banned from server",PlayerName,playerid);
SendClientMessageToAll(grey, string); print(string);
SaveToFile("KickLog",string); Kick(playerid);
}
|
This part is already available in the code you posted?
Код:
if (dUserINT(PlayerName2(playerid)).("banned") == 1)
{
SendClientMessage(playerid, red, "This name is banned from this server!");
SendClientMessage(playerid, red, "If You Think,Its Mistake,Please Make Appeal Here , Http://wx-play.cf");
format(string,sizeof(string),"%s ID:%d was auto kicked. Reason: Name banned from server",PlayerName,playerid);
SendClientMessageToAll(grey, string); print(string);
SaveToFile("KickLog",string); Kick(playerid);
}
|
|
Kick will kick them before they get the message.
Put it on a timer or something so it gets sent, then kicks them a second later. |
forward AutoKick(playerid);
public AutoKick(playerid)
{
if( IsPlayerConnected(playerid) && ServerInfo[Locked] == 1 && PlayerInfo[playerid][AllowedIn] == false) {
new string[128];
SendClientMessage(playerid,grey,"You have been automatically kicked. Reason: Server Locked");
format(string,sizeof(string),"%s ID:%d has been automatically kicked. Reason: Server Locked",PlayerName2(playerid),playerid);
SaveToFile("KickLog",string); Kick(playerid);
SendClientMessageToAll(grey, string); print(string);
}
return 1;
}
KickPlayerFunc(playerid)
{
Kick(playerid);
return 1;
}
KickPlayer(playerid)
{
SetTimerEx("KickPlayerFunc",500,false,"i",playerid);
return 1;
}
|
You can make a function that sets a timer to call a function that kicks the player without it disconnecting you first.
pawn Код:
|
if (dUserINT(PlayerName2(playerid)).("banned") == 1)
{
format(string, sizeof(string), "Your account has been banned by an Admin. Reason: %s", <Your reason variable here>);
SendClientMessage(playerid, -1, string);
Kick(playerid);
}
|
Код:
if (dUserINT(PlayerName2(playerid)).("banned") == 1)
{
format(string, sizeof(string), "Your account has been banned by an Admin. Reason: %s", <Your reason variable here>);
SendClientMessage(playerid, -1, string);
Kick(playerid);
}
|
enum pInfo
{
name[MAX_PLAYER_NAME],
bowner,
bowned,
pass,
pcash,
bank,
team,
Jailed,
vhpb,
weed,
gang,
condoms,
inalcatraz,
RFCLevel,
AGLevel,
B2KLevel,
BALevel,
BMFLevel,
COPLevel,
BLevel,
PHLevel,
KODLevel,
XEFLevel,
TPKLevel,
OSLevel,
Registered,
LoggedIn,
Level,
Vip,
Muted,
Caps,
LJailTime,
Frozen,
FreezeTime,
Scores,
Kills,
Deaths,
hours,
mins,
secs,
Cookies,
TotalTime,
ConnectTime,
MuteWarnings,
Warnings,
Spawned,
TimesSpawned,
God,
DoorsLocked,
SpamCount,
SpamTime,
PingCount,
PingTime,
BotPing,
pPing[PING_MAX_EXCEEDS],
blip,
blipS,
pColour,
SpecID,
SpecType,
bool:AllowedIn,
FailLogin,
vowned,
vowner,
vowned2,
vowner2,
vowned3,
vowner3,
vowned4,
vowner4,
vowned5,
vowner5,
vowned6,
vowner6,
vowned7,
vowner7,
vowned8,
vowner8,
vowned9,
vowner9,
vowned10,
vowner10,
vowned11,
vowner11,
vowned12,
vowner12,
vowned13,
vowner13,
vowned14,
vowner14,
vowned15,
vowner15,
}
dUserSetINT(PlayerName2(playerid)).("banned",0);