19.01.2013, 00:29
Код:
#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; }
Код:
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; }
Код:
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); }
//Sorry for bad english.