MetalowyNerd Opublikowano 26 Września 2016 Opublikowano 26 Września 2016 Witam. Siedzę nad tym już kilka godzin, i za cholerę nie wiem, co zrobić, żeby zadziałało. Zrobiłem w grze na razie opcję tylko dla mnie, w której po otwarciu menu, pojawia się menu: F1 - zapisz grę, F2 - wczytaj grę, F3 - usuń zapis (nie działa), F4 - zrestartuj grę, (tekst) Zapis istnieje. F1 i F2 działają dobrze. Pod przyciskiem F3 jest skrypt: GML if(file_exists("savegame.sav")) file_delete("savegame.sav"); , jednak nie usuwa on wcale zapisu, bo jeśli po F3 wcisnę F2, gra się znowu wczytuję. To jeden problem. Moim drugim problemem natomiast jest tekst ostatniej linijki, "Zapis istnieje/nieistnieje". Chodzi w tym o to, żeby napis zmieniał się, jeśli plik zapisu istnieje, a jakoś widzę, że ten tekst nie ma na to ochoty xd. Nie wiem, co robię źle. Oto kod do tego tekstu: W STEP'IE GML if(file_exists("savegame.sav")==true) //if(file_exists("savegame.sav")) też nie działało... saveExists = true; else saveExists = false; W DRAW'IE GML if(saveExists == true) draw_text(10,50,"Save exists"); else draw_text(10,50,"No save"); Proszę o jakąś podpowiedź doświadczonych ;), bo myślałem, że mi to z pół godzinki zajmie, to oczywiście nieee, schody zawsze muszą być xD, przy każdej pierdółce.
Uzjel Opublikowano 26 Września 2016 Opublikowano 26 Września 2016 Pokaż jeszcze jak zapisujesz i wczytujesz grę.
MetalowyNerd Opublikowano 27 Września 2016 Autor Opublikowano 27 Września 2016 Zapisuję tak: GML if(file_exists("gamesave.sav")) { file_delete("gamesave.sav"); } game_save("gamesave.sav"); , natomiast wczytuję tak: GML if(file_exists("gamesave.sav")) { game_load("gamesave.sav"); } Na prawdę, nie rozumiem, czemu tak prosty mechanizm nie chce dzialać :/.
MetalowyNerd Opublikowano 3 Października 2016 Autor Opublikowano 3 Października 2016 Nie, w Included Files nie ma absolutnie nic. Coś czuję, że to nie taki prosty temat :/
I am Lord Opublikowano 3 Października 2016 Opublikowano 3 Października 2016 A dodaj do include pusty plik "gamesave.sav"
MetalowyNerd Opublikowano 3 Października 2016 Autor Opublikowano 3 Października 2016 Niestety, dzieje sie dokładnie to samo :/. Nie wiem już, co mogę zrobić. Problem wygląda banalnie na pierwszy rzut oka
Ignatus Opublikowano 4 Października 2016 Opublikowano 4 Października 2016 Zrób to z .ini pójdzie łatwiej
I am Lord Opublikowano 6 Października 2016 Opublikowano 6 Października 2016 Przed nazwami plikow dodaj working_directory+"/" moze to cos da, bo ja tak robie i nie mam problemu z tym
MetalowyNerd Opublikowano 7 Października 2016 Autor Opublikowano 7 Października 2016 Niestety, zmiana rozszerzenia na ".ini" nic nie dała, tak samo jak podmienienie "gamesave.ini" na "working_directory+"/gamesave.ini"". Może to bug GM:S'a? Niedopracowanie... nie wiem, ale to niby taka banalna rzecz, a stawia opór konkretnie :/. Próbowałem też z rozszerzeniem ".dat" ale GM:S nic sobie z tego nie robi. Macie jeszcze jakieś pomysły? Nawet te najdziwniejsze i najbardziej skomplikowane, może w końcu się uda
Threef Opublikowano 7 Października 2016 Opublikowano 7 Października 2016 Rozszerzenie nie ma znaczenia. Możesz zapisywać bez. A komentarza o użyciu ini nie skomentuję. Jeżeli wszystko robisz dobrze to problem pewnie leży w śmieciach albo jest bugiem GM:S (co nie powinno już mieć miejsca). Jakbyś jeszcze nie wiedział to GM:S obsługuje dane w dziwny sposób. Zapisywać możesz tylko i wyłącznie do working_directory czyli do folderu gry w %appdata%. Za to odczytywać możesz aż z trzech lokalizacji. working_directory, folderu instalacyjnego gry i program_directory. Dwa ostatnie zazwyczaj są te same, ale zdarzają się wyjątki. Twój problem może być taki że masz gdzieś plik który dla GM jest tylko "do odczytu". GM otwiera go, czyta ale gdy próbuje go zapisać nie może wiec robi to do working_directory. Następnie jeżeli masz plik o tej nazwie w working_directory to nie szuka już w innych lokacjach tylko otwiera ten. Możesz go edytować, zapisywać i kasować. Ale jeżeli usuniesz ten plik to ponownie będzie go szukać w innych lokacjach. Spróbuj założyć nowy projekt i w nim zrobić to samo.
ediepl Opublikowano 7 Października 2016 Opublikowano 7 Października 2016 Yoyo najchętniej by wywaliło tą funkcję :P Tak po za problemem z usuwaniem to pomyśl czy w ogóle game_save się tobie przyda bo cytując dokumentację: NOTE: This function is very limited and it is designed for the beginner to get a save system up and running quickly, but more advanced users may prefer to code their own system using the File functions, due to the fact that the game will not save any of the dynamic resources like data structures, surfaces, added backgrounds and sprites etc.. tzn funkcja nie zapisze żadnej struktury( np zwykłej ds_list ), surfaceu itd... co czyni ją bezużyteczną.
Ignatus Opublikowano 7 Października 2016 Opublikowano 7 Października 2016 Nadal nie wiem co takiego złego jest w .ini ;p
MetalowyNerd Opublikowano 7 Października 2016 Autor Opublikowano 7 Października 2016 Threef - założenie nowego projektu będzie się trochę mijało z celem, bo projekt robiłem dość długo i jest zbyt rozbudowany, a stworzenie niemal identycznego zajęłoby mi sporo czasu. ediepl - Dlatego teraz nie wiem, jak ten problem rozwiążę. Kusi mnie opcja, żeby wszystkie zmienne gry zapisywać w jednym pliku klasycznie, bez użycia game_save i game_load, ale nie wiem, jak mi to wyjdzie. Dodatkowo sprawę komplikuje fakt, że na przykład gdy podczas gry powstały nowe obiekty, to nie będę wiedział, jak zapisać ich koordynaty na ekranie w pliku, żeby można było je odczytać na nowo. Ignatus - ja właśnie też nie bardzo wiem Pozornie prosta funkcja, postawiła mi konkretne schody w rozwoju tej gry. To zniechęca, jak każde schody w programowaniu, ale (pewnie jak każdy z tego forum) jestem tego typu masochistą xD
Threef Opublikowano 8 Października 2016 Opublikowano 8 Października 2016 Threef - założenie nowego projektu będzie się trochę mijało z celem, bo projekt robiłem dość długo i jest zbyt rozbudowany, a stworzenie niemal identycznego zajęłoby mi sporo czasu. Chodziło mi o to żebyś założył nowy projekt i sprawdził czy działa zapisywanie. Nie o to abyś zaczynał od nowa. ediepl - Dlatego teraz nie wiem, jak ten problem rozwiążę. Kusi mnie opcja, żeby wszystkie zmienne gry zapisywać w jednym pliku klasycznie, bez użycia game_save i game_load, ale nie wiem, jak mi to wyjdzie. Dodatkowo sprawę komplikuje fakt, że na przykład gdy podczas gry powstały nowe obiekty, to nie będę wiedział, jak zapisać ich koordynaty na ekranie w pliku, żeby można było je odczytać na nowo. game_save i tak ci się popsuje jeżeli dokonasz jakiś zmian w grze. Jeżeli dojdzie do sytuacji że zapiszesz grę a potem zmienisz coś w projekcie to jest bardzo duża szansa że już nie wczytasz tego zapisu gry. Dlatego YYG nie poleca już używania tego.
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ę