Instance Creation Code - Problem

  • GM 7

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

  • Instance Creation Code - Problem

    Hi.
    Ich habe jetzt schon länger folgendes Problem:
    In meinem Objekt 'obj_mission', welches in jedem Level meines Spiels vorhanden ist, schreibe ich, wie der Name schon sagt, die Missionen des jeweiligen Levels in den Creation Code.
    Das Ganze sieht dann zB so aus:

    obj_mission

    [ Instance Creation Code ]

    GML-Quellcode

    1. occ_mis = (score >= 10);


    [ Step ]

    GML-Quellcode

    1. var mis;
    2. mis = occ_mis;
    3. if (mis) {
    4. room_goto (rm_lvls);
    5. }


    obj_player

    [ Collision with obj_coin ]

    GML-Quellcode

    1. with (other) {
    2. instance_destroy ();
    3. }
    4. score += 1;


    Mein Problem: Es passiert nichts. Ich bleibe in dem Level, in dem ich gerade bin. Woran liegt das?
    Danke schonma' ^^
    fabse64 -> haiyyu
  • Mach doch so:

    Create:

    GML-Quellcode

    1. occ_mis = 10;


    Collision with obj_coin

    GML-Quellcode

    1. score += 1;
    2. if( score >= obj_mission.occ_mis) {
    3. //goto next
    4. }
    On teh internet u pwn noobs - but in real life noobs own you.

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

  • Superdaniel schrieb:

    "occ_mis = (score >= 10);" Was soll denn damit schon funktionieren? Kommt da nicht schon ein Fehler?

    Äähm, ich kanns natürlich auch ohne Klammern schreiben...
    Also:

    GML-Quellcode

    1. occ_mis = score >= 10;


    @Foo:
    Ja, aber ich will nicht nur Münzen sammeln müssen, sondern auch andere Sachen tun, wie zB 'occ_mis = score >= 10 && stern_gesammelt = true;'.
    fabse64 -> haiyyu
  • Ich glaube es bezog sich auf "score >= 10;"! Es findet keine Rechenoperation statt, daher ist das natürlich ziemlich merkwürdig. Was meinst du mit dem >=?
    In meiner psychisch soziologischen Konstellation, manifestiert sich die absolute Dominanz positiver Impressionen meines Individuums.
    Kurz: Ich bin geil!

  • Lunar schrieb:

    Ich glaube es bezog sich auf "score >= 10;"! Es findet keine Rechenoperation statt, daher ist das natürlich ziemlich merkwürdig. Was meinst du mit dem >=?
    Ist dioch ganz klar was er damit meinte, er will damit in einer Variable gucken ob score größer oder gleich 10 ist, wenn ja müsste die Variable eigentlich true, wenn nein false ausschütten.

    Ich würde einfach angucken ob das funktioniert, indem ich draw_text(x,y,"Geht das? -> " + string(occ_mis));.
    Wenn das 0 angibt, und wenns 1 angibt wenns wahr ist, geht diese methode, anderenfalls kann man dies nicht mit einer Variable machen.

    Aber anscheinend geht es ja nicht..

    MFG
    Metalknight
  • So, ich hab das jetzt folgendermaßen gelöst:

    obj_mission

    [ Instance Creation Code ]

    GML-Quellcode

    1. occ_mis = "if (score >= 10) { room_goto (rm_lvls); }";


    [ Step ]

    GML-Quellcode

    1. var mis;
    2. mis = occ_mis;
    3. execute_string(mis,0);


    Das klappt.
    Ich denke auch zu wissen, wieso meine andere Methode nicht funktioniert hat:

    Im OCC hab ich ja geschrieben 'occ_mis = score >= 10;'.
    Da die Score da ja noch unter 10 war, hat occ_mis gleich mal false zugewiesen bekommen.
    Dann, als ich im Step Event 'var mis; mis = occ_mis;' geschrieben hab, wurde 'mis' ebenfalls false zugewiesen.
    Und nicht weiter überprüft, ob die score grösser oder gleich 10 ist.

    Jetzt mit der neuen Methode klappt das aber.
    Trotzdem danke an alle. =)
    fabse64 -> haiyyu
  • Du kannst es auch über ein Userevent oder Script machen. So hast du kein execute_string, denn normalerweise sollte man sowas vermeiden. Ein Leitspruch den man als Programmierer folgen sollte ist: Eval is evil.
    On teh internet u pwn noobs - but in real life noobs own you.