fread

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
  • Hay Breadfish,
    ich habe ein Problem, ich will aus einer Liste eine IP Abfragen, aber es geht nicht. Ich kriege keine Errors
    ich werde nur nicht Gekickt.
    Code:
    new ip[16];
    GetPlayerIp(playerid,ip,sizeof(ip));
    strdel(ip,strlen(ip)-4,strlen(ip));
    format(ip,sizeof(ip),"%s**.**",ip);
    new string[64];
    new File:file = fopen("Rangebans.txt", io_read);
    while(fread(file, string))
    {
    if(strcmp(string, ip, true) == 0)
    {
    SendClientMessage(playerid, ROT, "Range Banned !");
    Kick(playerid);
    }
    }
    fclose(file);

    Mit freundlichen Grüßen,
    Chriss aka. xDesertx

  • Moin,


    zunächst mal ist das hier extrem fehleranfällig:

    GetPlayerIp(playerid,ip,sizeof(ip));
    strdel(ip,strlen(ip)-4,strlen(ip));
    format(ip,sizeof(ip),"%s**.**",ip);

    Haben die einzelnen IP-Adressen weniger Stellen also z.B. 127.1.0.0 funktioniert das System schon nichtmehr.
    Außerdem verschandelst, ähm, veränderst du den String in der IP mit *, wenn du in der .txt den nicht auch so gespeichert hast kann der den natürlich nicht vergleichen.


    Ich hab zum finden der Range mal eine Funktion geschrieben:

    new IP[16];
    GetPlayerIp(playerid,IP,sizeof(IP));
    strmid(IP,IP,0,strfind(IP,".",false,strfind(IP,".")+1));


    Wenn du dann in der .txt auch nur die Range speicherst (kannste ja ebenfalls diese Funktion verwenden) sollte es eigentlich klappen.

  • Du musst eigentlich nur meine Funktion einsetzen.



    //
    new IP[16],string[64];
    GetPlayerIp(playerid,IP,sizeof(IP));
    strmid(IP,IP,0,strfind(IP,".",false,strfind(IP,".")+1));


    new File:file = fopen("Rangebans.txt", io_read);
    while(fread(file, string))
    {
    if(strcmp(string, IP, true) == 0)
    {
    SendClientMessage(playerid, ROT, "Range Banned !");
    Kick(playerid);
    }
    }
    fclose(file);

    Die Rangebans.txt sollte als Beispiel wie folgt aussehen:
    123.123
    23.123
    3.123
    123.1
    123.12


    Dann sollte es gehen.

  • So habe ich es dann muss mein Stock "Rangeban" nicht gehen.
    stock Rangeban(playerid)
    {
    new IP[16];
    GetPlayerIp(playerid,IP,sizeof(IP));
    strmid(IP,IP,0,strfind(IP,".",false,strfind(IP,".")+1));


    new entry[256];
    format(entry, sizeof(entry), "%s\n",IP);
    new File:hFile;
    hFile = fopen("Rangebans.txt", io_append);
    fwrite(hFile, entry);
    fclose(hFile);
    Kick(playerid);
    return printf("%s hat einen Rangeban bekommen", PlayerName(playerid));
    }

    Mit freundlichen Grüßen,
    Chriss aka. xDesertx