Skocz do zawartości

Dziwny problem z zapisem gry


Cygnus

Rekomendowane odpowiedzi

Cześć wszystkim

 

Mam taki dziwny problem z zapisem gry.

Gdy gra nie jest zachowana przez gracza podczas gry (prościej dopóki nie zbierze się obiektu save) to wywala błąd fatalny i wyłącza grę natomiast gdy stan gry jest już zachowany i zbierzemy obiekt save to wtedy błędu nie ma. Zawsze jest ten błąd gdy nie zachowaliśmy gry, a chcemy ją wczytać w menu.

Ja myślę,że trzeba sprawdzić czy plik jest pusty jak jest pusty to komunikat i nic nie robi, a jak pełny to wczytuje(dodać warunek)jak to zrobić?

 

niżej kod mojego obiektu_save,który zapisuje moją grę w danym miejscu.

 

 

CREATE

 

GML
licznik=x/14;

checked = false; //sprawdzenie

list = ds_list_create(); //lista zachowujaca stan gry

saveInfo=false; //informacja o zachowaniu gry

saveInfoTime=3; //infroamcja o czasie zachowania gry

 

 

 

ALARM 0

 

GML
saveInfo=false;

 

 

 

DRAW

 

GML
draw_self();

if (saveInfo)

{

draw_text(x, y, "save game has been completed")

}

 

 

 

kolizja z bohaterem

 

GML
if( !checked )

{

checked = true;

game_save("Save.dat"); //gre zachowywana pod nazwa pliku Save.dat

if (!saveInfo)

{

saveInfo=true;

audio_play_sound(dzwiek_checkpointisave, 1, false);

alarm[0]=saveInfoTime*fps; //czas * ilosc FPS prosty wzor do zachowania stanu gry

}

}

 

 

 

a tu przycisk obj_load game,który ładuje mi zapis gry

 

STEP

 

GML
if (room !=roo_menu && mouse_check_button_pressed(mb_left))

{

//nie rob nic

}

else if (position_meeting(obj_cursor.x,obj_cursor.y,obj_load_game)) && mouse_check_button_pressed(mb_left) //Gra wczytuje zachpowanie dopiero gdy nacisniemy na Load Game prawym myszy** nie gdy naciskamy w wolne pole pokoju menu

{

game_load( "Save.dat" );

audio_stop_sound (dzwiek_menu_glowne_gry);

}

 

 

teraz tak w STEP jeszcze mam:

 

Bloczek wybrany Execute Script

 

Applies to ustawione na Self

 

script: scr_mouse_hover

Odnośnik do komentarza
Udostępnij na innych stronach

Tak. Taki który będzie sprawdzał czy plik istnieje. Nie podam jaki bo dobrze Ci zrobi poszukanie tego na własną rękę.

 

 

 

No dobra tylko nie wiem,czy dobrze myśle??

 

 

GML
if file_exists("save.dat") {

file=file_text_open_append("save.dat");

} else if{

file=file_text_open__write("save.dat");

}

 

 

 

 

Odnośnik do komentarza
Udostępnij na innych stronach

GML
if file_exists("save.dat") {

file=file_text_open_append("save.dat");

} else if{ //<------ Do czego ten if?

file=file_text_open__write("save.dat"); //<------ ok pod warunkiem że dopiszesz kod zapisu a nie tak zostawisz

}

Ciekawi mi jeszcze po jakiego grzyba Ci otwieranie pliku tekstowego skoro używasz game_save?

 

EdiePL podał Ci dobre rozwiązanie oprócz tego, że piszę się show_message, ale przed tym Cię sam przestrzegł.

Więc:

GML
if(file_exists("save.dat"))

{

game_load( "Save.dat" );

}else{

show_message("Nie znaleziono pliku zapisu.");

};

Odnośnik do komentarza
Udostępnij na innych stronach

GML
if file_exists("save.dat") {

file=file_text_open_append("save.dat");

} else if{ //<------ Do czego ten if?

file=file_text_open__write("save.dat"); //<------ ok pod warunkiem że dopiszesz kod zapisu a nie tak zostawisz

}

Ciekawi mi jeszcze po jakiego grzyba Ci otwieranie pliku tekstowego skoro używasz game_save?

 

EdiePL podał Ci dobre rozwiązanie oprócz tego, że piszę się show_message, ale przed tym Cię sam przestrzegł.

Więc:

GML
if(file_exists("save.dat"))

{

game_load( "Save.dat" );

}else{

show_message("Nie znaleziono pliku zapisu.");

};

 

 

Dzieki..racja po co.mi otwieranie pliku.

To wrzucam do kolizji bohatera

Odnośnik do komentarza
Udostępnij na innych stronach

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ę
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...