Brauche Denkanstoß bei Zustandsanzeige eines Fahrzeuges

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
  • Hi, ich habe 21 Textdraws für die Zustandsanzeige.
    1 mit dem Text

    Code
    Zustand:


    und 20 mit jeweils einem

    Code
    /


    Ich möchte nun das bei jedem Zustandsverlust ein Balken weniger gezeigt wird.
    Ich kam zu dem Entschluss das bei 20 Balken verteilt auf 1000 Health Punkte jeder Balken 50 haben muss.
    Da dachte ich, erstelle die Textdraws in einer For-Schleife.
    for(new i = 0; i < row; i++)
    TextDrawShowForPlayer(playerid, Zustand[i]);
    Hier steht i für das jeweilige TextDraw und row habe ich beim switchen durch das health gesetzt.
    switch(vHealth)
    {
    case 0..50: {row = 1;}
    case 51..100: {row = 2;}
    case 101..150: {row = 3;}
    case 151..200: {row = 4;}
    case 201..250: {row = 5;}
    case 251..300: {row = 6;}
    case 301..350: {row = 7;}
    case 351..400: {row = 8;}
    case 401..450: {row = 9;}
    case 451..500: {row = 10;}
    case 501..550: {row = 11;}
    case 551..600: {row = 12;}
    case 601..650: {row = 13;}
    case 651..700: {row = 14;}
    case 701..750: {row = 15;}
    case 751..800: {row = 16;}
    case 801..850: {row = 17;}
    case 851..900: {row = 18;}
    case 901..950: {row = 19;}
    case 951..999: {row = 20;}
    case 1000: {row = 21;}
    }
    So das bei z.B. 901-950 HP 19 Textdraws gezeigt werden. Sprich, den Text: Zustand: und 18 Balken.
    Habe alle erstellt, ausgelesen und auf gerundet.
    new Float:vHealth,
    row;
    GetVehicleHealth(vehicleID, vHealth);
    floatround(vHealth);
    Habe weder Fehler noch sonst irgendetwas, doch mir wird nichts angezeigt. Ich brauche nur nen Tipp damit ich die Zustandsanzeige sehen kann ^^


    Wäre sehr dankbar. MFG Acrio

  • floatround(vHealth);
    zu:
    new intHealth = floatround(vHealth);



    switch(vHealth)
    zu:
    switch(intHealth)


    Außerdem solltest du bei jedem Update der Anzeige die nicht benötigten Abschnitte verstecken.


    for(new i = row; i < 21; i++) TextDrawHideForPlayer(playerid, Zustand[i]);
    (Nach der TextDrawShowForPlayer Schleife)

  • Machs dir nicht so umständlich, nimm's leicht - nimm Mathematik!


    new Float:carHealth;
    GetVehicleHealth(vehicleid, carHealth);
    new cHealth = floatround(carHealth / 50, floatround_floor);
    new cString[20];
    while (cHealth) {
    format(cString, sizeof(cString), "%s/", cString);
    cHealth --;
    }


    Sollte als Denkanstoß reichen. Viel Spaß beim Weitertüfteln ;)


    // Achja, dazu sagen sollte man vielleicht, dass du so nur einen Textdraw benutzt für die Striche und nicht für jeden Strich einen *hust*


    Mein CS:GO Server: 62.75.168.39:27016


    Ich bin so hungrig, dass ich vor lauter Durst nicht weiß, was ich rauchen soll - so müde bin ich!
    Freedom is just another word for 'Nothing left to lose'