image_index per Textdatei ändern

  • GM 8
  • image_index per Textdatei ändern

    Hallo liebe Community!
    Ich möchte per Textdatei den Index eines Spielers ändern. Ich habe diesen Code:

    GML-Quellcode

    1. image_speed = 0
    2. image_index = 0
    3. var datei, str, gefunden;
    4. gefunden = false;
    5. str = "";
    6. datei = file_text_open_read("file.txt");
    7. while(!file_text_eof(datei) && !gefunden){
    8. str = file_text_read_string(datei);
    9. if(string_is_in(str,"spielerid =")){
    10. str = string_replace(str,"spielerid =","");
    11. spielerid = real(str);
    12. //"INDEX" ist die Instanz
    13. with INDEX image_index = "" +string(spielerid)
    14. show_message('Der index ist ' +string(spielerid))
    15. gefunden = true;
    16. }
    17. file_text_readln(datei);
    18. }
    19. Er zeigt die Message an und gibt auch den richtigen Wert, ändert aber nicht den Index. Ich habe versucht für einen Moment image_speed auf 1 und dann wieder schnell auf 0 zu stellen, geht aber nicht. Ich habe die Lösung bestimmt direkt vor meinen Augen...
    20. MfG Clark
    21. file_text_close(datei);
    Alles anzeigen

    DigitalClark
  • Das Problem daran ist (und schlagt mich bitte wenn ich falsch liege),
    dass du einen STRING aus der datei ausliest und diesen als Sprite zuweist.

    Die Sprite_index-es sind jedoch IDs mit denen der GM das richtige Sprite identifizieren kann.

    Also wird das direkte laden eines Sprite Namens nicht viel Bringen da dies ein String und keine ID mehr ist.

    Es gäbe da 2 Möglichkeiten:

    1. (weiss nicht ob das möglich ist) das umwandeln des Strings in einen "Variablennamen"
    2. Statt den Namen, einen Wert zu speichern. Du liest den Wert aus, un je nachdem was dies für ein wert ist (0,1,2, etc...) weisst du ein anderes Sprite zu.
    Hierführ würde sich SWITCH sehr gut eignen.
  • LEWA schrieb:

    Hierführ würde sich SWITCH sehr gut eignen.

    Oh :(
    Ich kenn mich mit Variablen, Strings etc. nicht so gut aus (sehr peinlich).
    Könnte ich ein Beispiel haben? Vielleicht? :S

    EDIT: Hab's gelöst :) So geht's! Einfach mal experimentiert, danke!

    GML-Quellcode

    1. image_speed = 0
    2. image_index = 0
    3. var datei, str, gefunden;
    4. gefunden = false;
    5. str = "";
    6. datei = file_text_open_read("file.txt");
    7. while(!file_text_eof(datei) && !gefunden){
    8. str = file_text_read_string(datei);
    9. if(string_is_in(str,"spielerid =")){
    10. str = string_replace(str,"spielerid =","");
    11. spielerid = real(str);
    12. switch(image_index){
    13. case 0: image_index = 0
    14. case 1: image_index = 1
    15. case 2: image_index = 2}
    16. show_message('Der index ist ' +string(spielerid))
    17. gefunden = true;
    18. }
    19. file_text_readln(datei);
    20. }
    21. file_text_close(datei);
    Alles anzeigen

    DigitalClark

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

  • Sicher! ;D

    Strings ist einfach gesagt eine Zeichenkette.
    Beispiel:

    GML-Quellcode

    1. Variable = "KuckucksUhr";


    Nun hast du eine Variable mit dem String ""KuckucksUhr" initialisiert.
    Strings werden immer in Anführungszeichen Initialisiert. Würdest du sie weglassen, würde der GM denken dass "KuckucksUhr" eine Variable ist.

    Hier würdest du z.B: der Variable den Wert der Variable KUCKUCKSUHR zuweisen:

    GML-Quellcode

    1. Variable = KuckucksUhr;


    Zusammengefasst:
    angegebener Name OHNE Anführungszeichen = Variable.
    Mit Anführungszeichen = String.

    Darum funktioniert das nicht. Du ladest den Wert als String rein. Der GM erkennt das nicht als einen Variablennamen, sondern als stinknormalen String.
    Ob man diesen String jetzt irgendwie in einen Index umwandeln kann weiss ich nicht.
  • LEWA schrieb:

    Du ladest den Wert als String rein.

    Das heißt "Du lädst". 'Tschuldigung das mach' ich auch immer bei meinen Freunden ich hab da so 'nen "Fummel" :)
    Aber danke hab's gelöst :D Vielen Dank, LEWA!

    GML-Quellcode

    1. //Fertiger Script.
    2. image_speed = 0
    3. image_index = 0
    4. var datei, str, gefunden;
    5. gefunden = false;
    6. str = "";
    7. datei = file_text_open_read("file.txt");
    8. while(!file_text_eof(datei) && !gefunden){
    9. str = file_text_read_string(datei);
    10. if(string_is_in(str,"spielerid =")){
    11. str = string_replace(str,"spielerid =","");
    12. spielerid = real(str);
    13. switch(image_index){
    14. case 0: image_index = 0
    15. case 1: image_index = 1}
    16. show_message('Der index ist ' +string(spielerid))
    17. gefunden = true;
    18. }
    19. file_text_readln(datei);
    20. }
    21. file_text_close(datei);
    Alles anzeigen

    DigitalClark
  • Benutzer online 2

    2 Besucher