Timer Problem

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 hab wieder ein Timer Problem, hab immer noch nicht ganz geschafft..


    Der Timer läuft immer Vorwärts, er soll aber einen Countdown machen, also rückwärts laufen, was mache ich falsch ?


    new sekunden;
    forward timer();


    SetTimer("timer",1000,true);


    Und hier der Public..


    public timer()
    {
    TextDrawShowForAll(TextdrawWarn0);
    TextDrawShowForAll(TextdrawWarn1);
    TextDrawShowForAll(TextdrawWarn2);
    sekunden--;
    new string[50];
    format(string, sizeof(string), "%i",sekunden);
    TextDrawSetString(TextdrawWarn1,string);
    if(sekunden==0)
    {
    SendClientMessageToAll(ROT,"Test");
    }
    }

  • ich würde 3 Timer machen.


    beispiel:


    1. Timer nr.1 Startet
    1.1 Timer zeigt Textdraw 1
    1.2 Timer nr.1 Startet Timer nr.2
    2. Timer nr.2 Startet
    2.1 Timer zeigt Textdraw 2
    2.2 Timer nr.2 Startet Timer nr.3
    3. Timer nr.3 Startet
    3.1 TImer zeigt Textdraw 3



    oder du machst eine variable und dann immer +1 bis er auf 3 ist und dann wird es auf 0 gesetzt und der timer wird gestoppt.

    Yes you really need tha weed!
    Weed, Weed. I love weed.
    I la love tha weed




  • Wozu ?
    Abfragen benutzen und einen einzigen Timer Verwenden diesen Timer allerdings nicht wiederholen lassen wenn du es in verschiedenen Zeit Abständen hattest sondern in der jenige Abfrage nochmal ausführen lassen.



    //Edit: Hast diese Lösung ja auch dazu geschrieben. Ich würde natürlich deine Zweite nehmen und nicht die erste.

    RFT


  • SetTimerEx("timer",1000,false);


    versuch mal so
    ich versteh sowieso net ganz was du vor hast also es soll ein contdown werden dann passt aber der timer net und das areway muss auf false



    /contdown
    {
    SetTimerEx("timer",1000,false);
    return 1;
    }

  • @Trix
    Was soll das bringen? SetTimerEx ist dazu da um Parameter mit zu übergeben.


    B2T:
    Du deklarierst die Variable "sekunden" ohne dieser einen Wert zuzuweisen, daher hat sie den Wert 0.
    Also müsste dein Countdown ins - laufen.
    Versuch ihr mal einen Wert zuzuweisen und achte darauf, dass du sie global deklarierst..

  • Ein kleines Beispiel, hoffe du kannst was mit anfangen.


    forward Timer();
    new TTimer;
    new Sekunden;
    new TAktiv;


    if (strcmp("/countdown", cmdtext, true, 10) == 0)
    {
    if(TAktiv != 0) { SendClientMessage(playerid, 0xFFFFFF, "Der Timer läuft schon."); return 1; }
    TAktiv++;
    Sekunden = 3
    TTimer = SetTimer("Timer",1000,1);
    return 1;
    }


    public Timer()
    {
    if(Sekunden == 0) { KillTimer(TTimer); TAktiv--; return 1; }
    S[5];
    format(S, sizeof(S), "%d",Sekunden);
    GameTextForPlayer(playerid, ~g~S, 3);
    Sekunden--;
    return 1;
    }


    achtung: natürlich ungetestet hab das nur mal kurz runtergeschrieben können RäächtßßreiPP! fehler rinne sein und es kommt zu errors ^^
    btw. bei wikisamp findest du echt alles ;D einfach mal reinschaun und dir die syntax und bedeutung von funktionen die du brauchen wirst und dich interessieren werden anschaun :)


    Rechtschreibfehler sind lediglich nur special-effects meiner Tastatur :P

  • Stell dich nicht so doof an,es wurde schon mehrfach erwähnt.
    So schwer ist es sowieso nicht, du stellst dich nur sehr sehr ungeschickt an.


    new sekunden;
    new tCountdown; // Wir brauchen eine Variable für den Timer, damit wir ihn später zerstören können!
    forward timer();
    sekunden = 60; // Bevor du SetTimer Aufrufst, die Sekunden setzen!
    tCountdown = SetTimer("timer",1000,true); // Unserer Timer-Variable die Timerid zuweisen


    public timer()
    {
    TextDrawShowForAll(TextdrawWarn0);
    TextDrawShowForAll(TextdrawWarn1);
    TextDrawShowForAll(TextdrawWarn2);
    sekunden--;
    new string[50];
    format(string, sizeof(string), "%i",sekunden);
    TextDrawSetString(TextdrawWarn1,string);
    if(sekunden==0)
    {
    SendClientMessageToAll(ROT,"Test");
    KillTimer(tCountdown); // Bei 0 zerstören wir den Timer, da Zeit abgelaufen
    }
    }


    Und ja,das funktioniert.Wenn nicht,machst du es wieder falsch.

  • OMG.. So hatte ich es gestern gemacht und jetzt weiß ich auch warums nicht ging :D


    Immer wenn mein Server überlastet geht er aus und ich komm nicht mehr rauf, ich dachte er wär wegen dem Timer überlastet das ich irgendwas falsch gemacht hab.. Aber ich hatte den falschen Client installiert anstatt 0.3e 0.3d über soviel Dummheit kann ich mich nur selber ärgern :D :D
    Danke das ich eure Zeit verschwenden dürfte :):love: ...