Ich habe ein Problem mit meinem Secret-Speichersystem.
Das System ist so aufgebaut, das es die Geldmenge im Spiel in 2 Bytes umwandelt, da noch 100 Bytes dazupackt, in denen gespeichert ist, welche Secrets freigeschaltet wurden und welche nicht und das dann alles in eine Textdatei schreibt.
Das Problem ist: in den meisten fällen klappts aber manchmal wird ein Byte einfach 'vergessen', was in einer Verschiebung der 'Secret-Bytes' (z.b. vorher war nur secret 2 freigeschaltet, hinterher nur secret 1...) und Änderung der Geldmenge resultiert.
Das ist natürlich fatal wenn man sich vorher für viel Geld ein teures Secret erkauft hat nur, um es dann wieder gesperrt zu sehen.
Ich habe keine Ahnung, warum das passiert und fange schon an, zu glauben, das der Fehler beim Gamemaker liegt.
Hier ist der Code für das System:
scr_encode_number:
Verwandelt eine positive nummer in 2 Bytes.
Alles anzeigen
scr_decode_number:
Verwandelt 2 Bytes in eine Nummer.
scr_setup_secretfile:
Erstellt eine neue, leere Secret-Speicherdatei.
scr_save_secrets:
Speichert die Geldmenge und die Secrets in der Textdatei ab.
Alles anzeigen
scr_load_secrets:
Lädt die Geldmenge und die Secrets ins Spiel.
Alles anzeigen
Ich hoffe, jemand kann mir helfen denn hier bin ich mit meinem Latein am Ende.
Das System ist so aufgebaut, das es die Geldmenge im Spiel in 2 Bytes umwandelt, da noch 100 Bytes dazupackt, in denen gespeichert ist, welche Secrets freigeschaltet wurden und welche nicht und das dann alles in eine Textdatei schreibt.
Das Problem ist: in den meisten fällen klappts aber manchmal wird ein Byte einfach 'vergessen', was in einer Verschiebung der 'Secret-Bytes' (z.b. vorher war nur secret 2 freigeschaltet, hinterher nur secret 1...) und Änderung der Geldmenge resultiert.
Das ist natürlich fatal wenn man sich vorher für viel Geld ein teures Secret erkauft hat nur, um es dann wieder gesperrt zu sehen.
Ich habe keine Ahnung, warum das passiert und fange schon an, zu glauben, das der Fehler beim Gamemaker liegt.
Hier ist der Code für das System:
scr_encode_number:
Verwandelt eine positive nummer in 2 Bytes.
GML-Quellcode
scr_decode_number:
Verwandelt 2 Bytes in eine Nummer.
scr_setup_secretfile:
Erstellt eine neue, leere Secret-Speicherdatei.
scr_save_secrets:
Speichert die Geldmenge und die Secrets in der Textdatei ab.
GML-Quellcode
- if(!file_exists(working_directory+"\unrat.dat"))
- scr_setup_secretfile();
- var f,str,i;
- str=scr_encode_number(global.credits);
- for(i=0;i<100;i+=1)
- {
- str+=chr(floor(random(120)+1)*2+global.secret[i]);
- }
- f=file_text_open_write(working_directory+"\unrat.dat")
- file_text_write_string(f,str);
- file_text_close(f);
scr_load_secrets:
Lädt die Geldmenge und die Secrets ins Spiel.
GML-Quellcode
- var str,f;
- if(!file_exists(working_directory+"\unrat.dat"))
- scr_setup_secretfile();
- f=file_text_open_read(working_directory+"\unrat.dat")
- str=file_text_read_string(f);
- file_text_close(f);
- str=string_copy(str,1,2);
- global.credits=scr_decode_number(str);
- for(i=0;i<100;i+=1)
- {
- global.secret[i]=scr_get_secret_load(i)
- }
Ich hoffe, jemand kann mir helfen denn hier bin ich mit meinem Latein am Ende.