levels

  • Hallo

    in meinem Spiel gibt es mehrere Levels...man kann im menü die versch. levels per klick auf button auswählen,allerding kann man erst ein level auswählen wenn man das vorherige bereits absolviert hat(ziel-object erreicht)

    ich möchte aber nicht extra für ein jedes Level ein zielobject machen sondern nur eins.

    Das heißt wenn ich das Ziel ereiche muss es feststellen in welchem level ich mich befinde und dann die variable(level_freigeschalten) auf denn wert level_nummer +1 ändern.

    Nur wie sieht der code dann aus?

    mfg
  • Mhh, also ich weiß jetzt ,leider keinen Code für dich, doch wie wäre es so:
    Wenn man ein Level geschafft hat, kriegt man 1 level Punkt in der Variable dazu, und dann setzt du einfach bei den verschiedenen Leveln ein, wieviel Punkte man dafür haben muss, damit man dieses auswählen kann.
    Nicht mehr alle Tassen im Schrank?
    Dann stell doch Gläser rein!!!
    xD
  • Dann könnte man allerdings auch das erste Level mehrmals machen und somit in Level 3 kommen, ohne
    Level 2 geschafft zu haben.
    Ich glaube nicht, dass es ohne mehrere Objekte (du kannst sie allerdings vererben, dann brauchst du nicht
    allzu viel umändern) geht.
    Du könntest höchstens folgendes machen:

    GML-Quellcode

    1. switch (room_index)
    2. {
    3. case level1: level zwei freimachen
    4. break;
    5. case level2: level drei freimachen
    6. break;
    7. case level3: level vier freimachen
    8. break;
    9. }
    ___________________________________________________________
    Beware of wild pointers
    ______Hinweis für Allergiker: Kann Spuren von Ironie enthalten_____
  • okay danke das hat schonmal gut hingehauen...

    nur möchte ich das man die freigeschalteten levels auch nach beenden und neustart der exe wieder spielen kann.
    d.h. die variable level.frei müsste irgendwie extern gespeichert werden...da ich leider überhaupt keine ahnung von ini's ec. habe hoffe ich ihr könnt mir da einen kleinen denkanstoss geben...thx
  • Mach am besten folgendes: nimm die Variable als Array und speicher darin, ob das n+1 te Level schon frei ist.
    d.h.:

    GML-Quellcode

    1. global.levels[0]=true; //erstes Level ist immer schon geschafft

    dann speicherst du die ganzen Werte immer wenn sich was geändert hat in die Datei:
    (angenommene Levelzahl ist 5)

    GML-Quellcode

    1. fil=file_text_open_write("levels.txt");
    2. for (i=0;i<5;i+=1)
    3. {
    4. if (global.levels[i])
    5. file_text_write_string("true",fil);
    6. else
    7. file_text_write_string("false",fil);
    8. }
    9. file_text_close(fil);


    Wenn das Spiel gestartet wird, muss dann folgender Code ausgeführt werden:

    GML-Quellcode

    1. if (file_exists("levels.txt"))
    2. {
    3. fil=file_text_open_read("levels.txt");
    4. for (i=0;i<5;i+=1)
    5. {
    6. if (file_text_read_string(fil)=="true")
    7. {
    8. global.levels[i]=true;
    9. }
    10. else
    11. {
    12. global.levels[i]=false;
    13. }
    14. file_text_readln(fil);
    15. }
    16. file_text_close(fil);
    17. }
    18. else
    19. {
    20. //werte erzeugen
    21. global.levels[0]=true;
    22. for (i=1,i<5,i+=1)
    23. {
    24. global.levels[i]=false;
    25. }
    26. }
    Alles anzeigen


    (Ich hab jetzt mal alles so aus dem Kopf aufgeschrieben, also könnten noch ein paar Fehler drin sein)
    ___________________________________________________________
    Beware of wild pointers
    ______Hinweis für Allergiker: Kann Spuren von Ironie enthalten_____
  • wo gehört die erste formel hin?

    ...gibts nicht irgend wie etwas einfacheres ?
    ich möchte nur wissen wie man eine variable extern zbs. in einer textdatei oder so speichert damit sie nach beenden des spiels nicht verloren geht.

    mfg
  • okay jetzt funzt so ziemlich alles...bis auf das:

    GML-Quellcode

    1. if room=lvl1 {if global.levels <2 then global.levels =2}
    2. if room=lvl2 {if global.levels <3 then global.levels =3}
    3. if room=lvl3 {if global.levels <4 then global.levels =4}
    4. if room=lvl4 {if global.levels <5 then global.levels =5}
    5. if room=lvl5 {if global.levels <6 then global.levels =6}
    6. if room=lvl6 {if global.levels <7 then global.levels =7}


    das ist im ziel object bei collision mit spieler

    was ist daran falsch??

    EDIT: könntet ihr mir bitte veraten ob was an der codeschreibweise falsch ist da ich ne komplette gml niete bin?!

    mfg

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

  • Benutzer online 1

    1 Besucher