Script in anderem Raum ausführen

  • Script in anderem Raum ausführen

    Ich arbeite gerade am Inventar für mein Spiel dabei handelt es sich um ein Sript das die Objekte in der Reihenfolge einsortiert in der sie eingesammelt werden.

    Das Script ansich funktioniert sehr gut... Problem ist nur es es auf einen anderen Raum zu übertragen.

    Das Script heißt Inventory_Boden_Add(x); (wobei x für das jeweilige Sub-Image des Bildes steht.

    Ein normales Objekt würde ich mit dem Befehl room_instance_add im jeweiligen Raum entstehen lassen, doch wie spreche ich das oben genannte Script an wenn es nur im anderen Raum existiert?

    Ich möchte behaupten zu WISSEN das diese oder eine ähnliche Frage noch nicht im Forum aufgetaucht, bzw. in der Suche zu finden ist. Die Hilfe habe ich diesbezüglich nach Script-Fragen überflogen.

    Sollte mir die Hilfe also weiterhelfen würde mir schon ein kleiner Tipp genügen wo ich zu suchen habe.
  • Also ich versteh nicht ganz was du damit meist, aber trotzdem ein Tipp: Ein Objekt, das "persistent" ist, wird in einen anderen Room mitgenommen, also auch der Script.
    Wenn du im anderen Room ein Objekt hast kannst du z.B. diesem Objekt User-Events zuteilen und über eine globale Variable sagen, ob das unser Event ausgeführt werden soll:

    GML-Quellcode

    1. // Erster Room, beliebiges Event
    2. // Nicht vergessen die Variable zu initialisieren ^^
    3. global.run_user_eventz = true;

    GML-Quellcode

    1. // Zweiter Room, Create Event
    2. if (global_user_event) {event_user(0);}

    Nur ein Beispiel, so kannst du also alles mögliche im anderen Room machen ^^

    Achja: Wenn du immer wieder room_instance_add ausführst, sind später bis zu 20 Instanzen dieser Art da drin ^^
  • Danke schon einmal für deine Antwort, ich dachte mir das es mit globalen Variablen funktionieren müsste, aber dann hab ich halt eine Unmenge (weit über 20) Variablen die er ständig prüfen und abfragen muss, was den Gamemaker vermutlich nicht einmal halbsoviel unbehagen bereitet wie mir.

    Ihm einen Ort bzw. Room anzugeben wo er das Objekt, dessen Script er ausführen soll, finden kann?

    Ein schrecklicher Satz entschuldige aber es fällt mir nicht besser ein wie ich es erklären soll.

    Falls nicht schon vorher eine Antwort kommt werde ich demnächst meinen bisherigen Status einmal hochladen und zeigen wie genau es gemeint ist.

    Das linke Bild ist der erste Raum, das rechte das Inventar. Bisher lasse ich beim berühren der Objekte mit dem Spieler (blauer Ball) ein zweites (quasie identisches) Objekt im Inventarraum erscheinen (room_instance_add) welches man dann anklicken kann und das Script

    //Start looping. It will loop through all the slots until it has found an empty slot or gone over the maximum.
    for(i = 1 ; i <= Inventory.numberOfSlots ; i += 1) {

    //Check if the current slot is empty, and if so, add the object.
    if(Inventory.slotItems = 0)
    {
    Inventory.slotItems[i] = object_index; // Set the item.
    Inventory.slotImages[i] = argument0; // Set the image.
    instance_destroy(); // Destroy the instance that it just added.
    exit; // Exit the script, since it has found a slot.
    }
    }

    Sortiert es der Reihe nach in das richtige Feld und zeigt vorallem ohne weitere Problem jeweils richtige "Bild" an.

    Das Scribt existiert quasie zweimal einmal für das "echte" Inventar und einmal für den "Boden", denn auch auf dem Boden soll es ja geordnet zugehen.

    Ich möchte das sich bei Berührung von Spieler und Objekt im Linken Raum automatisch z.B. die Axt im Inventar-Boden added und dann auf Mausklick die Axt zwischen Boden und Inventar wechselt, bzw. bei Rechtsklick das ganze auf die Hand1 oder Hand2 wechselt.
    Bilder
    • Beispiel.gif

      8,13 kB, 268×332, 205 mal angesehen
    • Inventar.jpg

      22,82 kB, 771×444, 182 mal angesehen

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Jokohono ()

  • Und was _genau_ ist jetzt dein Problem?
    Jaja, das ist jetzt zwar wieder so eine typische "Mod"-Antwort aber was solls:
    Hast du schonmal nach Tutorials geguckt?
    Da gibt es mit Sicherheit _IRGENDWELCHE_ Inventory-Tuts.
    Und, ... ich empfehle das in den gleichen Room zu tun aber es ist deine Entscheidung ^^
  • Ich dachte mein Problem hätte ich geschildert.

    Ich suche nach einer Lösung das Script in einem anderen Raum auszuführen ohne dazu eine globale Variabel für jedes einzelne Objekt erzeugen zu müssen.

    Denn wenn ich einen Code verwende in dem jeder aufgesammelte Gegenstand ein zweites Objekt im nächsten Raum erstellt benötige ich kein Inventar-Objekt mit dutzenden Sub-Images mehr, sondern kann mich gleich auf ein paar tausend Zeilen Code einstellen.

    Und Ja es gibt ganz viele Tutorials, und Ja ich habe diese schon nachvollzogen und Ja ich hab mir auch die Hilfe dazu durchgelesen, aber Nein ich habe keine entsprechende Lösung gefunden.
  • Original von Jokohono
    Und Ja es gibt ganz viele Tutorials, und Ja ich habe diese schon nachvollzogen und Ja ich hab mir auch die Hilfe dazu durchgelesen, aber Nein ich habe keine entsprechende Lösung gefunden.

    Ich meinte nicht, dass du dein Problem lösen sollst, sondern (Sry, das mag jetzt vllt hart rüber kommen...) einfach alles noch mal von vorne an neu aufbaust - alles radikal weg mit.
    :lol:

    Und nochmal zum Problem:
    Warum funktioniert denn room_instance_add nicht??