Nahc login immer am 0 Punkt

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
  • Hallo ich wollte es haben das wenn der Spieler sich Ausloggt und wieder EInloggt an der Position Spawnt wo er sich ausgeloggt hatte alles Funktioniert so weit auch doch sobald ich den Server Neustarte und mich auslogge Spawn ich immer an der Bluebarry Farm beim 0 Punkt meine Codes



    enum Info
    {
    Float:pTx,
    Float:pTy,
    Float:pTz,
    pInterior
    }
    new pInfo[MAX_PLAYERS][Info];


    Sobald er die Registration Abgeschlossen hat bekommt er Spawn 1 Zugesetzt hier soll der Spieler halt Spawnen wo er sich ausgeloggt hat


    if(pInfo[playerid][pSpawn] == 1)
    {
    SetTimerEx("SpielerUnfreeze", 5000, 0, "playerid", playerid);
    FreezePlayer(playerid);

    SetPlayerPos(playerid,pInfo[playerid][pTx],pInfo[playerid][pTy],pInfo[playerid][pTz]);
    SetPlayerInterior(playerid,pInfo[playerid][pInterior]);
    }



    stock SpielerSpeichern(playerid)
    {
    if(GetPVarInt(playerid,"loggedin")==1)
    {
    pInfo[playerid][pInterior] = GetPlayerInterior(playerid);


    GetPlayerPos(playerid, pX, pY, pZ);
    pInfo[playerid][pTx] = pX;
    pInfo[playerid][pTy] = pY;
    pInfo[playerid][pTz] = pZ;

    }
    return 1;
    }




    Und das wars auch schon was ist Falsch bzw wo ran könnte das Problem sein?

  • Hier aktualisierst du die Koordinaten
    stock SpielerSpeichern(playerid)
    {
    if(GetPVarInt(playerid,"loggedin")==1)
    {
    pInfo[playerid][pInterior] = GetPlayerInterior(playerid);

    GetPlayerPos(playerid, pX, pY, pZ);
    pInfo[playerid][pTx] = pX;
    pInfo[playerid][pTy] = pY;
    pInfo[playerid][pTz] = pZ;
    }
    return 1;
    }
    aber du speicherst Sie nicht in der Datenbank oder in einer Datei ab.
    Dementsprechend werden die Daten nach einem restart nicht geladen.


    //edit1 bzw. lädst du die Daten überhaupt nach einem restart/wenn man sich einloggt ?
    //edit2 Und welche Speicherart verwendest du ?



  • Verwenden tue ich derzeit DINI
    Laden muss ich es doch nicht oder? da es doch bei OnPlayerSpawn Abgefragt wird?

  • Nach einem Restart werden alle Werte resettet.


    Desweiterem funktioniert dein System bisher so:
    Spieler 1: connected.
    Spieler 2: connected.
    Spieler 1: disconnected.
    Spieler 2: reconnected und Spawn an der Stelle wo sich Spieler 1 ausgeloggt hat.


    Du musst die Daten bei OnPlayerDisconnect/OnGameModeExit speichern und löschen und beim Login laden




    //edit


    stock SpielerSpeichern(playerid)
    {
    if(GetPVarInt(playerid,"loggedin")==1)
    {
    new filnemae[64], name[MAX_PLAYER_NAME], Float:pX, pY, pZ;
    GetPlayerName(playerid, name, sizeof(name));
    format(filename, sizeof(filename), "Pfad/%s.???", name);
    GetPlayerPos(playerid, pX, pY, pZ);
    dini_FloatSet(filename, "logoutx", pX);
    dini_FloatSet(filename, "logouty", pY);
    dini_FloatSet(filename, "logoutz", pZ);
    dini_IntSet(filename, "interior", GetPlayerInterior(playerid));
    }
    return 1;
    }


    if(pInfo[playerid][pSpawn] == 1)
    {
    SetTimerEx("SpielerUnfreeze", 5000, 0, "playerid", playerid);
    FreezePlayer(playerid);

    new filnemae[64], name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, sizeof(name));
    format(filename, sizeof(filename), "Pfad/%s.???", name);
    SetPlayerPos(playerid,dini_Float(filename, "logoutx"),dini_Float(filename, "logouty"),dini_Float(filename, "logoutz"));
    SetPlayerInterior(playerid,dini_Int(filename, "interior"));
    }

    3 Mal editiert, zuletzt von Red_Romeo ()