Hallo!
Ich bin gerade dabei mein Registersystem zu bearbeiten, jedoch habe ich ein kleines Problem.
Code
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
registerdialog(playerid, dialogid, inputtext);
return 1;
}
stock registerdialog(playerid, dialogid, inputtext[])
{
printf("regdia");
switch(dialogid)
{
case DIALOG_REGISTER:
{
ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_PASSWORD,"Registration","Bitte gib ein Passwort für deinen Account an:","Bestätigen","Abbrechen");
if(6 <= strlen(inputtext) <= 24)
{
bcrypt_hash(inputtext, BCRYPT_COST, "OnPasswordHashed", "d", playerid);
}
return 1;
}
}
return 1;
}
FUNCTION AccountCheck(playerid)
{
printf("ACC");
new rows,string[255];
cache_get_row_count(rows);
if(rows == 0)
{
format(string,sizeof(string),"{FFFFFF}Der Account {E8BD1A}%s {FFFFFF}wurde nicht gefunden\nBitte erstelle dir einen Account",AccountInfo[playerid][account_Name]);
ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "{FFFFFF}Fehler",string, "{FFFFFF}Weiter", "");
//SetTimerEx("KickPlayer", 100, false, "i", playerid);
}
else
{
format(string,sizeof(string),"{FFFFFF}Der Account {E8BD1A}%s {FFFFFF}wurde gefunden\nBitte melde dich an",AccountInfo[playerid][account_Name]);
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "{FFFFFF}Anmelden",string, "{FFFFFF}Weiter", "");
//SetTimerEx("KickPlayer", 100, false, "i", playerid);
}
return 1;
}
FUNCTION OnPasswordHashed(playerid)
{
printf("OPWH");
new hash[BCRYPT_HASH_LENGTH],query[256];
bcrypt_get_hash(hash);
mysql_format(handle, query, sizeof(query), "INSERT INTO `accounts` (`Name`, `Passwort`) VALUES ('%e', '%e')", AccountInfo[playerid][account_Name], hash);
mysql_pquery(handle, query, "AccountRegister", "d", playerid);
return 1;
}
FUNCTION AccountRegister(playerid)
{
printf("ACR");
AccountInfo[playerid][account_ID] = cache_insert_id();
AccountInfo[playerid][account_Eingeloggt] = true;
//mysql_format(handle, string, sizeof(string), "SELECT * FROM `character` WHERE `AccountID` = '%d'", AccountInfo[playerid][account_ID]);
//mysql_tquery(handle, string, "ShowCharacter", "d", playerid);
return 1;
}
Alles anzeigen
Aus irgendeinem Grund wird der Register Dialog doppelt angezeigt. Die Funktionen werden alle aufgerufen, jedoch doppelt, sodass ich zwei mal den gleichen Account mit unterschiedlichem PW in der DB habe. Was ist da inkorrekt?
MfG
Allrounder18