obj zerstören und counter uaf 0 setzten ?

  • GM 8

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

  • obj zerstören und counter uaf 0 setzten ?

    hi ich bin ein neuling bei gamemaker und probier gerade so ein paar sachen aus nun habe ich eine kleine frage ich hab mich schon ein bisschen rumgeschaut aber leider nichts gefunden was mir weiterhelfen könnte ^^

    also nun zu meinem problem :D

    mein spieler schießt ein object dadurch wird "fireball=1" gesetzt. wenn nun dieser die wand trifft sollte "fireball=1" wieder auf "fireball=0" gesetzt werden und das obj fireball zerstört werden. nun schaff ich es zwar den fireball zu zerstören aber wie bekomme ich es hin das der counter wieder auf "0" gesetzt wird?

    ist bestimmt eine dumme frage aber wie gesagt ich bin ein ganz böser neuling :D ich hoffe ihr könnt mir helfen.
  • Wenn dein Schussobjekt die Variable wieder ändern soll, und die Variable nicht in dem Schussobjekt definiert wurde, dann musst du mit dem Punktoperator auf die Variable zugreifen. Also z.b. so:
    object.fireball=0
    "object" musst du natürlich dann mit dem Objekt ersetzen, in dem die "fireball" definiert wurde.
    Ich hoffe du verstehst was ich meine.

    Außerdem gehören solche Fragen normalerweise in den "Technische Fragen" Bereich.
  • na das wirft ja schon kein gutes licht auf mich ^^ erster post und gleich uns falsche sub forum :( ich glaub ich hab da so oder so was falsch gemacht ich habe bei meinem player(obj) ein event "creat" gemacht und dort das rein

    • im creat
    --------------------
    right=0
    fireball = 0
    --------------------
    • im step habe ich dann das drin

    --------------------
    if right = 0 and fireball = 0 and keyboard_check_pressed(ord("C"))
    {
    var obj;
    obj=instance_create(player.x-0,player.y+0,fireball);
    with (obj) motion_set(180,5);
    fireball = 1;
    }
    --------------------

    nun hätte ich nur gern das wenn das obj "fireball" ein stein trifft verschwindet und fireball wieder auf =0 setzt damt mein obj player wieder schießen kann :D
  • Das mit dem fireball = 1 beim erzeugen des Feuerballes ist unnötig, wenn du das hier in den step-event des Spielers kopierst:

    GML-Quellcode

    1. if instance_exists(obj_fireball)
    2. {
    3. fireball = 1
    4. }
    5. else
    6. {
    7. fireball = 0
    8. }


    Wenn der Ball zerstört werden soll, machst du das einfach mit nem Kollisions-event:
    with obj_wall(dein Stein) -> instance_destroy()
    Dieser Beitrag wurde bereits 8.675.628 mal editiert, zuletzt von »levarris07« (Heute, 11:33)
  • Wie ich sehe hast du eine Variable fireball und ein Objekt fireball.
    Das kannst du nicht machen, weil der GM das nur als Objekt erkennt. Mach entweder aus dem Objekt obj_fireball oder aus der Variable var_fireball oder mach irgendwas anderes, damit es keine Konflikte zwischen den Namen gibt.

    Dann wenn Objekt fireball gegen eine Wand fliegt, schreib das:

    GML-Quellcode

    1. instance_destroy()
    2. player.fireball=0



    Edit: Zu spät!
  • Dann kannst du auch levarris07 Code benutzen. Resourcenschonender wäre aber eine Lösung über das Kollisionsevent des feuerballs.
    Schreib bei der Kollision mit dem Stein sowas rein:

    GML-Quellcode

    1. obj_player.fireball = 0;


    EDIT: Hm, ein wenig zu spät :rolleyes:

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von DragonGamer ()

  • Möchtest du jetzt eine Abfrage ob der Schuss außerhalb des Raumes oder außerhalb der View ist?
    Für Außerhalb des Raums kannst du das Outside room Event nehmen. Das findest du bei Other.

    Für Außerhalb der View musst du den Code hier nehmen (im step-event vom schuss objekt):

    GML-Quellcode

    1. if(x<view_xview or x>view_xview or y<view_yview or y>view_yview)
    2. {hier der code wenn er außerhalb der view ist}




    Edit: Schon wieder zu spät.
  • hmmm komisch wenn ich das so mache

    --------------------------------------
    if(x<view_xview or x>view_xview or y<view_yview or y>view_yview)
    {instance_destroy()
    player.fireball=0}
    --------------------------------------

    kommt garkein schuss mehr raus. das is doch so richtig oder? wenn der schuss auserhalb meines view bereiches ist wird er zerstört und beim player wird der wert beim fireball wieder auf =0 gesetzt ... oder? ^^
  • Nein ist nicht richtig weil du übersprüfst ob der wert kleiner als viewx oder größer als viex ist... und das ist immer der Fall.
    Es sollte so heißen:

    GML-Quellcode

    1. if(x<view_xview or x>view_xview+view_wview or y<view_yview or y>view_yview+view_hview)
    2. {instance_destroy()
    3. player.fireball=0}

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)