MysteriousPAWN

YouWhitelist

Jun 17th, 2013
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 11.93 KB | None | 0 0
  1. /*
  2.     YouWhitelist ist ein bereitgestelltest Werk von Mysterious.
  3.     Support gibt es unter dem Beitrag oder per PN bei Mysterious.
  4.    
  5.             Falls beim anklicken evenentuell andere Dialoge angezeigt werden, musst Du die DialogID ändern
  6.    
  7.     Rechtliches:
  8.         - Der Name Mysterious muss im Script erhalten beleiben
  9.         - Das Werk darf nicht als eigenes Ausgegeben werden
  10.         - Release in anderen Foren ist verboten
  11.         - Alle Änderungen geschehen auf eigene Gefahr
  12.        
  13.        
  14.     Viel Spaß beim nutzen von YouWhitelist ;)
  15. */
  16.  
  17.  
  18. #define FILTERSCRIPT
  19. //#define MySQL //  Ausklammern, damit die Speicherart MySQL aktiviert wird.
  20. //#define PrintLog //  Ausklammern, damit Einträge und Löschungen in der Server.log angezeigt werden.
  21.  
  22. /////////////////////////////////////Includes///////////////////////////////////////
  23. #include <a_samp>
  24. #if defined MySQL
  25.     #include <a_mysql>
  26. #endif
  27.  
  28.  
  29. /////////////////////////////////////Defines///////////////////////////////////////
  30. #if !defined MySQL
  31. new DB:YouWhitelist;
  32. #endif
  33. #define DIALOG_WHITELIST 4520
  34. #define DIALOG_WHITELIST1 4521
  35. #define DIALOG_WHITELIST2 4522
  36. #define DIALOG_WHITELIST3 4523
  37. #define DIALOG_WHITELIST4 4524
  38.  
  39. #define ColRed 0xFF0000FF
  40. #define ColGreen 0x00FF00FF
  41.  
  42.  
  43. ///////////////////////////////////Datenbank///////////////////////////////////////
  44. //Datenbank MySQL (Falls vorhanden)
  45. #if defined MySQL
  46.     #define MYSQL_HOST "localhost"
  47.     #define MYSQL_USER "Nutzer"
  48.     #define MYSQL_PASS "********"
  49.     #define MYSQL_DB   "Databasename"
  50.     #error Bitte die Daten für die DB-Connection ausfüllen!
  51. #endif
  52.  
  53.  
  54. /////////////////////////////////////Public///////////////////////////////////////
  55.  
  56. public OnFilterScriptInit()
  57. {
  58.     print("\n--------------------------------------");
  59.     print(" \tYouWhitelist by Mysterious geladen");
  60.     print(" Bitte Copyright durchlesen!");
  61.     print("--------------------------------------\n");
  62.     #if defined MySQL
  63.     ConnectMySQL();
  64.     MySQLCreateTables();
  65.     #else
  66.     YouWhitelist = db_open("YouWhitelist.db");
  67.     #endif
  68.     return 1;
  69. }
  70.  
  71. public OnFilterScriptExit()
  72. {
  73.     #if defined MySQL
  74.     print(" MySQL Verbingung wurde getrennt!");
  75.     #else
  76.     db_close(YouWhitelist);
  77.     print(" |>YouWhitelist wurde erfolgreich entladen!<| ");
  78.     #endif
  79.     return 1;
  80. }
  81.  
  82. public OnPlayerRequestClass(playerid, classid)
  83. {
  84.     SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
  85.     SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
  86.     SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
  87.     return 1;
  88. }
  89.  
  90. public OnPlayerConnect(playerid)
  91. {
  92.     if(!PlayerWhitelisted(GetName(playerid)) && !PlayerWhitelisted(GetPIP(playerid))) {
  93.         SendClientMessage(playerid,ColRed,"|> __________________ Whitelist __________________ <|");
  94.         SendClientMessage(playerid,ColRed,"Dein/e Name/IP wurde nicht auf der Whitelist gefunden");
  95.         SendClientMessage(playerid,ColRed,"|> _______________________________________________ <|");
  96.         SetTimerEx("KickT",750,false,"i",playerid);
  97.     }
  98.     return 1;
  99. }
  100.  
  101. public OnPlayerCommandText(playerid, cmdtext[])
  102. {
  103.     if(strcmp("/whitelist", cmdtext, true, 10) == 0)
  104.     {
  105.         if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,ColRed,"Du musst als RCON-Admin eingeloggt sein, um diesen Befehl nutzen zu können!");
  106.         ShowPlayerDialog(playerid, DIALOG_WHITELIST, DIALOG_STYLE_LIST, "Whitelist - Was möchtest du tun?", "Namen hinzufügen\nIP hinzufügen\nNamen löschen\nIP löschen\nGESAMTE Namelist löschen\nGESAMTE IPlist löschen", "Auswählen", "Abbrechen");
  107.         return 1;
  108.     }
  109.     return 0;
  110. }
  111.  
  112. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  113. {
  114.     new string[512];
  115.     if(dialogid == DIALOG_WHITELIST)
  116.     {
  117.         if(!response) return SendClientMessage(playerid,ColRed,"- Abgebrochen -");
  118.         switch(listitem)
  119.         {
  120.             case 0:
  121.             {
  122.                 ShowPlayerDialog(playerid, DIALOG_WHITELIST1, DIALOG_STYLE_INPUT, "Namen hinzufügen", "Gebe den Namen ein, den du zur Whitelist hinzufügen möchtest:", "Bestätigen", "Abbrechen");
  123.                 return 1;
  124.             }
  125.             case 1:
  126.             {
  127.                 ShowPlayerDialog(playerid, DIALOG_WHITELIST2, DIALOG_STYLE_INPUT, "IP hinzufügen", "Gebe die IP ein, die du zur Whitelist hinzufügen möchtest:", "Bestätigen", "Abbrechen");
  128.                 return 1;
  129.             }
  130.             case 2:
  131.             {
  132.                 ShowPlayerDialog(playerid, DIALOG_WHITELIST3, DIALOG_STYLE_INPUT, "Namen löschen", "Gebe den Namen ein, den du von der Whitelist löschen möchtest:", "Bestätigen", "Abbrechen");
  133.                 return 1;
  134.             }
  135.             case 3:
  136.             {
  137.                 ShowPlayerDialog(playerid, DIALOG_WHITELIST4, DIALOG_STYLE_INPUT, "IP löschen", "Gebe die IP ein, die du von der Whitelist löschen möchtest:", "Bestätigen", "Abbrechen");
  138.                 return 1;
  139.             }
  140.             case 4:
  141.             {
  142.                 #if defined MySQL
  143.                 mysql_query("DELETE FROM Namelist");
  144.                 #else
  145.                 db_query(YouWhitelist,"DELETE FROM Namelist");
  146.                 #endif
  147.                 SendClientMessage(playerid,ColGreen,"Die Namelist wurde erfolgreich zurückgesetzt!");
  148.                 return 1;
  149.             }
  150.             case 5:
  151.             {
  152.                 #if defined MySQL
  153.                 mysql_query("DELETE FROM IPlist");
  154.                 #else
  155.                 db_query(YouWhitelist,"DELETE FROM IPlist");
  156.                 #endif
  157.                 SendClientMessage(playerid,ColGreen,"Die IPlist wurde erfolgreich zurückgesetzt!");
  158.                 return 1;
  159.             }
  160.         }
  161.     }
  162.     if(dialogid == DIALOG_WHITELIST1)
  163.     {
  164.         if(!response) return SendClientMessage(playerid,ColRed,"- Abgebrochen -");
  165.         if(strlen(inputtext) < 1) return SendClientMessage(playerid,ColRed,"Du musst einen Namen eingeben!");
  166.         if(strlen(inputtext) > 24) return SendClientMessage(playerid,ColRed,"Der Name darf nicht länger als 24 Zeichen sein!");
  167.         if(PlayerWhitelisted(inputtext) != 0) return SendClientMessage(playerid,ColRed, "Dieser Spieler steht bereits auf der Whitelist!");
  168.         format(string,sizeof string,"INSERT INTO Namelist (Name) VALUES ('%s')",inputtext);
  169.         #if defined MySQL
  170.         mysql_query(string);
  171.         #else
  172.         db_query(YouWhitelist,string);
  173.         #endif
  174.         format(string,sizeof(string),"[WHITELIST] Der Spielername %s wurde zur Whitelist hinzugefügt.",inputtext);
  175.         SendClientMessage(playerid,ColGreen,string);
  176.         #if defined PrintLog
  177.         print(string);
  178.         #endif
  179.         return 1;
  180.     }
  181.     if(dialogid == DIALOG_WHITELIST2)
  182.     {
  183.         if(!response) return SendClientMessage(playerid,ColRed,"- Abgebrochen -");
  184.         if(strlen(inputtext) < 1) return SendClientMessage(playerid,ColRed,"Du musst eine IP eingeben!");
  185.         if(strlen(inputtext) > 16) return SendClientMessage(playerid,ColRed,"Die IP darf nicht länger als 16 Zeichen seien!");
  186.         if(PlayerWhitelisted(inputtext) != 0) return SendClientMessage(playerid,ColRed, "Diese IP steht bereits auf der Whitelist!");
  187.         if(!IsIP(inputtext)) return SendClientMessage(playerid,ColRed,"Deine Eingabe ist keine IP!");
  188.         format(string,sizeof string,"INSERT INTO IPlist (IP) VALUES ('%s')",inputtext);
  189.         #if defined MySQL
  190.         mysql_query(string);
  191.         #else
  192.         db_query(YouWhitelist,string);
  193.         #endif
  194.         format(string,sizeof(string),"[WHITELIST] Die SpielerIP %s wurde zur Whitelist hinzugefügt.",inputtext);
  195.         SendClientMessage(playerid,ColGreen,string);
  196.         #if defined PrintLog
  197.         print(string);
  198.         #endif
  199.         return 1;
  200.     }
  201.     if(dialogid == DIALOG_WHITELIST3)
  202.     {
  203.         if(!response) return SendClientMessage(playerid,ColRed,"- Abgebrochen -");
  204.         if(strlen(inputtext) < 1) return SendClientMessage(playerid,ColRed,"Du musst einen Namen eingeben!");
  205.         if(strlen(inputtext) > 24) return SendClientMessage(playerid,ColRed,"Der Name darf nicht länger als 24 Zeichen sein!");
  206.         if(!PlayerWhitelisted(inputtext)) return SendClientMessage(playerid,ColRed, "Dieser Spieler steht nicht auf der Whitelist!");
  207.         format(string,sizeof string,"DELETE FROM Namelist WHERE Name = '%s'",inputtext);
  208.         #if defined MySQL
  209.         mysql_query(string);
  210.         #else
  211.         db_query(YouWhitelist,string);
  212.         #endif
  213.         format(string,sizeof(string),"[WHITELIST] Der Spielername %s wurde von der Whitelist entfernt.",inputtext);
  214.         SendClientMessage(playerid,ColGreen,string);
  215.         #if defined PrintLog
  216.         print(string);
  217.         #endif
  218.         return 1;
  219.     }
  220.     if(dialogid == DIALOG_WHITELIST4)
  221.     {
  222.         if(!response) return SendClientMessage(playerid,ColRed,"- Abgebrochen -");
  223.         if(strlen(inputtext) < 1) return SendClientMessage(playerid,ColRed,"Du musst eine IP eingeben!");
  224.         if(strlen(inputtext) > 16) return SendClientMessage(playerid,ColRed,"Die IP darf nicht länger als 16 Zeichen seien!");
  225.         if(!PlayerWhitelisted(inputtext)) return SendClientMessage(playerid,ColRed, "Diese IP steht nicht auf der Whitelist!");
  226.         if(!IsIP(inputtext)) return SendClientMessage(playerid,ColRed,"Deine Eingabe ist keine IP!");
  227.         format(string,sizeof string,"DELETE FROM IPlist WHERE IP = '%s'",inputtext);
  228.         #if defined MySQL
  229.         mysql_query(string);
  230.         #else
  231.         db_query(YouWhitelist,string);
  232.         #endif
  233.         format(string,sizeof(string),"[WHITELIST] Die SpielerIP %s wurde von der Whitelist entfernt.",inputtext);
  234.         SendClientMessage(playerid,ColGreen,string);
  235.         #if defined PrintLog
  236.         print(string);
  237.         #endif
  238.         return 1;
  239.     }
  240.     return 0;
  241. }
  242.  
  243. public OnPlayerClickPlayer(playerid, clickedplayerid, source)
  244. {
  245.     return 1;
  246. }
  247.  
  248. /////////////////////////////////////////Forward und Publics/////////////////////////////////////////
  249. forward KickT(playerid);
  250. public KickT(playerid)
  251. {
  252.     Kick(playerid);
  253.     return 1;
  254. }
  255. ///////////////////////////////////////////Stocks//////////////////////////////////////
  256. stock PlayerWhitelisted(NameIp[])
  257. {
  258.     new string[128], string2[128];
  259.     #if defined MySQL
  260.     format(string, sizeof(string),"SELECT * FROM Namelist WHERE Name = '%s'",NameIp);
  261.     format(string2, sizeof(string2),"SELECT * FROM IPlist WHERE IP = '%s'",NameIp);
  262.     mysql_query(string);
  263.     mysql_store_result();
  264.     new value = mysql_num_rows();
  265.     mysql_free_result();
  266.     mysql_query(string2);
  267.     mysql_store_result();
  268.     new value2 = mysql_num_rows();
  269.     mysql_free_result();
  270.     if(value == 0 && value2 == 0) return false;
  271.     return true;
  272.     #else
  273.     format(string, sizeof(string),"SELECT * FROM Namelist WHERE Name = '%s'",NameIp);
  274.     format(string2, sizeof(string2),"SELECT * FROM IPlist WHERE IP = '%s'",NameIp);
  275.     new DBResult:Result = db_query(YouWhitelist,string);
  276.     new DBResult:Result2 = db_query(YouWhitelist,string2);
  277.     new erg = db_num_rows(Result);
  278.     new erg2 = db_num_rows(Result2);
  279.     db_free_result(Result);
  280.     db_free_result(Result2);
  281.     if(erg == 0 && erg2 == 0) return false;
  282.     return true;
  283.     #endif
  284. }
  285. stock GetName(playerid)
  286. {
  287.     new Name[MAX_PLAYER_NAME];
  288.     GetPlayerName(playerid,Name,sizeof(Name));
  289.     return Name;
  290. }
  291. stock GetPIP(playerid)
  292. {
  293.     new PIP[16];
  294.     GetPlayerIp(playerid,PIP,sizeof(PIP));
  295.     return PIP;
  296. }
  297. stock IsIP(value[])
  298. {
  299.     new cpoint;
  300.     while(((value[cpoint] >= '0' && value[cpoint] <= '9') || value[cpoint] == '.') || (cpoint == 0 && value[cpoint] == '-'))cpoint++;
  301.     return (value[0] && strlen(value) == cpoint);
  302. }
  303.  
  304. /////////////////////MySQL Sachen///////////////////////
  305. stock ConnectMySQL()
  306. {
  307.     mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_DB, MYSQL_PASS);
  308.     if(mysql_ping() == 1)
  309.     {
  310.         print("--| [MYSQL] Die Verbindung wurde erfolgreich hergestellt!");
  311.         return 1;
  312.     }
  313.     else
  314.     {
  315.         print("--| [MYSQL] Es konnte keine Verbindung hergestellt werden!");
  316.         print("--| [MYSQL] Es wird versucht, eine Verbindung herzustellen!");
  317.         mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_DB, MYSQL_PASS);
  318.         if(mysql_ping() == 1)
  319.         {
  320.             print("--| [MYSQL] Es konnte im 2 Versuch eine Verbindung hergestellt werden!");
  321.             return 1;
  322.         }
  323.         else
  324.         {
  325.             print("--| [MYSQL] Das Verbinden schlug auch im 2. Versuch fehl!");
  326.             print("--| [MYSQL] Das Filterscript >YouWhitelis< wird nun entladen!");
  327.             SendRconCommand("unloadfs YouWhitelist");
  328.             return 1;
  329.         }
  330.     }
  331. }
  332. stock MySQLCreateTables();
  333. stock MySQLCreateTables()
  334. {
  335.     new string[1024];
  336.     format(string,sizeof(string),"CREATE TABLE IF NOT EXISTS `Namelist` (`ID` int(11) NOT NULL AUTO_INCREMENT, `Name` varchar(24) NOT NULL, PRIMARY KEY (`ID`)) ENGINE=MyISAM  DEFAULT CHARSET=latin1;");
  337.     mysql_query(string);
  338.     format(string,sizeof(string),"CREATE TABLE IF NOT EXISTS `IPlist` (`ID` int(11) NOT NULL AUTO_INCREMENT, `IP` varchar(16) NOT NULL, PRIMARY KEY (`ID`)) ENGINE=MyISAM  DEFAULT CHARSET=latin1;");
  339.     mysql_query(string);
  340.     print("--| [MYSQL] Tabellen der MySQL Datenbank wurde erfolgreich erstellt!");
  341. }
Advertisement
Add Comment
Please, Sign In to add comment