Kleine Frage: Letzte Pos laden nach Tod

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 Leute,


    habe eine kleine Frage:


    Möchte, dass man nach dem Tod an der letzten Position wieder spawnt, wo man gestorben ist.
    Nun habe ich es mal so gelöst


    public OnPlayerDeath(playerid, killerid, reason)
    {


    GetPlayerFacingAngle(playerid, rangl);
    GetPlayerPos(playerid, Float:rx, Float:ry, Float:rz);
    SetPlayerPos(playerid, Float:rx, Float:ry, Float:rz);
    SetPlayerFacingAngle(playerid, rangl);
    SetPlayerHealth(playerid, 100);
    return 1;
    }


    Nun werde ich aber leider wieder an meinem eigentlichen "OnGameModeInit"-Punkt gespawnt.


    Die Floats und so sind auch definiert oben im Script, nun weiss ich wirklich nicht an was das liegen kann.



    mfg

  • Wenn du die Variablen Global definert hast, mach das so:

    oben
    new bool:tot[MAX_PLAYERS];
    public OnPlayerDeath(playerid, killerid, reason)
    {
    GetPlayerFacingAngle(playerid, rangl);
    GetPlayerPos(playerid, rx, ry, rz);
    tot[playerid] = true;
    return 1;
    }
    public OnPlayerSpawn(playerid)
    {
    if(tot[playerid] == true)
    {
    SetPlayerPos(playerid, rx, ry, rz);
    SetPlayerFacingAngle(playerid, rangl);
    SetPlayerHealth(playerid, 100);
    }
    tot[playerid] = false;
    return 1;
    }
    Wenn du tot bist kannst du schlecht die Position setzten, da du ja tot bist.
    Du musst erst gespawnt werden, bevor du die Position setzt,

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • Auch wenn es funktioniert ^^


    Hier noch ein Script, das auch dein Interior sowie deine Virtuelle Welt speichert.
    Damit du auch wirklich wieder überall spawnst.


    enum TodEnum {bool:isTod, Float:pos[4], posExtra[2]};
    new TodInfo[MAX_PLAYERS][TodEnum];


    public OnPlayerDeath(playerid, killerid, reason)
    {
    GetPlayerPos(playerid, TodInfo[playerid][pos][0], TodInfo[playerid][pos][1], TodInfo[playerid][pos][2]);
    GetPlayerFacingAngle(playerid, TodInfo[playerid][pos][3]);
    TodInfo[playerid][posExtra][0] = GetPlayerVirtualWorld(playerid);
    TodInfo[playerid][posExtra][1] = GetPlayerInterior(playerid);
    TodInfo[playerid][isTod] = true;
    return 1;
    }


    public OnPlayerSpawn(playerid)
    {
    if(TodInfo[playerid][isTod] == true)
    {
    SetPlayerPos(playerid, TodInfo[playerid][pos][0], TodInfo[playerid][pos][1], TodInfo[playerid][pos][2]);
    SetPlayerFacingAngle(playerid, TodInfo[playerid][pos][3]);
    SetPlayerVirtualWorld(playerid, TodInfo[playerid][posExtra][0]);
    SetPlayerInterior(playerid, TodInfo[playerid][posExtra][1]);
    SetPlayerHealth(playerid, 100);
    }
    TodInfo[playerid][isTod] = false;
    return 1;
    }

    Miete mich (nicht) :love: