Globale Variablen speichern / laden

  • GM 8

    Globale Variablen speichern / laden

    Hallo.
    Ich programmiere gerade einen I Wanna Be The-Klon, um mich nach einem Jahr wieder in Game Maker einzufinden. Mein Problem ist folgendes: ich muss eine globale Variable (die, die angibt, wie viele Bosse man besiegt hat) irgendwie speichern, auch, wenn das Spiel aus ist. Ich benutze eine von mir modifizierte Version von I Wanna Be The Engine. Ich versteh das meiste, das Speichern jedoch nicht. Ich habe schon ein anderes Forum durchsucht, dort haben sie aber nur extrem komplizierte Wege beschrieben. Also, wenn ihr mir helfen könntet, wäre das super. Ich muss nur eine Var speichern, auf die alle Objekte zugreifen können. Danke.
    Unireverse erscheint vermutlich 2015. Das ist ein serious Project!

    GML-Quellcode

    1. if
    2. global.love_to_game_maker > 0
    3. {
    4. :3 = 1
    5. }
    6. else
    7. {
    8. gtfo = 1
    9. }

    Game Maker < 8.1:

    1. registry_*-Funktionen
    2. INI-Dateien
    3. Normale Textdateien (bzw. Binär)


    Game Maker Studio:
    1. INI-Dateien
    2. Speichern in MySQL-Datenbank mit den internen HTTP-Funktionen, PHP und MySQL



    Punkt 2 bei GM:S geht auch bei < GM 8.1, jedoch nur mit zusätzlicher DLL/Extension.
    :thumbsup:

    jlsnews schrieb:

    Game Maker < 8.1:

    1. registry_*-Funktionen
    2. INI-Dateien
    3. Normale Textdateien (bzw. Binär)


    Game Maker Studio:
    1. INI-Dateien
    2. Speichern in MySQL-Datenbank mit den internen HTTP-Funktionen, PHP und MySQL



    Punkt 2 bei GM:S geht auch bei < GM 8.1, jedoch nur mit zusätzlicher DLL/Extension.
    Beim GM Studio sind die normalen Textdateien genau so möglich, nur befinden sich diese in der Sandbox
    I wanna be the Meme gibts übrigens schon...

    Ich empfehle dir eine INI Speicherung, in der du die Variablennamen "verschlüsselt" angibst...also einfach Namen für die Variablen wählst von denen man nicht auf die echte Funktion derer schließen kann. INI Tutorials findest du in der Suche,.. die sind einfach und praktisch :)

    und bitte bitte, wenn du so ein Spiel machst, dann evolutioniere es ein bissl, mach es interessanter als all die anderen Teile. Es darf ja bockschwer und unfair sein, aber warum immer so schirch und hakelig?

    kayin.pyoko.org/iwbtg/forums/index.php?topic=16670.0

    lg

    ancient-pixel.com
    youtube.com/user/SebastianMerkl <<< ich freu mich über einen Besuch ;)
    Ja, die meisten Spiele bestehen da nur aus “laufe 3 Räume ab und besiege den Bullethell-Boss“. Ich versuch schon, ne gewisse Story einzubringen. Zu den INIs, das sieht schon logisch aus, werd ich heute nachmittag mal versuchen. Danke :)
    Unireverse erscheint vermutlich 2015. Das ist ein serious Project!

    GML-Quellcode

    1. if
    2. global.love_to_game_maker > 0
    3. {
    4. :3 = 1
    5. }
    6. else
    7. {
    8. gtfo = 1
    9. }

    So, ich hab mir das mit den INIs mal angesehen. Ich hab mir eine Programmiert, die funktioniert aber irgendwie nicht... Hier die Codes:
    Speichern:

    GML-Quellcode

    1. ini_open("bosses");
    2. if ini_key_exists("bosses",global.variable)
    3. then ini_key_delete("bosses",global.variable);
    4. ini_write_real("bosses",global.variable,global.variable);
    5. ini_close();

    Laden:

    GML-Quellcode

    1. ini_open("bosses");
    2. if ini_key_exists("bosses",global.variable)
    3. then ini_read_real("bosses",global.variable,0);
    4. else ini_write_real("bosses",global.variable,global.variable);
    5. ini_close();

    Speichern ist im "Game End" Event des Spielers und Laden im "Game Start" Event des Spielers. Bitte um hilfe und bitte beachtet, dass ich ein INI-Noob bin :D
    (P.S.: Das Spiel startet und ist spielbar, wenn ich aber meinen Spielstand lade, friert das Spiel ein. Wenn ich dann Esc drücke, kommt diese Meldung: "Unexpected Error occurred while playing the game.")

    EDIT: Ich bin ein Idiot -.-. Naja, hier meine neuen Scripts:
    Laden:

    GML-Quellcode

    1. string(global.variable);
    2. ini_open("bosses.ini");
    3. if ini_key_exists("bosses","ff")
    4. then ini_read_string("bosses","ff",0);
    5. global.variable = ini_read_string("bosses","ff","");
    6. ini_close();

    Speichern:

    GML-Quellcode

    1. string(global.variable)
    2. ini_open("bosses.ini");
    3. ini_write_string("bosses","ff",string(global.variable));
    4. ini_close();

    Mein neues Problem: Ich habe mir ein Objekt "test" erstellt, das sichtbar sein soll wenn global.variable 1 ist. Der Code ist dieser (Im Create Event):

    GML-Quellcode

    1. if global.variable = 1
    2. then visible=true
    3. else visible=false

    Problem: Sobald ich das Spiel (in dem Raum mit dem "test") starte, kommt ein Error:

    ___________________________________________
    ERROR in
    action number 1
    of Create Event
    for object test:

    Error in code at line 1:
    if global.variable = 1
    ^
    at position 22: Cannot compare arguments.
    Waruum? :rage:
    Unireverse erscheint vermutlich 2015. Das ist ein serious Project!

    GML-Quellcode

    1. if
    2. global.love_to_game_maker > 0
    3. {
    4. :3 = 1
    5. }
    6. else
    7. {
    8. gtfo = 1
    9. }

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Syrapt0r“ ()

    Besser währe

    Speichern

    GML-Quellcode

    1. ini_open("bosses")
    2. ini_write_real("bosses","kills",global.variable)
    3. ini_close()


    Laden

    GML-Quellcode

    1. ini_open("bosses")
    2. global.variable = ini_read_real("bosses","kills",0)
    3. ini_close()
    Kopiere dies in deine Signatur, um es in deiner Signatur zu haben.
    Achtung: Dieser Beitrag läuft ende des Monats ab, bitte lese ihn noch vor dem Monatswechsel...
    Nach langer zeit wieder im Forum aktiv :D
    Das Script funktioniert perfekt, danke! Ich hab übrigens auch den Fehler bei meinem Script gefunden: Der Save-Befehl wurde nie aktiviert, darum hat er immer die default-null geschrieben :headtouch:
    Unireverse erscheint vermutlich 2015. Das ist ein serious Project!

    GML-Quellcode

    1. if
    2. global.love_to_game_maker > 0
    3. {
    4. :3 = 1
    5. }
    6. else
    7. {
    8. gtfo = 1
    9. }