Hallo Leute,
ich habe das Problem, dass mein LogIn-/Registersys "UserLevel", "Admin" und "Geld" nicht abspeichert.
Es wird in den Ordner zwar eine .ini mit dem Accountnamen erstellt, davon wird allerdings nur das Passwort vom Account gespeichert, "UserLevel", "Admin" und "Geld" werden mit jedem relogg auf 0 zurück gesetzt.
Hier einmal der PWN-Code, Fehlermeldungen gibt es bei mir keine.
Ich hoffe ich habe keine Zeile vergessen.
Ich hoffe ihr könnt mir zeigen, was ich dabei Falsch gemacht habe.
#define DIALOG_REGISTER 2
#define DIALOG_LOGIN 3
enum Spielerdaten
{
Admin,
Geld,
UserLevel
}
new sSpieler[MAX_PLAYERS][Spielerdaten];
public OnPlayerConnect(playerid)
{
if(GetPVarInt(playerid,"Eingeloggt")==1)
{
AccountLaden(playerid);
}
//LogInSystem
new Playerdatei[64];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(Playerdatei,sizeof(Playerdatei),"/Accounts/%s.ini",name);
if(dini_Exists(Playerdatei))
{
ShowPlayerDialog(playerid,3,DIALOG_STYLE_PASSWORD,"Login","Account gefunden, gib dein Passwort ein!","Login","Abbrechen");
}
else
{
ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT,"Registrieren","Gib bitte das von dir gewünschte Passwort ein:","Register","Abbrechen");
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == DIALOG_LOGIN)
{
if(response == 0)
{
SendClientMessage(playerid,ROT,"Du hast den Vorgang abgebrochen.");
Kick(playerid);
return 1;
}
if(response==1)
{
if(!strlen(inputtext))
{
SendClientMessage(playerid,BLAU,"Das Passwort ist zu kurz!");
ShowPlayerDialog(playerid,3,DIALOG_STYLE_PASSWORD,"Login","Account gefunden, gib dein Passwort ein!","Login","Abbrechen");
return 1;
}
else
{
Login(playerid,inputtext);
return 1;
}
}
}
if(dialogid == DIALOG_REGISTER)
{
if(response == 0)
{
SendClientMessage(playerid,BLAU,"Du hast den Vorgang abgebrochen.");
Kick(playerid);
return 1;
}
if(response==1)
{
if(!strlen(inputtext))
{
SendClientMessage(playerid,BLAU,"Das Passwort ist zu kurz!");
ShowPlayerDialog(playerid,2,DIALOG_STYLE_PASSWORD,"Registrieren","Gib bitte das von dir gewünschte Passwort ein:","Register","Abbrechen");
return 1;
}
else
{
Register(playerid,inputtext);
return 1;
}
}
}
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
if(GetPVarInt(playerid,"Eingeloggt") == 1)
{
SpielerSpeichern(playerid);
}
return 1;
}
stock SpielerName(playerid)
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
return name;
}
stock Register(playerid,key[])
{
new Playerdatei[64];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(Playerdatei,sizeof(Playerdatei),"/Accounts/%s.ini",name);
dini_Create(Playerdatei);
dini_Set(Playerdatei,"Passwort",key);
SendClientMessage(playerid,BLAU,"Erfolgreich registriert.");
SetPlayerScore(playerid,0);
dini_IntSet(Playerdatei,"Geld",0);
dini_IntSet(Playerdatei,"UserLevel",0);
dini_IntSet(Playerdatei,"Admin",0);
SetPVarInt(playerid,"Eingeloggt",1);
return 1;
}
stock Login(playerid,key[])
{
new Playerdatei[64];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(Playerdatei,sizeof(Playerdatei),"/Accounts/%s.ini",name);
if(!strcmp(key,dini_Get(Playerdatei,"Passwort"),false))
{
AccountLaden(playerid);
SendClientMessage(playerid,BLAU,"Erfolgreich eingeloggt!");
}
else
{
SendClientMessage(playerid,ROT,"Dein hast ein falsches Passwort eingegeben!");
ShowPlayerDialog(playerid,3,DIALOG_STYLE_PASSWORD,"LogIn Vorgang","Dein Account wurde in unserer Datenbank gefunden!\nBitte gib nun dein Passwort ein! ","LogIn", "Abbrechen");
}
return 1;
}
stock AccountLaden(playerid)
{
new Playerdatei[64];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(Playerdatei,sizeof(Playerdatei),"/Accounts/%s.ini",name);
sSpieler[playerid][UserLevel] = dini_Int(Playerdatei,"UserLevel");
sSpieler[playerid][Admin] = dini_Int(Playerdatei,"Admin");
sSpieler[playerid][Geld] = dini_Int(Playerdatei,"Geld");
SetPVarInt(playerid,"Eingeloggt",1);
return 1;
}
stock SpielerSpeichern(playerid)
{
if(GetPVarInt(playerid,"Eingeloggt") == 1)
{
new Playerdatei[64];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(Playerdatei,sizeof(Playerdatei),"/Accounts/%s.ini",name);
dini_IntSet(Playerdatei,"UserLevel", sSpieler[playerid][UserLevel]);
dini_IntSet(Playerdatei, "Admin", sSpieler[playerid][Admin]);
dini_IntSet(Playerdatei,"Geld", sSpieler[playerid][Geld]);
}
}
stock isPlayerAnAdmin(playerid,rang)
{
if(GetPVarInt(playerid,"Adminlevel")>=rang)return 1;
return 0;
}