Wie speichere ich txt-files nummeriert, abhängig von vorhandenen nummerierten bmp-files?

  • GM 8
  • Wie speichere ich txt-files nummeriert, abhängig von vorhandenen nummerierten bmp-files?

    Hallo Experten!

    Nachdem mir so prima geholfen wurde bei meier Frage "wie lösche ich viele txt-files", wage ich es nochmals mit einem Problem.



    Zur Information:

    Meine Spiele werden von vielen verschiedenen Spielern aufgerufen, indem für den aktuellen Spieler ein bmp-file mit einer bestimmten Nummer aufgerufen wird.

    Wenn ein Spiel beendet wird, wird ein txt-file mit der selben Nummer wie das bmp-file gespeichert, in dem die erreichten Prozente enthalten sind.

    dies habe ich derzeit mit dem folgenden Script gelöst.

    if
    file_exists ('sp01.bmp')//aktueller Spieler
    {
    f = file_text_open_write ("name01_1a1.txt"); //die Datei öffnen
    file_text_write_string(f,string(global.s));
    file_text_write_string(f,'%');
    file_text_close(f); //diese Datei schließen
    }
    if
    file_exists ('sp02.bmp')
    {
    f = file_text_open_write ("name02_1a1.txt"); //die Datei öffnen
    file_text_write_string(f,string(global.s));
    file_text_write_string(f,'%');
    file_text_close(f); //diese Datei schließen
    }
    if
    file_exists ('sp03.bmp')
    {
    f = file_text_open_write ("name03_1a1.txt"); //die Datei öffnen
    file_text_write_string(f,string(global.s));
    file_text_write_string(f,'%');
    file_text_close(f); //diese Datei schließen
    }
    if
    file_exists ('sp04.bmp')
    {
    f = file_text_open_write ("name04_1a1.txt"); //die Datei öffnen
    file_text_write_string(f,string(global.s));
    file_text_write_string(f,'%');
    file_text_close(f); //diese Datei schließen
    }
    if
    file_exists ('sp05.bmp')
    {
    f = file_text_open_write ("name05_1a1.txt"); //die Datei öffnen
    file_text_write_string(f,string(global.s));
    file_text_write_string(f,'%');
    file_text_close(f); //diese Datei schließen
    }
    if
    file_exists ('sp06.bmp')
    {
    f = file_text_open_write ("name06_1a1.txt"); //die Datei öffnen
    file_text_write_string(f,string(global.s));
    file_text_write_string(f,'%');
    file_text_close(f); //diese Datei schließen
    }
    if
    file_exists ('sp07.bmp')
    {
    f = file_text_open_write ("name07_1a1.txt"); //die Datei öffnen
    file_text_write_string(f,string(global.s));
    file_text_write_string(f,'%');
    file_text_close(f); //diese Datei schließen
    }
    if
    file_exists ('sp08.bmp')
    {
    f = file_text_open_write ("name08_1a1.txt"); //die Datei öffnen
    file_text_write_string(f,string(global.s));
    file_text_write_string(f,'%');
    file_text_close(f); //diese Datei schließen
    }


    Dazu meine Frage: Gibt es eine einfachere Möglichkeit, diese Files genau mit der selben Nummer wie das bmp-file zu speichern?

    Es wäre eine wesentliche Erleichterung, wenn ich nicht bei jedem Spiel eine ganze Skriptkolonne schreiben müsste.



    Ich danke schon im Voraus

    MfG Hubsl
  • Das sollte funktionieren:

    GML-Quellcode

    1. a = "0";
    2. i = 1;
    3. while(file_exists(working_directory+"\sp"+a+string(i)+".bmp")) //Wenn die Datei "sp" + a + string(i) + ".bmp" (z.B. wenn a = "0" und i = 4: "sp04.bmp") existiert, führt er den Code aus.
    4. {
    5. f = file_text_open_write ("name"+a+string(i)+"_1a1.txt"); //die Datei öffnen
    6. file_text_write_string(f,string(global.s));
    7. file_text_write_string(f,'%');
    8. file_text_close(f); //diese Datei schließen
    9. i += 1; //zu i wird 1 addiert
    10. if(i>=10){a=""} //Wenn i größer oder gleich 10 ist, wird a auf "" gesetzt, das heißt, es wird keine 0 mehr vorangestellt
    11. }
    Alles anzeigen


    Edit: Haha! Erster^^

    L.G. Tobi97
    8|
  • GML-Quellcode

    1. for (i = 0; i < anzahlspielerbzwbilder; i+=1)
    2. {
    3. if file_exists ('sp0'+string(i+1)+'.bmp')
    4. {
    5. f = file_text_open_write ("name0"+string(i+1)+"_1a1.txt"); //die Datei öffnen
    6. file_text_write_string(f,string(global.s));
    7. file_text_write_string(f,'%');
    8. file_text_close(f); //diese Datei schließen
    9. }
    10. }

    du musst halt die anzahl bilder bzw spieler oder wie auch immer wissen..
    kannst ja erst das verzeichnis durchchecken wieviele files drinn sind oder sowas..


    edit: hmm, ja, nicht ganz korrekt... nenn deine bilder aber besser so um, dass man leicht durchiterieren kann, ohne grosse konversionen... aber am besten hättest du einfach eine .ini datei, in der du alle spieler abspeicherst, inklusive pfad zum entsprechenden bild... dann hättest das zentral abgespeichert und es wär weniger fehleranfällig denk ich..
    "das war meine letzte flamewar PM an dich ."

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

  • GML-Quellcode

    1. var i,f,str;
    2. i=0;
    3. str="0"
    4. while(file_exists("sp"+str+string(i)+".bmp"))
    5. {
    6. f = file_text_open_write ("name"+str+string(i)+"_1a1.txt"); //die Datei öffnen
    7. file_text_write_string(f,string(global.s)+"%");
    8. file_text_close(f); //diese Datei schließen
    9. if (i>9)
    10. {
    11. str="";
    12. }
    13. i+=1;
    14. }
    Alles anzeigen

    Das sollte es sein.
    #edit
    8|
    wupto.net/ Nicht meine Seite!
    We love Koalas.

    GM-D-Spam-o-Meter: 32%

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

  • @blubberblub: dir ist da ein Fehler unterlaufen:

    GML-Quellcode

    1. if file_exists ('sp0'+string(i+1)+'.bmp')

    Also prüft er, wenn i z.B. 16, ob die Datei mit dem Namen sp016.bmp existiert. Ich glaube, dass die Datei aber sp_16.bmp heißen müsste^^

    L.G. Tobi97
    8|
  • Danke für die Hilfe, nun habe ich die Aufgabe etwas einfacher gelöst.

    Die Spielernummer steht jetzt in der globalen Variable global.spieler



    Hier mein funktionierendes Skript:



    a = "0";//Variable Vorzahl 0 für die ersten 9 Spieler
    i = global.spieler;//Spielernummer
    if(i>=10){a=""} //Wenn i größer oder gleich 10 ist, wird a auf "" gesetzt, das heißt, es wird keine 0 mehr vorangestellt

    f = file_text_open_write ("msp"+a+string(i)+"_1a1.txt"); //die Datei öffnen, wenn keine vorhanden, dann erzeugen
    file_text_write_string(f,string(global.s));//erreichte Prozente eintragen
    file_text_write_string(f,'%');// Prozentzeichen eintragen
    file_text_close(f); //diese Datei schließen



    Bis zum nächstenmal



    Hubsl
  • file_text_write_string(f,string(global.s));//erreichte Prozente eintragen
    file_text_write_string(f,'%');// Prozentzeichen eintragen
    Du kannst dir eine Zeile Code ersparen wenn dus zusammenfasst:

    GML-Quellcode

    1. file_text_write_string(f,string(global.s)+'%');//erreichte Prozente eintragen

    © 2008 by Teamgrill Productions
  • Benutzer online 1

    1 Besucher