Globale Variablen überprüfen

  • GM 8

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Du kannst das Spiel im Debug Modus starten, dann öffnet sich ein zweites Fenster und dort kannst du unter "Tools" alle global Variablen anzeigen lassen.

    Wahlweise kannst du auch ein Objekt in deinem Spiel erstellen, das kein Sprite hat (aber eine depth von -1000 zB haben sollte), das aber den Wert als Text drawed.
    Ich mach das gerne zur Überprüfung ohne immer den Debugmodus zu starten, oder wenn ich Variablen auch im Vollbildmodus beobachten will.

    Du musst zumindest einen font eingestellt haben, dann kannst du in dieses Objekt im Draw Event schreiben:

    GML-Quellcode

    1. draw_set_font(dein_font)
    2. draw_set_color(c_white)
    3. draw_text(x,y,globalvarname)


    Wenn du Views verwendest, kannst du statt x und y; view_xview+16, view_yview+16 schreiben, +16 ist der abstand vom Fensterrand.

    out now: KNOSSOS auf itch.io
    ancient-pixel.com <<< ich freue mich über einen Besuch! ^^
  • Achso XD

    Ok, also je nachdem wie du die Variablen initialisiert hast:

    GML-Quellcode

    1. globalvar var1;//<--das kann natuerlich irgendwo anders in einem anderen Objekt auch stehen
    2. var1 = 3;
    3. if var1 == 3
    4. {
    5. instance_create(x,y,obj)
    6. }
    7. global.var2= 3; //<--das kann natuerlich irgendwo anders in einem anderen Objekt auch stehen
    8. if global.var2 == 3
    9. {
    10. instance_create(x,y,obj)
    11. }
    Alles anzeigen

    out now: KNOSSOS auf itch.io
    ancient-pixel.com <<< ich freue mich über einen Besuch! ^^
  • So, und damit wären wir gleich beim nächsten Problem:

    Wenn die Variable 3 erreicht hat soll das objekt die Sprite ändernund an einem anderen Platz stehen... aber genau das ist schon passiert wenn ich den Raum betrete :rage:

    Variablen ich hasse euch :headtouch:
    Gm-d´s Problemkind :thumbsup:
  • Variablen ich hasse euch :headtouch:

    Das ist schonmal gar nicht gut :D

    Wenn die Variable 3 erreicht hat soll das objekt die Sprite ändernund an einem anderen Platz stehen... aber genau das ist schon passiert wenn ich den Raum betrete :rage:

    Ohne Code können wir nicht viel machen....
    Kopiere dies in deine Signatur, um es in deiner Signatur zu haben.
    Achtung: Dieser Beitrag läuft ende des Monats ab, bitte lese ihn noch vor dem Monatswechsel...
    Nach langer zeit wieder im Forum aktiv :D
  • DaveMania01 schrieb:

    Also ich habe eine globale Variable. Aber ich kann nicht überprüfen welchen Wert sie haben. Wie geht das?

    Ohne die vorherigen Posts zu lesen (bzw. nur kurz was aufgeschnappt), schreibe ich dir einen möglichen Lösungsansatz.

    obj_jedi
    Start Event :event_create:

    GML-Quellcode

    1. global.hit_r2d2 = 0;


    Step Event :event_step:

    GML-Quellcode

    1. if (place_meeting(x,y,obj_r2d2)) {
    2. global.hit_r2d2 += 1;
    3. }
    4. if (global.hit_r2d2 >= 3) {
    5. sprite_index = chubaka;
    6. x = 100;
    7. y = 500;
    8. }
  • Ist ja auch nicht komisch, weil der Variablen der Wert 3 zugeordnet wird. Zumindestens wenn du Aku Ryou s Code so übernommen hast. Du kannst du Variable irgendwie hochzählen lassen, je nachdem was du mit der eigentlich bezwecken willst.
    GML lernen geht leicht :)
    1. http://www.gm-d.de/help/ (deutsch)
    2. gm-d.de/wbb/index.php/Thread/2270/ (Einsteiger-Referenz)
    3. docs.yoyogames.com/ (Hilfe auf Englisch von GM:S)
  • Wahrscheinlich weil du jetzt einfach die Codezeile rausgenommen hast, dann kann er sie auch nicht kennen. Kleines Mini-Beispiel:
    room-start event

    GML-Quellcode

    1. global.var=0//andere Schreibweise für globale Variablen

    space-press-event

    GML-Quellcode

    1. global.var+=1// wenn du space drückst, geht der Wert um eins nach oben

    step-event

    GML-Quellcode

    1. if(global.var ==3)
    2. {instance_create(x,y,obj)}


    Vielleicht funktioniert das ja jetzt...
    GML lernen geht leicht :)
    1. http://www.gm-d.de/help/ (deutsch)
    2. gm-d.de/wbb/index.php/Thread/2270/ (Einsteiger-Referenz)
    3. docs.yoyogames.com/ (Hilfe auf Englisch von GM:S)
  • DaveMania01 schrieb:

    Oh mann, jetzt sagt es die Variable existiert gar nicht... ich bin echt ein hoffnungsloser Fall... :heul:

    Wisch die Tränen ab. :D

    Du musst die Variable erst initialisieren. D.h. z.B. im Start Event :event_create: einen Code erstellen:

    GML-Quellcode

    1. global.deinevariable = 0;
  • Okay hier noch mal die ganz ausführliche Version:

    In meinem Spiel ist ein Tutorial,der Guide ist Kepora Gebora aus Zelda OoT. Und wenn man eine gewisse Zahl ( z.B.: 3) oft das Tutorial spelt soll Kepora Geboras Sprite zu Rauru werden, so als kleines Easteregg. Im Tutorial sind zwei unterschiedliche Räume und Kepora Geboras.

    obj_tutorial:
    :event_mouse: left
    :action_roomother: go to room Tutorial

    GML-Quellcode

    1. global.kepora_counter+=3


    Kepora_Gebora:
    :event_other: Roomstart

    GML-Quellcode

    1. if(global.kepora_counter ==3)
    2. {sprite_index(spr_rauru)}

    :action_begin:
    :action_sprite: Change sprite into spr_rauru
    :action_jumpposition: (...)
    :action_end:

    Kepora_Gebora2:
    :event_other: Roomstart
    :action_alarm: Set alarm 0 to 10
    :action_begin:

    GML-Quellcode

    1. if(global.kepora_counter ==3)
    2. {sprite_index(spr_rauru)}

    :action_sprite: Change sprite into spr_rauru
    :action_end:
    :action_jumpposition: (...)

    Wenn ich das spiel dann starte kommt diese Fehlermeldung:

    ___________________________________________
    FATAL ERROR in
    action number 2
    of Other Event: Room Start
    for object Kepora_Gebora:

    COMPILATION ERROR in code action
    Error in code at line 2:
    {sprite_index(spr_rauru)}
    ^
    at position 3: Unknown function or script: sprite_index

    Mittlerweile läuft es besser, aber ich kann die Kepora Gebora sprite immer noch nicht ändern
    Gm-d´s Problemkind :thumbsup:
  • Sprite index zuweisungen macht man mit einem = zeichen.
    Falsch

    GML-Quellcode

    1. if(global.kepora_counter ==3)
    2. {sprite_index(spr_rauru)}


    Richtig

    GML-Quellcode

    1. if(global.kepora_counter ==3)
    2. {sprite_index=spr_rauru;}
    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.
  • Okay... Ich weiss nicht was aber ich mache immer irgendwas falsch


    ___________________________________________
    ERROR in
    action number 2
    of Other Event: Room Start
    for object Kepora_Gebora:

    Error in code at line 1:
    if(global.kepora_counter ==3)
    ^
    at position 11: Unknown variable kepora_counter

    obj_kepora_counter:

    :event_other: Game Start

    GML-Quellcode

    1. global.kepora_counter=0


    Das sollte man noch wissen bevor mir jemand sagt ich soll die Variable initialisieren...
    Gm-d´s Problemkind :thumbsup:
  • okay, also initialisierst du sie schonmal...
    ... aber trotzdem findet er sie nicht.
    Bedeutet -> du initialisierst sie nicht, hast dich verschrieben oder das event wird nicht aufgerunfen.....
    Game Start -> wird ganz am anfang beim spielstart aufgerunfen (dazu muss das object natürlich im ersten raum sein)
    Kopiere dies in deine Signatur, um es in deiner Signatur zu haben.
    Achtung: Dieser Beitrag läuft ende des Monats ab, bitte lese ihn noch vor dem Monatswechsel...
    Nach langer zeit wieder im Forum aktiv :D
  • dann debugge mit spielereien wie

    GML-Quellcode

    1. //Variblen setzen...
    2. global.kepora_counter=3
    3. show_message("Die Variable wurde erfolgreich gesetzt")

    sollte die meldung kommen muss das nen GM-Bug oder ein sehr deppischer Fehler sein
    wenn nicht weißt du, dass das Event nicht aufgerufen wird.
    Dafür musst du dann irgendwie sorgen...
    Kopiere dies in deine Signatur, um es in deiner Signatur zu haben.
    Achtung: Dieser Beitrag läuft ende des Monats ab, bitte lese ihn noch vor dem Monatswechsel...
    Nach langer zeit wieder im Forum aktiv :D
  • Also nach langer Zeit melde ich mich mal wieder. Ich hab jetzt mal auf ignore geklickt, wnn die Fehlermeldung kommt.Ich kann dann in den Raum rein, aber die sprite wurde schon auf rauru geändert.
    Gm-d´s Problemkind :thumbsup: