Ich kann dir jetzt hier keinen genau vorgescripteten code geben, aber eine idee, wie man es machen könnte. Also ich habe den Login vorgang so in meinem script:
if(dialogid == DIALOG_LOGIN)
{
if(response == 0)
{
SendClientMessage(playerid, ROT, "Du hast den Login vorgang abgebrochen");
Kick(playerid);
return 1;
}
if(response == 1)
{
if(!strlen(inputtext))
{
SendClientMessage(playerid, ROT,"Du musst dein Passwort eingeben!");
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Login","Herzlich Willkommen zurück!\nGebe dein Passwort ein, um dich einzuloggen.","Login","Abbrechen");
}
else
{
Login(playerid, inputtext);
}
return 1;
}
return 1;
}
So nun wirst du also in den stock Login geleitet. Der sieht bei mir so aus:
stock Login (playerid, key[])
{
new Spielerdatei [64];
new Name [MAX_PLAYER_NAME];
GetPlayerName(playerid, Name, sizeof(Name));
format (Spielerdatei, sizeof(Spielerdatei),"/Accounts/%s.txt",Name);
if(!strcmp(key, dini_Get(Spielerdatei,"Passwort"),true))
{
SendClientMessage(playerid, GRÜN, "Du hast dich erfolgreich eingeloggt");
SpielerLaden(playerid);
SpawnPlayer(playerid);
new Willkommennachricht[64];
format(Willkommennachricht, sizeof Willkommennachricht,"Willkommen zurueck ~n~~w~%s!",getPlayerName(playerid));
GameTextForPlayer(playerid,Willkommennachricht,5000, 1);
return 1;
}
else
{
SendClientMessage(playerid,ROT,"Du hast dein Passwort flasch eingegeben!");
Kick(playerid);
return 1;
}
}
Du kannst ja einfach bei "else" statt SendClientMessage(playerid,ROT,"Du hast dein Passwort flasch eingegeben!");
Kick(playerid);
return 1;
Den Spieler in einen neuen stock Leiten, der genau das oben, abspielt, nur das du ihn bei falsch eingabe kickst. Sprich du machst es so:
stock Login (playerid, key[])
{
new Spielerdatei [64];
new Name [MAX_PLAYER_NAME];
GetPlayerName(playerid, Name, sizeof(Name));
format (Spielerdatei, sizeof(Spielerdatei),"/Accounts/%s.txt",Name);
if(!strcmp(key, dini_Get(Spielerdatei,"Passwort"),true))
{
SendClientMessage(playerid, GRÜN, "Du hast dich erfolgreich eingeloggt");
SpielerLaden(playerid);
SpawnPlayer(playerid);
new Willkommennachricht[64];
format(Willkommennachricht, sizeof Willkommennachricht,"Willkommen zurueck ~n~~w~%s!",getPlayerName(playerid));
GameTextForPlayer(playerid,Willkommennachricht,5000, 1);
return 1;
}
else
{
Login2(playerid, Inputtext);
}
}
du musst nun einfach den stock erstellen. Dazu nimmst du diesen stock:
stock Login2 (playerid, key[])
{
new Spielerdatei [64];
new Name [MAX_PLAYER_NAME];
GetPlayerName(playerid, Name, sizeof(Name));
format (Spielerdatei, sizeof(Spielerdatei),"/Accounts/%s.txt",Name);
if(!strcmp(key, dini_Get(Spielerdatei,"Passwort"),true))
{
SendClientMessage(playerid, GRÜN, "Du hast dich erfolgreich eingeloggt");
SpielerLaden(playerid);
SpawnPlayer(playerid);
new Willkommennachricht[64];
format(Willkommennachricht, sizeof Willkommennachricht,"Willkommen zurueck ~n~~w~%s!",getPlayerName(playerid));
GameTextForPlayer(playerid,Willkommennachricht,5000, 1);
return 1;
}
else
{
SendClientMessage(playerid,ROT,"Du hast dein Passwort flasch eingegeben!");
Kick(playerid);
return 1;
}
}
Ab da weiß ich nicht weiter wie man es lösen kann, aber vlt, einfach den Dialog von oben kopieren, und ihn mit "DIALOG_LOGIN2 ausstauschen, und es anpassen. Man müsste dem Spieler nur wieder den Dialog anzeigen. Das könnte man vlt. so machen, aber ich weiß nicht sicher ob es funktioniert:
stock Login (playerid, key[])
{
new Spielerdatei [64];
new Name [MAX_PLAYER_NAME];
GetPlayerName(playerid, Name, sizeof(Name));
format (Spielerdatei, sizeof(Spielerdatei),"/Accounts/%s.txt",Name);
if(!strcmp(key, dini_Get(Spielerdatei,"Passwort"),true))
{
SendClientMessage(playerid, GRÜN, "Du hast dich erfolgreich eingeloggt");
SpielerLaden(playerid);
SpawnPlayer(playerid);
new Willkommennachricht[64];
format(Willkommennachricht, sizeof Willkommennachricht,"Willkommen zurueck ~n~~w~%s!",getPlayerName(playerid));
GameTextForPlayer(playerid,Willkommennachricht,5000, 1);
return 1;
}
else
{
ShowPlayerDialog(playerid,DIALOG_LOGIN2, DIALOG_STYLE_PASSWORT,"überschrift","willkommens nachricht und warnung","Weiter,"abbrechen");
Login2(playerid, Inputtext);
}
}
So dann kopierst du einfach die DIalog anwort von oben, unf fügst alles ein, das es in den neuen stock geleitet wird.
if(dialogid == DIALOG_LOGIN2)
{
if(response == 0)
{
SendClientMessage(playerid, ROT, "Du hast den Login vorgang abgebrochen");
Kick(playerid);
return 1;
}
if(response == 1)
{
if(!strlen(inputtext))
{
SendClientMessage(playerid, ROT,"Du musst dein Passwort eingeben!");
ShowPlayerDialog(playerid, DIALOG_LOGIN2, DIALOG_STYLE_PASSWORD, "Login","Herzlich Willkommen zurück!\nGebe dein Passwort ein, um dich einzuloggen.","Login","Abbrechen"); // den dialog so anpassen wie du möchtext!
}
else
{
Login2(playerid, inputtext);
}
return 1;
}
return 1;
}
Du musst jetzt oben im script nur noch den DIALOG_LOGIN2 definen:
#define DIALOG_LOGIN2 2 // Die 2 anpassen.
Ich denke so müsste es funktionieren und ich hoffe ich konnte dir helfen. Wenn grobe fehler drin sind, sind es flüchtigkeits fehler aus zeitgründen!
Es ist vielleicht nicht richtig eingerückt, das müsstest man dann selber machen!
MFG
Kempfer