Fahrzeug zustand wird falsch angezeigt.

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
  • Nunja, der Schaden u.ä. Elemente, sowie das Tempo,
    was Du möglicherweise auch integriert hast, sollte
    natürlich sekündlich aktualisiert werden.


    Dann wird auch Deine Schadensanzeige sekündlich generiert.


    Und bei Schaden dürfte eigentlich nicht 100% stehen.


    Hast Du etwas verändert? 8|

  • 4#Future Er zeigt den Zustand an und nicht den Schaden. Der Schaden ist indirekt proportional zum Zustand und deshalb ist es auch ziemlich egal welche von den beiden man anzeigt.


    Acrio Falls du eine Geschwindigkeitsanzeige hast, dann aktualisiere dort am besten alle deine Fahrzeugdaten, die du anzeigen willst (Geschwindigkeit, Fahrzeugzustand, Tank, ...).

    Einmal editiert, zuletzt von wife-beater ()

  • Ich verstehe nicht, warum Du es so kompliziert machen möchtest?


    Wenn die Anzeige sekündlich, minütig o.ä. aktualisiert wird,
    musst Du keine Funktion schreiben, die einen möglichen Crash
    berechnet.


    Leg eine sekündliche oder minütige Funktion fest, die Dir die
    Werte einfach aktualisieren. Das wäre das beste und einfachste.


    Von allem anderen rate ich Dir ab. :thumbdown:

  • Ok. Es klappt jetzt. Aber jetzt habe ich das Problem das die Farben nicht angezeigt werden. Alles ist Grün außer bei 0%


    if(H >= 75.0) {TextDrawColor(ZustandAnzeige, COLOR_GREEN);}
    else if(H <= 74.9 && H >= 25.0) {TextDrawColor(ZustandAnzeige, COLOR_GELB);}
    else if(H <= 24.9){TextDrawColor(ZustandAnzeige, COLOR_ROT);}

  • Anstatt Dein Problem mit TextDrawColor zu lösen, würde ich es
    vor der Funktion TextDrawSetString() selbst lösen.


    if(vHealth >= 750) format(string, sizeof(string), "~g~%.0f", ((1000 - vHealth) / 10));
    else if(vHealth < 750 && vHealth >= 450) format(string, sizeof(string), "~y~%.0f", ((1000 - vHealth) / 10));
    else format(string, sizeof(string), "~r~%.0f", ((1000 - vHealth) / 10));


    TextDrawSetString(ZustandAnzeige, string);

  • Die Funktion KillTimer() musst Du hier nicht anwenden.


    Warum?


    Beim Aktivieren des Timers mit SetTimer() legst Du bei
    dem Parameter repeat false fest, d.h. Dein Timer wird
    nur einmal ausgeführt.


    Somit ist diese Funktion völlig überflüssig :rolleyes:

  • Entschuldigung!


    Ich war gerade im falschen Thema.


    Nein, Deine Funktion, die sekündlich ausgeführt wird,
    muss nicht mit einem Timer beendet werden.


    Füge Deine Sachen einfach in eine Funktion ein, die
    SOWIESO schon sekündlich ausgeführt wird.


    Das wäre das einfachste!

  • So?
    Function Aktualisieren(playerid)
    {
    new car = GetPlayerVehicleID(playerid),
    Float:H,
    str[32];
    GetVehicleHealth(car, H);
    format(str, sizeof(str), "%.0f %%", (H / 10));


    if(H >= 75.0) {TextDrawColor(ZustandAnzeige, COLOR_GREEN);}
    else if(H <= 74.9 && H >= 25.0) {TextDrawColor(ZustandAnzeige, COLOR_GELB);}
    else if(H <= 24.9){TextDrawColor(ZustandAnzeige, COLOR_ROT);}
    TextDrawShowForPlayer(playerid, ZustandAnzeige);
    TextDrawSetString(ZustandAnzeige, str);
    return 1;
    }
    Das lasse ich mit einem Timer jede Sekunde aufrufen. Wie beende ich es denn wieder? Sobald man aus dem Vehicle steigt erscheint immer 0%, da der Zustand ja geupdated wird.

  • Sry wenn das jetzt Pingelig rüberkommt aber dabei sind mir die Farben nicht stark genug. Die sind so dunkel. Und was ist den bei dieser Abfrage falsch das die Farben nicht so wollen wie ich?


    if(H >= 75.0) {TextDrawColor(ZustandAnzeige, COLOR_GREEN);}
    else if(H <= 74.9 && H >= 25.0) {TextDrawColor(ZustandAnzeige, COLOR_GELB);}
    else if(H <= 24.9){TextDrawColor(ZustandAnzeige, COLOR_ROT);}