Persistente Räume :D

  • GM 8

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

  • Persistente Räume :D

    Damit mein character immer da hinkommt wenn er den room wechselt, wo er war, habe ich meine Räume auf PERSISTENT gestellt.
    Allerdings besteht jetzt das problem das immer wenn ich gegen eine Rommwechselobject laufe, landet der character wieder direkt auf dem vom anderen room, und es gibt eine endlose Rommwechslerei xD
    Kann mir da wer helfen? :rolleyes:
  • Also erst einmal, an x += 20; ist nichts falsch.
    Es gibt ein Room Start Event, dort solltest du die Koordinaten setzen können.

    GML-Quellcode

    1. // Collision mit Raumwechselobjekt
    2. next_x = x + 20;
    3. next_y = y;
    4. room_next(); // oder was auch immer ..
    5. // Room Start
    6. x = next_x;
    7. y = next_y;

    Soweit ich weiß wird Code nach room_next() etc. oder game_end() nicht mehr ausgeführt. Du hättest auch einfach das x += 20; einfach for dem Raumwechsel setzen können, aber so hast du mehr Möglichkeiten. Du könntest dir aussuchen wo genau der Spieler im nächsten Raum spawnt.

    EDIT: Alternativ kannst du auch eine Variable setzen, die das Collisionsevent abbricht und erst dann wieder zurücksetzen wenn man weit genug vom Raumwechselobjekt entfernt ist.
  • Dann wäre es mal Zeit, dass du mit deiner Source Datei rausrückst, damit wir dem Fehler besser auf den Grund gehen können.
    Wenn du das nicht willst reicht auch eine (fast) leere Datei, wo nur die Stückchen drin sind, die das Problem verursachen. Vielleicht findest du so sogar selbst deinen Fehler.
  • Mach ich gerne :D
    Bitte nehmt es mir nicht uebel aber ich schreibe mit einer Spanischen tastatur weil ich nicht in Deutschland lebe :D
    Also fangen wir an xD
    Ich habe alle meine Raeume auf Persistent gestellt, damit ich immer wenn ich einen Raum aufs neue Betrete, mein Char (Spielfigur) an der selben stelle Startet im Raum wo er auch herkam. Also habe ich 2 Objects erstellt. Das erste nannte ich obj_next, und das andere obj_back.
    Im collisions event des Spielers mit obj_next kommt ein einfacher Room_switch.(Next_room)
    Im collisions event des Spielers mit obj_back kommt ein einfacher Room_switch.(Previous_room)

    Dann habe ich diese Objects im Raum verteilt :D
    SOOOO und jetzt wenn ich mit dem Spieler auf das obj_back gehe kommt er zwar dahin wo ich will, aber er landet im obj_next und switcht dann ununtebrochen und alles Krippelt xD

    Kann man da iwas machn ?
    Ok alles ist machbar :D
    mfg: Janek (firestudios) :)
  • Also du möchtest, dass er immer auf der gleichen Stelle "spawnt"?
    Dann musst du den Spieler persistent machen und nicht den Raum ^^

    EDIT: Achso! Warte, dass habe ich falsch verstanden :D -> JETZT WEIß ICH, WAS DU MEINST!
    Warte, ich schreibe mal ein Example, ich lade das bald hoch!

    MfG Clark

    DigitalClark

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

  • Zum Glück gibt es Variablen. Du musst lediglich abfragen, in welchem Raum sich die Spielfigur zuletzt aufgehalten hat.
    Nachdem die Figur wieder raus geht, fragst du ab:

    :event_step:

    GML-Quellcode

    1. if (distance_to_object(obj_raumwechsel)<=1 && global.raum==1) //1 steht hierbei für 'ja, bin/war gerade im Raum'
    2. {
    3. room_goto(?); //? = dein Raum
    4. x=?; //? = deine gewünschten Koordinaten
    5. y=?; //? = deine gewünschten Koordinaten
    6. }


    Und andersherum geht das natürlich auch. Du musst dann abfragen, ob der Raumwechsel bereits == 1 oder == 0 ist. :)
    Ich hoffe, dass ich dich richtig verstanden habe. :vogel:

    Lg
    Michael

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

  • Ich wollte ja ein Example hochladen, ich gebe dir aber erstmal ein paar Codes, wie ich das machen würde (brauch ich auch für mein Spiel, Spizzards):
    1. Zuerst erstellst du zwei Globale Variablen:
    Erste: global.curroom (Currentroom) :action_variable:

    GML-Quellcode

    1. global.curroom = '0'

    Zweite: global.roomset :action_variable:

    GML-Quellcode

    1. global.roomset = false

    2. Öffne deinen Raum und gebe im Creation-Code ein

    GML-Quellcode

    1. global.curroom = testraum //Name deines Raumes



    GML-Quellcode

    1. global.roomset = false //Raum wurde nicht bestimmt

    3. Öffne deinen Spieler (das Objekt) und erstelle einen Script im Step-Event :event_step:. Dort schreibst du:

    GML-Quellcode

    1. //Raum Nr.1
    2. if global.roomset = false { //Wenn der Raum noch nicht bestimmt wurde
    3. if global.curroom = testraum { //Name des Raumes, in dem er vllt. ist
    4. self.x = 48 //X-Position (kannst du im Raum abmessen)
    5. self.y = 32
    6. //Y-Position (kannst du auch im Raum abmessen)
    7. global.roomset = true } //Der Raum wurde bestimmt (wird beim Raumwechsel wieder auf "false" gesetzt)
    8. //Raum Nr.2
    9. if global.curroom = testraum2 {
    10. self.x = 64
    11. self.y = 128
    12. global.roomset = true }
    13. } //Klammer schließen für den ersten Script (if global.roomset = false)
    Alles anzeigen

    So kannst du das konfigurieren. Hoffe es geht, hab's nicht getestet und außerdem hoffe ich, du hast es verstanden.

    MfG Clark

    DigitalClark