Wert von bis

  • GM 8
  • Hi,
    Ich hab Variablen für Minimal Damage und Maximal Damage, ich will nun eine Weitere Variable die diese Werte speichert, und einen Zufälligen Wert von Minimal Damage bis Maximal Damage ausgibt.


    Ich habs so versucht:

    GML-Quellcode

    1. global.MinDMG=1;
    2. global.MaxDMG=3;
    3. global.TotalDMG=random(global.MaxDMG)-global.MinDMG;


    TotalDMG soll also nun Zufällig den Wert 1,2 oder 3 ausgeben, leider funktioniert das nicht wirklich.
    Hoffe ihr habt mich einigermaßen verstanden bin grad etwas neben der Spur, freue mich über Hilfe.

    Achja und sollte natürlich auch imemrnoch gehen wenn sich die Werte ändern.
    Imagine taking your usual two century long nap minding your own business when suddenly some cunt wakes you up.
    You tell him to f*ck off of course but just when you finally managed to fall asleep again the same asshole comes knocking again. I'd attack that dick too.
  • Hast du GM 8.1?
    Wenn ja kannst du dafür die Funktion irandom_range(global.MinDMG,global.MaxDMG+1) nehmen :) (das +1 ist dazu da damit die obere Grenze auch mit einbezogen wird)

    In GM 8.0 musst du in deinem code um den random-Teil ein round() setzen damit nur ganze Zahlen raus kommen.

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)
  • Leider nur 8.0 :s

    Also so?:

    GML-Quellcode

    1. global.TotalDMG=round(random(global.MaxDMG)-global.MinDMG);


    Scheint nämlich immernoch nicht richtig zu funktionieren...

    Aber wenn wir jetzt schon dabei sind:
    Wie gebe ich diesen Wert jetzt als string-text aus wenn ich meinen Gegner Angreife, also so das der Wert über dem Gegner kurz erscheint?
    Imagine taking your usual two century long nap minding your own business when suddenly some cunt wakes you up.
    You tell him to f*ck off of course but just when you finally managed to fall asleep again the same asshole comes knocking again. I'd attack that dick too.
  • GML-Quellcode

    1. dmg = min_dmg + floor(random(max_dmg - min_dmg));

    Kann sein das ich das hier grad zu kompliziert mache, sollte aber klappen :P
    Uups, hab gedacht ich hab " - min_dmg" nicht im random einbezogen,
    habs mal gefixt, wie DragonGamer sagte
    :saint:

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von Tice ()

  • Ahh ja, hatte den Fehler in deinem Code vorhin nicht gesehen.

    @Tice
    die Variante ist fast die richtige. Das "max" erfüllt aber keinen Zweck da random nie eine Zahl kleiner als 0 ausgibt, von daher kann man das weg lassen.
    Außerdem wird die obere Grenze nicht mit einbezogen glaube ich (wegem floor() ).

    Versuch mal
    dmg = min_dmg + round(random(max_dmg - min_dmg));

    EDIT: Fehler im Code korigiert!

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)
  • Okay, danke, scheint jetzt zu Funktionieren!

    Jetzt müsste ich nurnoch das hier wissen:
    Wie gebe ich diesen Wert jetzt als string-text aus wenn ich meinen
    Gegner Angreife, also so das der Wert über dem Gegner kurz erscheint?
    Ich weiß wie man eine Text ausgibt nur soweit ich weiß geht dass nur in einem Draw Event(?) aber ich will ja das er es bei collision mit einem anderen objekt Drawt.(also wen nich ihn angreife).
    Imagine taking your usual two century long nap minding your own business when suddenly some cunt wakes you up.
    You tell him to f*ck off of course but just when you finally managed to fall asleep again the same asshole comes knocking again. I'd attack that dick too.
  • Also das müsste man per Objekte lösen glaube ich. Bei kolision wird per instance_create() eine Instanz eines Objektes erstellt. Die instance_create Funktion gibt dabei dessen Index zurück. Also kannst du machen ind = instance_create(...
    ind.dmgstr = string(global.TotalDMG);

    Im draw event dieses Objektes wird dann einfach die y-koordinate verkleinert damit sich der text nach oben bewegt und dann an den x,y koordinaten der string in dmgstr mittles draw_text gedrawt.

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)
  • Zum Runden von Zufallszahlen sollte man aber nie round sondern immer floor verwenden: pierce.wavethunder.com/Pages/week14/RoundVsFloor.html
    Ich kann kaum noch zählen wie oft wir das hier schon hatten ;)

    Also lieber

    GML-Quellcode

    1. global.TotalDMG = global.MinDMG+floor(random(global.MaxDMG+1-global.MinDMG));
  • Hi,
    ich hab jetzt noch eine Frage dazu.

    Wenn ich die Formel von BlackSpark benutze und z.B.

    global.MinDMG=global.MinDMG*1.5;
    global.MaxDMG=global.MaxDMG*1.5;

    mache, also mal 1,5 mal nehme, dann rundet er irgentwie nur den MaxDMG und nicht den MinDMG, beim MaxDMG funktioniert alles und er gibt glatte Zahlen aus, bei MinDMG aber so komische Zahlen wie 5050 für 5.5.

    Wie kann man das beheben, so dass er auch den MinDMG Wert rundet?
    Imagine taking your usual two century long nap minding your own business when suddenly some cunt wakes you up.
    You tell him to f*ck off of course but just when you finally managed to fall asleep again the same asshole comes knocking again. I'd attack that dick too.
  • Also in deiner ursprünglichen Frage bist du ja offenbar davon ausgegangen, dass MinDMG und MaxDMG ganze Zahlen sind, worauf dann auch die Antworten ausgelegt waren. Wenn du die jetzt mit 1.5 multiplizierst, sind das natürlich nicht mehr unbedingt ganze Zahlen. Die Frage ist nun, was genau du in diesem Fall für zufällige Zahlen erhalten willst? Gib am besten mal ein Beispiel wie in deinem ersten Post. Dein eigentliches Problem habe ich nämlich nicht so ganz verstanden.

    EDIT: Oder meinst du einfach

    GML-Quellcode

    1. global.MinDMG = round(global.MinDMG*1.5);
    2. global.MaxDMG = round(global.MaxDMG*1.5);
  • Ja, also es sollen immernoch ganze Zahlen sein, ich will lediglich den Wert, wenn ein bestimmtes Ereignis auftrifft, um 150% erhöhen deswegen *1.5.
    Mir ist klar wenn ich jetzt z.B. 5*1.5 rechne da 7.5 rauskommt. Ich will aber nur mit ganzen Zahlen arbeiten deswegen soll er den Wert auf 8 aufrunden.
    Imagine taking your usual two century long nap minding your own business when suddenly some cunt wakes you up.
    You tell him to f*ck off of course but just when you finally managed to fall asleep again the same asshole comes knocking again. I'd attack that dick too.
  • Ja, Danke es funktioniert!
    Imagine taking your usual two century long nap minding your own business when suddenly some cunt wakes you up.
    You tell him to f*ck off of course but just when you finally managed to fall asleep again the same asshole comes knocking again. I'd attack that dick too.