Zeilen suchen und ins Spiel einbinden

  • GM 8

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

  • Zeilen suchen und ins Spiel einbinden

    Hey Leute,
    ich habe schonmal soetwas wie dieses hier gepostet, aber ich habe keine Lösung.
    Wenn ich Werte in eine .txt-Datei gespeichert habe (wie z.B. Geschwindigkeit des Spielers) und dort steht:
    playerspeed.max = 4
    Dieses "playerspeed.max = 4" steht in irgendeiner Zeile der Datei und dann gibt es noch irgendwo eine Zeile und dort steht:
    levelnumber = 1 of 2
    Der Game Maker soll nun in dieser .txt-Datei (wir nennen sie einfach mal "Config.txt") diese Zeilen suchen und dafür etwas machen (für "playerspeed.max" z.B.

    GML-Quellcode

    1. image_speed = 4
    , doch wenn dort "playerspeed.max = 3" steht dann

    GML-Quellcode

    1. image_speed = 3
    ) und für "levelnumber" dann einfach irgendwas machen (das denk ich mir noch aus), doch wenn man einen Leveleditor hat sollen es dann z.B. "1 of 9" (wenn man 9 Level erstellt hat, kann man die Datei dann einfach editieren). Ich hoffe ihr wisst was ich meine, und wenn es dafür keinen Code gibt, gibt es dann eine DLL? Sorry wenn das ein Doppelpost ist, aber ich mag es lieber nocheinmal selbst zu behandeln.
    MfG
    EDIT: Titel geändert

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

  • Wie wärs, wenn du mal in die Hilfe schaust und da suchst wie man Textdateien ausliest?
    Das funktioniert mit file_text_open_read("Deine Textdatei.txt"). Dann musst du eben Zeile für Zeile mit einer Schleife durchgehen solange du nicht am Ende der Datei bist. Für dein Problem:

    Spoiler anzeigen

    GML-Quellcode

    1. var file, str, found;
    2. found = false;
    3. str = "";
    4. file = file_text_open_read("Config.txt");
    5. while(!file_text_eof(file) && !found){
    6. str = file_text_read_string(file);
    7. if(string_is_in(str,"playerspeed.max =")){//Die Funktion string_is_in() definieren wir uns gleich als script ;)
    8. //Schau ob in der aktuellen Zeile der String "playerspeed.max =" drin ist
    9. str = string_replace(str,"playerspeed.max =","");
    10. image_speed = real(str);
    11. found = true;
    12. }
    13. file_text_readln(file);//Spring zur nächsten Zeile
    14. }
    15. file_text_close(file);//Und die Textdatei IMMER schließen, wenn man fertig mit dem Lesen bzw. Schreiben
    Alles anzeigen

    So noch der (oder das ?( ) script:

    Spoiler anzeigen

    GML-Quellcode

    1. //argument0 - string//
    2. //argument1 - substring//
    3. var str, temp;
    4. str = argument0;
    5. temp = str;
    6. str = string_replace(str, argument1,"");
    7. return !(str == temp);

    Sollte eigentlich funktionieren (Hier noch ein Beispiel). Dein Problem mit dem 1 of 9 check ich nicht ganz. Hoffe, dass ich dir helfen konnte.

    MfG Trixt0r

    Albert Einstein schrieb:

    Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind.
  • Trixt0r schrieb:

    Wie wärs, wenn du mal in die Hilfe schaust und da suchst wie man Textdateien ausliest?
    Das funktioniert mit file_text_open_read("Deine Textdatei.txt"). Dann musst du eben Zeile für Zeile mit einer Schleife durchgehen solange du nicht am Ende der Datei bist. Für dein Problem:

    Spoiler anzeigen

    GML-Quellcode

    1. var file, str, found;
    2. found = false;
    3. str = "";
    4. file = file_text_open_read("Config.txt");
    5. while(!file_text_eof(file) && !found){
    6. str = file_text_read_string(file);
    7. if(string_is_in(str,"playerspeed.max =")){//Die Funktion string_is_in() definieren wir uns gleich als script ;)
    8. //Schau ob in der aktuellen Zeile der String "playerspeed.max =" drin ist
    9. str = string_replace(str,"playerspeed.max =","");
    10. image_speed = real(str);
    11. found = true;
    12. }
    13. file_text_readln(file);//Spring zur nächsten Zeile
    14. }
    15. file_text_close(file);//Und die Textdatei IMMER schließen, wenn man fertig mit dem Lesen bzw. Schreiben
    Alles anzeigen

    So noch der (oder das ?( ) script:

    Spoiler anzeigen

    GML-Quellcode

    1. //argument0 - string//
    2. //argument1 - substring//
    3. var str, temp;
    4. str = argument0;
    5. temp = str;
    6. str = string_replace(str, argument1,"");
    7. return !(str == temp);

    Sollte eigentlich funktionieren (Hier noch ein Beispiel). Dein Problem mit dem 1 of 9 check ich nicht ganz. Hoffe, dass ich dir helfen konnte.

    MfG Trixt0r


    PENG! Das ist GENAU das, was ich gesucht habe! VIELEN VIELEN DANK!
    Mit 1 of 9 kann ich auch anders formulieren:
    Sagen wir einfach, dass "playerspeed = 3 of 10" ist, dann soll "3" der aktuelle Speed sein und "10" ist der maximale, dass bringt zwar nichts, da der speed ja immer auf 3 bleibt, aber trozdem. Geht dies?
  • Ja klar geht das. Habs mal umgeschrieben, klick.

    Aber du musst wissen, dass wenn "playerspeed.max = " gefunden wurde immer die erste Zeile, die diesen String enthält, ausgelesen wird und die restlichen Zeilen werden nicht beachtet. Ich weiß ja nicht ob du das so willst, aber kannst du ja auch umändern. ;)

    MfG

    Albert Einstein schrieb:

    Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind.