SetTimerEx, kann mir das einer erklären?

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 weis wie ein SetTimer funktioniert. Jetzt möchte ich je doch zu einem Timer noch zusätzlich Parameter mitliefern, also zb jetz in meinem Fall die Playerid eines Spielers. Dazu soll ja SetTimerEx gut sein. Aber obwohl ich wiki gelesen habe kappier ich die funktion nicht.


    Da steht ja dies: SetTimerEx(funcname[], interval, repeating, const format[], {Float,_}:...)


    funcname weis ich (is ja die public funktion zu der der timer weiterleitet)
    interval is auch klar
    repeating check ich auch
    const format Was ist das?
    Float ich weis das float ne kommazahl is aber weis nich was es in diesem Fall bedeutet.


    So, wo kann ich hier parameter mitliefern, und wie kann ich es der Publicfunktion die ID wieder deutlich machen?
    Danke für bemühungen.


    EDIT: hab euch nochmal das geliefert was ich scripten will.



    public OnPlayerDeath(playerid,killerid,reason)


    //wenn playerid von killerid gekillt wird, soll playerid den killerid für 5 sekunden beobachten und dannach respawnen.
    TogglePlayerSpectate(1);
    PlayerSpetatePlayer(playerid,killerid);
    // Hier soll jetzt noch ein timer mit 5 sekunden hin, der dn parameter Playerid enthält und soll weiterleiten zu PlayerRespawn. Wie geht das mit SetTimerEx?


    public PlayerRespawn(//hier will ich jetzt die Playerid haben von dem SetTimerEx//)
    {
    TogglePlayerSpectate(playerid,0);
    }

    Einmal editiert, zuletzt von Oneill89 ()

  • const format[], {Float,_}:...


    "format" ist der String in dem die Typen der nachfolgenden Parameter angegeben werden:
    Bspw. kann dieser Teil so aussehen "iif" => Übergibt die nachfolgenden zwei Integer und einen Floatwert.


    Das {Float,_}:... gibt an dass es 1. eine unbestimmte Anzahl an Parametern gibt und 2. die Tags der Werte (fast) alles umfassen können. Von Floats über Hex-Codes bis zu Strings und natürlich normalen Integern.


    Ein Beispiel zur Benutzung könnte so aussehen:
    forward ReturnOldPos(playerid, Float:o_x, Float:o_y, Float:o_z);


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if(!strcmp(cmdtext,"/pos")) {
    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid, x, y, z);
    SetTimerEx("ReturnOldPos", 10000, false, "ifff", playerid, x, y, z);
    return 1;
    }
    return 0;
    }


    public ReturnOldPos(playerid, Float:o_x, Float:o_y, Float:o_z)
    {
    printf("%d %f %f %f", playerid, o_x, o_y, o_z);
    return 1;
    }