peterz_pl Opublikowano 15 Października 2016 Udostępnij Opublikowano 15 Października 2016 Cześć, Posiadając w swojej grze tablicę z danymi, chciałbym ją zapisać do pliku zewnętrznego, aby przy kolejnym uruchomieniu została z tego pliku z powrotem wczytana. Czego najlepiej w tym przypadku użyć? W swojej grze mam skrypt otwierający pliki csv (wartości są wczytywane do tablicy). Niestety mam problem z jego zapisywaniem, więc pytam was czy jest na to jakiś lepszy sposób? Z góry dzięki ludkowie. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 16 Października 2016 Udostępnij Opublikowano 16 Października 2016 Ogółem tablice są wolniejsze w GMie od struktur danych. Jeżeli jest to tablica jednowymiarowa to zamień ją na ds_list jeżeli dwuwymiarowa to zamień na ds_grid. ds_list i ds_grid mają wbudowaną funkcję zapisu i odczytu na dysk. W dodatku można ich używać podobnie jak tablic stosując Accesory: http://docs.yoyogames.com/source/dadiospic.../accessors.html dla listy będzie to wyglądało tak: GML lista[| index] = wartosc; // zapis wartosc = lista[| index]; // odczyt dla grida GML grid[# index1, index2] = wartosc; // zapis wartosc = grid[# index1, index2]; // odczyt funkcje do zapisu/odczytu na dysk: GML ds_list_write(id); ds_list_read(id, str); ds_grid_write(id); ds_grid_read(id, str); Korzyści z używania tego jest więcej niż z tablic ;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
peterz_pl Opublikowano 16 Października 2016 Autor Udostępnij Opublikowano 16 Października 2016 W jakim formacie zapisuje się taki plik? I czy można go zapisywać i odczytywać z dowolnego miejsca na dysku? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 16 Października 2016 Udostępnij Opublikowano 16 Października 2016 Żadnego pliku w GM:S nie można odczytywać i zapisywać w dowolne miejsce na dysku chyba że użytkownik wskaże to miejsce przy pomocy funkcji get_open_filename(), get_save_filename(). A co do tego jak są zapisane dane: NOTE: The returned string is not a human readable string, but rather a dump of the contents of the data-structure Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
peterz_pl Opublikowano 16 Października 2016 Autor Udostępnij Opublikowano 16 Października 2016 ds_grid bardzo fajne, będę korzystał. Może rozwijając powyższy temat, potrzebuję, żeby plik z danymi mógł być wczytywany przez kilka komputerów. Podpowiedzcie proszę jak najlepiej to zrobić. Czy GM:S może przykładowo skopiować plik zapisywany w appdata/local/gra do wyznaczonego miejsca na dysku (get_save_filename())? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am vader Opublikowano 16 Października 2016 Udostępnij Opublikowano 16 Października 2016 Jeżeli nie chcesz, żeby user musiał ręcznie wybierać lokalizacje pliku - GM nie może zapisywać poza appdata przez sandboxowanie robione niby z powodu innych targetów (iOS/Android/HTML5). Dodaj do projektu extension GMFileSystem. To DLL wiec ograniczy eksport to windy. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
peterz_pl Opublikowano 18 Października 2016 Autor Udostępnij Opublikowano 18 Października 2016 Jeżeli nie chcesz, żeby user musiał ręcznie wybierać lokalizacje pliku - GM nie może zapisywać poza appdata przez sandboxowanie robione niby z powodu innych targetów (iOS/Android/HTML5). Dodaj do projektu extension GMFileSystem. To DLL wiec ograniczy eksport to windy. Siedzę nad tym od 3 dni i nie potrafię. Próbuję ustalić folder zapisu, ale to nic nie daje. GML FS_set_gm_save_area("C:\Users\??\Desktop") A poniżej kod do zapisu do CSV. Chociaż równie dobrze można tą tablicę2d zapisywać do innego formatu. Z tym niestety u mnie jeszcze gorzej. Temat chyba do zamknięcia, niestety nie potrafię tego ogarnąć. GML ///csv_save(filename, array, _sep) /*************************************************** Loads in an included .csv file argument0 - The filename of the .csv argument1 - The array to be converted to a .csv argument2 (Optional) - The seperator being used if not "," returns: N/A ***************************************************/ var fname = argument[0]; // The filename you want to use var arr_tmp = argument[1]; // The array you want to save as a .csv var file; // Stores the file id var str = ""; // Temp store the string as it is being complied // Select the seperator being used if (argument_count > 2) var sep = argument[2]; // Use custom seperator else var sep = ";"; // Default seperator file = file_text_open_write(string(fname) + ".csv"); // Open or create the .csv for (i = 0; i < array_height_2d(arr_tmp); i++) { str = ""; // Compile the string to be written for (var j = 0; j < array_length_2d(arr_tmp, i); j++) { str += string(arr_tmp[i, j]); str += sep; } str = string_delete(str,string_length(str),1); // Remove the seperator at the end of the string file_text_write_string(file, str); // Write the string to the file file_text_writeln(file); // Insert an endline character } file_text_close(file); // Close the file Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ediepl Opublikowano 18 Października 2016 Udostępnij Opublikowano 18 Października 2016 Zastąp funkcje zapisu plików w skrypcie na te z GMFileSystem Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
peterz_pl Opublikowano 19 Października 2016 Autor Udostępnij Opublikowano 19 Października 2016 Chętnie :) Czy wiesz może która funkcja odpowiada za wybór miejsca docelowego? Bardzo proszę o pomoc, utknąłem w martwym punkcie przy pisaniu gry... https ://pl.scribd.com/document/222768821/GM...System-Doc-1-4 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ediepl Opublikowano 19 Października 2016 Udostępnij Opublikowano 19 Października 2016 Nazwy funkcji są prawie takie same, wystarczy dopisać FS_ na początku np file_text_open_write na FS_file_text_open_write Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
peterz_pl Opublikowano 19 Października 2016 Autor Udostępnij Opublikowano 19 Października 2016 To się zgadza, pytanie jak wyznaczyć mu ścieżkę zapisu pliku :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ediepl Opublikowano 19 Października 2016 Udostępnij Opublikowano 19 Października 2016 Pierwszy argument tego skryptu to ścieżka. GML argument0 - The filename of the .csv Jak byk masz napisane Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
peterz_pl Opublikowano 19 Października 2016 Autor Udostępnij Opublikowano 19 Października 2016 Robiłem wszystko to co piszesz, pozmieniałem na FS_, dodałem do nazwy pliku C:\bla bla bla\, nie zapisuje pliku nigdzie (nawet jak nie dodaje ścieżki tylko jest sama nazwa) Trudno, poddaję się. Dzięki za odpowiedzi. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ediepl Opublikowano 19 Października 2016 Udostępnij Opublikowano 19 Października 2016 A podaj jeszcze kod zmienionego skryptu i jak wywołujesz ten skrypt Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
peterz_pl Opublikowano 19 Października 2016 Autor Udostępnij Opublikowano 19 Października 2016 W załączniku skrypty: https://gmclan.org/up1048_3_CSV_i_GMFile.html EDIT: Użyłem poniższego i to rozwiązało problem. Bez DLL GML adres =get_save_filename("CSV Files|*.csv","") file_copy(working_directory+"tester123123123.csv",adres); 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ę