Objekt Variable aus Skript heraus abfragen

  • GM 8

    Objekt Variable aus Skript heraus abfragen


    Guten Morgen :)

    Ich sitze nun schon seit 1-2 Stunden an einem Problem. Folgendes ich habe ein Skript das wenn ein Gegner in der nähe des Spieler ist ein
    Objekt (Attacke) erstellen soll. Soweit so gut funktioniert auch prima. Mal abgesehen davon das der Gegner drölftausend Objekte erstellt
    wenn der Player in der nähe ist ;)

    Auch verständlch weil ich habe es ja so ihm beigebracht :)
    Habe mir gedacht ich gebe meiner Attacke eine Variable "Cooldown". Solange diese auf "true" ist sollte mein Skript keine neue Attacke erstellen.

    Der Code des Skripts enemy_Melee_Attack1

    GML-Quellcode

    1. with (obj_Enemy)
    2. {
    3. if distance_to_object(obj_Player) < 50 //radius of circle//
    4. {
    5. instance_create(x, y, obj_MeleeAttackEnemy1);
    6. speed = 0
    7. }
    8. }


    Nun wollte ich mit einer zweiten if Abfrage im Skript abfragen ob die Variable cooldown den auf false ist mit:

    GML-Quellcode

    1. if obj_MeleeAttackEnemy1.cooldown = false


    Aber bekomme nur die Meldung das er die Variable cooldown nicht auslesen kann.
    (Was eigentlich auch klar ist da die Instance ja erst erschaffen werden soll :/ )

    Wie könnte ich mein Problem lösen? Danke im Vorraus :)
    du könntest da noch eine abfrage vor machen also vor

    GML-Quellcode

    1. if obj_MeleeAttackEnemy1.cooldown = false

    das machen

    GML-Quellcode

    1. if instance_exists(obj_MeleeAttackEnemy1)

    also

    GML-Quellcode

    1. if obj_MeleeAttackEnemy1.cooldown = false
    2. and instance_exists(obj_MeleeAttackEnemy1)
    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
    Danke Husi fuer den tipp,.

    Aber das mit instance_exist habe ich schon probiert. Das klappt auch, bis auf ein Manko.

    Mehrere Gegner sollen das script ausführen. Und mit dieser Abfrage macht es nur ein Gegner. Was klar ist da die instance ja schon existiert sobald ein Gegner das script ausfuehrt.

    Das reicht also leider nicht aus. :----S
    Geplant war das von mir so. Ich will in meinem spiel viele gegner haben die verschiedene Sachen machen.

    Deswegen war meine Idee folgende:
    Ich lagere das Gegnerverhalten in Scripts aus. Wie die Bewegung, die Attacken usw.
    Dann erstelle ich ein Objekt für den Gegner, weisse diesem das gewünschte Sprite zu und dann eben die verschiedenen Skripte was er machen soll.

    Im oberen Beispiel habe ich also das Skript für die Attacke. Das skript wird vom Gegner ausgeführt. Das skript erstellt dann ein Objekt für die Attacke (In diesem Fall eine Kreiförmige Nahkampfattacke).
    Und das erstellen des Objekts soll eben nur dann ausgeführt werden wenn die Variable der Attacke (cooldown) false ist.

    Ich kann aber die Variable cooldown nicht abfragen weil das Objekt ja erst erstellt werden soll. Also gibt es die Variable ja nicht da die erst im Create Event der Attacke generiert wird.

    Über eine Globale Variable zu lösen wäre noch eine Möglichkeit. Aber brauchen globale Variablen nicht mehr Arbeitsspreicher zb?