Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //OnPlayerConnect:
- 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
- mysql_tquery(handle,Query, "OnUserBanned", "d", playerid); //Die Query wird an die Funktion "OnUserBanned" übergeben
- //OnUserBanned:
- public OnUserBanned(playerid)
- {
- new rows;
- cache_get_row_count(rows); //Die Anzahl der Zeilen in dennen der Spielername oder die Spielerip gefunden wurde wird ausgelesen
- if(rows == 0) //Wenn keine Zeile mit dem Spielernamen oder der Spielerip gefunden wurde ist der Spieler nicht gebannt
- {
- pInfo[playerid][pBanned] = false;
- return 0;
- }
- else //Es wurde eine Zeile gefunden also ist der Spieler gebannt
- {
- new timestamp,banreason[50], bannedby[24], banname[24], banip[18], bandate[15], bantime[10], banstamp, banuntil, string[450];
- cache_get_value_name(0, "REASON", banreason);
- cache_get_value_name(0, "ADMIN", bannedby);
- cache_get_value_name(0, "NAME", banname);
- cache_get_value_name(0, "IP", banip); // Die Daten werden aus der Zeile ausgelesen
- cache_get_value_name(0, "DATE", bandate);
- cache_get_value_name(0, "TIME", bantime);
- cache_get_value_name_int(0, "STAMP", banstamp);
- timestamp = gettime(); //Der jetzige Timestamp wird gespeichert
- banuntil = banstamp - timestamp; //Der jetzige Timestamp minus dem Bantimestamp ist die verbleibende Zeit in Sekunden
- 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
- {
- new qQuery[150];
- mysql_format(handle,qQuery, sizeof(qQuery), "DELETE FROM `BANNED` WHERE `NAME` = '%e'", banname); //Der Datenbankeintrag wird gelöscht
- mysql_pquery(handle,qQuery);
- pInfo[playerid][pBanned] = false;
- SCM(playerid, COLOR_RED, "Dein Ban ist abgelaufen. Halte dich stets an die Regeln!");
- }
- banuntil = banuntil / 86400; //Die verbleibenden Tage sind die verbleibenden Sekunden geteilt durch 86400
- if(banstamp == 0) //Wenn der Banstamp 0 ist, wurde der Spieler permanent gebannt
- {
- 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);
- ShowPlayerDialog(playerid, 0, DIALOG_STYLE_MSGBOX, "{FC4949}Bann erkannt.", string, "Schliessen", ""), string = "\0";
- pInfo[playerid][pBanned] = true;
- }
- else if(timestamp <= banstamp) //Wenn der Spieler noch gebannt ist wird ihm die verbleibende Zeit angezeigt
- {
- 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);
- ShowPlayerDialog(playerid, 0, DIALOG_STYLE_MSGBOX, "{FC4949}Bann erkannt.", string, "Schliessen", ""), string = "\0";
- pInfo[playerid][pBanned] = true;
- }
- if(pInfo[playerid][pBanned]) //Weil der Spieler gebannt ist, wird er gekickt
- {
- printf("[kick] %s wurde automatisch gekickt weil er gebannt ist", GetName(playerid));
- SetTimerEx("KickTimer", 200, false, "i", playerid);
- }
- string = "\0";
- }
- return 1;
- }
- //Timeban Befehl:
- CMD:tban(playerid, params[])
- {
- if(pInfo[playerid][pAdmin] < 2) return SendCmdMessage(playerid); //Adminlevel zu niedrig, Befehl wird nicht ausgeführt
- new targetid, Reason[128],dauer;
- if(sscanf(params, "us[128]d", targetid, Reason, dauer)) return SendUsageMessage(playerid,"/tban [ID/Name] [Grund] [Dauer in Tagen]");
- if(!IsPlayerConnected(targetid)) return SendErrorMessage(playerid,"Der gewählte Spieler ist nicht auf dem Server.");
- if(pInfo[targetid][pAdmin] > pInfo[playerid][pAdmin]) return SendErrorMessage(playerid, "Der gewählte Spieler ist im Adminlevel über dir.");
- if(strlen(Reason) > 128) return SendErrorMessage(playerid,"Der gewählte Grund ist zu lang.");
- if(dauer <= 0) return SendErrorMessage(playerid,"Die gewählte Dauer ist zu kurz.");
- BanWithReasonTime(playerid, targetid, dauer, Reason); //Die Funktion um einen Spieler für eine bestimmte Zeit zu bannen
- return 1;
- }
- //BanWithReasonTime:
- BanWithReasonTime(playerid = INVALID_PLAYER_ID, targetid, dauer, reason[])
- {
- if(playerid == INVALID_PLAYER_ID) return 1; //Wenn die übergebene Spielerid ungüötig ist, wird hier abgebrochen
- new Query[256], string[145], timestamp, day, month, year, second, minute, hour, datestring[24], timestring[24];
- timestamp = gettime(); //Der momentane Timestamp wird gespeichert
- new sekunden = dauer * 86400; //Die Banntage werden in Sekunden umgerechnet indem sie mal 86400 genommen werden
- timestamp = timestamp + sekunden; //Der Bann geht bis zum jetzigen Zeitpunkt in Sekunden + die Sekunden die er gebannt ist
- getdate(day, month, year);
- gettime(hour, minute, second);
- format(datestring, sizeof(datestring), "%02d.%02d.%d", year, month, day);
- format(timestring, sizeof(timestring), "%02d:%02d:%02d", hour, minute, second);
- 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);
- mysql_pquery(handle,Query); //Der Ban wird in die Datenbank eingetragen
- mysql_format(handle,Query, sizeof(Query), "UPDATE `BANNED` SET STAMP = '%d' WHERE `NAME` = '%e'",timestamp, GetName(targetid));
- mysql_pquery(handle,Query); //Die Banndauer wird in die Datenbank eingetragen
- format(string, sizeof(string), "BAN: %s hat %s für %d Tage gebannt. [Grund: %s]", GetName(playerid), GetName(targetid), dauer, reason);
- SCMToAll(COLOR_LIGHTRED, string), string = "\1"; //Nachricht an alle wird geschickt dass der Spieler gebannt wurde
- format(string, sizeof(string), "%s bannt %s für %d Tage [Grund: %s]",GetName(playerid),GetName(targetid),dauer,reason);
- Log(string,"ban");
- TogglePlayerControllable(targetid,0);
- SetTimerEx("KickTimer", 100, true, "i", targetid); //Spieler wird gekickt weil er gebannt ist
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement