szmalu Opublikowano 13 Stycznia 2013 Udostępnij Opublikowano 13 Stycznia 2013 W GM:s nie ma już funkcji game_save i game_load, a i tak były kiepskie, więc stan gry (najważniejsze wartości globalne) wczytuję z pliku .ini, który sam uprzednio utworzyłem i dodałem do Included Files. Mam od tego skrypty, które uruchamiam przed przejściem do następnego rooma. Global_left_pressed: GML if room=room1 { if global.intro=0 { load_game() room_goto(teksty) } else { load_game() room_goto_next() } } Skrypt load_game: GML ini_open('save.ini') global.money=ini_read_real('head','money',900) global.wave=ini_read_real('head','wave',0) global.rldlv=ini_read_real('head','rldlv',5) global.critlv=ini_read_real('head','critlv',5) global.acclv=ini_read_real('head','acclv',5) global.intro=ini_read_real('head','intro',0) ini_close() Plik save.ini: [head] wave = 0 money = 5000 rldlv = 3 critlv = 3 acclv = 3 intro = 0 Jak widzicie, np. global.money ma przypisaną wartość 5000, a w razie błędu domyślna wartość to 900. I tu jest problem - jak odpalam grę, money wynosi 0 (ale skąd?), a np. rldlv wynosi 1 (a powinno być 3, ewentualnie 5). Wyjaśni mi to ktoś? Ja już siedzę nad tym prawie od rana i nie mam pojęcia o co chodzi :( Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ediepl Opublikowano 13 Stycznia 2013 Udostępnij Opublikowano 13 Stycznia 2013 Zamiast wczytywać z pliku, przypisz do wartości money ręcznie, jeśli nadal będzie wynosić zero znaczy to że zmieniasz tę wartość gdzieś indziej. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
szmalu Opublikowano 13 Stycznia 2013 Autor Udostępnij Opublikowano 13 Stycznia 2013 Jak zamiast load_game() przypisuję wartości ręcznie, to jest ok, w dodatku wcześniej sprawdzałem kod całej gry, czy gdzieś nie nadpisuję tych wartości. Czyli błąd leży gdzieś przy wczytywaniu z pliku. Ale w takim razie, skąd się wzięły w ogóle te liczby? Powinien się chociaż default ustawić. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ediepl Opublikowano 13 Stycznia 2013 Udostępnij Opublikowano 13 Stycznia 2013 W GM8 działa poprawnie, ale zawsze możesz użyć plików binarnych. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
szmalu Opublikowano 13 Stycznia 2013 Autor Udostępnij Opublikowano 13 Stycznia 2013 Ach, głupie Studio. Spróbuję z binarnymi. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ediepl Opublikowano 13 Stycznia 2013 Udostępnij Opublikowano 13 Stycznia 2013 Jak byś chciał zapisać większą liczbę niż 255 to: Zapis: GML file_bin_write_byte(plik, liczba & 255) file_bin_write_byte(plik, (liczba >> 8) & 255) Odczyt: GML liczba = file_bin_read_byte(plik); liczba = liczba | (file_bin_read_byte(plik) << 8); PS: Zasięg to 0 - 65535 (short) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
szmalu Opublikowano 13 Stycznia 2013 Autor Udostępnij Opublikowano 13 Stycznia 2013 A czy będzie nieładnie, jeśli zrobiłbym to na zwykłym pliku tekstowym? Są łatwiejsze w obsłudze niż pliki binarne, a tyle by mi wystarczyło. EDIT: Problem jest chyba jednak większy, podejrzewam że na binarnych byłoby tak samo. Mianowicie, zmieniłem system zapisu do ini na zapis do txt. Odpalam grę (jeszcze w gm), wszystko jest ustawione tak jak wpisywałem, jest ok. Money zmieniło się z 5000 na 5400, bo tyle zarobiłem w grze. OK. Kompiluję do exe, włączam - money wynosi 5400, no dobra, zmienię ręcznie plik "save.txt" i ustawiam na 5000 znowu. Odpalam - jest 5400! Gdzie to może się zapisywać? Sprawdziłem wszystkie pliki w folderze, nigdzie nie ma tego 5400. To się w exe wpisało, czy co? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ediepl Opublikowano 13 Stycznia 2013 Udostępnij Opublikowano 13 Stycznia 2013 Faktycznie dziwne, zamień ścieżkę z: GML 'save.txt' na: GML working_directory+'\save.txt' I zobacz czy działa poprawnie. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
szmalu Opublikowano 13 Stycznia 2013 Autor Udostępnij Opublikowano 13 Stycznia 2013 Już tak miałem wpisane. Całe szczęście da się nad tym zapanować - można po załadowaniu danych z plików zadeklarować je jeszcze raz w grze na te właściwe wartości, uruchomić ją w gm i potem usunąć te linijki, zostawić same skrypty, i skompilować. Nie powinno tak być, ale to zawsze jakiś sposób żeby działało. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 13 Stycznia 2013 Administratorzy Udostępnij Opublikowano 13 Stycznia 2013 Pliki INI w GM:S są zapisywane razem z grą w C:/Users/NazwaUsera/AppData/Local/NazwaGry i tam należy ich szukać. Jak masz je gdzie indziej, to ich nie wczyta, bo GM:S działa w tzw. Sandboxie. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
szmalu Opublikowano 13 Stycznia 2013 Autor Udostępnij Opublikowano 13 Stycznia 2013 O matko, dzięki gnychu, nie wiedziałem o tych sandboxach, a zmyliła mnie obecność tego pliku w zwykłym folderze z grą (to po co on tam jest). Tak myślałem, że gdzieś to jest ukryte, ale nie wiedziałem gdzie :D Dzięki. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Gibki Kaktus Opublikowano 13 Stycznia 2013 Udostępnij Opublikowano 13 Stycznia 2013 A jeśli gra będzie w HTML5 na jakiejś stronce i będzie wczytywanie za pomocą tego sposobu, to ten plik zapisuje się też tutaj: C:/Users/NazwaUsera/AppData/Local/NazwaGry ? Czy może gdzieś na stronie? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
szmalu Opublikowano 13 Stycznia 2013 Autor Udostępnij Opublikowano 13 Stycznia 2013 "HTML5 / Windows 8 (JS) - Everything is done through the local storage." ~ dokumentacja. Tylko tyle jest o tym. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się