Hey, ich versuche gerade ein Login & Registrier verfahren, ähnlich wie im Godfather zu scripten. Allerdings werden beim Aktualisieren der SpielerDatei alle Werte auf die Standartwerte gesetzt.
Beispiel:
Meine Userdatei sieht vor dem connecten so aus:
Key=test
Frage=test?
Antwort=test!
Geld=120000
AdminLevel=3
Skin=184
Cop=3
Taxi=0
Sani=0
Duty=0
Arbeitszeit=580
Alles anzeigen
Sobald ich connecte und meine Spielerdatei aktualisiert wird (passiert jede Sekunde) sieht sie nurnoch so aus:
Key=
Frage=
Antwort=
Geld=100000
AdminLevel=0
Skin=0
Cop=0
Taxi=0
Sani=0
Duty=0
Arbeitszeit=0
Alles anzeigen
Und hier sind die beiden Funktionen, Einloggen und Aktualisieren:
public Einloggen(playerid,password[])
{
new string2[64];
new playername2[MAX_PLAYER_NAME];
GetPlayerName(playerid, playername2, sizeof(playername2));
format(string2, sizeof(string2), "%s.ini", playername2);
new File: UserFile = fopen(string2, io_read);
if ( UserFile )
{
new PassData[256];
new keytmp[256], valtmp[256];
fread( UserFile , PassData , sizeof( PassData ) );
keytmp = ini_GetKey( PassData );
if( strcmp( keytmp , "Key" , true ) == 0 )
{
valtmp = ini_GetValue( PassData );
strmid(Spieler[playerid][pPas], valtmp, 0, strlen(valtmp)-1, 255);
}
if(strcmp(Spieler[playerid][pPas],password, true ) == 0 )
{
SendClientMessage(playerid, COLOR_YELLOW, "Du wurdest erfolgreich eingeloggt !");
TogglePlayerControllable(playerid, 1);
gEingeloggt[playerid] = 2;
new key[ 256 ], val[ 256 ];
new Data[ 256 ];
while ( fread( UserFile , Data , sizeof( Data ) ) )
{
key = ini_GetKey( Data );
if( strcmp( key , "Geld" , true ) == 0 ) { val = ini_GetValue( Data ); Spieler[playerid][pMoney] = strval( val ); }
if( strcmp( key , "AdminLevel" , true ) == 0 ) { val = ini_GetValue( Data ); Spieler[playerid][pAdmin] = strval( val ); }
if( strcmp( key , "Skin" , true ) == 0 ) { val = ini_GetValue( Data ); Spieler[playerid][pSkin] = strval( val ); }
if( strcmp( key , "Cop" , true ) == 0 ) { val = ini_GetValue( Data ); Spieler[playerid][pCop] = strval( val ); }
if( strcmp( key , "Taxi" , true ) == 0 ) { val = ini_GetValue( Data ); Spieler[playerid][pTaxi] = strval( val ); }
if( strcmp( key , "Sani" , true ) == 0 ) { val = ini_GetValue( Data ); Spieler[playerid][pSani] = strval( val ); }
if( strcmp( key , "Duty" , true ) == 0 ) { val = ini_GetValue( Data ); Spieler[playerid][pDuty] = strval( val ); }
if( strcmp( key , "Arbeitszeit", true ) == 0 ) { val = ini_GetValue( Data ); Spieler[playerid][pDutyTime] = strval( val ); }
}
fclose(UserFile);
SpawnPlayer(playerid);
SetPlayerSkin(playerid, Spieler[playerid][pSkin]);
}
else
{
SendClientMessage(playerid, COLOR_WHITE, "Falsches Passwort.");
Kick(playerid);
return 1;
}
}
return 1;
}
public Aktualisieren(playerid)
{
if(IsPlayerConnected(playerid))
{
if(gEingeloggt[playerid])
{
new
string3[32],
SpielerName[MAX_PLAYER_NAME];
GetPlayerName(playerid, SpielerName, sizeof(SpielerName));
format(string3, sizeof(string3), "%s.ini", SpielerName);
new File: hFile = fopen(string3, io_write);
if (hFile)
{
new inhalt[32];
SetPlayerScore(playerid, Spieler[playerid][pAdmin]);
Spieler[playerid][pMoney] = GetPlayerMoney(playerid);
format(inhalt, 32, "Key=%s\n", Spieler[playerid][pPas]);fwrite(hFile, inhalt);
format(inhalt, 32, "Frage=%s\n", Spieler[playerid][pFrage]);fwrite(hFile, inhalt);
format(inhalt, 32, "Antwort=%s\n", Spieler[playerid][pAntwort]);fwrite(hFile, inhalt);
format(inhalt, 32, "Geld=%d\n",Spieler[playerid][pMoney]);fwrite(hFile, inhalt);
format(inhalt, 32, "AdminLevel=%d\n",Spieler[playerid][pAdmin]);fwrite(hFile, inhalt);
format(inhalt, 32, "Skin=%d\n",Spieler[playerid][pSkin]);fwrite(hFile, inhalt);
format(inhalt, 32, "Cop=%d\n",Spieler[playerid][pCop]);fwrite(hFile, inhalt);
format(inhalt, 32, "Taxi=%d\n",Spieler[playerid][pTaxi]);fwrite(hFile, inhalt);
format(inhalt, 32, "Sani=%d\n",Spieler[playerid][pSani]);fwrite(hFile, inhalt);
format(inhalt, 32, "Duty=%d\n",Spieler[playerid][pDuty]);fwrite(hFile, inhalt);
format(inhalt, 32, "Arbeitszeit=%d\n",Spieler[playerid][pDutyTime]);fwrite(hFile, inhalt);
fclose(hFile);
}
}
}
return 1;
}