Ich habe ein merkwürdigas Problem:
Wenn ich mein server neu starte und es befinden sich wärend des neustarts spieler darauf so können sie sich nicht wieder einloggen. Als Meldung kommt nur das mein Passwort falsch wäre. Nachdem der Spieler sein SSMP neu gestartet hat kommt er wieder mit dem passwort rein ist aber wieder ein normaler user. Hier mal das Script welches mit der SII.inc läuft:
public OnPlayerConnect(playerid)
{
//Login & Registrieren
format(pfad,64,"/Accounts/%s.ini",Spielername(playerid));
if(fexist(pfad))
{
ShowPlayerDialog(playerid,Dialog_Login,DIALOG_STYLE_PASSWORD,"Login","Bitte gib dein Passwort ein.","Einloggen","Abbrechen");
}
else if(!fexist(pfad))
{
ShowPlayerDialog(playerid,Dialog_Register,DIALOG_STYLE_INPUT,"Registration","Herzlich Willkommen bei United-Freaks.\nBitte gib dein gewünschtest Passwort ein\num dich zu registrieren.","Registrieren","Abbrechen");
}
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
format(pfad,64,"/Accounts/%s.ini",Spielername(playerid));
if(INI_Open(pfad))
{
INI_WriteInt("Rang",pInfo[playerid][Rang]);
INI_Save();
INI_Close();
}
return 1;
}
case Dialog_Register:
{
if(response == 1)
{
format(pfad,64,"/Accounts/%s.ini",Spielername(playerid));
if(INI_Open(pfad))
{
INI_WriteString("Name",Spielername(playerid));
INI_WriteString("Passwort",inputtext);
INI_WriteInt("Rang",0);
INI_Save();
INI_Close();
SendClientMessage(playerid,GREEN,"Du hast dich erfolgreich registriert");
ShowPlayerDialog(playerid,Dialog_Login,DIALOG_STYLE_PASSWORD,"Login","Bitte gib dein Passwort ein.","Einloggen","Abbrechen");
}
}
if(response == 0)
{
Kick(playerid);
}
}
case Dialog_Login:
{
if(response== 1)
{
if(INI_Open(pfad))
{
INI_ReadString(pInfo[playerid][Passwort],"Passwort",20);
if(strcmp(inputtext,pInfo[playerid][Passwort],false))
{
ShowPlayerDialog(playerid,Dialog_Login,DIALOG_STYLE_PASSWORD,"Login","Bitte gib dein Passwort ein.","Login","Abbrechen");
SCM(playerid,ROT,"Falsches Passwort");
}
else
{
INI_ReadString(pInfo[playerid][Name],"Name",MAX_PLAYER_NAME);
INI_ReadString(pInfo[playerid][Passwort],"Passwort",20);
pInfo[playerid][Rang] = INI_ReadInt("Rang");
INI_Close();
}
}
}
}
Ich weiß nicht ob es wichtig ist aber hier mein restart befehl:
public OnPlayerCommandText (playerid, cmdtext[])
{
if(strcmp(cmdtext, "/restart", true)==0)
{
if(pInfo[playerid][Rang] > 1)
{
SendRconCommand("gmx");
}
else
{
SendClientMessage(playerid,ROT,"Du bist leider kein Admin! Gib /help ein!");
}
return 1;
}
return 1;
}
Mein Gedanke ist nun dieser: Ich denke es wird einfach nicht gespeichert welcher Rang zu welchem Spieler gehört darum möchte ich gern bei meinem /restart Befehl alle Userdaten mit einmal speichern. Dabei müsste abgefragt werden wieviele Spieler auf dem Server sind und welche ID sie haben. Danach müssten alles gesichert werden. Leider fehlt mir jeglicher Gedankensprung für den Anfang solch einer Idee. Oder habe ich einen Fehler gemacht?
Danke euch