Advertisement
Leon1337

timeban

Sep 16th, 2018
43
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 6.66 KB | None | 0 0
  1. //OnPlayerConnect:
  2. mysql_format(handle,Query, sizeof(Query), "SELECT * FROM `BANNED` WHERE `NAME` = '%e' OR `IP` = '%e'", GetName(playerid), PlayerIP(playerid)); //Es werden alle Zeilen in der Datenbank durchsucht und es wird entweder der Spielername oder die SpielerIP gesucht
  3. mysql_tquery(handle,Query, "OnUserBanned", "d", playerid); //Die Query wird an die Funktion "OnUserBanned" übergeben
  4.  
  5. //OnUserBanned:
  6. public OnUserBanned(playerid)
  7. {
  8.     new rows;
  9.     cache_get_row_count(rows); //Die Anzahl der Zeilen in dennen der Spielername oder die Spielerip gefunden wurde wird ausgelesen
  10.     if(rows == 0) //Wenn keine Zeile mit dem Spielernamen oder der Spielerip gefunden wurde ist der Spieler nicht gebannt
  11.     {
  12.         pInfo[playerid][pBanned] = false;
  13.         return 0;
  14.     }
  15.     else //Es wurde eine Zeile gefunden also ist der Spieler gebannt
  16.     {
  17.             new timestamp,banreason[50], bannedby[24], banname[24], banip[18], bandate[15], bantime[10], banstamp, banuntil, string[450];
  18.             cache_get_value_name(0, "REASON", banreason);
  19.             cache_get_value_name(0, "ADMIN", bannedby);
  20.             cache_get_value_name(0, "NAME", banname);
  21.             cache_get_value_name(0, "IP", banip);                 //     Die Daten werden aus der Zeile ausgelesen
  22.             cache_get_value_name(0, "DATE", bandate);
  23.             cache_get_value_name(0, "TIME", bantime);
  24.             cache_get_value_name_int(0, "STAMP", banstamp);
  25.             timestamp = gettime(); //Der jetzige Timestamp wird gespeichert
  26.             banuntil = banstamp - timestamp; //Der jetzige Timestamp minus dem Bantimestamp ist die verbleibende Zeit in Sekunden
  27.             if(timestamp >= banstamp && banstamp != 0) //Wenn der jetzige Timestamp höher ist als der Bantimestamp ist der Bann bereits abgelaufen also wird der Spieler entbannt
  28.             {
  29.                 new qQuery[150];
  30.                 mysql_format(handle,qQuery, sizeof(qQuery), "DELETE FROM `BANNED` WHERE `NAME` = '%e'", banname); //Der Datenbankeintrag wird gelöscht
  31.                 mysql_pquery(handle,qQuery);
  32.                 pInfo[playerid][pBanned] = false;
  33.                 SCM(playerid, COLOR_RED, "Dein Ban ist abgelaufen. Halte dich stets an die Regeln!");
  34.             }
  35.             banuntil = banuntil / 86400; //Die verbleibenden Tage sind die verbleibenden Sekunden geteilt durch 86400
  36.            
  37.             if(banstamp == 0) //Wenn der Banstamp 0 ist, wurde der Spieler permanent gebannt
  38.             {
  39.             format(string, sizeof(string), "{FFFFFF}Es wurde festgestellt dass dein Username oder deine IP{FC4949} gebannt {FFFFFF}ist.\n{FFFFFF}Gebannter Name: {FC4949}%s\n{FFFFFF}Gebannte IP: {FC4949}%s\n{FFFFFF}Gebannt von: {FC4949}%s\n{FFFFFF}Gebannt am: {FC4949}%s %s\n{FFFFFF}Verbleibende Zeit: {FC4949}Permanent\n{FFFFFF}Grund: {FC4949}%s\n\n* Die Verbindung zum Server wird getrennt.", banname, banip, bannedby, bandate, bantime,banreason);
  40.             ShowPlayerDialog(playerid, 0, DIALOG_STYLE_MSGBOX, "{FC4949}Bann erkannt.", string, "Schliessen", ""), string = "\0";
  41.             pInfo[playerid][pBanned] = true;
  42.             }
  43.             else if(timestamp <= banstamp) //Wenn der Spieler noch gebannt ist wird ihm die verbleibende Zeit angezeigt
  44.             {
  45.             format(string, sizeof(string), "{FFFFFF}Es wurde festgestellt dass dein Username oder deine IP{FC4949} gebannt {FFFFFF}ist.\n{FFFFFF}Gebannter Name: {FC4949}%s\n{FFFFFF}Gebannte IP: {FC4949}%s\n{FFFFFF}Gebannt von: {FC4949}%s\n{FFFFFF}Gebannt am: {FC4949}%s %s\n{FFFFFF}Verbleibende Zeit: {FC4949}%i Tage\n{FFFFFF}Grund: {FC4949}%s\n\n* Die Verbindung zum Server wird getrennt.", banname, banip, bannedby, bandate, bantime,banuntil,banreason);
  46.             ShowPlayerDialog(playerid, 0, DIALOG_STYLE_MSGBOX, "{FC4949}Bann erkannt.", string, "Schliessen", ""), string = "\0";
  47.             pInfo[playerid][pBanned] = true;
  48.             }
  49.            
  50.             if(pInfo[playerid][pBanned]) //Weil der Spieler gebannt ist, wird er gekickt
  51.             {
  52.             printf("[kick] %s wurde automatisch gekickt weil er gebannt ist", GetName(playerid));
  53.             SetTimerEx("KickTimer", 200, false, "i", playerid);
  54.             }
  55.             string = "\0";
  56.     }
  57.     return 1;
  58. }
  59.  
  60. //Timeban Befehl:
  61. CMD:tban(playerid, params[])
  62. {
  63.     if(pInfo[playerid][pAdmin] < 2) return SendCmdMessage(playerid); //Adminlevel zu niedrig, Befehl wird nicht ausgeführt
  64.  
  65.     new targetid, Reason[128],dauer;
  66.     if(sscanf(params, "us[128]d", targetid, Reason, dauer)) return SendUsageMessage(playerid,"/tban [ID/Name] [Grund] [Dauer in Tagen]");
  67.    
  68.     if(!IsPlayerConnected(targetid)) return SendErrorMessage(playerid,"Der gewählte Spieler ist nicht auf dem Server.");
  69.     if(pInfo[targetid][pAdmin] > pInfo[playerid][pAdmin]) return SendErrorMessage(playerid, "Der gewählte Spieler ist im Adminlevel über dir.");
  70.     if(strlen(Reason) > 128) return SendErrorMessage(playerid,"Der gewählte Grund ist zu lang.");
  71.     if(dauer <= 0) return SendErrorMessage(playerid,"Die gewählte Dauer ist zu kurz.");
  72.    
  73.     BanWithReasonTime(playerid, targetid, dauer, Reason); //Die Funktion um einen Spieler für eine bestimmte Zeit zu bannen
  74.  
  75.     return 1;
  76. }
  77.  
  78. //BanWithReasonTime:
  79. BanWithReasonTime(playerid = INVALID_PLAYER_ID, targetid, dauer, reason[])
  80. {
  81.     if(playerid == INVALID_PLAYER_ID) return 1; //Wenn die übergebene Spielerid ungüötig ist, wird hier abgebrochen
  82.     new Query[256], string[145], timestamp, day, month, year, second, minute, hour, datestring[24], timestring[24];
  83.     timestamp = gettime(); //Der momentane Timestamp wird gespeichert
  84.     new sekunden = dauer * 86400; //Die Banntage werden in Sekunden umgerechnet indem sie mal 86400 genommen werden
  85.     timestamp = timestamp + sekunden; //Der Bann geht bis zum jetzigen Zeitpunkt in Sekunden + die Sekunden die er gebannt ist
  86.     getdate(day, month, year);
  87.     gettime(hour, minute, second);
  88.     format(datestring, sizeof(datestring), "%02d.%02d.%d", year, month, day);
  89.     format(timestring, sizeof(timestring), "%02d:%02d:%02d", hour, minute, second);
  90.  
  91.     mysql_format(handle,Query, sizeof(Query), "INSERT INTO `BANNED` (`NAME`, `IP`, `REASON`, `ADMIN`, `DATE`, `TIME`) VALUES ('%e', '%e', '%e', '%e', '%e', '%e')",GetName(targetid), PlayerIP(targetid), reason, GetName(playerid), datestring, timestring);
  92.     mysql_pquery(handle,Query); //Der Ban wird in die Datenbank eingetragen
  93.     mysql_format(handle,Query, sizeof(Query), "UPDATE `BANNED` SET STAMP = '%d' WHERE `NAME` = '%e'",timestamp, GetName(targetid));
  94.     mysql_pquery(handle,Query); //Die Banndauer wird in die Datenbank eingetragen
  95.     format(string, sizeof(string), "BAN: %s hat %s für %d Tage gebannt. [Grund: %s]", GetName(playerid), GetName(targetid), dauer, reason);
  96.     SCMToAll(COLOR_LIGHTRED, string), string = "\1"; //Nachricht an alle wird geschickt dass der Spieler gebannt wurde
  97.     format(string, sizeof(string), "%s bannt %s für %d Tage [Grund: %s]",GetName(playerid),GetName(targetid),dauer,reason);
  98.     Log(string,"ban");
  99.     TogglePlayerControllable(targetid,0);
  100.     SetTimerEx("KickTimer", 100, true, "i", targetid); //Spieler wird gekickt weil er gebannt ist
  101.     return 1;
  102. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement