Einlesen und auslesen von Werten

  • GM 7

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

  • Einlesen und auslesen von Werten

    Hi, hab mal probiert mit Text-Dateien die erstellt werden, Werte einlesen lassen und beim nächsten öffnen wieder auslesen zu lassen, aber irgendwie versteh ich das nicht richtig, auch mit der Hilfe nicht.
    Kann mir das jemand vllt Step by Step erklären?

    edit:

    Habs mal probiert, weiß jemand warums da ein Error kommt, die Text-Datei vorher eventuell löschen, den Wert hab ich selber reingeschrieben :P und wie kann ich die schreibschützen oder so, dass die nicht jeder ändern kann, weil bei nem Spiel könnte man dann doch so ganz einfach cheaten

    Download GMK
    Gruß Gamer

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

  • Wenn du das mit file_text_open_read(fname) machen möchtes, musst du (z.B.) am Anfang des Spieles im Game start event Das hineinschreiben (statt fname nimmst du den Namen das Documentes!)

    Wenn du einen Wert hineinschreiben möchtest nimmst du: file_text_write_string(fileid,str) (str ist das was du hineinschreiben möchtest)

    Zum auslesen nimmst du: file_text_read_string(fileid)

    Müsste so eigendlich funktionieren!

    Ich bin keine Signatur... Ich putze hier nur!
  • Ne, funktioniert genau so nicht.

    Am Anfang wenn nichts erstellt ist, dann funktionierts ja, aber dann wenn ich die Datei schließe dann kommt der Error: File is not opened for reading, dabei soll die Datei gar nicht gelesen werden.
    Gruß Gamer
  • Ich würde es auch mit .ini Dateien machen!
    Ist einfacher!
    Ich finde den Fehel bei .txt auch nicht!

    INI Dateien
    ini_open(name) Öffnet die INI-Datei mit dem gegebenen Namen. Die Datei muss sich im selben Ordner wie das Spiel befinden!
    ini_close() Schliesst die aktuell geöffnete INI-Datei.
    ini_read_string(section,key,default) Liest den String mit dem Namen key im Bereich section. Existiert der String nicht, wird default zurückgegeben.
    ini_read_real(section,key,default) Liest die Zahl mit dem Namen key im Bereich section. Existiert die Zahl nicht, wird default zurückgegeben.
    ini_write_string(section,key,value) Schreibt einen String mit dem Namen key in den Bereich section.
    ini_write_real(section,key,value) Schreibt eine Zahl mit dem Namen key in den Bereich section.
    ini_key_exists(section,key) Gibt zurück, ob der Name key in dem Bereich section existiert.
    ini_section_exists(section) Gibt zurück, ob der Bereich section existiert.
    ini_key_delete(section,key) Löscht den Schlüssel key aus dem Bereich section.
    ini_section_delete(section) Löscht den Bereich section.

    Ich bin keine Signatur... Ich putze hier nur!
  • GML-Quellcode

    1. var file;
    2. file= file_text_open_read("filename")//Öffnen für lessen;Id wird in file gescreiben
    3. var punkte;
    4. punkte= file_text_read_string(file);
    5. file_text_close(file)
    6. //Zum schreiben
    7. var file_1;
    8. file_1= file_text_open_write("FILENAME");//Öffnen für schreiben
    9. file_text_write_string(file,punkte);
    10. file_text_close(file);

    Das steht doch in der Hielfe...
    So das liest die Punkte aus.Nur als Beispiel.
    MfG Henrik1235
    @KröteGAMES: Beende nicht jeden Satz mit einen "!".Und erzähl nicht so ne Quack das mit dem

    GML-Quellcode

    1. file_text_open_read/write();

    ins Game Start event kommt...
    wupto.net/ Nicht meine Seite!
    We love Koalas.

    GM-D-Spam-o-Meter: 32%
  • Das muss so aussehen!:

    GML-Quellcode

    1. if file_exists("counter.txt")
    2. {
    3. file=file_text_open_read("counter.txt");
    4. file_text_read_string(file);
    5. file_text_close(file);
    6. }
    7. else
    8. {
    9. count = 0;
    10. }



    file_text_open_read gibt eine Id zurück, die man in einer Variable speichert. Diese Id braucht man für die weiteren Schritte (lesen/schreiben, schließen).
    Viele Grüße, maxda

    Edit: Mist, da war einer schneller! :pinch:
  • okay danke und im game end, wie muss das da aussehen, muss ich dann

    GML-Quellcode

    1. file = file_text_open_write("counter.txt")

    machen?

    edit: Jetzt funkts beim ersten Mal, aber beim 2. öffnen da kennt er die variable count nicht.

    @ Henrik: lass ihn doch seine ausrufezeichen machen, jeder hat seinen eigenen Schreibstil.


    edit2: kann mir das auch noch jemand mit der ini-Datei erklären.
    Was ist zb. der Bereich und was muss bei key und was bei value rein???
    Gruß Gamer

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

  • Bei ini:
    section = Bereichname(1)
    key = Name (2)
    value = Wert (3)

    Beispiel (so sieht es in der .ini Datei aus):
    [section] (1 kann verändert werden. KEINE KLAMMERN MITSCHREIBEN!!!)
    Name (2 Der Name des "Untermenüs")=value (3 Ist der Wer. Zum Beispiel eine Variabel.)

    Beispiel aus GM Hilfe:
    (1)[Form]
    (2)Top=100
    (2)Left=100
    (2)Caption=Das beste Spiel aller Zeiten
    (1)[Game]
    (2)MaxScore=12324

    Ich bin keine Signatur... Ich putze hier nur!
  • Achso ok danke. Dachte wenn da vorne dran ini steht, dass es dann automatisch ne ini wird.

    edit: hab jetzt einfach überall wo "counter" stand, "counter.ini" hingeschrieben, aber der gleiche error kommt, warum?

    edit2: ich blicks net, kannst mal bitte ein kurzes example machen?
    Gruß Gamer
  • Stimmt auch soweit. Ob ".ini" hintersteht oder nicht, macht keinen Unterschied. Der Fehler liegt wo anders. Der "key"-wert muss ein String sein.
    Und zum besseren auslesen empfiehlt sich auch mit "ini_read_real()" und "ini_write_real()" zu arbeiten, da es unnötig ist eine Zahl erst in einen String umzuwandeln, bevor man sie in die ini schreibt und sie zurückzuwandeln wenn man sie wieder ausliest.

    Das ganze könnte man so lösen:
    Create Event

    GML-Quellcode

    1. count=0
    2. if file_exists("counter.ini")
    3. {
    4. ini_open("counter.ini");
    5. count=ini_read_real("section","key",0);
    6. ini_close();
    7. }


    Game End Event

    GML-Quellcode

    1. ini_open("counter.ini")
    2. ini_write_real("section","key",count);
    3. ini_close()


    Hoffe ich konnte dir helfen^^
  • Dankeschön, endlich funktionierts, juhu. :thumbsup: :thumbsup: :thumbsup:

    Hab nur noch eine Frage:
    Da es jetzt ziemlich einfach ist, das Spiel zu hacken, wollt ich fragen, wie man die Datei verschlüsseln kann, das man nicht einfach etwas ändern kann?
    Gruß Gamer
  • Eine ganz einfache Methode, Werte einigermaßen zu verschlüsseln wäre wohl sie mit irgendeiner hohen Zahl beim speichern zu multiplizieren und beim auslesen wieder mit dieser zu dividieren.
    Beispiel:
    Auslesen

    GML-Quellcode

    1. count=ini_read_real("section","key",count)/123456;


    Speichern

    GML-Quellcode

    1. ini_write_real("section","key",count*123456);


    Wie sicher diese Methode ist weiß ich nicht, aber da nur Du die Zahl kennst mit der multipliziert wird, ist es schwierig die Werte zu manipulieren.
  • The Gamer schrieb:

    Ja, das wär ne Methode, aber ich bewzeifel dass die sehr sicher ist.

    Aber was ich meinte, ob man die Datei iwie schreibschützen oder so in der Art kann?
    Nun man muss nur die Zahl erhöhen... Nehm ne dll, z.b die xor dll.
    #edit
    Eingelich nicht.
    wupto.net/ Nicht meine Seite!
    We love Koalas.

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

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