Vehicle Health in %

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 möchte in einem Textdraw die VehicleHealth in Prozent ausgeben doch egal wieviel schaden es hat die anzeige seht imme rauf 111% auser das auto explodiert dan isses 0
    was ist mein fehler?


    das ist was der timer macht



    new Float:X;
    GetVehicleHealth(GetPlayerVehicleID(playerid),X);
    format(string2,sizeof(string2),"%d",X/1000*100);
    TextDrawSetString(Health, string2);

  • new Float:X;
    GetVehicleHealth(GetPlayerVehicleID(playerid),X);
    format(string2,sizeof(string2),"%f",X/1000*100);
    TextDrawSetString(Health, string2);
    d ist nur für ganze zahlen, nachzulesen hier: http://wiki.sa-mp.com/wiki/Fast_Commands
    wenns dann nicht geht würde ich das hier machen:
    new Float:X;
    GetVehicleHealth(GetPlayerVehicleID(playerid),X);
    X = X/1000*100;
    format(string2,sizeof(string2),"%f",X);
    TextDrawSetString(Health, string2);

  • in manchen fällen kommen doch da bestimmt komma zahlen raus wie kann ich die nackommastelle entfernen bzw. Aufrunden?

  • den string kleiner machen geht auch. wäre die eifnachste methode. zb die nachricht: Vehicle: 100% ist der string 13 zeichen lang (mit leertaste) versuch das mal
    //edit grad bemerkt das geht garnicht sry
    //edit 2 wenn du nur die zal als string machst ging das doch
    wenn du eine stelle hinter dem komma haben möchtest machst du den string 4 zeichen lang. der nachteil wenn das health unter 100% kommt hast du halt 2 stellen nach dem komma^^

    hunt.png

    Einmal editiert, zuletzt von Fischer ()

  • Fischer deins ist aber falsch.
    Ein Fahrzeug brennt schon bei 250Health also musst du
    format(string2,sizeof(string2),"%d",X/750*100);

    Why do programmers always mix up Halloween and Christmas?
    Oct 31 == Dec 25

  • MVP du liegst auch falch denn du hast punktrechnung vor strichrehnung vergessen^^


    X =(X-250)/750*100;


    jetzt habe ich nur noch das problem mit dieser fuckin kommastelle

  • Die Formatierung %f gibt die ganze Zahl mit bis zu 5 Kommastellen glaube ich, ändern kannst du es indem du folgendes nützt...


    %0.f ... gibt eine Kommastelle von Zahl an
    %1.f ... gibt zwei Kommastellen von Zahl an
    %2.f ... gibt drei Kommastellen von Zahl an


    usw.. ^^

    Mfg Templer


    >>Dein Breadfish-Thema im Unterforum ScriptingBase / Scriptingwünsche wurde nicht richtig beantworter?<<
    >>Es handelt sich um ein Programmier Problem und du nicht einfach weiter kommst wo der Fehler sein könnte?<<
    Dann melde dich bei mir über die PN-Funktion indem du den Link zu deinem Breadfish-Themen Problem schickst.
    Voraussetzung:
    Thema älter als 1 Tag und im Breadfish Forum gespostet!

  • Hi


    Also erstmal heißt es %.1f oda halt ne andere zahl. Dann braucht man %d und nicht %f. Das müsste man dann mit Floatround machen.


    Die rechnung von chilly sollte gehen, es geht aber auch mit der:


    new Float:Schaden= (carhp < 250.0) ? 100.0 : ((100.0 - (carhp / 10.0)) * (4.0 / 3.0));


    Das ist eine sogenannte Skala, halt von 0 bis 100. Dann würde man es so anwenden:


    format(string2,sizeof(string2),"%d",floatround(Schaden));


    MFG, Robdeflop®

  • Habe auch sone Statusanzeige fürs Auto und bei mir kommt immer so eine lange Zahl raus hier ist was der Timer macht
    new Float:h ,string[32];
    GetVehicleHealth(GetPlayerVehicleID(playerid),h);
    format(string,sizeof(string),"Status: %d", h);
    TextDrawSetString(Textdraw0, string);
    Pixel

  • Hi


    Hier wird dir aber nur eine zahl zwichen 250 und 1000 angezeigt
    Die große zahl kommt zustande, da du dass nicht rundest. Bei dir werden dann die nachkommastellen ohne das komma mit angegeben. Also musst du´s mit floatround die zahl runden^^


    MFG, Robdeflop®