Hallo,
bitte einmal ein Beispiel einer .ini Datei von deinen Accounts zeigen.
Hallo,
bitte einmal ein Beispiel einer .ini Datei von deinen Accounts zeigen.
Hallo,
lasse dir mal bitte per printf dini_Get(Spielerdatei,"Passwort") ausgeben.
Schau, so kann das auch nicht funktionieren, ich bin zwar nicht in der Dini Szene gut aber in Sachen Mysql und das stimmt hier sicher nicht...
if(!strlen(inputtext))
{
SendClientMessage(playerid,BLAU,"Das Passwort war nicht lang genug.");
ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login","Dein Account wurde gefunden. Gib bitte das Passwort ein.","Login","Abbrechen");
return 1;
}
else
{
Login(playerid,inputtext);
return 1;
}
}
Hier fragst du ab ob er was eingegeben hat wenn nicht kommt ein Fehler, jedoch wenn er was eingibt (else) loggst du ihn ein bzw. registrierst ihn auch.
Du solltest da noch eine Abfrage einbauen ob es mit dem Passwort überein stimmt.
ICh glaube so in etwa :
if(dini_Get(Spielerdatei,"Passwort") == stval(inputtext))
Hallo,
dafür kannst du die Funktion strcmp verwenden. Damit vergleicht man zwei Strings miteinander.
=> Funktion
Nightstream, deine Methode vergleicht nur 2 Integers miteinander. Passwörter bestehen im Normalfall nicht nur aus Intergern.
Thaha aja stimmt xD
Hallo,
ich habe den Link erneuert. Habe den falschen Link eingefügt. Bitte auf jedenfall mal durchlesen. Vergleichen zweier Strings ist nicht gerade schwierig.
if (!strcmp("eingegebenespw", "pwvonderdini", true))
{
// passwörter korrekt
}
else
{
// passwörter inkorrekt
}
stock Login(playerid,key[])
{
new name[MAX_PLAYER_NAME];
new Spielerdatei[64];
GetPlayerName(playerid,name,sizeof(name));
format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
if(gettime()<dini_Int(Spielerdatei,"timeban"))
{
SendClientMessage(playerid,ROT,"Du bist noch gebannt. Komm später wieder.");
Kick(playerid);
return 1;
}
if(!strcmp(key, dini_Get(Spielerdatei,"Passwort"), true))
{
LoadAccount(playerid);
SendClientMessage(playerid,BLAU,"Erfolgreich eingeloggt.");
}
else
{
SendClientMessage(playerid,ROT,"Falsches Passwort.");
ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login","Dein Account wurde gefunden. Gib bitte das Passwort ein.","Login","Abbrechen");
}
return 1;
}
Bei if(strcmp fehlte das !.
also if(!strcmp(...
Steht dann da "Erfolgreich eingeloggt" oder "Passwort falsch" wenn du trotz falschem Passwort eingeloggt wirst?
Nimm mal testweise das return 1; raus.
Hallo,
lasse dir mal bitte per printf dini_Get(Spielerdatei,"Passwort") ausgeben.
Dann bitte ich dich, dies mal zu beantworten.
Dann bitte ich dich, dies mal zu beantworten.
Und was möchtest du damit erreichen?
Und was möchtest du damit erreichen?
Hallo,
wenn Passwort nichts zürck gibt, und der String leer ist, dann bekommt man bei meiner Abfrage immer ein "Der String ist gleich" zurück.
Hallo,
wenn Passwort nichts zürck gibt, und der String leer ist, dann bekommt man bei meiner Abfrage immer ein "Der String ist gleich" zurück.
Sollte der String allerdings leer sein, so müsste ja was mit dini nicht stimmen und nicht mit der Scriptweise von Jan_.
Und Errors gibt es ja anscheinend auch nicht..
Hallo,
ich meinte das eher so:
printf ("s", dini_Get(Spielerdatei,"Passwort"));
Hast du den Ordner "Accounts" im "scriptfiles" Ordner?
Sind wenn der Ordner Accounts existiert Player gesavet oder ist er leer?
Ist das Passwort Feld benutzt oder steht dort nichts?
Zitatprintf ("s", dini_Get(Spielerdatei,"Passwort"));
Muss ja auch %s heißen.
Es kommt nichts in der Konsole
Dann mach mal
printf ("Passwort der Datei: %s", dini_Get(Spielerdatei,"Passwort"));
Hallo,
dachte ich mir doch. Lass mal bitte per printf das "Spielerdatei" ausgeben.
Hallo,
bitte beschäftige dich mehr mit den Grundlagen. Ich habe dir jetzt oben schon einmal ein Beispiel mit printf geliefert.
printf("%s", Spielerdatei);
if(!strlen(inputtext))
{
SendClientMessage(playerid,BLAU,"Das Passwort war nicht lang genug.");
ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Registrieren","Gib bitte das gewünschte Passwort ein:","Register","Abbrechen");
return 1;
}
else
{
Register(playerid,inputtext);
return 1;
}
}
Überall das return 1; raus...
beim Login & Register Dialogs überall das reutnr 1; entfernen.
Also so,
if(dialogid==DIALOG_LOGIN)
{
if(response==0)
{
SendClientMessage(playerid,BLAU,"Du hast den Vorgang abgebrochen.");
Kick(playerid);
}
if(response==1)
{
if(!strlen(inputtext))
{
SendClientMessage(playerid,BLAU,"Das Passwort war nicht lang genug.");
ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login","Dein Account wurde gefunden. Gib bitte das Passwort ein.","Login","Abbrechen");
}
else
{
Login(playerid,inputtext);
}
}
}
if(dialogid==DIALOG_REGISTER)
{
if(response==0)
{
SendClientMessage(playerid,BLAU,"Du hast den Vorgang abgebrochen.");
Kick(playerid);
}
if(response==1)
{
if(!strlen(inputtext))
{
SendClientMessage(playerid,BLAU,"Das Passwort war nicht lang genug.");
ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Registrieren","Gib bitte das gewünschte Passwort ein:","Register","Abbrechen");
}
else
{
Register(playerid,inputtext);
}
}
}