Код:
#include <a_samp>
#include <zcmd>
#include <sscanf2>
#define Database_File "Server.db"
#undef MAX_PLAYERS
#define MAX_PLAYERS 50
#define COLOR_RED "{FF0000}"
#define COLOR_DARK_RED "{BB0000}"
#define COLOR_GREEN "{00FF00}"
#define COLOR_DARK_GREEN "{00BB00}"
#define COLOR_BLUE "{00FFFF}"
#define COLOR_DARK_BLUE "{00BBBB}"
new DB:Database;
new DBResult:DatabaseResult;
new PlayerName[MAX_PLAYERS][25];
new PlayerAdministratorLevel[MAX_PLAYERS];
new PlayerModerator[MAX_PLAYERS];
new PlayerVip[MAX_PLAYERS];
main()
{
}
public OnGameModeInit()
{
AddPlayerClass(0,0,0,0,0,0,0,0,0,0,0);
Database = db_open(Database_File);
DatabaseResult = db_query(Database,"CREATE TABLE IF NOT EXISTS `Administration` (`Name` CHAR(25),`AdministratorLevel` INT(1),`Moderator` INT(1),`Vip` INT(10))");
db_free_result(DatabaseResult);
return 1;
}
public OnGameModeExit()
{
db_close(Database);
return 1;
}
public OnPlayerConnect(playerid)
{
GetPlayerName(playerid,PlayerName[playerid],25);
PlayerAdministratorLevel[playerid] = 0;
PlayerModerator[playerid] = 0;
PlayerVip[playerid] = 0;
new String[150];
format(String,150,"SELECT * FROM `Administration` WHERE `Name` = '%s'",PlayerName[playerid]);
DatabaseResult = db_query(Database,String);
if(db_num_rows(DatabaseResult))
{
db_get_field_assoc(DatabaseResult,"AdministratorLevel",String,1);
PlayerAdministratorLevel[playerid] = strval(String);
db_get_field_assoc(DatabaseResult,"Moderator",String,1);
PlayerModerator[playerid] = strval(String);
db_get_field_assoc(DatabaseResult,"Vip",String,10);
PlayerVip[playerid] = strval(String);
db_free_result(DatabaseResult);
if(PlayerAdministratorLevel[playerid] > 0)
{
format(String,150,""COLOR_BLUE"Gracz "COLOR_DARK_BLUE"%s (%d) "COLOR_BLUE"zalogował się jako administrator poziomy "COLOR_DARK_BLUE"%d"COLOR_BLUE".",PlayerName[playerid],playerid,PlayerAdministratorLevel[playerid]);
SendClientMessageToAll(-1,String);
SetPlayerColor(playerid,0xFF0000FF);
}
if(PlayerModerator[playerid] == 1)
{
format(String,150,""COLOR_BLUE"Gracz "COLOR_DARK_BLUE"%s (%d) "COLOR_BLUE"zalogował się jako moderator.",PlayerName[playerid],playerid);
SendClientMessageToAll(-1,String);
SetPlayerColor(playerid,0x00FFFFFF);
}
if(PlayerVip[playerid] > gettime())
{
format(String,150,""COLOR_BLUE"Gracz "COLOR_DARK_BLUE"%s (%d) "COLOR_BLUE"zalogował się jako vip.",PlayerName[playerid],playerid);
SendClientMessageToAll(-1,String);
SetPlayerColor(playerid,0xFFFF00FF);
}
}
if(!db_num_rows(DatabaseResult))
{
db_free_result(DatabaseResult);
format(String,150,"INSERT INTO `Administration` (`Name`,`AdministratorLevel`,`Moderator`,`Vip`) VALUES('%s','%d','%d','%d')",PlayerName[playerid],PlayerAdministratorLevel[playerid],PlayerModerator[playerid],PlayerVip[playerid]);
DatabaseResult = db_query(Database,String);
db_free_result(DatabaseResult);
}
return 1;
}
COMMAND:setadmin(playerid,params[])
{
if(!GetPlayerAdministratorLevel(playerid,5)) return SendClientMessage(playerid,-1,""COLOR_RED"Nie posiadasz uprawnień do używania tej komendy.");
new PlayerID,Level;
if(sscanf(params,"dd",PlayerID,Level)) return SendClientMessage(playerid,-1,""COLOR_RED"Wpisz /Setadmin <ID> <Poziom Administratora>.");
if(!IsPlayerConnected(PlayerID)) return SendClientMessage(playerid,-1,""COLOR_RED"Gracz o podanym id nie jest podłączony.");
if(Level < 0 || Level > 5) return SendClientMessage(playerid,-1,""COLOR_RED"Poziom administratora nie możesz być mniejszy od 0 ani większy od 5.");
new String[150];
format(String,150,""COLOR_GREEN"Administrator "COLOR_DARK_GREEN"%s (%d) "COLOR_GREEN"mianował gracza "COLOR_DARK_GREEN"%s (%d) "COLOR_GREEN"administratorem poziomu "COLOR_DARK_GREEN"%d.",PlayerName[playerid],playerid,PlayerName[PlayerID],PlayerID,Level);
SendClientMessageToAll(-1,String);
PlayerAdministratorLevel[PlayerID] = Level;
format(String,150,"UPDATE `Administration` SET `AdministratorLevel` = '%d' WHERE `Name` = '%s'",Level,PlayerName[PlayerID]);
DatabaseResult = db_query(Database,String);
db_free_result(DatabaseResult);
return 1;
}
COMMAND:setmoderator(playerid,params[])
{
if(!GetPlayerAdministratorLevel(playerid,5)) return SendClientMessage(playerid,-1,""COLOR_RED"Nie posiadasz uprawnień do używania tej komendy.");
new PlayerID,Level;
if(sscanf(params,"dd",PlayerID,Level)) return SendClientMessage(playerid,-1,""COLOR_RED"Wpisz /Setmoderator <ID> <1/0>.");
if(!IsPlayerConnected(PlayerID)) return SendClientMessage(playerid,-1,""COLOR_RED"Gracz o podanym id nie jest podłączony.");
if(Level < 0 || Level > 1) return SendClientMessage(playerid,-1,""COLOR_RED"Poziom moderatora nie może być mniejszy od 0 ani większy od 1.");
new String[150];
if(Level == 1) format(String,150,""COLOR_GREEN"Administrator "COLOR_DARK_GREEN"%s (%d) "COLOR_GREEN"mianował gracza "COLOR_DARK_GREEN"%s (%d) "COLOR_GREEN"moderatorem.",PlayerName[playerid],playerid,PlayerName[PlayerID],PlayerID);
if(Level == 0) format(String,150,""COLOR_RED"Administrator "COLOR_DARK_RED"%s (%d) "COLOR_RED"zabrał moderatora graczowi "COLOR_DARK_RED"%s (%d)"COLOR_RED".",PlayerName[playerid],playerid,PlayerName[PlayerID],PlayerID);
SendClientMessageToAll(-1,String);
PlayerModerator[PlayerID] = Level;
format(String,150,"UPDATE `Administration` SET `Moderator` = '%d' WHERE `Name` = '%s'",Level,PlayerName[PlayerID]);
DatabaseResult = db_query(Database,String);
db_free_result(DatabaseResult);
return 1;
}
COMMAND:setvip(playerid,params[])
{
if(!GetPlayerAdministratorLevel(playerid,5)) return SendClientMessage(playerid,-1,""COLOR_RED"Nie posiadasz uprawnień do używania tej komendy.");
new PlayerID,Time;
if(sscanf(params,"dd",PlayerID,Time)) return SendClientMessage(playerid,-1,""COLOR_RED"Wpisz /Setip <ID> <Czas W Dniach/0>.");
if(!IsPlayerConnected(PlayerID)) return SendClientMessage(playerid,-1,""COLOR_RED"Gracz o podanym id nie jest podłączony.");
if(Time < 0) return SendClientMessage(playerid,-1,""COLOR_RED"Czas nie może być mniejszy od 0.");
if(Time * 60 * 60 * 24 > 31104000) return SendClientMessage(playerid,-1,""COLOR_RED"Czas nie może przekraczać 6 miesięcy.");
new String[150];
if(Time > 0) format(String,150,""COLOR_GREEN"Administrator "COLOR_DARK_GREEN"%s (%d) "COLOR_GREEN"mianował gracza "COLOR_DARK_GREEN"%s (%d) "COLOR_GREEN"vipem na "COLOR_DARK_GREEN"%d "COLOR_GREEN"dni.",PlayerName[playerid],playerid,PlayerName[PlayerID],PlayerID,Time);
if(Time == 0) format(String,150,""COLOR_RED"Administrator "COLOR_DARK_RED"%s (%d) "COLOR_RED"zabrał vipa graczowi "COLOR_DARK_RED"%s (%d)"COLOR_RED".",PlayerName[playerid],playerid,PlayerName[PlayerID],PlayerID);
SendClientMessageToAll(-1,String);
PlayerVip[PlayerID] = gettime() + Time;
format(String,150,"UPDATE `Administration` SET `Vip` = '%d' WHERE `Name` = '%s'",Time,PlayerName[PlayerID]);
DatabaseResult = db_query(Database,String);
db_free_result(DatabaseResult);
return 1;
}
stock GetPlayerAdministratorLevel(playerid,AdministratorLevel)
{
if(PlayerAdministratorLevel[playerid] >= AdministratorLevel) return 1;
return 0;
}
stock GetPlayerModerator(playerid)
{
if(IsPlayerAdmin(playerid)) return 1;
if(PlayerAdministratorLevel[playerid] > 0) return 1;
if(PlayerModerator[playerid] == 1) return 1;
return 0;
}
stock GetPlayerVip(playerid)
{
if(IsPlayerAdmin(playerid)) return 1;
if(PlayerAdministratorLevel[playerid] > 0) return 1;
if(PlayerModerator[playerid] == 1) return 1;
if(PlayerVip[playerid] > gettime()) return 1;
return 0;
}
I think is problem with this.
Код:
public OnPlayerConnect(playerid)
{
GetPlayerName(playerid,PlayerName[playerid],25);
PlayerAdministratorLevel[playerid] = 0;
PlayerModerator[playerid] = 0;
PlayerVip[playerid] = 0;
new String[150];
format(String,150,"SELECT * FROM `Administration` WHERE `Name` = '%s'",PlayerName[playerid]);
DatabaseResult = db_query(Database,String);
if(db_num_rows(DatabaseResult))
{
db_get_field_assoc(DatabaseResult,"AdministratorLevel",String,1);
PlayerAdministratorLevel[playerid] = strval(String);
db_get_field_assoc(DatabaseResult,"Moderator",String,1);
PlayerModerator[playerid] = strval(String);
db_get_field_assoc(DatabaseResult,"Vip",String,10);
PlayerVip[playerid] = strval(String);
db_free_result(DatabaseResult);
if(PlayerAdministratorLevel[playerid] > 0)
{
format(String,150,""COLOR_BLUE"Gracz "COLOR_DARK_BLUE"%s (%d) "COLOR_BLUE"zalogował się jako administrator poziomy "COLOR_DARK_BLUE"%d"COLOR_BLUE".",PlayerName[playerid],playerid,PlayerAdministratorLevel[playerid]);
SendClientMessageToAll(-1,String);
SetPlayerColor(playerid,0xFF0000FF);
}
if(PlayerModerator[playerid] == 1)
{
format(String,150,""COLOR_BLUE"Gracz "COLOR_DARK_BLUE"%s (%d) "COLOR_BLUE"zalogował się jako moderator.",PlayerName[playerid],playerid);
SendClientMessageToAll(-1,String);
SetPlayerColor(playerid,0x00FFFFFF);
}
if(PlayerVip[playerid] > gettime())
{
format(String,150,""COLOR_BLUE"Gracz "COLOR_DARK_BLUE"%s (%d) "COLOR_BLUE"zalogował się jako vip.",PlayerName[playerid],playerid);
SendClientMessageToAll(-1,String);
SetPlayerColor(playerid,0xFFFF00FF);
}
}
if(!db_num_rows(DatabaseResult))
{
db_free_result(DatabaseResult);
format(String,150,"INSERT INTO `Administration` (`Name`,`AdministratorLevel`,`Moderator`,`Vip`) VALUES('%s','%d','%d','%d')",PlayerName[playerid],PlayerAdministratorLevel[playerid],PlayerModerator[playerid],PlayerVip[playerid]);
DatabaseResult = db_query(Database,String);
db_free_result(DatabaseResult);
}
return 1;
}
this not working.