Position Speichern/Laden

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
  • hi,
    wie speichere ich die Position des Spielers vor ausloggen und lade sie wieder beim einloggen.


    Speichern:



    Laden:


  • wenn du so speicherst must du auch das new Float:X.... alles anpassen und du must den spieler auch beim login wieder auf die posiotion setzten mit


    SetPlayerPos(playerid,posX, posY, posZ);



    //edit ich mach mal das speichern aber das laden must du mal selber probieren


    //edit2 hier so müste das glaubich gehn :D




    stock Speichern(playerid)
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    new pos[3];
    GetPlayerPos(playerid,pos[0],pos[1],pos[2]);
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
    if(dini_Exists(Spielerdatei))
    {
    dini_FloatSet(Spielerdatei,"x", pos[0]);
    dini_FloatSet(Spielerdatei,"y", pos[1]);
    dini_FloatSet(Spielerdatei,"z", pos[2]);
    dini_IntSet(Spielerdatei,"Level",GetPlayerScore(playerid));
    dini_IntSet(Spielerdatei,"Geld",GetPlayerMoney(playerid));
    }
    return 1;
    }

    Einmal editiert, zuletzt von Mr_x ()

  • stock Speichern(playerid)
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    new Float:x,Float:y,Float:z;
    GetPlayerPos(playerid,x,y,z);
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
    if(dini_Exists(Spielerdatei))
    {
    dini_FloatSet(Spielerdatei,"PosX", x);
    dini_FloatSet(Spielerdatei,"PosY", y);
    dini_FloatSet(Spielerdatei,"PosZ", z);
    dini_IntSet(Spielerdatei,"Level",GetPlayerScore(playerid));
    dini_IntSet(Spielerdatei,"Geld",GetPlayerMoney(playerid));
    }
    return 1;
    }


    stock Login(playerid,key[])
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
    if(!strcmp(key,dini_Get(Spielerdatei,"Passwort"),false))
    {
    SetPlayerScore(playerid,dini_Int(Spielerdatei,"Level"));
    GivePlayerMoney(playerid,dini_Int(Spielerdatei,"Geld"));
    SetPlayerPos(playerid, dini_Float(Spielerdatei,"PosX"), dini_Float(Spielerdatei,"PosY"), dini_Float(Spielerdatei,"PosZ"));
    SetPVarInt(playerid,"loggedin",1);
    SendClientMessage(playerid,VIOLET,"Erfolgreich eingeloggt.");
    return 1;
    }
    else
    {
    SendClientMessage(playerid,ROT,"Du hast ein Falsches Passwort angegeben!");
    Kick(playerid);
    return 1;
    }
    }

  • ok danke, das speichern hat schonmal ohne Probleme geklapt nur Spawnt er noch am standtart Spawn.
    Damit der Spawn Punkt da ist wo er sich ausgeloggt hat, reicht es wahrscheinlich nicht aus bei AddPlayerClass die Koordinaten durch PosX etc. zu ersetzten?

  • hmm spawne jetzt in blueberry


    Der Fehler liegt ja hier iwo weil der glaube ich 3 Spawnpunkte vorgeschrieben bekommt, nur kann ich ja nicht einfach 2 löschen...
    was muss ich den machen damit der richtig spawnt


    Code
    OnGameModInit
    AddPlayerClass(0, -1585.0492,728.7330,8.1196,271.7839, 0, 0, 0, 0, 0, 0);
    ...


    Code
    public OnPlayerRequestClass(playerid, classid)
    {
        if(IsPlayerNPC(playerid))return 1;
        SetSpawnInfo(playerid,0,115,1958.3783,1343.1572,15.3746,0,0,0,0,0,0,0);
        SpawnPlayer(playerid);
    	return 1;
    }