Problem mit pban

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Heeyo ich habe in meinen script schon seit langem den befehl /pban wollte den jetzt mal in ein anderes übertragen aber wen ich dann /pban mache dann kann ich mit nem neuen account wieder drauf
    Früher stand dan das du hast einen PERM ban Bye!
    Igend wie funkt das nicht mehr ich habs auf hamachi server getest also noch nicht hochgeladen kann das daran liegen oder warum
    Hier ein paar zeilen
    if(strcmp(cmd, "/pban", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "FEHLER: /pban [playerid] [grund]");
    return 1;
    }
    giveplayerid = ReturnUser(tmp);
    if (PlayerInfo[playerid][pAdmin] >= 1339)
    {
    if(IsPlayerConnected(giveplayerid))
    {
    if(giveplayerid != INVALID_PLAYER_ID)
    {
    GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
    GetPlayerName(playerid, sendername, sizeof(sendername));
    new length = strlen(cmdtext);
    while ((idx < length) && (cmdtext[idx] <= ' '))
    {
    idx++;
    }
    new offset = idx;
    new result[64];
    while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
    {
    result[idx - offset] = cmdtext[idx];
    idx++;
    }
    result[idx - offset] = EOS;
    if(!strlen(result))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "FEHLER: /pban [playerid] [grund]");
    return 1;
    }
    if(PlayerInfo[giveplayerid][pAdmin] > PlayerInfo[playerid][pAdmin])
    {
    SendClientMessage(playerid, COLOR_GRAD2, "Du kannst diesen Spieler nicht bannen, da er ein höheres Adminlevel hat als du!");
    return 1;
    }
    new year, month,day;
    getdate(year, month, day);
    format(string, sizeof(string), "AdmCmd: %s wurde von %s gebannt, Grund: %s (%d-%d-%d)", giveplayer, sendername, (result),month,day,year);
    BanLog(string);
    format(string, sizeof(string), "AdmCmd: %s wurde von %s gebannt, Grund: %s", giveplayer, sendername, (result));
    SendClientMessageToAll(COLOR_LIGHTRED, string);
    M_Log(string);
    //PlayerInfo[giveplayerid][pAdmin] = PlayerInfo[giveplayerid][pLevel];
    PlayerInfo[giveplayerid][pGesperrt] = 1;
    new ip[16];
    GetPlayerIp(giveplayerid,ip,sizeof(ip));
    M_WriteIPToBlacklist(ip); // wie kann man ihn jetzt entbannen ? moment ... muss was kucken
    //Ban(giveplayerid);
    Kick(giveplayerid);
    return 1;
    }
    }//not connected
    }
    else
    {
    format(string, sizeof(string), " %d ist kein aktiver Spieler.", giveplayerid);
    SendClientMessage(playerid, COLOR_GRAD1, string);
    }
    }
    return 1;
    }

  • Es liegt weniger an deinem befehl sondern an der funktion
    M_WriteIPToBlacklist(ip);


    wird dort ihrgend wo etwas in einer Datei(.ini, .txt, .cfg, etc..) etwas rein geschrieben ?
    Wenn es dem so sei dann lässt du das ganze auch mit den einträgen vergleichen, also wenn der spieler zum Server verbindet?


    Sollte dies nicht so sein dan poste bitte die jeweiligen codeteile.

  • ja das wird unter scriptfiles M_Bot M_Black gespeichert trozdem kann ich wieder drauf-.-
    Mir geht es dadrum das wen ich normal ban mache dann können die router neustart dann sind sie wieder drauf
    mit pban wird die ganze range gebannt wie kriege ich das wieder hin?

    Einmal editiert, zuletzt von Sean_PauL ()

  • Ich hatte es dir ja schon in der Pn geschrieben , falls noch weitere sowas ähnliches suchen sollte poste ich einfach mal noch zwei beispiele.


    Zum einen ist es ja fraglich ob bei connecten die ips verglichen werden die in dem file stehen .
    Du kannst es auch umschreiben heir sind zwei stocks und testen :


    stock banwrite(string[])
    {
    new File:file = fopen("ban.txt", io_append);
    if(file){
    fwrite(file, string);
    fclose(file);
    }else print("Die Datei existiert nicht im scriptfileordner");
    return 1;
    }
    stock checkban(string[])
    {
    new File:file = fopen("ban.txt", io_read ), ips[20];
    while(fread(file, ips)){
    if(!strcmp(ips, string, false,strlen(string)))return 1;
    }
    return 0;
    }
    und wenn der spieler connectet einfach das ganze abfragen.

    new ip[16];
    GetPlayerIp(playerid,ip,16);
    if(checkban(ip))return Kick(playerid);


    und zum zweiten geht es auch über das rcon per SendRconCommand


    new ip[16],string[25];
    GetPlayerIp(playerid,ip,16);
    format(string,25,"banip %s",ip);
    SendRconCommand(string);