Spieler Speichern

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Guten Tag liebe Comminuty,


    ich habe ein kleines Problem, undzwar musste ich feststellen, dass nur die ID 0 auf dem Server gespeichert wird.
    ich habe daraufhin die Systeme überarbeitet & geprüft, aber es wird nur die ID 0 gespeichert.
    Alle anderen ID's werden "nicht beachtet"
    Viellicht könnt ihr mir ja weiterhelfen.


    Das ist die vom Timer ausgeführete Funktion, die den Spieler Speichern lassen soll.
    public SavingTimer()
    {
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i) && !IsPlayerNPC(i) && gPlayerLogged[i] == 1)
    {
    printf("Es wurden %i Accouts gespeichert!",i);
    PlayerSave(i);
    }
    }
    return true;
    }
    public PlayerSave(playerid)
    {
    if(IsPlayerConnected(playerid))
    {
    if(gPlayerLogged[playerid] == 1)
    {
    new string3[256];
    new playername3[MAX_PLAYER_NAME];
    PlayerInfo[playerid][pChar] = GetPlayerSkin(playerid);
    PlayerInfo[playerid][pModel] = GetPlayerSkin(playerid);
    PlayerInfo[playerid][pCash] = GetPlayerMoney(playerid);
    GetPlayerHealth(playerid,PlayerInfo[playerid][pHealth]);
    GetPlayerName(playerid, playername3, sizeof(playername3));


    printf("INFO: Der Spieler %s wird gespeichert!",Spielername(playerid));


    format(string3, sizeof(string3), "/Accounts/%s.ini", playername3);
    new File:hFile = fopen(string3, io_write);
    if(hFile)
    {
    new var[512];
    format(var, 32, "Level=%d\n",PlayerInfo[playerid][pLevel]);fwrite(hFile, var);
    //........
    //........
    //........
    }
    }
    }
    return true;
    }





  • Versuch es mal so:



    Mit freundlichen Grüßen
    German_ScripterHD

  • Versuche es mal so: (print bitte auch schicken)


    PlayerSave (sollte ein stock sein...)


    Mit freundlichen Grüßen
    German_ScripterHD

  • @DreameR
    Das wird nichts bringen. Wäre das return in der Schleife, hätte es was gebracht, so allerdings nicht.

  • Also hier der Log, Info: Auf dem Server sind 2 Leute es wird wieder nur die ID 0 gespeichert.
    ID 1 wird in dem Fall wieder nicht beachtet, aber INFO. Wenn NUR die ID 1 Online ist, wird die auch gespeichert, wenn dann wieder die ID 0 dazukommen wird halt wieder nur die ID 0 gespeichert.
    Das heißt, es wird immer nur der Erste (online) User gespeichert.


    1:1 Prints von German_ScripterHD


    Ich habe das mal anders printen lassen:
    print("PlayerSave | gPlayerLogged == 1 (weiter)");new string3[256];PlayerInfo[playerid][pChar] = GetPlayerSkin(playerid);printf("PlayerSave | pChar = %d ",PlayerInfo[playerid][pChar]);PlayerInfo[playerid][pModel] = GetPlayerSkin(playerid);printf("PlayerSave | pModel = %d ");PlayerInfo[playerid][pCash] = GetPlayerMoney(playerid);printf("PlayerSave | pCash = %d ",PlayerInfo[playerid][pCash]);GetPlayerHealth(playerid,PlayerInfo[playerid][pHealth]);printf("PlayerSave | pHealth = %f ",PlayerInfo[playerid][pHealth]);



    und das war dann das Ergebnis. (Wieder mit 2 Spielern)





    //EDIT
    Natürlich steht noch am ende > fclose(hFile); <
    Also
    //(...)
    //(...)
    //(...)
    format(var, 32, "ammoslot13=%d\n", ammo[12]);fwrite(hFile, var);
    print("-----------------------------------------------------------------");
    printf("PlayerSave wurde aufgerufen |Name: %s | Playerid: %i",Spielername(playerid),playerid);
    printf("PlayerSave Account von %s wurde gespeichert.",Spielername(playerid));
    fclose(hFile);


    print("INFO: Der Spieler wurde erfolgreich gespeichert!");
    }