Hallo,
Ich habe ein Problem mit meinem Login/Registration system.
Und zwar will es mir die "Daten" eines Spielers nicht abspeichern,
wenn dieser disconnected. Errors werden mir keine angezeigt, ebenso
wie Warnings. Ich denke es ist eine Kleinigkeit, die ich allerdings nicht sehe -.-'.
Werft selbst ein Blick drauf:
public OnPlayerConnect(playerid)
{
new name[MAX_PLAYERS],Account[128];
GetPlayerName(playerid,name,sizeof(name));
format(Account,sizeof(Account),"%s.txt",name);
if(dini_Isset(Account,"Passwort"))
{
ShowPlayerDialog(playerid,DIALOG_LOGIN,1,"Login:","Bitte log dich nun mit deinem\nPasswort ein!","Login","Abbrechen");
}
else
{
ShowPlayerDialog(playerid,DIALOG_REG,1,"Registration:","Bitte registriere dich nun mit einem Passwort!","Registrieren","Abbrechen");
}
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
new name[MAX_PLAYERS], Account[128];
GetPlayerName(playerid, name, sizeof(name));
format(Account,sizeof(Account),"s.txt",name);
//Player[playerid][wanted] = GetPlayerWantedLevel(playerid);
//Player[playerid][skin] = GetPlayerSkin(playerid);
if(dini_Exists(Account) && Player[playerid][eingeloggt] == 1)
{
dini_IntSet(Account,"wanted",GetPlayerWantedLevel(playerid));
dini_IntSet(Account,"skin",GetPlayerSkin(playerid));
}
Player[playerid][wanted] = 0;
Player[playerid][skin] = 0;
Player[playerid][eingeloggt] = 0;
return 1;
}
public OnPlayerSpawn(playerid)
{
new name[MAX_PLAYERS], Account[128];
GetPlayerName(playerid,name,sizeof(name));
format(Account,sizeof(Account),"%s.txt",name);
if(dini_Isset(Account,"wanted") && dini_Isset(Account,"skin"))
{
SetPlayerWantedLevel(playerid,Player[playerid][wanted]);
SetPlayerSkin(playerid,Player[playerid][skin]);
}
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
new name[MAX_PLAYERS], Account[128];
GetPlayerName(playerid,name,sizeof(name));
format(Account,sizeof(Account),"%s.txt",name);
if(dialogid == DIALOG_LOGIN)
{
if(response)
{
if(!strlen(inputtext))
{
ShowPlayerDialog(playerid,DIALOG_LOGIN,1,"Login:","Bitte log dich nun mit deinem\nPasswort ein!","Login","Abbrechen");
SendClientMessage(playerid,COLOR_RED,"Das Passwort ist zu kurz!");
}
if(strcmp(inputtext,dini_Get(Account,"Passwort")) == 0)
{
Player[playerid][wanted] = dini_Int(Account,"wanted");
Player[playerid][skin] = dini_Int(Account,"skin");
Player[playerid][eingeloggt] = 1;
SendClientMessage(playerid,COLOR_YELLOW,"Du hast dich erfolgreich eingeloggt!");
}
else
{
ShowPlayerDialog(playerid,DIALOG_LOGIN,1,"Login:","Bitte log dich nun mit deinem\nPasswort ein!","Login","Abbrechen");
SendClientMessage(playerid,COLOR_RED,"Das eingegebene Passwort war falsch!");
}
}
else
{
Kick(playerid);
}
}
if(dialogid == DIALOG_REG)
{
if(response)
{
if(!strlen(inputtext))
{
ShowPlayerDialog(playerid,DIALOG_REG,1,"Registration:","Bitte registriere dich nun mit einem Passwort!","Registrieren","Abbrechen");
SendClientMessage(playerid,COLOR_RED,"Das Passwort ist zu kurz!");
}
else
{
dini_Create(Account);
dini_Set(Account,"Passwort",inputtext);
dini_IntSet(Account,"wanted",0);
dini_IntSet(Account,"skin",26);
Player[playerid][eingeloggt] = 1;
SendClientMessage(playerid,COLOR_YELLOW,"Du hast dich erfolgreich registriert und bist nun eingeloggt!");
}
}
else
{
Kick(playerid);
}
}
return 1;
}
Die Daten die ich beim Registrieren unten im Dialog mit dini_IntSet... speichere, werden auch gespeichert, die
unter OnPlayerDisconnect allerdings nicht.
Danke schonmal im voraus falls ihr helfen könnt.