CMD:oban(playerid,params[])
{
new string[128];
new cmdreason[100];
new name[MAX_PLAYER_NAME];
if(AdminLevel[playerid] < 4) return SendClientMessage(playerid, COLOR_ERROR, "[ERROR]:{FFFFFF}This command is only restricted to administrators");
if(sscanf(params,"us[100]",name,cmdreason))
{
SendClientMessage(playerid,COLOR_ERROR,"[USAGE]:{FFFFFF} /oban (Player Name/ID) (Reason)");
return 1;
}
if(!udb_Exists(name))
{
SendClientMessage(playerid, COLOR_ERROR, "[ERROR]:{FFFFFF} The account does not exist in files, please try again with correct name.");
return 1;
}
format(string,sizeof(string),"[ADMIN]:{FFFFFF} Administrator %s has offline banned %s from the server. Reason: %s.",PlayerName(playerid), name, cmdreason);
SendClientMessageToAll(COLOR_ADMIN,string);
format(string,sizeof(string),"9[ADMIN] Administrator %s has offline banned %s from the server. Reason: %s.",PlayerName(playerid), name, cmdreason);
IRC_GroupSay(gGroupID,IRC_CHANNEL,string);
dUserSetINT(name).("Nameban",1);
return 1;
}
if(!udb_Exists(name)) { SendClientMessage(playerid, COLOR_ERROR, "[ERROR]:{FFFFFF} The account does not exist in files, please try again with correct name."); return 1; }
#include <a_samp>
new DB: SQLite;
public OnGameModeInit() {
SQLite = db_open("ban.db");
if (SQLite == DB: 0) {
print("Ban database was not initiated.");
}
else {
db_free_result(db_query(SQLite, "CREATE TABLE IF NOT EXSITS `Bans` (`SQL_ID` INTEGER PRIMARY KEY AUTO INCREMENT, `Name` TEXT)"));
}
return 1;
}
public OnGameModeExit() {
db_close(SQLite);
return 1;
}
public OnPlayerConnect(playerid) {
new Player_Name[MAX_PLAYER_NAME];
GetPlayerName(playerid, Player_Name, MAX_PLAYER_NAME);
if (CheckBan(Player_Name)) { // if CheckBan returns anything else than 0. Same as CheckBan(Player_Name) != 0 OR CheckBan(Player_Name) > 0 or CheckBan(Player_Name) >= 1
Kick(playerid);
return 1;
}
return 1;
}
BanPlayer(playerid) {
new query[40 + MAX_PLAYER_NAME], Player_Name[MAX_PLAYER_NAME];
GetPlayerName(playerid, Player_Name, MAX_PLAYER_NAME);
format(query, sizeof query, "INSERT INTO `Bans` (`Name`) VALUES('%q')", Player_Name);
db_free_result(db_query(SQLite, query));
return 1;
}
UnbanPlayer(name[]) {
new query[38 + MAX_PLAYER_NAME];
format(query, sizeof query, "DELETE FROM `Bans` WHERE `Name` = '%q'", name);
db_free_result(db_query(SQLite, query));
return 1;
}
CheckBan(name[]) {
new query[40 + MAX_PLAYER_NAME], DBResult: result, num_rows;
format(query, sizeof query, "SELECT * FROM `Bans` WHERE `Name` = '%q'", name);
result = db_query(SQLite, query);
num_rows = db_num_rows(result);
db_free_result(result);
return num_rows; // Returns the number of rows (0 is not banned, anything else than 0 is banned)
}
if(sscanf(params,"us[100]",name,cmdreason))
{
SendClientMessage(playerid,COLOR_ERROR,"[USAGE]:{FFFFFF} /oban (Player Name/ID) (Reason)");
return 1;
}
CMD:oban(playerid,params[])
{
new string[128];
new cmdreason[100];
new name[MAX_PLAYER_NAME];
if(AdminLevel[playerid] < 4) return SendClientMessage(playerid, COLOR_ERROR, "[ERROR]:{FFFFFF}This command is only restricted to administrators");
if(sscanf(params,"s[25]s[100]",name,cmdreason))
{
SendClientMessage(playerid,COLOR_ERROR,"[USAGE]:{FFFFFF} /oban (Player Name/ID) (Reason)");
return 1;
}
if(!udb_Exists(name))
{
SendClientMessage(playerid, COLOR_ERROR, "[ERROR]:{FFFFFF} The account does not exist in files, please try again with correct name.");
return 1;
}
format(string,sizeof(string),"[ADMIN]:{FFFFFF} Administrator %s has offline banned %s from the server. Reason: %s.",PlayerName(playerid), name, cmdreason);
SendClientMessageToAll(COLOR_ADMIN,string);
format(string,sizeof(string),"9[ADMIN] Administrator %s has offline banned %s from the server. Reason: %s.",PlayerName(playerid), name, cmdreason);
IRC_GroupSay(gGroupID,IRC_CHANNEL,string);
dUserSetINT(name).("Nameban",1);
return 1;
}
The problem is that you're confusing offline banning with banning players who are in-game.
The part where it goes wrong: PHP код:
Full code: PHP код:
|