Mit PAWN einen Prozentwert ermitteln

In 10 Minuten startet der nächtliche Backupvorgang! Es kann währenddessen (ca. 10 Minuten) zu Einschränkungen bei der Nutzung des Forums kommen
Weitere Infos findet ihr im Thema Backup des Forums
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
  • Huhu,


    wie oben steht, will ich gerne mit PAWN einen Prozentwert ermitteln, um diesen dann in 10er-Schritten auszugeben.
    Sagen wir der Tankinhalt eines Fahrzeuges beträgt 64/100L. Dann sollen (sagen wir mal) 6 von 10 "I-Textdraws" grün, die anderen 4 Rot sein.
    So weit bin ich nun schon:
    ~g~I I I I I I~r~ I I I I ~w~(10/600L)


    Bitte um Hilfe :)



    lg
    Deagle

  • Ach gott. Jefrry schreib mir mal bitte, wann bei einer Rechnung von (inhalt / gesamt) es jemals mehr als 1 wird? Lassen wir doch einfach den Tank überfüllen und irgendwie im "void" den Tank aufbewahren, oder? Das du danach noch um weitere 10 dividierst, frag ich gar nicht nach.


    @Topic:
    Am lustigsten wäre es, wenn man eine Schleife nützt :P



    #define MAX_TANK_INFO_STEPS 10
    #define MAX_TANK_INFO_INPUT_LENGTH 2 // Weil "I" und " "
    new tankInfo[6*MAX_TANK_INFO_STEPS*MAX_TANK_INFO_INPUT_LENGTH+1], // 6 Plätze für ~g~ und ~r~. (+1 für NULL)
    Float:derzeitiger_tank = 10.0, // Hier bitte die Funktion/Variable für den derzeitigen Tank
    Float:maximaler_tank = 50.0, // Hier bitte die Funktion/Variable für den maximalen Tank
    // Die Berechnung unterbei bitte lassen.
    calculated = floatround(floatmul(floatdiv(derzeitiger_tank, maximaler_tank), MAX_TANK_INFO_STEPS), floatround_floor),
    bool:limitReached = false; // Ab wann die Anzeige rot wird.
    format(tankInfo,sizeof(tankInfo),"~g~"); // Fange mit den Grünen Punkten an
    for(new step = 0; step != MAX_TANK_INFO_STEPS; step++) { // Zähle bis zu den maximalen Schritten
    if(!limitReached && step >= calculated) { strcat(tankInfo,"~r~"); limitReached = true; } // Ab der Grenze auf Rot umstellen
    strcat(tankInfo,"I "); // Zeichne die "I" Punkte mit Abstand danach " "
    }


    //EDIT: MAX_TANK_INFO_INPUT_LENGTH hinzugegfügt, weil ein Abstand danach kommt. Sry

    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!

    Einmal editiert, zuletzt von Templer ()

  • Ach gott. Jefrry schreib mir mal bitte, wann bei einer Rechnung von (inhalt / gesamt) es jemals mehr als 1 wird?


    inhalt/(gesamt/10)
    Beispiel:
    Inhalt ist 95 gesamt ist 100.


    95/(100/10) = 95/10 = 9 (da Integer)



    Simple Mathematik.
    Wo ist dein Problem? Ich sehe keins.


    Dein Code ist zwar "lustig", aber wirklich ressourcenschonend ist er nicht.

  • Ok, hab von der Entfernung deine Klammern nicht gesehen, Sry :P Ich hasse diese Schreibweise, um unnötig einen Doppelbruch zu schreiben. Da liebe ich die normale Schreibweise mit nur einem Bruch.


    Ja stimmt, meine benötigt unnötig viele Berechnungen.


    Lg

    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!

  • Kein Ding. ;)

    Ich hasse diese Schreibweise, um unnötig einen Doppelbruch zu schreiben. Da liebe ich die normale Schreibweise mit nur einem Bruch.


    Wenn man auf den Doppelbruch verzichten will kann man es so machen:
    switch( (inhalt*10) / gesamt )
    Die Klammer dient hierbei nur zur Übersichtlichkeit. Wobei ich das nicht gerne mache, denn wenn man mit großen Werten arbeitet (im 3 stelligen Millionenbereich, geht das auf Grund des 32 Bit Limits nicht mehr, bei dem Tank ist es natürlich irrelevant).

  • Übersichtlichkeit, herrliches Wort. Sorry für den Spam, aber das konnt ich mir nicht verkneifen, nachdem hier ja eh alles beantwortet ist ^^


    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'

  • Was dir lieber ist, und vor allem das was du verstehst, bzw am ehesten verstehen könntest.


    Die Variante von mir ist auf jeden Fall ressourcenschonender, falls du darauf Wert legst.



    Edit:
    LeijaT: Ja. Das wird in letzter Zeit hier leider von immer mehr Usern vergessen oder ignoriert, dass ein Code auch übersichtlich und leserlich sein sollte. :|

    3HZXdYd.png

    2 Mal editiert, zuletzt von Jeffry ()