Hey Leute,
Ich habe vor kurzen angefangen mit MySQL R7 und hab ein Problem und zwar ich habe neue Sachen hinzugefügt die ich Speichern wollte wie Adminlevel etc wenn ich es nun in meine Stocks/Publics eintragen will und inGame gehe kommt mein Register bzw Login Dialog nicht mehr woran kann das liegen? Hier mal meine Sachen:
switch(dialogid)
{
case DIALOG_REGISTER:
{
if(!response) Kick(playerid);
if(strlen(inputtext) > 32 || strlen(inputtext) < 4) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD,"Registrierung","Dein Passwort muss mindestens 4 Zeichen oder darf maximal 32 Zeichen enthalten!\n\nWillkommen auf ... Du hast noch keinen Account, \num dich zu Registrieren gib bitte ein gewünschtes Passwort ein:","Registrieren","Abbrechen");
new password[129];
WP_Hash(password, 129, inputtext);
CreatePlayerAccount(playerid, password);
CheckPlayerAccount(playerid);
}
case DIALOG_LOGIN:
{
if(!response) Kick(playerid);
if(strlen(inputtext) > 32 || strlen(inputtext) < 4) return ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD,"Login","Dein Passwort muss mindestens 4 Zeichen oder darf maximal 32 Zeichen enthalten!\n\nWillkommen auf ...\nDeine Accountdaten wurden gefunden, bitte gib dein Passwort ein:","Login","Abbrechen");
new password[129], query[128];
WP_Hash(password, 129, inputtext);
format(query, sizeof query, "SELECT * FROM `accounts` WHERE `ID` = '%d'", SpielerInfo[playerid][pID]);
mysql_function_query(1, query, true, "OnPlayerAccountLoad", "is", playerid, password);
}
}
stock CreatePlayerAccount(playerid, password[])
{
new query[256], name[MAX_PLAYER_NAME], escpassword[129];
GetPlayerName(playerid, name, MAX_PLAYER_NAME);
mysql_real_escape_string(name, name);
mysql_real_escape_string(password, escpassword);
format(query, sizeof query, "INSERT INTO `accounts` (`Username`, `Password`, `E-Mail`, `Level`, `Geld`, `Adminlevel`) VALUES ('%s', '%s', '%s', '0', '0', '0')", name, escpassword);
mysql_function_query(1, query, false, "", "");
}
stock CheckPlayerAccount(playerid)
{
new query[128], name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, MAX_PLAYER_NAME);
mysql_real_escape_string(name, name);
format(query, sizeof query, "SELECT `ID` FROM `accounts` WHERE `Username` = '%s'", name);
mysql_function_query(1, query, true, "OnPlayerAccountCheck", "i", playerid);
}
public OnPlayerAccountCheck(playerid)
{
if(!IsPlayerConnected(playerid)) return 1;
new rows, fields, result[5];
cache_get_data(rows, fields);
if(rows)
{
cache_get_field_content(0, "ID", result);
SpielerInfo[playerid][pID] = strval(result);
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD,"Login", "Willkommen auf ...\nDeine Accountdaten wurden gefunden, bitte gib dein Passwort ein:","Login","Abbrechen");
}
else
{
ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Registrierung", "Willkommen auf ...\nDu hast noch keinen Account, um dich zu Registrieren gib bitte ein gewünschtes Passwort ein:", "Registrieren", "Abbrechen");
}
return 1;
}
public OnPlayerAccountLoad(playerid, password[])
{
if(!IsPlayerConnected(playerid) || IsPlayerNPC(playerid)) return 1;
new rows, fields, result[250];
cache_get_data(rows, fields);
if(!rows) Kick(playerid);
cache_get_field_content(0, "Password", result);
if(!strcmp(result, password, true))
{
cache_get_field_content(0, "E-Mail", result); SpielerInfo[playerid][pEMail] = strval(result);
cache_get_field_content(0, "Level", result); SpielerInfo[playerid][pLevel] = strval(result);
cache_get_field_content(0, "Geld", result); SpielerInfo[playerid][pGeld] = strval(result);
cache_get_field_content(0, "Adminlevel", result); SpielerInfo[playerid][pAdmin] = strval(result);
SpielerInfo[playerid][pLoggedin] = 1;
SetPlayerScore(playerid, SpielerInfo[playerid][pLevel]);
ResetPlayerMoney(playerid);
GivePlayerMoney(playerid, SpielerInfo[playerid][pGeld]);
SpawnPlayer(playerid);
}
else
{
ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login","Das Angegebene Passwort stimmt nicht überein.\nBitte gib das richtige Passwort ein\n\nDu hast 3 Versuche sonst wirst du gekickt!:","Login","Abbrechen");
WrongPassword[playerid] += 1;
if(WrongPassword[playerid] == 3)
{
WrongPassword[playerid] = 0;
Kick(playerid);
}
}
return 1;
}
public SavePlayerAccount(playerid)
{
if(!IsPlayerConnected(playerid) || IsPlayerNPC(playerid)) return 1;
new query[128];
format(query, sizeof query, "UPDATE accounts SET E-Mail = %s, Level = %d, Geld = %d, Adminlevel = %d WHERE ID = %d", \
SpielerInfo[playerid][pEMail], GetPlayerScore(playerid), GetPlayerMoney(playerid), SpielerInfo[playerid][pAdmin], SpielerInfo[playerid][pID]);
mysql_function_query(1, query, false, "", "");
return 1;
}
Ich hoffe ihr könnt mir helfen und vielen dank im voraus !
Mit freundlichen Grüßen
Dwayne_Pacino