[DINI] Position Speichern und 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
  • Guten Morgen,


    heute zeige ich euch wie ihr eure Position Speichern könnt und beim nächsten Login auch wieder dorthin gesetzt werdet.


    Als erstes geht ihr in euer enum, und fügt 4 Sachen hinzu:


    Float:PosX,Float:PosY,Float:PosZ,Float:PosA;


    PosX für die X Achse des Spielers, PosY für die Y Achse des Spielers, PosZ für die Z Achse des Spielers und PosA für die Blickrichtung des Spielers.


    Soweit so gut, begeben wir uns langsam ans Speichern der Position.


    Als erstes wollen wir heraus finden wo der Spieler steckt und in welche Blickrichtung er schaut und das geht so:


    GetPlayerPos(playerid, SpielerInfo[playerid][PosX],SpielerInfo[playerid][PosY],SpielerInfo[playerid][PosZ]);
    GetPlayerFacingAngle(playerid,SpielerInfo[playerid][PosA]);
    dini_FloatSet(/* Pfad der Datei */, "PosX", SpielerInfo[playerid][PosX]);
    dini_FloatSet(/* Pfad der Datei */, "PosY", SpielerInfo[playerid][PosY]);
    dini_FloatSet(/* Pfad der Datei */, "PosZ", SpielerInfo[playerid][PosZ]);
    dini_FloatSet(/* Pfad der Datei */, "PosA", SpielerInfo[playerid][PosA]);


    Dies schreiben wir in den Speichern stock.


    Mit GetPlayerPos(playerid,..) finden wir die Position des Spielers heraus.
    Mit der Funktion GetPlayerFacingAngle(playerid,..) finden wir die Blickrichtung des Spielers heraus.
    dini_FloatSet sorgt dafür dass wir einen Float abspeichern können.


    Jetzt haben wir schon dafür gesorgt dass die Koordinaten vom Spieler gespeichert werden und weiter ? Laden natürlich !


    SpielerInfo[playerid][PosX] = dini_Float(Spielerdatei, "PosX");
    SpielerInfo[playerid][PosY] = dini_Float(Spielerdatei, "PosY");
    SpielerInfo[playerid][PosZ] = dini_Float(Spielerdatei, "PosZ");
    SpielerInfo[playerid][PosA] = dini_Float(Spielerdatei, "PosA");
    Dies schreiben wir in den laden stock.



    Wir haben es fast geschafft, fehlt nur noch die Anweisung dass der Spieler auch dort Spawnen soll wo er sich ausgelogt hat.


    Dafür gehen wir in den Callback OnPlayerSpawn und schreiben rein:



    SetPlayerPos(playerid,SpielerInfo[playerid][PosX],SpielerInfo[playerid][PosY],SpielerInfo[playerid][PosZ]);
    SetPlayerFacingAngle(playerid,SpielerInfo[playerid][PosA]);
    Was haben wir hier gemacht?
    Wir sagen dem Spieler er soll mit SetPlayerPos(playerid,..) an seinen Koordinaten spawnen wo er sich letzens ausgeloggt hat.
    Ebenso mit der Blickrichtung, dafür verwenden wir SetPlayerFacingAngle(playerid..)


    Ich bedanke mich für das Lesen und wünsche allen noch eine Gute Nacht :sleeping:
    Bei Fragen gerne hier in den Thread rein.

    2 Mal editiert, zuletzt von Eisbär_ () aus folgendem Grund: Überarbeitung

  • Wie wäre es wenn du das hier ausbesserst.


    dini_FloatSet(/* Pfad der Datei */, "PosX", SpielerInfo[playerid][PosX]);
    dini_FloatSet(/* Pfad der Datei */, "PosX", SpielerInfo[playerid][PosY]);
    dini_FloatSet(/* Pfad der Datei */, "PosX", SpielerInfo[playerid][PosZ]);
    dini_FloatSet(/* Pfad der Datei */, "PosX", SpielerInfo[playerid][PosA]);


    4x PosX ?


  • Zitat von »Eisbär_«
    Ich werde dazu auch nichts erklären, denn es ist selbsterklärend.
    Zitat von »Eisbär_«
    Auch hierzu werde ich nichts erklären denn es ist selbsterklärend.
    Warum schreibst du dann ein Tutorial, wenn du es nicht erklären möchtest? Wenn ich doch ein Tutorial schreibe, dann erkläre ich ALLES was dazu gehört.


    Ich dachte die Funktionen wären selbsterklärend, das hat nix mit nicht erklären zu tun, danke für deine Kritik. Wird gleich verbessert.



    Wie wäre es wenn du das hier ausbesserst.
    4x PosX ?


    Entschuldige, da ist mir wohl ein kleiner Fehler unterlaufen. Wird gleich verbessert.



    Wie schon dir Oberen geschrieben haben, du hast zwar alle Funktionen alles geschrieben,
    aber du hast nichts davon erklärt. Also das heißt, ein Anfänger scriptet das nach aber weiß nicht wie er das gemacht hat.
    Also bitte ich dich nochmal das Tutorial zu überschreiben und nochmal alles ordentlich zu erklären.


    Mache ich im Laufe des Tages, ich danke euch für die Kritik !

  • Ich habe es nicht ausprobiert, aber es scheint mir so, als ob, wenn ein Spieler stirbt, er wieder auf der Position gespawnt wird, wo er sich ausgeloggt hat, ich glaub es wär besser, wenn man dann die Position auf den Spawn (Bei Reallife-Servern evtl. KH setzt.)
    Aber sonst ganz okay. :)


    MfG