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);
fread
- xDesertx
- Geschlossen
- Erledigt
In 10 Minuten startet der nächtliche Backupvorgang! Es kann währenddessen (ca. 10 Minuten) zu Einschränkungen bei der Nutzung des Forums kommen
Weitere Infos findet ihr im Thema Backup des Forums
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
-
-
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.
-
Wie kann ich jetzt Auslesen ? Kriege es nicht ihn. Werde nicht Gekickt ...
-
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.12Dann 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));
} -
Damit der Umbruch auch unter Windows erkannt wird muss er "\r\n" geschrieben werden.
-
Habe ich schon aber ich werde beim Connecten nicht gekickt
-
Erstell die .txt mal neu, habs bei mir aufm Homeserver getestet und da läufts.
-
Geht immer noch nicht werde beim Reconnecten nicht Gekickt.
MfG,
Chriss -
breadfish.de
Hat das Thema geschlossen.