Problem mit SteuerObjekt

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

  • Problem mit SteuerObjekt

    hallo freunde


    also ich habe ein steuer objekt erstellt für die anzeige von geld usw mit diesem code:

    obj_steuer
    create event

    GML-Quellcode

    1. if (instance_number(obj_steuer))> 1
    2. {
    3. instance_destroy()
    4. }
    5. else
    6. global.geld=0;



    obj_steuer
    draw_event

    GML-Quellcode

    1. draw_set_color(make_colour_rgb(120,140,75));
    2. draw_set_font(guifont);
    3. draw_text(view_xview+10,view_yview,"Geld:" +string(global.geld));




    es ist auch auf persistent geschalten ...


    das problem ist das es jetzt in jedem raum ist..auch im ingame menu und auch in anderen räumen---aber wie kann ich es dort wegmachen???
    ich hab das steuer objekt nur einmal in den ersten raum also level 1 eingesetzt.


    bitte um hilfe
  • Du könntest über

    GML-Quellcode

    1. ​if (room == rm_level1)

    abprüfen, ob du in dem Raum bist
    Ein Bug ist mehr als nur ein Bug, es ist ein... Käfer!
    Egal, wie gut du eine Mauer baust, sie fällt um.... der klügere gibt nach :D

    Willst du mit mir auf Discord Chatten/Quatschen?
    Meine Husi's Tutorial Reihe
  • Du könntest auch Ausnahmen machen wie:

    GML-Quellcode

    1. ​if (room != rm_menu)


    Oder:

    Wahrscheinlich hast du für deine Level ein Bestimmten Anfang, wie zB. "rm_level" und dann die Zahl.
    Das könnte man auch ganz leicht so machen, dass es nur für die Level mit diesem Anfang gilt:

    GML-Quellcode

    1. ​praefix = "rm_level";
    2. if (string_copy(room_get_name(room), 1, string_length(praefix)) == praefix)


    Ich hoffe ich hab mich nicht verschrieben :)
    Ein Bug ist mehr als nur ein Bug, es ist ein... Käfer!
    Egal, wie gut du eine Mauer baust, sie fällt um.... der klügere gibt nach :D

    Willst du mit mir auf Discord Chatten/Quatschen?
    Meine Husi's Tutorial Reihe
  • ich bekomms nicht hin hab beides probiert aber ich kriegs nicht hin

    GML-Quellcode

    1. if (room==rm_mainmenu or rm_load or rm_options or rm_grafik or rm_language or rm_controls or rm_sound or rm_charakterselect or rm_ingamemenu or rm_ingamemenu_save)
    2. {if instance_exists(obj_steuer)
    3. {
    4. instance_destroy();
    5. }
    6. }



    so ein ......... ich verzweifle bitte um hilfe....frage steht im 1ten post
  • GML-Quellcode

    1. if (room==rm_mainmenu or room==rm_load or room==rm_options or room==rm_grafik or room==rm_language or room==rm_controls or room==rm_sound or room==rm_charakterselect or room==rm_ingamemenu or room==rm_ingamemenu_save)
    2. {if instance_exists(obj_steuer)
    3. {
    4. instance_destroy();
    5. }
    6. }
    Wenn Frodo ein Hobbit ist,sind 8 Frodos dann ein Hobbyte? ?(
  • Also entweder ist deine Abfrage "if instance_exists(obj_steuer)" unnötig oder du hast den Code in einem anderen Objekt stehen, dann würdest du aber das Objekt löschen indem du den Code stehen hast und nicht dein obj_steuer, da ja instance_destroy(); das aktuelle Objekt löscht.
  • Ich verstehe nicht ganz, warum das Objekt auch persistent sein muss?

    Wenn du am Anfang deines Spiels deine globalen Variablen initialisierst, sind diese auch im gesamten Spiel verfügbar.
    Wenn du nun ein Objekt hast, das die globalen Variablen nur anzeigt (drawt) muss dieses Objekt nicht persistent sein.

    Einfach in das Level wo die Anzeige gebraucht wird, mit einbauen, fertig. Der Wert global.geld wäre im ganzen Spiel verfügbar. Auch ohne persistent.

    Ich bau mir meistens einen leeren raum in den Anfang meines Spiels, in dem nur ein Objekt sich befindet, wo ich alle meine globalen Variablen (und andere Einstellungen etc) im "Game Start" Event festlege, und dann sofort auch in den nächsten raum springen lasse. Dann kann ich im ganzen Spiel auf die Variablen zugreifen, den das ist Sinn und Zweck einer Globalen Variable. Auch ohne persistente Objekte geht das ohne Probleme.
  • das persistent ist dafür da das es im shop auch angezeigt wird .und wenn ich das persistent aus schalte ist es nicht mehr da.also garnicht mehr



    und wie gesagt ist das der ganze code der verwendet wird:

    obj_steuer
    create event

    GML-Quellcode

    1. if (instance_number(obj_steuer))> 1
    2. {
    3. instance_destroy()
    4. }
    5. else
    6. global.geld=0;




    obj_steuer
    draw event

    GML-Quellcode

    1. draw_set_color(make_colour_rgb(120,140,75));
    2. draw_set_font(guifont);
    3. draw_text(view_xview+10,view_yview,"Geld:" +string(global.geld));





  • Kann es sein, dass du bei
    if (instance_number(obj_steuer))> 1
    Die klammer Falsch gesetzt hast?
    Es sollte
    if (instance_number(obj_steuer)> 1)
    Heißen.
    Lass doch mal irgendwas drawen. Nachher existiert das obj gar nicht
    Ein Bug ist mehr als nur ein Bug, es ist ein... Käfer!
    Egal, wie gut du eine Mauer baust, sie fällt um.... der klügere gibt nach :D

    Willst du mit mir auf Discord Chatten/Quatschen?
    Meine Husi's Tutorial Reihe
  • er meint, "lass irgendwas drawen" ( nur um zu testen ob das obj Existiert )
    z.B. draw_text(32,32,"ich Existiere")

    wenn das obj vorhanden ist dann wird der text oben links angezeigt, wenn nicht haste n fehler gefunden :D

    und die ) muss nach der 1 sein

    GML-Quellcode

    1. if (instance_number(obj_steuer) >1) < --------- hier
    2. {
    3. instance_destroy()
    4. }
    5. else
    6. global.geld=0;
  • ja wie schon oben gesagt drawd er es ja und es funktioiniert ja auch wenn die klammer anders ist...(ich weiß das es so gehört wie ihr es habt.)

    ich hab das persistent jetzt weg gemacht .es sollte dafür sein das es auch im shop ist.... jetzt muss ich halt in jedem level und in jedem shop das objekt einfügen.
    aber wenigstens fünktionierts thx
  • GML-Quellcode

    1. if (room==rm_mainmenu or room==rm_load or room==rm_options or room==rm_grafik or room==rm_language or room==rm_controls or room==rm_sound or room==rm_charakterselect or room==rm_ingamemenu or room==rm_ingamemenu_save)
    2. {if instance_exists(obj_steuer)
    3. {
    4. instance_destroy();
    5. }
    6. }

    Das

    GML-Quellcode

    1. ​if instance_exists(obj_steuer)

    Finde ich da sehr unpassend
    Mach da lieber or raus.
    Und war das nicht mal instance_number > 1?

    GML-Quellcode

    1. if (room==rm_mainmenu or room==rm_load or room==rm_options or room==rm_grafik or room==rm_language or room==rm_controls or room==rm_sound or room==rm_charakterselect or room==rm_ingamemenu or room==rm_ingamemenu_save
    2. or instance_number(obj_steuer) > 1)
    3. {
    4. instance_destroy();
    5. }
    Ein Bug ist mehr als nur ein Bug, es ist ein... Käfer!
    Egal, wie gut du eine Mauer baust, sie fällt um.... der klügere gibt nach :D

    Willst du mit mir auf Discord Chatten/Quatschen?
    Meine Husi's Tutorial Reihe