17.09.2012, 07:23
Here is my ban command
My OnPlayerConnect
The problem is if i ban someone and he/she rejoins. it simple asks them to type their password and he/she can play. Why is the ban part not working?
pawn Код:
CMD:ban(playerid, params[])
{
new targetid, reason[128], name[MAX_PLAYER_NAME];
if(Bit16_Get(g_AdminLevel, playerid) > 0)
{
if(sscanf(params, "us[128]", targetid, reason))
{
return SCM(playerid, COL_RED, "Usage: /ban <Playerid/Part of name> <Message>");
}
else
{
if(IsPlayerConnected(targetid))
{
new string[128];
format(string, sizeof(string), "%s has been banned from the server", GetPlayerName(targetid, name, sizeof(name)));
SendClientMessageToAll(COL_RED, string);
Bit1_Set(g_PlayerBanned, targetid, 1);
Ban(targetid);
}
}
}
else
{
SCM(playerid, COL_RED, "You need to be an admin to use this command!");
}
return 1;
}
pawn Код:
public OnPlayerConnect(playerid)
{
new
Query[ 1300 ],
Queryban[1300],
DBResult: pBan,
DBResult: Result,
banname[MAX_PLAYER_NAME],
name[ MAX_PLAYER_NAME ]
;
GetPlayerName(playerid, name, sizeof(name));
Bit1_Set(g_PlayerLogged, playerid, false);
format(Queryban, sizeof(Queryban), "SELECT `BANNED` FROM `USERS` WHERE `BANNED` = '%d'", DB_Escape(banname));
pBan = db_query(Database, Queryban);
if(Bit1_Get(g_PlayerBanned, playerid)) return Ban(playerid);
format(Query, sizeof(Query), "SELECT `NAME` FROM `USERS` WHERE `NAME` = '%s'", DB_Escape(name));
Result = db_query(Database, Query);
if(db_num_rows(Result))
{
format(Query, sizeof(Query), "{FFFFFF}Welcome %s(%d){FFFFFF} to the server, you're registered\n\nPlease log in by typing your password.", name, playerid);
ShowPlayerDialog(playerid, 1, DIALOG_STYLE_PASSWORD, "{FFFFFF}Server", Query, "Login", "Leave");
}
else
{
format(Query, sizeof(Query), "{FFFFFF}Welcome %s(%d){FFFFFF} to the server, you're not{FFFFFF} registered\n\nPlease log in by typing your password.", name, playerid);
ShowPlayerDialog(playerid, 0, DIALOG_STYLE_PASSWORD, "{FFFFFF}Server", Query, "Register", "Leave");
}
db_free_result(Result);
return 1;
}