Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- ================================================================================
- Kleines Bansystem von Music4You aka. Items4Landwirt aka. Slash
- Ich habe dieses kleine System aus langerweile geschrieben, da ich mal wieder
- was mit PAWN machen wollte.
- Ich hoffe ein paar von euch, spieziell die Anfänger können was damit anfangen.
- Um es anfängerfreundlich zu halten ist es in 3 Speicherarten geschrieben, welches
- ihr beim define ändern könnt.
- Ich wünsche viel spaß damit, verbesserungsvorschläge sind gern gesehen.
- MfG
- ================================================================================
- */
- #include <a_samp>
- #include <Banfix>
- #include <sscanf2>
- #include <ocmd>
- #define SCM SendClientMessage
- #define grau 0xA0A0A0FF
- #define rot 0xFF0000FF
- #define MYSQL //MYSQL = mysql mit R5, SQLITE = SQLite als filesystem auf sql basis, DINI = Filesystem für dini
- #if defined MYSQL
- #include <mysqlR5>
- new connection;
- //datenbank
- #define SQL_HOST "127.0.0.1"
- #define SQL_USER "root"
- #define SQL_PASS ""
- #define SQL_DATA "roleplay"
- #define mescape mysql_real_escape_string
- #endif
- #if defined DINI
- #include <Dini>
- #endif
- #if defined SQLITE
- new DB:Data;
- #endif
- public OnFilterScriptInit()
- {
- print("\n======================================================");
- print(" Bansystem by Slash aka. Music4You aka. Items4Landwirt");
- Connect_To_Database();
- #if defined MYSQL
- mysql_query("CREATE TABLE IF NOT EXISTS `bans` (`id` int(11) AUTO_INCREMENT, PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;");
- mysql_query("ALTER TABLE `bans` ADD `Name` varchar(64)");
- mysql_query("ALTER TABLE `bans` ADD `BanAdmin` varchar(64)");
- mysql_query("ALTER TABLE `bans` ADD `Grund` varchar(64)");
- mysql_query("ALTER TABLE `bans` ADD `Datum` varchar(64)");
- mysql_query("ALTER TABLE `bans` ADD `Zeit` varchar(64)");
- print("-> Speicherung via. MySQL aktiv");
- #endif
- #if defined DINI
- print("-> Speicherung via. DINI aktiv");
- #endif
- #if defined SQLITE
- print("-> Speicherung via. SQLite aktiv");
- #endif
- print("======================================================\n");
- return 1;
- }
- public OnFilterScriptExit()
- {
- #if defined MYSQL
- mysql_close(connection);
- #endif
- return 1;
- }
- public OnPlayerRequestClass(playerid, classid)
- {
- new string[128];
- #if defined MYSQL
- mescape(SpielerName(playerid),SpielerName(playerid));
- format(string,sizeof(string),"SELECT * FROM `bans` WHERE `Name`='%s'",SpielerName(playerid));
- mysql_query(string);
- mysql_store_result();
- if(mysql_num_rows())
- {
- SCM(playerid,rot,"Dein Account ist gebannt! Melde dich bei einen Administrator falls der Bann unbegründet ist.");
- Kick(playerid);
- }
- mysql_free_result();
- #endif
- #if defined SQLITE
- format(string,sizeof(string),"SELECT * FROM `bans` WHERE `Name`='%s'",DB_Escape(SpielerName(playerid)));
- new DBResult:result = db_query(Data,string);
- new rows = db_num_rows(result);
- if(rows == 1)
- {
- SCM(playerid,rot,"Dein Account ist gebannt! Melde dich bei einen Administrator falls der Bann unbegründet ist.");
- Kick(playerid);
- }
- db_free_result(result);
- #endif
- #if defined DINI
- format(string,sizeof(string),"/Bans/%s.ini",SpielerName(playerid));
- if(fexist(string))
- {
- SCM(playerid,rot,"Dein Account ist gebannt! Melde dich bei einen Administrator falls der Bann unbegründet ist.");
- Kick(playerid);
- }
- #endif
- return 1;
- }
- ocmd:ban(playerid,params[])
- {
- new pID,reason[32],string[256],Times[6];
- if(!IsPlayerAdmin(playerid) && !CallRemoteFunction("PlayerIsAdmin","i",playerid))return SCM(playerid,grau,"Du bist nicht befugt!");
- if(sscanf(params,"us[32]",pID,reason))return SCM(playerid,grau,"Benutze: /ban [Spieler|ID][Grund]");
- if(!IsPlayerConnected(pID))return SCM(playerid,grau,"Der Spieler ist nicht eingeloggt!");
- gettime(Times[0],Times[1],Times[2]);
- getdate(Times[3],Times[4],Times[5]);
- #if defined MYSQL
- format(string,sizeof(string),"INSERT INTO `bans` (`Name`,`BanAdmin`,`Grund`,`Datum`,`Zeit`) VALUES ('%s','%s','%s','%02d/%02d/%d','%02d:%02d:%02d')",
- mescape(SpielerName(playerid),SpielerName(playerid)),mescape(SpielerName(pID),SpielerName(pID)),mescape(reason,reason),
- mescape(Times[3],Times[3]),mescape(Times[4],Times[4]),mescape(Times[5],Times[5]),mescape(Times[0],Times[0]),mescape(Times[1],Times[1]),mescape(Times[2],Times[2]));
- mysql_query(string);
- #endif
- #if defined SQLITE
- format(string,sizeof(string),"INSERT INTO `bans` (`Name`,`BanAdmin`,`Grund`,`Datum`,`Zeit`) VALUES ('%s','%s','%s','%02d/%02d/%d','%02d:%02d:%02d')",
- DB_Escape(SpielerName(playerid)),DB_Escape(SpielerName(pID)),DB_Escape(reason),DB_Escape(Times[3]),DB_Escape(Times[4]),DB_Escape(Times[5]),DB_Escape(Times[0]),DB_Escape(Times[1]),DB_Escape(Times[2]));
- db_query(Data,string);
- #endif
- #if defined DINI
- new file[50];
- format(file,sizeof(file),"/Bans/%s.ini",SpielerName(pID));
- if(!fexist(file))
- {
- dini_Create(file);
- dini_Set(file, "BanAdmin", SpielerName(playerid));
- dini_Set(file,"Grund", reason);
- format(string,sizeof(string),"%02d/%02d/%d",Times[3],Times[4],Times[5]);
- dini_Set(file,"Datum", string);
- format(string,sizeof(string),"%02d:%02d:%02d",Times[0],Times[1],Times[2]);
- dini_Set(file,"Zeit", string);
- }
- #endif
- format(string,sizeof(string),"Administrator: %s hat den Spieler %s gebannt, Grund: %s",SpielerName(playerid),SpielerName(pID),reason);
- SendClientMessageToAll(rot,string);
- Kick(pID);
- return 1;
- }
- ocmd:kick(playerid,params[])
- {
- new pID,string[128],reason[32];
- if(!IsPlayerAdmin(playerid) && !CallRemoteFunction("PlayerIsAdmin","i",playerid))return SCM(playerid,grau,"Du bist nicht befugt!");
- if(sscanf(params,"us[32]",pID,reason))return SCM(playerid,grau,"Benutze: /kick [Spieler|ID][Grund]");
- if(!IsPlayerConnected(pID))return SCM(playerid,grau,"Der Spieler ist nicht eingeloggt!");
- format(string,sizeof(string),"Administrator: %s hat den Spieler %s gebannt, Grund: %s",SpielerName(playerid),SpielerName(pID),reason);
- SendClientMessageToAll(rot,string);
- Kick(pID);
- return 1;
- }
- ocmd:unban(playerid,params[])
- {
- new string[128],name[30];
- if(!IsPlayerAdmin(playerid) && !CallRemoteFunction("PlayerIsAdmin","i",playerid))return SCM(playerid,grau,"Du bist nicht befugt!");
- if(sscanf(params,"s[30]",name))return SCM(playerid,grau,"Benutze: /unban [Genauer Spielername]");
- #if defined MYSQL
- mescape(name,name);
- format(string,sizeof(string),"SELECT * FROM `bans` WHERE `Name`='%s'",name);
- mysql_query(string);
- mysql_store_result();
- if(mysql_num_rows())
- {
- format(string,sizeof(string),"DELETE FROM `bans` WHERE `Name`='%s'",name);
- mysql_query(string);
- SCM(playerid,-1,"Der Spieler wurde entbannt!");
- }
- else return SCM(playerid,rot,"Dieser Spieler ist nicht gebannt!");
- mysql_free_result();
- #endif
- #if defined SQLITE
- format(string,sizeof(string),"SELECT * FROM `bans` WHERE `Name`='%s'",DB_Escape(name));
- new DBResult:result = db_query(Data,string);
- new rows = db_num_rows(result);
- if(rows == 1)
- {
- format(string,sizeof(string),"DELETE FROM `bans` WHERE `Name`='%s'",name);
- db_query(Data,string);
- SCM(playerid,-1,"Der Spieler wurde entbannt!");
- }
- else return SCM(playerid,rot,"Dieser Spieler ist nicht gebannt!");
- db_free_result(result);
- #endif
- #if defined DINI
- format(string,sizeof(string),"/Bans/%s.ini",name);
- if(fexist(string))
- {
- dini_Remove(string);
- SCM(playerid,-1,"Der Spieler wurde entbannt!");
- }
- else return SCM(playerid,rot,"Dieser Spieler ist nicht gebannt!");
- #endif
- return 1;
- }
- stock Connect_To_Database()
- {
- #if defined MYSQL
- connection=mysql_connect(SQL_HOST, SQL_USER, SQL_DATA, SQL_PASS);
- if(mysql_ping() == 1)return print("<-| [MYSQL] Verbindung zur Datenbank wurde erfolgreich hergestellt!");
- print("<- [MYSQL] Es konnte keine Verbindung zur Datenbank hergestellt werden!");
- print("<- [MYSQL] Es wird erneut versucht eine Verbindung zur Datenbank herzustellen!");
- connection=mysql_connect(SQL_HOST, SQL_USER, SQL_DATA, SQL_PASS);
- if(mysql_ping() == 1)return print("<-| [MYSQL] Es konnte im 2 Versuch eine Verbindung hergestellt werden!");
- print("<- [MYSQL] Es konnte keine Verbindung zur Datenbank hergestellt werden!");
- print("<- [MYSQL] Der Server wird nun beendet!");
- SendRconCommand("exit");
- return true;
- #endif
- #if defined SQLITE
- Data = db_open("Ban.db");
- db_query(Data,"CREATE TABLE IF NOT EXISTS `bans`(`Name`,`BanAdmin`,`Grund`,`Datum`,`Zeit`)");
- #endif
- }
- stock SpielerName(playerid)
- {
- new getname[MAX_PLAYER_NAME];
- GetPlayerName(playerid,getname,sizeof(getname));
- return getname;
- }
- stock DB_Escape(text[])
- {
- new
- ret[80 * 2],
- ch,
- i,
- j;
- while ((ch = text[i++]) && j < sizeof (ret))
- {
- if (ch == '\'')
- {
- if (j < sizeof (ret) - 2)
- {
- ret[j++] = '\'';
- ret[j++] = '\'';
- }
- }
- else if (j < sizeof (ret))
- {
- ret[j++] = ch;
- }
- else
- {
- j++;
- }
- }
- ret[sizeof (ret) - 1] = '\0';
- return ret;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement