Mahlzeit
Ich hab die von erorcun modifizierte version von Seifistration in mein GM eingebeut.
Und wollte mir nun eine Bank mit der GUI bauen.
Das erste Problem das ich habe ist: bei den neuen Dialogboxen, wenn ich da auf Verlassen klicke, werd ich vom Server gekickt.
Das zweite Problem ist: Das ich die übergabe von einer Dialogbox zur nächsten nicht hinbekomme.
Die Bank Dailoge beginnen bei Dialogid 200
Mein OnDialogResponse sieht derzeit so aus:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if (response == 1)
{
if(dialogid == 12345)
{
if(strlen(inputtext))
{
Encrypt(inputtext);
new player[MAX_PLAYER_NAME];
GetPlayerName(playerid, player, 50);
new string3[32];
new playername3[MAX_PLAYER_NAME];
GetPlayerName(playerid, playername3, sizeof(playername3));
format(string3, sizeof(string3), ACCOUNTS, playername3);
new ip[20];
GetPlayerIp(playerid,ip,sizeof(ip));
new File: hFile = fopen(string3, io_write);
if (hFile)
{
strmid(AccountInfo[playerid][aPassword], inputtext, 0, strlen(inputtext), 255);
new var[128];
format(var, 128, "Password=%s\n", AccountInfo[playerid][aPassword]);fwrite(hFile, var);
format(var, 128, "IP=%s\n",ip);fwrite(hFile, var);
fclose(hFile);
printf("%s is signed up.",playername3);
SendClientMessage(playerid, GREEN, "|- Ihr Eintrag wurde erfolgreich durchgeführt. Jetzt können Sie sich anmelden. -|");
new girismsg[256];
format(girismsg,256,"Willkommen\n\nBenutzername: %s\n\nGeben Sie ihr Passwort ein:",playername3);
ShowPlayerDialog(playerid,12346,DIALOG_STYLE_INPUT,"Anmeldung",girismsg,"Anmeldung","Abbrechen");
register[playerid] = 0;
login[playerid] = 1;
}
}
else if(!strlen(inputtext))
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
new kayitmsg[256];
format(kayitmsg,256,"Willkommen\n\n%s bitte eröffnen Sie ein neues Konto\n\nNeues Passwort eingeben:",name);
ShowPlayerDialog(playerid,12345,DIALOG_STYLE_INPUT,"Registrieren",kayitmsg,"Registrieren"," Abbrechen");
register[playerid] = 1;
login[playerid] = 0;
}
}
if(dialogid == 12346)
{
Encrypt(inputtext);
new string2[128];
new playername2[MAX_PLAYER_NAME];
GetPlayerName(playerid, playername2, sizeof(playername2));
format(string2, sizeof(string2), ACCOUNTS, playername2);
new File: UserFile = fopen(string2, io_read);
if ( UserFile )
{
new PassData[256];
new keytmp[256], valtmp[256];
fread( UserFile , PassData , sizeof( PassData ) );
keytmp = ini_GetKey( PassData );
if( strcmp( keytmp , "Password" , true ) == 0 )
{
valtmp = ini_GetValue( PassData );
strmid(AccountInfo[playerid][aPassword], valtmp, 0, strlen(valtmp)-1, 255);
}
if(strcmp(AccountInfo[playerid][aPassword],inputtext, true ) == 0)
{
if(strlen(inputtext))
{
for(new p = 0; p < strlen(AccountInfo[playerid][aPassword]); p++)
{
inputtext[p] = '?';
}
SetTimerEx("LogIn", LOGIN_DELAY*1000, 0, "d", playerid);
printf("%s is logged in.",playername2);
new key[256] , val[256];
new Data[256];
while ( fread( UserFile , Data , sizeof( Data ) ) )
{
key = ini_GetKey( Data );
if( strcmp( key , "Level" , true ) == 0 ) { val = ini_GetValue( Data ); AccountInfo[playerid][pLevel] = strval( val ); }
if( strcmp( key , "Geld" , true ) == 0 ) { val = ini_GetValue( Data ); AccountInfo[playerid][pCash] = strval( val ); }
if( strcmp( key , "Konto" , true ) == 0 ) { val = ini_GetValue( Data ); AccountInfo[playerid][pBcash] = strval( val ); }
}
fclose(UserFile);
GivePlayerMoney(playerid,AccountInfo[playerid][pCash]);
}
}
else
{
if(strlen(inputtext))
{
new girismsg[256];
printf("%s falsches Passwort verwendet wurde.",playername2);
format(girismsg,256,"FALSCHES PASSWORT\n\nGeben Sie ihr Passwort ein:");
ShowPlayerDialog(playerid,12347,DIALOG_STYLE_INPUT,"Anmeldung",girismsg,"Anmeldung","Abbrechen");
login[playerid] = 1;
register[playerid] = 0;
fclose(UserFile);
return 1;
}
}
if(!strlen(inputtext))
{
new girismsg[256];
printf("%s falsches Passwort verwendet wurde.",playername2);
format(girismsg,256,"FALSCHES PASSWORT\n\nGeben Sie ihr Passwort ein:");
ShowPlayerDialog(playerid,12347,DIALOG_STYLE_INPUT,"Anmeldung",girismsg,"Anmeldung","Abbrechen");
login[playerid] = 1;
register[playerid] = 0;
fclose(UserFile);
return 1;
}
}
}
if(dialogid == 12347)
{
Encrypt(inputtext);
new string2[128];
new playername2[MAX_PLAYER_NAME];
GetPlayerName(playerid, playername2, sizeof(playername2));
format(string2, sizeof(string2), ACCOUNTS, playername2);
new File: UserFile = fopen(string2, io_read);
if ( UserFile )
{
new PassData[256];
new keytmp[256], valtmp[256];
fread( UserFile , PassData , sizeof( PassData ) );
keytmp = ini_GetKey( PassData );
if( strcmp( keytmp , "Password" , true ) == 0 )
{
valtmp = ini_GetValue( PassData );
strmid(AccountInfo[playerid][aPassword], valtmp, 0, strlen(valtmp)-1, 255);
}
if(strcmp(AccountInfo[playerid][aPassword],inputtext, true ) == 0)
{
if(strlen(inputtext))
{
for(new p = 0; p < strlen(AccountInfo[playerid][aPassword]); p++)
{
inputtext[p] = '?';
}
SetTimerEx("LogIn", LOGIN_DELAY*1000, 0, "d", playerid);
printf("%s is logged in.",playername2);
new key[256] , val[256];
new Data[256];
while ( fread( UserFile , Data , sizeof( Data ) ) )
{
key = ini_GetKey( Data );
if( strcmp( key , "Level" , true ) == 0 ) { val = ini_GetValue( Data ); AccountInfo[playerid][pLevel] = strval( val ); }
if( strcmp( key , "Geld" , true ) == 0 ) { val = ini_GetValue( Data ); AccountInfo[playerid][pCash] = strval( val ); }
if( strcmp( key , "Konto" , true ) == 0 ) { val = ini_GetValue( Data ); AccountInfo[playerid][pBcash] = strval( val ); }
}
fclose(UserFile);
GivePlayerMoney(playerid,AccountInfo[playerid][pCash]);
}
}
else
{
if(strlen(inputtext))
{
new girismsg[256];
printf("%s falsches Passwort verwendet wurde.",playername2);
format(girismsg,256,"FALSCHES PASSWORT\n\nGeben Sie ihr Passwort ein:");
ShowPlayerDialog(playerid,12347,DIALOG_STYLE_INPUT,"Anmeldung",girismsg,"Anmeldung","Abbrechen");
login[playerid] = 1;
register[playerid] = 0;
fclose(UserFile);
return 1;
}
}
if(!strlen(inputtext))
{
new girismsg[256];
printf("%s falsches Passwort verwendet wurde.",playername2);
format(girismsg,256,"FALSCHES PASSWORT\n\nGeben Sie ihr Passwort ein:");
ShowPlayerDialog(playerid,12347,DIALOG_STYLE_INPUT,"Anmeldung",girismsg,"Anmeldung","Abbrechen");
login[playerid] = 1;
register[playerid] = 0;
fclose(UserFile);
return 1;
}
}
}
}
else return Kick(playerid);
if (dialogid == 200)
{
if (response)
{
ShowPlayerDialog(playerid,201,DIALOG_STYLE_MSGBOX,"Bankschalter","Willkommen in der Bank","Weiter","Verlassen");
}
}
if (dialogid == 201)
{
if (response)
{
if(listitem == 0)
{
ShowPlayerDialog(playerid,202,DIALOG_STYLE_LIST,"Einzahlen","Einzahlen","Weiter","Verlassen");
}
if(listitem == 1)
{
ShowPlayerDialog(playerid,203,DIALOG_STYLE_LIST,"Abheben","Abheben","Weiter","Verlassen");
}
if(listitem == 2)
{
ShowPlayerDialog(playerid,204,DIALOG_STYLE_LIST,"Überweisen","Überweisen","Weiter","Verlassen");
}
if(listitem == 3)
{
ShowPlayerDialog(playerid,205,DIALOG_STYLE_LIST,"ÜKotoauszug","Kontoauszug","Weiter","Verlassen");
}
}
return 1;
}
}
return 0;
}
Die dialogid 200 wird hier im game aufgerufen
public Generaltimer(playerid)
{
if(PlayerToPoint(3.0,playerid,1426.8912,-966.6413,37.4273))
{
ShowPlayerDialog(playerid,200,DIALOG_STYLE_MSGBOX,"Bankschalter","Willkommen in der Bank","Weiter","Verlassen");
}
return 1;
}