Script ruft Timer nicht auf

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, ich habe wieder ein problem ...
    Unzwar wenn ich Sterbe (OnPlayerDeath), soll ein Timer aufgerufen werden, der dem Spieler erst nach 30 Sekunden das Spawnen erlaubt.
    Vorher hat es funktioniert, nun geht es aber nicht mehr...


    Code:


    public OnPlayerDeath(playerid, killerid, reason)
    {
    TogglePlayerControllable(playerid,0);
    SetTimer("death",2500,false);
    return 1;
    }



    forward death(playerid);
    public death(playerid)
    {
    TogglePlayerControllable(playerid,0);
    InterpolateCameraPos(playerid, 2454.573486, 482.416442, 26.832387, 3137.125244, 453.426483, 8.098261, 20000);
    InterpolateCameraLookAt(playerid, 2459.530517, 482.120056, 26.249044, 3142.104003, 453.345855, 7.644776, 20000);
    TextDrawShowForPlayer(playerid, Textdraw36);
    TimeM = 0;
    TimeS = 30;
    Time = SetTimer("UpdateTime", 1000, true);
    return 1;
    }


    Auch der Textdraw36, wird nicht angezeigt.

  • Funktioniert zwar, der Timer zählt die 30 Sekunden, jedoch werden alle anderen Befehle nicht ausgeführt. ..


    forward death(playerid);
    public death(playerid)
    {
    InterpolateCameraPos(playerid, 2454.573486, 482.416442, 26.832387, 3137.125244, 453.426483, 8.098261, 20000);
    InterpolateCameraLookAt(playerid, 2459.530517, 482.120056, 26.249044, 3142.104003, 453.345855, 7.644776, 20000);
    TextDrawShowForPlayer(playerid, Textdraw36);
    TimeM = 0;
    TimeS = 30;
    Time = SetTimerEx("UpdateTime",1000,true, "i", playerid);
    TogglePlayerControllable(playerid,0);
    return 1;
    }



    forward UpdateTime(playerid);
    public UpdateTime(playerid)
    {
    new Str[34];
    TimeS --;
    if(TimeM == 0 && TimeS == 0)
    {
    KillTimer(Time);
    SelectTextDraw(playerid, 0xA86115FF);
    TextDrawHideForPlayer(playerid,Textdraw36);
    }
    if(TimeS == -1)
    {
    TimeM--;
    TimeS = 59;
    }

    format(Str, sizeof(Str), "%02d:%02d", TimeM, TimeS);
    TextDrawSetString(Textdraw36, Str);
    return 1;
    }

  • Ich würde generell die Zeitberechnung anders gestalten, das ist doch viel zu kompliziert.
    Schau Dir mal UNIX Timestamps an, damit brauchst Du nicht so kompliziert die Zeit runterzuzählen.


    Wenn Du das damit machst, fällt einiges an Code weg und Du hast es universell programmiert.


    //E: Hier zwei Links, die Dir speziell bei deiner Sache weiterhelfen:
    http://forum.sa-mp.com/showthread.php?t=254915
    Sekunden umrechnen ?