Strings auslesen und vergleichen

  • GM 8

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

  • Strings auslesen und vergleichen

    Hi.
    Ich hab ein Problem. Ich sitze gerade an einem Spiel und möchte eine automatische Update-Funktion einbauen. Ich benutze dafür den Dienst {md} (zu finden hier: gmc.yoyogames.com/index.php?showtopic=492699). Auf diesem liegt die Datei "update.ini". Ich möchte, dass der Updater (ist ein extra Programm) die Datei herunterlädt, die enthaltende URL ausliest, mit der gespeicherten vergleicht und sollten sie abweichen, soll er das Update des Spiels herunterladen und den neuen Link speichern. Ich benutze ferner die Extension GM File Downloader (Link hab ich nicht mehr, Google findet den aber). Hier mein Code:

    GML-Quellcode

    1. ini_open("bosses.ini")
    2. global.savedlink = ini_read_string("bosses","url","");
    3. ini_close();
    4. if
    5. !file_exists("update.ini")
    6. then
    7. scr_mdu("I Wanna Be The Java",API);
    8. else
    9. instance_destroy();

    Dann beendet er, nachdem er die update.ini heruntergeladen hat. Da dann die update.ini existiert, zerstört sich das Objekt, was "Teil 2" auslöst:

    GML-Quellcode

    1. ini_open("update.ini")
    2. global.newlink = ini_read_string("url","url","");
    3. ini_close();
    4. global.savedlink = string(global.savedlink)
    5. global.newlink = string(global.newlink)
    6. if
    7. global.savedlink == global.newlink
    8. then
    9. text.image_index = 2;
    10. if
    11. !(global.savedlink = global.newlink)
    12. text.image_index = 1;
    13. download_file(string(global.newlink),"I Wanna Be The Java.exe");
    14. ini_open("bosses.ini")
    15. ini_write_string("bosses","url",global.newlink)
    16. ini_close();
    17. file_delete("update.ini");
    Alles anzeigen

    Jedoch habe ich folgendes Problem:
    Ich starte den Updater, er downloaded die update.ini, er beendet sich mit der Nachricht, man soll den Updater neustarten. So weit läuft also alles. Wenn ich jetzt jedoch den Updater neustarte, bekomme ich das hier:
    ERROR in
    action number 1
    of Create Event
    for object updatePart2:

    Error in function real().

    Jedoch löscht sich nach "Abort" die update.ini planmäßig und der Link wird auch in die bosses.ini geschrieben. Über Hilfe würde ich mich freuen. Bis bald,
    Syrapt0r.
    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 Fehler kommt immer wenn der real() Funktion ein String übergeben wurde der auch andere Zeichen als Zahlen enthält.
    In deinem geposteten Code findet sich kein real(), also schau mal nach wo du sonst diese Funktion benutzst und wo so ein erwähnter Fall eintreffen könnte.
    Eventuall hast du auch einer extension ein falsches Argument übergeben, etc.

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)
  • Danke für die Antwort, ich hab ein bisschen rumgetestet und siehe: Es geht!
    Mein Script sieht jetzt so aus:

    GML-Quellcode

    1. ini_open("bosses.ini")
    2. global.ver := real(ini_read_real("bosses","ver",0));
    3. ini_close();
    4. if
    5. file_exists("update.ini")
    6. {
    7. file_delete("update.ini");
    8. }
    9. download_file("http://dl.dropboxusercontent.com/s/qbugs7elvuexhml/update.ini?token_hash=AAFjKdoEK68bfEPnIdkSrcorBHfdzI6zsTOrZTT_3-vanw&dl=1","update.ini");
    10. ini_open("update.ini");
    11. global.new := real(ini_read_real("url","url",0));
    12. ini_close();
    13. if
    14. global.ver == global.new
    15. {
    16. text.image_index = 2;
    17. }
    18. else
    19. {
    20. text.image_index = 1;
    21. instance_create(256,320,downloadBtn);
    22. }
    Alles anzeigen

    Dann erstellt er das Objekt "downloadBtn" (ist glaube ich selbsterklärend ;) ), welches beim anklicken das macht:

    GML-Quellcode

    1. ini_open("bosses.ini")
    2. ini_write_real("bosses","ver",real(global.new))
    3. ini_close();
    4. file_delete("I Wanna Be The Java.exe");
    5. download_file("http://dl.dropboxusercontent.com/s/9f6ujmwqfvq16fg/I%20wanna%20be%20the%20Java.exe?token_hash=AAEefx_POLdDkExy_cDmm6MclgnJsG9hoBx5R1bZ2KEKhQ&dl=1","I Wanna Be The Java.exe");
    6. text.image_index = 3;

    Was ich sagen will, ist, dass er jetzt keine Links mehr runterlädt, sondern Versionsnummern. Damit kann ich aber leben. Danke trotzdem für die Antwort!
    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. }