Ladebalken langsam erhöhen

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
  • Abend,
    ich stehe gerade vor nem kleinem Denkfehler. Ich möchte, dass sich mein Ladebalken langsam um ein zufällig großes Stück erhöht, nur ich komme da im Moment nicht weiter.
    Mehrere Timer dafür zu erstellen wäre schwachsinnig und mit einer Schleife erhöht sich der Balken viel zu schnell.


    So sieht es im Moment aus:


    CMD:load(playerid){
    SetTimerEx("T", 1000, true, "%d", playerid);
    return 1;
    }


    forward T(playerid);
    public T(playerid){
    new t=random(5);
    setper(playerid, t);
    return 1;
    }


    setper(playerid, per){
    TextDrawTextSize(Textdraw1, 245.099914+(226.794708/100*per), 0.000000);
    TextDrawShowForPlayer(playerid, Textdraw1);
    }



    Hätte da vielleicht jemand eine Idee oder nen Denkanstoß ?


    Ps: Der Code ist erstmal nur zu Testzwecken so dahingeklatscht.

  • Du musst den alten "per" bzw. "t" Wert wieder mitgeben. Dazu muss der Timer neu gestartet werden.
    Alternativ könnte man es auch über eine Variable machen.


    Außerdem ist es im Timer nur "d", nicht "%d". ;)


    CMD:load(playerid){
    SetTimerEx("T", 1000, false, "dd", playerid, 0);
    return 1;
    }


    forward T(playerid, t);
    public T(playerid, t){
    t+=random(5);
    setper(playerid, t);
    SetTimerEx("T", 1000, false, "dd", playerid, t);
    return 1;
    }


    setper(playerid, per){
    TextDrawTextSize(Textdraw1, 245.099914+(226.794708/100*per), 0.000000);
    TextDrawShowForPlayer(playerid, Textdraw1);
    }

  • Jeffry:
    Danke dir, es klappt nun. Ja das % - Zeichen war ein kleiner Flüchtigkeitsfehler.
    Ich habe noch eine kurze Frage. Ich habe eine Abfrage reingeschrieben, dass der Timer so oft aufgerufen wird solange die Prozentanzeige kleiner-gleich 100 ist.
    Nur kommt es auch vor, dass die Anzeige bei z.B. 99 % ist und um ne Randomzahl erhöht wird, so dass dann 104% o.ä angezeigt wird.
    Kann man das irgendwie verhindern ?


    Zitat

    [20:59:07] Percent : 92 %
    [20:59:07] Percent : 96 %
    [20:59:07] Percent : 98 %
    [20:59:08] Percent : 98 %
    [20:59:08] Percent : 99 %
    [20:59:08] Percent : 101 %

    public T(playerid,t){
    new s = random(sizeof(RandomTimer));
    t+=random(5);
    setper(playerid, t);
    printf("Percent : %d %", t);
    if(t<=100) SetTimerEx("T", 100*random(8), false, "dd", playerid, t);
    return 1;
    }

  • Das hatte ich auch so aber, dann fing ne Endlosschleifen an. Habe aber den Fehler gerade bemerkt.
    if(t<=100) SetTimerEx("T", 100*random(8), false, "dd", playerid, t);
    zu
    if(t<100) SetTimerEx("T", 100*random(8), false, "dd", playerid, t);
    Denn sonst macht er bei 100% immer weiter und weiter.
    Danke für die Hilfe. :)