Create3DTextLabel Timer?

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 Freunde ich habe eine kleine Farm gescriptet und neben dem 1. Feld soll ein 3DTextLabel sein ungefähr so:


    Create3DTextLabel("Feld 1 braucht noch [HIER HILFE] Sekunden", farbe,x,y,z);



    Was muss ich machen das dort der Timer erscheint den ich schon im Script angegeben habe.
    ( SetTimer("farming",5000,false); )


    Ich hoffe man versteht meine Frage :D

    - heftig abhängig von Karli Kugelblitz Choco Drinks

  • Es ist doch eine "globale" Farm, also für jeden, richtig?
    Demnach müsstest du es nicht als Player Variablen machen, sondern nur


    new Variable,
    FarmTimer;


    FarmTimer=SetTimer("FarmZeit",1000,1);
    Variable=5;


    forward FarmZeit();
    public FarmZeit()
    {
    if(Variable==0)
    {
    KillTimer(FarmTimer);
    Variable=0;
    }
    Variable--;
    new string[85];
    format(string,sizeof(string),"Feld 1 braucht noch %d Sekunden",Variable);
    Create3DTextLabel(string, farbe,x,y,z);
    }

  • Es ist ein Farm für die Fraktion Farmer :D


    //EDIT:



    error 010: invalid function or declaration
    error 029: invalid expression, assumed zero

    2 Errors."


    //EDIT2:


    Kann mir bitte noch einer Helfen ich brauch das wirklich dringend aber ich kann das noch nicht so gut.

    - heftig abhängig von Karli Kugelblitz Choco Drinks

    3 Mal editiert, zuletzt von Pride ()

  • @Rawr: Dein Code erstellt mehrere Labels aufeinander, die alten werden nicht gelöscht. :)


    Advertising has us chasing cars and clothes, working jobs we hate so we can buy shit we don’t need.
    – Tyler Durden


    Sobald Werbung im Spiel ist, bist du, die Nutzerin, der Nutzer, das Produkt.


  • @Rawr: Dein Code erstellt mehrere Labels aufeinander, die alten werden nicht gelöscht. :)


    Habs schnell geschrieben.
    Teil dem Label eine Variable zu, destroy das label und create dann ein neues bzw. das selbe :)

  • new Variable,
    FarmTimer,
    Text3D:FarmLabel;



    FarmTimer=SetTimer("FarmZeit",1000,1);
    Variable=5;


    forward FarmZeit();
    public FarmZeit()
    {
    Delete3DTextLabel(FarmLabel);
    if(Variable==0)
    {
    KillTimer(FarmTimer);
    Variable=0;
    FarmLabel=Create3DTextLabel("Feld 1 ist fertig", farbe,x,y,z);
    }
    Variable--;
    new string[85];
    format(string,sizeof(string),"Feld 1 braucht noch %d Sekunden",Variable);
    FarmLabel=Create3DTextLabel(string, farbe,x,y,z);
    }

  • @Rawr: Sehr gut, und nun noch Update3DTextLabelText verwenden statt löschen/erstellen/löschen/erstellen/../.. sowie ein else nach oder return in deiner if(Variable==0) Abfrage, sonst läuft er weiter runter da der Code da unter trotzdem noch einmal ausgeführt wird, und dann steht im Label -1. :)


    Advertising has us chasing cars and clothes, working jobs we hate so we can buy shit we don’t need.
    – Tyler Durden


    Sobald Werbung im Spiel ist, bist du, die Nutzerin, der Nutzer, das Produkt.


  • @Rawr: Sehr gut, und nun noch Update3DTextLabelText verwenden statt löschen/erstellen/löschen/erstellen/../.. sowie ein else nach oder return in deiner if(Variable==0) Abfrage. :)

    Ah stimmt, es geht ja immer einfahcer :D
    Bin etwas müde, naja wie bereits per PN gesagt, ich helf dir morgen.


    Kurze Erklärung
    Du erstellst unter OnGameModeInit das Label
    Dann startest du bei deinem Code den Timer und setzt die Variable auf bspw. 5, nach 5 Sekunden ist es wieder startklar bzw. fertig
    edit dank Pablo :)
    new Variable,
    FarmTimer,
    Text3D:FarmLabel;



    FarmTimer=SetTimer("FarmZeit",1000,1);
    FarmLabel=Create3DTextLabel("Farm 1 ist startklar", farbe,x,y,z);
    Variable=5;



    forward FarmZeit();
    public FarmZeit()
    {
    if(Variable==0)
    {
    KillTimer(FarmTimer);
    Variable=0;
    Update3DTextLabelText(FarmLabel, 0xFFFFFFFF, "Feld 1 ist fertig");
    }
    else
    {
    Variable--;
    new string[85];
    format(string,sizeof(string),"Feld 1 braucht noch %d Sekunden",Variable);
    Update3DTextLabelText(FarmLabel, 0xFFFFFFFF, string);
    }
    }

  • Ich habe immer was zu nörgeln:
    if(Variable==0)
    {
    Variable=0;
    }
    ?
    Ich würde das ein wenig anders lösen, da der Timer obwohl das Feld fertig ist weiter laufen würde, was gar nicht notwendig ist:
    new Variable,
    FarmTimer,
    Text3D:FarmLabel;


    FarmTimer=SetTimer("FarmZeit",1000,false);
    FarmLabel=Create3DTextLabel("Farm 1 ist startklar", farbe,x,y,z);
    Variable=5;


    forward FarmZeit();
    public FarmZeit()
    {
    if(Variable==0)
    {
    Update3DTextLabelText(FarmLabel, 0xFFFFFFFF, "Feld 1 ist fertig");
    return true;
    }
    Variable--;
    new string[31];
    FarmTimer=SetTimer("FarmZeit",1000,false);
    format(string,sizeof(string),"Feld 1 braucht noch %d Sekunden",Variable);
    Update3DTextLabelText(FarmLabel, 0xFFFFFFFF, string);
    return true;
    }


    Advertising has us chasing cars and clothes, working jobs we hate so we can buy shit we don’t need.
    – Tyler Durden


    Sobald Werbung im Spiel ist, bist du, die Nutzerin, der Nutzer, das Produkt.