Advertisement
Guest User

Kleines Bansystem

a guest
Jan 5th, 2014
217
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 9.19 KB | None | 0 0
  1. /*
  2. ================================================================================
  3. Kleines Bansystem von Music4You aka. Items4Landwirt aka. Slash
  4. Ich habe dieses kleine System aus langerweile geschrieben, da ich mal wieder
  5. was mit PAWN machen wollte.
  6. Ich hoffe ein paar von euch, spieziell die Anfänger können was damit anfangen.
  7. Um es anfängerfreundlich zu halten ist es in 3 Speicherarten geschrieben, welches
  8. ihr beim define ändern könnt.
  9.  
  10. Ich wünsche viel spaß damit, verbesserungsvorschläge sind gern gesehen.
  11. MfG
  12. ================================================================================
  13. */
  14.  
  15. #include <a_samp>
  16. #include <Banfix>
  17. #include <sscanf2>
  18. #include <ocmd>
  19.  
  20. #define SCM SendClientMessage
  21. #define grau 0xA0A0A0FF
  22. #define rot 0xFF0000FF
  23.  
  24. #define MYSQL //MYSQL = mysql mit R5, SQLITE = SQLite als filesystem auf sql basis, DINI = Filesystem für dini
  25.  
  26. #if defined MYSQL
  27.     #include <mysqlR5>
  28.     new connection;
  29.     //datenbank
  30.     #define SQL_HOST   "127.0.0.1"
  31.     #define SQL_USER   "root"
  32.     #define SQL_PASS   ""
  33.     #define SQL_DATA   "roleplay"
  34.     #define mescape mysql_real_escape_string
  35. #endif
  36. #if defined DINI
  37.     #include <Dini>
  38. #endif
  39. #if defined SQLITE
  40.     new DB:Data;
  41. #endif
  42.  
  43. public OnFilterScriptInit()
  44. {
  45.     print("\n======================================================");
  46.     print(" Bansystem by Slash aka. Music4You aka. Items4Landwirt");
  47.     Connect_To_Database();
  48.     #if defined MYSQL
  49.         mysql_query("CREATE TABLE IF NOT EXISTS `bans` (`id` int(11)  AUTO_INCREMENT, PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;");
  50.         mysql_query("ALTER TABLE `bans` ADD `Name` varchar(64)");
  51.         mysql_query("ALTER TABLE `bans` ADD `BanAdmin` varchar(64)");
  52.         mysql_query("ALTER TABLE `bans` ADD `Grund` varchar(64)");
  53.         mysql_query("ALTER TABLE `bans` ADD `Datum` varchar(64)");
  54.         mysql_query("ALTER TABLE `bans` ADD `Zeit` varchar(64)");
  55.         print("-> Speicherung via. MySQL aktiv");
  56.     #endif
  57.     #if defined DINI
  58.         print("-> Speicherung via. DINI aktiv");
  59.     #endif
  60.     #if defined SQLITE
  61.         print("-> Speicherung via. SQLite aktiv");
  62.     #endif
  63.     print("======================================================\n");
  64.     return 1;
  65. }
  66.  
  67. public OnFilterScriptExit()
  68. {
  69.     #if defined MYSQL
  70.     mysql_close(connection);
  71.     #endif
  72.     return 1;
  73. }
  74.  
  75. public OnPlayerRequestClass(playerid, classid)
  76. {
  77.     new string[128];
  78.     #if defined MYSQL
  79.         mescape(SpielerName(playerid),SpielerName(playerid));
  80.         format(string,sizeof(string),"SELECT * FROM `bans` WHERE `Name`='%s'",SpielerName(playerid));
  81.         mysql_query(string);
  82.         mysql_store_result();
  83.         if(mysql_num_rows())
  84.         {
  85.             SCM(playerid,rot,"Dein Account ist gebannt! Melde dich bei einen Administrator falls der Bann unbegründet ist.");
  86.             Kick(playerid);
  87.         }
  88.         mysql_free_result();
  89.     #endif
  90.     #if defined SQLITE
  91.         format(string,sizeof(string),"SELECT * FROM `bans` WHERE `Name`='%s'",DB_Escape(SpielerName(playerid)));
  92.         new DBResult:result = db_query(Data,string);
  93.         new rows = db_num_rows(result);
  94.         if(rows == 1)
  95.         {
  96.             SCM(playerid,rot,"Dein Account ist gebannt! Melde dich bei einen Administrator falls der Bann unbegründet ist.");
  97.             Kick(playerid);
  98.         }
  99.         db_free_result(result);
  100.     #endif
  101.     #if defined DINI
  102.         format(string,sizeof(string),"/Bans/%s.ini",SpielerName(playerid));
  103.         if(fexist(string))
  104.         {
  105.             SCM(playerid,rot,"Dein Account ist gebannt! Melde dich bei einen Administrator falls der Bann unbegründet ist.");
  106.             Kick(playerid);
  107.         }
  108.     #endif
  109.     return 1;
  110. }
  111.  
  112. ocmd:ban(playerid,params[])
  113. {
  114.     new pID,reason[32],string[256],Times[6];
  115.     if(!IsPlayerAdmin(playerid) && !CallRemoteFunction("PlayerIsAdmin","i",playerid))return SCM(playerid,grau,"Du bist nicht befugt!");
  116.     if(sscanf(params,"us[32]",pID,reason))return SCM(playerid,grau,"Benutze: /ban [Spieler|ID][Grund]");
  117.     if(!IsPlayerConnected(pID))return SCM(playerid,grau,"Der Spieler ist nicht eingeloggt!");
  118.     gettime(Times[0],Times[1],Times[2]);
  119.     getdate(Times[3],Times[4],Times[5]);
  120.     #if defined MYSQL
  121.         format(string,sizeof(string),"INSERT INTO `bans` (`Name`,`BanAdmin`,`Grund`,`Datum`,`Zeit`) VALUES ('%s','%s','%s','%02d/%02d/%d','%02d:%02d:%02d')",
  122.         mescape(SpielerName(playerid),SpielerName(playerid)),mescape(SpielerName(pID),SpielerName(pID)),mescape(reason,reason),
  123.         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]));
  124.         mysql_query(string);
  125.     #endif
  126.     #if defined SQLITE
  127.         format(string,sizeof(string),"INSERT INTO `bans` (`Name`,`BanAdmin`,`Grund`,`Datum`,`Zeit`) VALUES ('%s','%s','%s','%02d/%02d/%d','%02d:%02d:%02d')",
  128.         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]));
  129.         db_query(Data,string);
  130.     #endif
  131.     #if defined DINI
  132.     new file[50];
  133.     format(file,sizeof(file),"/Bans/%s.ini",SpielerName(pID));
  134.     if(!fexist(file))
  135.     {
  136.         dini_Create(file);
  137.         dini_Set(file, "BanAdmin", SpielerName(playerid));
  138.         dini_Set(file,"Grund", reason);
  139.         format(string,sizeof(string),"%02d/%02d/%d",Times[3],Times[4],Times[5]);
  140.         dini_Set(file,"Datum", string);
  141.         format(string,sizeof(string),"%02d:%02d:%02d",Times[0],Times[1],Times[2]);
  142.         dini_Set(file,"Zeit", string);
  143.     }
  144.     #endif
  145.     format(string,sizeof(string),"Administrator: %s hat den Spieler %s gebannt, Grund: %s",SpielerName(playerid),SpielerName(pID),reason);
  146.     SendClientMessageToAll(rot,string);
  147.     Kick(pID);
  148.     return 1;
  149. }
  150. ocmd:kick(playerid,params[])
  151. {
  152.     new pID,string[128],reason[32];
  153.     if(!IsPlayerAdmin(playerid) && !CallRemoteFunction("PlayerIsAdmin","i",playerid))return SCM(playerid,grau,"Du bist nicht befugt!");
  154.     if(sscanf(params,"us[32]",pID,reason))return SCM(playerid,grau,"Benutze: /kick [Spieler|ID][Grund]");
  155.     if(!IsPlayerConnected(pID))return SCM(playerid,grau,"Der Spieler ist nicht eingeloggt!");
  156.     format(string,sizeof(string),"Administrator: %s hat den Spieler %s gebannt, Grund: %s",SpielerName(playerid),SpielerName(pID),reason);
  157.     SendClientMessageToAll(rot,string);
  158.     Kick(pID);
  159.     return 1;
  160. }
  161. ocmd:unban(playerid,params[])
  162. {
  163.     new string[128],name[30];
  164.     if(!IsPlayerAdmin(playerid) && !CallRemoteFunction("PlayerIsAdmin","i",playerid))return SCM(playerid,grau,"Du bist nicht befugt!");
  165.     if(sscanf(params,"s[30]",name))return SCM(playerid,grau,"Benutze: /unban [Genauer Spielername]");
  166.     #if defined MYSQL
  167.         mescape(name,name);
  168.         format(string,sizeof(string),"SELECT * FROM `bans` WHERE `Name`='%s'",name);
  169.         mysql_query(string);
  170.         mysql_store_result();
  171.         if(mysql_num_rows())
  172.         {
  173.             format(string,sizeof(string),"DELETE FROM `bans` WHERE `Name`='%s'",name);
  174.             mysql_query(string);
  175.             SCM(playerid,-1,"Der Spieler wurde entbannt!");
  176.         }
  177.         else return SCM(playerid,rot,"Dieser Spieler ist nicht gebannt!");
  178.         mysql_free_result();
  179.     #endif
  180.     #if defined SQLITE
  181.         format(string,sizeof(string),"SELECT * FROM `bans` WHERE `Name`='%s'",DB_Escape(name));
  182.         new DBResult:result = db_query(Data,string);
  183.         new rows = db_num_rows(result);
  184.         if(rows == 1)
  185.         {
  186.             format(string,sizeof(string),"DELETE FROM `bans` WHERE `Name`='%s'",name);
  187.             db_query(Data,string);
  188.             SCM(playerid,-1,"Der Spieler wurde entbannt!");
  189.         }
  190.         else return SCM(playerid,rot,"Dieser Spieler ist nicht gebannt!");
  191.         db_free_result(result);
  192.     #endif
  193.     #if defined DINI
  194.         format(string,sizeof(string),"/Bans/%s.ini",name);
  195.         if(fexist(string))
  196.         {
  197.             dini_Remove(string);
  198.             SCM(playerid,-1,"Der Spieler wurde entbannt!");
  199.         }
  200.         else return SCM(playerid,rot,"Dieser Spieler ist nicht gebannt!");
  201.     #endif
  202.     return 1;
  203. }
  204.  
  205. stock Connect_To_Database()
  206. {
  207.     #if defined MYSQL
  208.         connection=mysql_connect(SQL_HOST, SQL_USER, SQL_DATA, SQL_PASS);
  209.         if(mysql_ping() == 1)return print("<-| [MYSQL] Verbindung zur Datenbank wurde erfolgreich hergestellt!");
  210.         print("<- [MYSQL] Es konnte keine Verbindung zur Datenbank hergestellt werden!");
  211.         print("<- [MYSQL] Es wird erneut versucht eine Verbindung zur Datenbank herzustellen!");
  212.         connection=mysql_connect(SQL_HOST, SQL_USER, SQL_DATA, SQL_PASS);
  213.         if(mysql_ping() == 1)return print("<-| [MYSQL] Es konnte im 2 Versuch eine Verbindung hergestellt werden!");
  214.         print("<- [MYSQL] Es konnte keine Verbindung zur Datenbank hergestellt werden!");
  215.         print("<- [MYSQL] Der Server wird nun beendet!");
  216.         SendRconCommand("exit");
  217.         return true;
  218.     #endif
  219.     #if defined SQLITE
  220.         Data = db_open("Ban.db");
  221.         db_query(Data,"CREATE TABLE IF NOT EXISTS `bans`(`Name`,`BanAdmin`,`Grund`,`Datum`,`Zeit`)");
  222.     #endif
  223. }
  224. stock SpielerName(playerid)
  225. {
  226.     new getname[MAX_PLAYER_NAME];
  227.     GetPlayerName(playerid,getname,sizeof(getname));
  228.     return getname;
  229. }
  230.  
  231. stock DB_Escape(text[])
  232. {
  233.     new
  234.         ret[80 * 2],
  235.         ch,
  236.         i,
  237.         j;
  238.     while ((ch = text[i++]) && j < sizeof (ret))
  239.     {
  240.         if (ch == '\'')
  241.         {
  242.             if (j < sizeof (ret) - 2)
  243.             {
  244.                 ret[j++] = '\'';
  245.                 ret[j++] = '\'';
  246.             }
  247.         }
  248.         else if (j < sizeof (ret))
  249.         {
  250.             ret[j++] = ch;
  251.         }
  252.         else
  253.         {
  254.             j++;
  255.         }
  256.     }
  257.     ret[sizeof (ret) - 1] = '\0';
  258.     return ret;
  259. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement