Guten Tag,
ich habe ein Problem ich habe gerade ein Versuch gestartet die IP beim Registerieren/Connecten Speichern zu lassen.
Aber wenn ich in die Datei gucke steht da "0".
Hätte jemand eine Erklärung oder ein Tutorial wie ich das machen kann?
Guten Tag,
ich habe ein Problem ich habe gerade ein Versuch gestartet die IP beim Registerieren/Connecten Speichern zu lassen.
Aber wenn ich in die Datei gucke steht da "0".
Hätte jemand eine Erklärung oder ein Tutorial wie ich das machen kann?
Speicherst du in Mysql oder in Dini ?
Gib uns vielleicht, erstmal den Code mit dem du es versucht hast...
Und bitte im Pawn Quelltext kopiert, danke!
Ich scripte in Dini.
Ich hab nur GetIP befehl.
Aber ich denke der hilft auch nicht (Brauche nur ein Tutorial oder eine Erklärung)
ocmd:getip(playerid,params[])
{
if(!isPlayerAnAdmin(playerid,2)) SendClientMessage(playerid,-1,"Du hast kein Admin Level 2");
{
new pID,string[128];
if(!IsPlayerConnected(pID)) return SendClientMessage(playerid,-1,"Spieler nicht verbunden");
if(sscanf(params,"u",pID)) return SendClientMessage(playerid,-1,"INFO : /getip [playerid] !");
{
new playersip[16];
GetPlayerIp(pID,playersip,sizeof(playersip));
format(string,sizeof(string),"Die IP vom Spieler %s ist %s",NamePlayer(pID),playersip);
SendClientMessage(playerid,-1,string);
}
}
return 1;
}
Einfach beim Registrieren bei den Spielerdaten seine IP dazu speichern ^^... die IP wird hierbei, soweit ich weiß, als string ausgegeben...
Also einfach wie alle anderen Spieler Daten dazu speichern, fertig.
Der Befehl hat aber nichts mit dem Speichern in eine Datei zu tun.
Es muss so aussehen, beim Speichern:
new playersip[16];
GetPlayerIp(pID,playersip,sizeof(playersip));
dini_Set(Pfad_der_Spielerdatei, "IP", playerisip);
Pfad_der_Spielerdatei logischerweise mit dem korrekten Pfad ersetzen.
EDIT:
Simon2202: War auch nicht auf dich bezogen.
Ich weiß ich schweife vom Thema ab.
Aber ich will ein IP Ban System machen.
Bzw. mein Code funktioniert nicht:
ocmd:banip(playerid,params[])
{
if(!isPlayerAnAdmin(playerid,3)) SendClientMessage(playerid,-1,"Du hast kein Admin Level 3");
{
new pID,string[128];
if(!IsPlayerConnected(pID)) return SendClientMessage(playerid,-1,"Spieler ist nicht Online");
if(sscanf(params,"u",pID)) return SendClientMessage(playerid,-1,"Tippe : /banip [IP]");
if(sscanf(params,"u",pID)) return SendClientMessage(playerid,-1,"Tippe : /getip [playerid] um die IP herrauszufinden");
{
new playersip[16];
GetPlayerIp(pID,playersip,sizeof(playersip));
format(string,sizeof(string),"Die IP %s wurde erfolgreich gesperrt",playersip);
{
if(dini_Exists("/IPBanns/%s.txt",playersip))
{
SendClientMessage(playerid,-1,"Diese IP ist schon gesperrt [IP: %s]",playersip);
}
else
{
new playersip[16];
GetPlayerIp(pID,playersip,sizeof(playersip));
dini_Set("/%s.txt", "IP", "%s",playersip,playersip);
SendClientMessage(playerid,-1,"Die IP [IP: %s] wurde erfolgreich gesperrt",palyersip)
}
}
}
}
return 1;
}
Was ist falsch?
ocmd:banip(playerid,params[])
{
if(!isPlayerAnAdmin(playerid,3)) SendClientMessage(playerid,-1,"Du hast kein Admin Level 3");
{
new pID,string[128];
if(!IsPlayerConnected(pID)) return SendClientMessage(playerid,-1,"Spieler ist nicht Online");
if(sscanf(params,"u",pID)) return SendClientMessage(playerid,-1,"Tippe : /banip [IP]"); SendClientMessage(playerid,-1,"Tippe : /getip [playerid] um die IP herauszufinden");
{
new playersip[16];
GetPlayerIp(pID,playersip,sizeof(playersip));
if(dini_Exists("/IPBanns/%s.txt",playersip))
{
SendClientMessage(playerid,-1,"Diese IP ist schon gesperrt [IP: %s]",playersip);
}
else
{
new playersip[16];
GetPlayerIp(pID,playersip,sizeof(playersip));
dini_Set("/%s.txt", "IP", "%s",playersip,playersip);
SendClientMessage(playerid,-1,"Die IP [IP: %s] wurde erfolgreich gesperrt",palyersip)
}
}
}
return 1;
}
So würde ich es machen, aber was funktioniert denn nicht ?
Alles anzeigenDer Befehl hat aber nichts mit dem Speichern in eine Datei zu tun.
Es muss so aussehen, beim Speichern:
new playersip[16];
GetPlayerIp(pID,playersip,sizeof(playersip));
dini_Set(Pfad_der_Spielerdatei, "IP", playerisip);
Pfad_der_Spielerdatei logischerweise mit dem korrekten Pfad ersetzen.
EDIT:
Simon2202: War auch nicht auf dich bezogen.
Alles anzeigenocmd:banip(playerid,params[])
{
if(!isPlayerAnAdmin(playerid,3)) SendClientMessage(playerid,-1,"Du hast kein Admin Level 3");
{
new pID,string[128];
if(!IsPlayerConnected(pID)) return SendClientMessage(playerid,-1,"Spieler ist nicht Online");
if(sscanf(params,"u",pID)) return SendClientMessage(playerid,-1,"Tippe : /banip [IP]"); SendClientMessage(playerid,-1,"Tippe : /getip [playerid] um die IP herauszufinden");
{
new playersip[16];
GetPlayerIp(pID,playersip,sizeof(playersip));
if(dini_Exists("/IPBanns/%s.txt",playersip))
{
SendClientMessage(playerid,-1,"Diese IP ist schon gesperrt [IP: %s]",playersip);
}
else
{
new playersip[16];
GetPlayerIp(pID,playersip,sizeof(playersip));
dini_Set("/%s.txt", "IP", "%s",playersip,playersip);
SendClientMessage(playerid,-1,"Die IP [IP: %s] wurde erfolgreich gesperrt",palyersip)
}
}
}
return 1;
}
So würde ich es machen, aber was funktioniert denn nicht ?
Ok Danke ich teste es.
Habe das nun so:
new playersip[16];
GetPlayerIp(playerid,playersip,sizeof(playersip));
dini_Set("/Accounts/%s.txt","IP", "%s" ,playerid,playerisip);
Fehler Code:
C:\Users\Patrick\Desktop\IRP-City\gamemodes\Deathmatch.pwn(331) : warning 202: number of arguments does not match definition
C:\Users\Patrick\Desktop\IRP-City\gamemodes\Deathmatch.pwn(331) : error 017: undefined symbol "playerisip"
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
1 Error.
new playersip[16];
GetPlayerIp(playerid,playersip,sizeof(playersip));
dini_Set("/Accounts/%s.txt","IP", "%s" ,playerid,playerisip);
zu
new playersip[16];
GetPlayerIp(playerid,playersip,sizeof(playersip));
dini_Set("/Accounts/%s.txt","IP", "%s" ,playerid,playersip); //Hier war der Schreibfehler
Kriege noch 2 Warnings?
C:\Users\Patrick\Desktop\IRP-City\gamemodes\Deathmatch.pwn(331) : warning 202: number of arguments does not match definition
C:\Users\Patrick\Desktop\IRP-City\gamemodes\Deathmatch.pwn(331) : warning 202: number of arguments does not match definition
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
2 Warnings.
@ Ray_Johnsen auch das ist falsch....
new playersip[16],name[50],str[50],ipset[20];
GetPlayerName(playerid,name,sizeof(name));
GetPlayerIp(playerid,playersip,sizeof(playersip));
format(str,sizeof(str),"/Accounts/%s,txt",name);
format(ipset,sizeof(ipset),"%s",playersip);
dini_Set(str,"IP", ipset,playersip);
Tut mir leid.. Ich speichere selbst nichts in dini..
ich habe gerade nachgesehen für dini_Set(Datei,WertName,Wert)
Versuch es mal so...
ocmd:getip(playerid,params[]) { if(!isPlayerAnAdmin(playerid,2)) SendClientMessage(playerid,-1,"Du hast kein Admin Level 2"); { new pID,string[128]; if(!IsPlayerConnected(pID)) return SendClientMessage(playerid,-1,"Spieler nicht verbunden"); if(sscanf(params,"u",pID)) return SendClientMessage(playerid,-1,"INFO : /getip [playerid] !"); { new playersip[16]; GetPlayerIp(pID,playersip,sizeof(playersip)); format(string,sizeof(string),"Die IP vom Spieler %s ist %s",NamePlayer(pID),playersip); SendClientMessage(playerid,-1,string); } } return 1; }
Eiskalt meinen Code geklaut
dini_Set(str,"IP", ipset,playersip);
Da kommt der WarningCode "Number of Argu...."
naja, nicht ganz "geklaut"... Und selbst wenn ist nur ein getip Befehl ^^... Außerdem sowieso, meiner Meinung nach, schlecht aufgebaut haha -> subjektiv
@FerienFreak
Ups, sry habs geändert aber nicht entfernt gehört natürlich so:
dini_Set(str,"IP", ipset);
naja, nicht ganz "geklaut"... Und selbst wenn ist nur ein getip Befehl
nur
Nur -> sagt man dann so ne
Alles anzeigennaja, nicht ganz "geklaut"... Und selbst wenn ist nur ein getip Befehl ^^... Außerdem sowieso, meiner Meinung nach, schlecht aufgebaut haha -> subjektiv
@FerienFreak
Ups, sry habs geändert aber nicht entfernt gehört natürlich so:
dini_Set(str,"IP", ipset);
Er speichert Die IP nicht in der Account Datei?
Hast du bereits versucht den Fehlerklärbär zu verwende anstatthier warnings und errors reinzuschreiben und darauf zu warten, bis dir das einer richtig stellt? Wäre sinnvoller. Bei Dingen die noch keine Erklärung bekommen haben kannst du dann ja Fragen aber trotzdem solltest du es erstmal damit versuchen
Hab meinen Code nun Verändert.
new playersip[16],name[50],str[50],ipset[20];
GetPlayerName(playerid,name,sizeof(name));
GetPlayerIp(playerid,playersip,sizeof(playersip));
format(str,sizeof(str),"/Accounts/%s,txt",name);
format(ipset,sizeof(ipset),"%s",playersip);
dini_Set(str,"IP", ipset);
if(dini_Isset("/Accounts/%s.txt", "IP" ,name))//335
{
return 1;
}
else
{
dini_Set("/Accounts/%s", "IP", "%s",name,playersip);//341
}
C:\Users\Patrick\Desktop\IRP-City\gamemodes\Deathmatch.pwn(335) : warning 202: number of arguments does not match definition
C:\Users\Patrick\Desktop\IRP-City\gamemodes\Deathmatch.pwn(341) : warning 202: number of arguments does not match definition
C:\Users\Patrick\Desktop\IRP-City\gamemodes\Deathmatch.pwn(341) : warning 202: number of arguments does not match definition
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
3 Warnings.
In der Datei wurde auch 0 eingetragen.
Bitte helft mir weiß nicht mehr weiter.
Schau doch mal im Wiki welche Parameter du für eine solche Dinifunktion benötigst bzw verwende doch einfach mal Google