Menü - Variablen

  • Menü - Variablen

    Kann man eigentlich irgendwie über ein Optionen-Menü die für ein Objekt gegebenen Variablen voreinstellen?

    Geht um folgendes:
    Ich will über das Menü "Optionen" voreinstellen können, ob der Spieler erfahrener ist, dann wird die Ball-Geschwindigkeit höher gestellt, als bei einem Anfänger.
    Ebenso möchte ich da auch einstellen können, ob die Hintergrund-Musik überhaupt abläuft oder nicht.

    Hab bereits versucht eine Variable für speed zu erstellen, funktioniert aber dann nur einmal und nicht in unterschiedlichen Levels. "global.speed" konnte auch nicht gesetzt werden, da hat GM sofort gemeckert...

    Die Menü-Hilfe hab ich von oben bis unten durchsucht, aber die Funktionen dort helfen mir da irgendwie nicht weiter.
    Keine Ahnung, was ich hier tue, aber ich mach´s einfach mal!
  • RE: Menü - Variablen

    Bastel dir doch einfach ein unsichtbares, persistentes Controllerobjekt, das viele selbstdefinierte Variablen enthält. zB:
    Create Event:

    GML-Quellcode

    1. player_speed=5;
    2. player_max_ammo=40;
    3. player_max_health=100;

    Ein Optionsmenü ändert diese Variablen dann zB. mit:

    GML-Quellcode

    1. variablen_controller.player_speed=7;

    und ein Spieler oder Gegner oder sonst was, fragt einfach im Create Event die Variablen des Controllerobjekts ab:

    GML-Quellcode

    1. max_speed=variablen_controller.player_speed;
    2. ammo=variablen_controller.player_max_ammo;

    Das ist natürlich nur eine von vielen Möglichkeiten und funktioniert auch noch nicht, wenn man während dem Spielen die Optionen ändern will, da das Create-Event dann schon ausgeführt wurde. Da muss man dann halt direkt die Variablen des Objektes ändern.
    Einige meiner Spiele:
  • RE: Menü - Variablen

    Genau um das geht es mir!

    Ich hab bereits einen Controller erstellt, der ab dem spielstart mitläuft.
    Wenn ich z.B. dem Text "Beginner" bei Mausklick die Variable "player_speed=5" vorgebe und will die dann grundsätzlich in das Create Event des Balls einsetzen dann kommt eine Fehlermeldung:
    "Unknown Variable ball_speed"

    Im Menü Optionen wurde durch klick auf "Beginner" einfach eine Variable "ball_speed=4" erstellt und diese im Create-Event des Balls eingesetzt:

    "Set speed to ball_speed and direction to 70+random(40)"

    Sobald er Ball jetzt starten soll kommt die Fehlermeldung.
    Keine Ahnung, was ich hier tue, aber ich mach´s einfach mal!
  • ball_speed wird definitiv vor dem Part "set speed to ball_speed..." ausgeführt.
    Im Start-Menü des Spiels wird der Parameter gesetzt und dann in den Raum gegangen. Hab´s auch schon mit "global.ball_speed" probiert, klappt aber auch nicht...
    Keine Ahnung, was ich hier tue, aber ich mach´s einfach mal!
  • Manchmal bin ich einfach nur blind! :headtouch:
    (oder doch zu doof, mit GM was fertig zu bekommen)

    das "global" hat gefehlt, jetzt nimmt er die Geschwindigkeiten an.

    Jetzt versuch ich mal noch Variablen für Background-Musik an und aus zu finden...
    Keine Ahnung, was ich hier tue, aber ich mach´s einfach mal!
  • Variablen sucht man nciht, dei erstellt man ;)
    setzt einfahc an der stelle wo man Musik ein bzw. aus stellt ne variable (zb. global.musik=1 bzw. 0)
    und dort wo sie abgespielt werden soll musste dann einfach nur ne abfrage vorher machen ob global.musik=1 ist...
  • Jetzt hab ich folgendes Problem erreicht:

    Um eine Grund-Geschwindigkeit herzustellen gebe ich beim Game-Start eine "global.ball_speed" von 4 vor. Man kann jetzt das Spiel starten oder
    im Menü Optionen kann man die Variable "global.ball_speed" auf 4 oder 7 oder 10 setzen.

    im Create-Event des Balls:
    if number of objects ball_normal is equal to 1
    set Alarm 0 to 40
    ELSE
    Set speed to global.ball_speed and direction to 70+random(40)

    im Alarm0 Event:
    Set speed to global.ball_speed and direction to 70+random(40)

    im Step-Event
    If expression global.ball_speed < 14 is true
    set variable global.ball_speed to global.ball_speed+0.001


    Jetzt wird aber der Ball während dem Spiel nicht schneller, er bleibt immer bei der Geschwindigkeit, die er beim erstellen hatte.
    Wird der Ball aber neu erstellt nimmt er die inzwischen erreichte Geschwindigkeit an und rast los.

    Ich brauche das aber genau anders herum: er soll immer beim erstellen auf die global.ball_speed - Geschwindigkeit vom Anfang zurückgesetzt werden und IM Spiel immer schneller werden.

    Kann mir jemand helfen?
    Keine Ahnung, was ich hier tue, aber ich mach´s einfach mal!
  • Step event falsch zusammengebastelt, setze dies hier ein

    If expression speed < 14 is true
    set variable speed to speed+0.001

    Wenn du im Step an global rumfummelst verstellst du die Voreinstellung aber nicht die Geschwindigkeit dieses aktuellen Balles.
    "Die Erde ist ein Irrenhaus. Dabei könnte das bis heute erreichte Wissen der Menschheit aus ihr ein Paradies machen. Dafür müsste die weltweite Gesellschaft allerdings zur Vernunft kommen."
    - Joseph Weizenbaum