GM: S Array-Fehler oder einfach zu blind um Fehler zu sehen?!?

  • GM 5

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

  • GM: S Array-Fehler oder einfach zu blind um Fehler zu sehen?!?

    Hallihallo liebe gm-d-Gemeinde,

    nach Monaten des mitlesens und durchforstens des forums nach Lösungen für meine kleinen Probleme, musste ich mich jetzt schlussendlich doch mal hier anmelden.
    Zum einen will ich mal einen Dank aussprechen an alle, die mir hier schon weitergeholfen haben (ohne es zu ahnen :thumbsup: ), zum anderen plagt mich ein ganz blödes Problem:

    Und zwar habe ich in meinem Spiel einen Raum, in dem verschiedene Dinge ablaufen. Als erstes wird dort die Anzahl der Spieler (1-8) festgeslegt. Danach wird ein anderes Objekt (Controller) erstellt, welches wiederum verschiedene Instanzen eines weiteren Objektes erstellt (diese können angeklickt werden). Vorher werden jedoch durch Controller alle vorher vorhandenen Objekte mittels 'with' und 'instance_destroy'. Es gibt also kurzzeitig nur diesen Controller.

    Danach kann man über die verschiedenen Instanzen des Objektes (obj_ermittler) einen bestimmten Spieler aussuchen, welcher anschließend in ein Array gespeichert wird (das Array heißt pl[x]).

    Also heißt dann bsp. bei 3 Spielern pl[0] = "Spieler A", pl[1] = "Spieler B" und pl[2] = "Spieler C",

    so weit so gut und es klappt auch alles.

    Mein Problem hat damit angefangen, dass ich einen von 16 möglichen Spielern zufällig auswählen lassen wollte. Also eine Instanz des obj_ermittler zufällig genannt, entsprechendes Sprite erstellt und ein zusätzliches Objekt erstellt. Dieses heißt obj_erm_zufall. Hier steht im Create:

    GML-Quellcode

    1. :event_create:
    2. randomize(); // soll das ganze zufällig verteilen
    3. zuf[0] = "Spieler A"
    4. zuf[1] = "Spieler B"
    5. zuf[2] = "Spieler C"
    6. zuf[3] = "Spieler D"
    7. ....
    8. zuf[14] = "Spieler O"
    9. zuf[15] = "Spieler P"


    im Step-Event des Controllers steht dann:

    GML-Quellcode

    1. :event_step:
    2. if mouse_x >= 96 && mouse_x <= 144 && mouse_y >= 288 && mouse_y <= 352 && mouse_check_button_pressed(mb_left) // wenn Maus über Symbol und Maus links gedrückt
    3. {
    4. global.pl[string(global.pl_auswahl-1)] = string(obj_erm_zufall.zuf[0]); // Zuweisung: Name zu pl[x] ( pl_auswahl ist zu vernachlässigen )
    5. aa = 2; // wichtig fürs ausfaden über image_alpha
    6. obj_ermittler.a = 2; // wichtig fürs ausfade über image_alpha bzw. dann für die Zerstörung aller obj_ermittler!
    7. with(obj_erm_zufall) {instance_destroy();}; // zerstört obj_erm_zufall
    8. }
    9. .......



    Übrigens faden nach dem Auswählen des ersten Spielers alle Schriften und Objekte aus und werden spätestens dann zerstört. Danach wird ein neues Controller-Objekt erstellt, welches automatisch auch wieder alle obj_ermittler erstellt.

    Diese Passage gibts dann natürlich für jeden einzelnen der 16 buttons und alles klappt eigentlich auch ganz gut, so lange ich nur einen Spieler spielen lassen will.......!!

    Sobald ich einen zweiten Spieler spielen lassen bzw. zuweisen lassen will, zeigt mir der GameMaker folgenden Fehler:

    ERROR!!! :: ############################################################################################
    FATAL ERROR in
    action number 1
    of Step Event0
    for object obj_controller_auswahl_ermittler:


    Push :: Execution Error - Variable Get 7.zuf(100022, 1)
    at gml_Object_obj_controller_auswahl_ermittler_Step_0 (line 16) - global.pl[string(global.pl_auswahl-1)] = string(obj_erm_zufall.zuf[0]);
    ############################################################################################



    und dass, bei egal welchem Spieler ich mir als zweites Aussuche. Anscheinend hat er irgendein Problem mit der 'zuf[x]', ich versteh nur nicht welches....

    Wäre super, wenn mir hier jemand weiterhelfen könnte, da ich persönlich und alleine hier am verzweifeln bin...

    vielleicht noch wichtig: Ich nutze GameMaker: Studio Free


    Danke schonmal,

    Moe
  • Heyho, gerade beim wickeln meiner Tochter ist mir die Lösung gekommen.... :rolleyes:

    Wenn ich ein Objekt, hier die Windel, lösche/wegschmeiße, muss das Objekt auch wieder hergestellt/neu angelegt werden :)


    kurzum, ich hab vergessen das obj_erm_zufall neu zu erstellen... :whistling:

    Trotzdem danke an alle, die mir geholfen hätten :D
  • Lol, wenn ich nicht zu faul gewesen wäre aufm Handy nen lnagen Text zu tippen, hätte ich genau das vorgeschlagen :D
    Aber übrigens wieso benutzst du nicht einfach ein globales Array? Dann musst du dich um solche Verweise nicht kümmern und man kann wohl sagen dass dieses Array wahrscheinlich eher weniger als mehr Speicher verbrauchen würde als die Objektinstanz extra dafür.

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)
  • ein globales Array wäre auch ne Möglichkeit... hab ich so noch garnicht bedacht...

    Aber ich glaube, dass ich dieses Array nur für diesen einen Schritt benötige, von daher würd ich im Moment sagen: gehüpft, wie gesprungen... :D