Skocz do zawartości

pankracy

Użytkownicy
  • Zawartość

    194
  • Rejestracja

  • Ostatnia wizyta

Reputacja

0 Neutralny

O pankracy

  • Tytuł
    Minor User

Profile Fields

  • Płeć
    Male

Ostatnie wizyty

1626 wyświetleń profilu
  1. list = ds_list_create();

    nie ma..przeszukałem wszystkie skrypty w grze... dobra to są wbudowane..kurcze...nie dobrze..bo muszę jedną rzecz dodać,bo brak tej rzeczy powoduje problemy załadowaniem gry. Tylko dziwna sytuacja..bo jednak save game działa wszystko zapisuje nawet jak mam mniejszą ilość energii,ale jak wyjdę już z gry i włączę ją z powrotem i wybiorę load game to wywala błąd...ale jak mówię ten błąd jestem wstanie ogarnąć,bo odwołuje się do jednego ze skryptów od textboxa...Wystarczy właśnie odszukać te nie istniejące skrypty które tworzą pliki save.dat i Save.dat z dużej litery i zainicjować tam w kodzie ten skrypt i będzie działać. tu mam też info,że odczytuje zapis gry to z pliku save.dat obj_menu step if(keyboard_check_pressed(vk_enter) || gamepad_button_check_pressed(0,gp_face1)) { if(selected=0) { room_goto(rm_poziomtrudnosci) } else if(selected=1) { if(file_exists("save.dat")){ game_load( "Save.dat" ); } else { show_message("Cannot find save.dat file. Please start a new game.");//nie odnaleziono pliku } audio_stop_sound (dzwiek_menu_glowne_gry); } else if(selected=2) { room_goto(rm_highscore) } else if(selected=3) { room_goto(rm_options) } else if(selected=4) { room_goto(rm_credits) } else if(selected=5) { game_end() } } obj_save_game Create 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 Kolizja z obj_player 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 } }
  2. Mam pytanie: Mam w grze save/load game zbudowany na podstawie list = ds_list_create(); problem w tym,że nie widzę skryptu w kodzie. wiem,że zapis gry następuje do pliku save.dat. ten plik tez znalazłem jest w moim przypadku w C:\Users\laptop\AppData\Local\Moja gra Prawdopodobnie są gdzieś dwa skrypty w kodzie jeden generuje plik save.dat a drugi Save.dat z dużej litery. Jest jakiś sposób w GMS żeby wyszukać te skrypty lub po funkcji ds_list_create? Save game działa,ale kiedy wychodzę z gry przestaje działać.Wiem co powoduje problem i wiem jak to naprawić..tylko muszę zlokalizować w swoim kodzie te skrypty od save i load.
  3. Przepraszam...muszę trochę kodu wkleić;-) żeby to objaśnić;-) Kolizje z obj_Player mam następujące: par_hazzard -To obiekt który po zetknięciu bohatera z tym obiektem powoduje automatycznie śmierć...(np kolce itp) Jest on ustawiony w kolizji z moim bohaterem czyli obj_player obj_player kolizja z par_hazzard ///smierc natychniastowa po dotknieciu obiektu hazard instance_destroy(); instance_create(x,y,obj_player_ginie) with (instance_create(x,y,obj_entity_die)) { sprite_index = spr_player_die02; image_xscale = other.image_xscale; respawn = true; respawnObject = obj_player; respawnX = spawnX; respawnY = spawnY; physics = false; health=-100; image_speed=(image_number/room_speed)/ 2//Czas zanim anatol sie odrodzi global.life -=1; audio_play_sound(dzwiek_anatol_ginie, 1, false); image_alpha=0 } kolejna kolizja: obj_player kolizja z par_obrazenia Tutaj jak sami widzicie poniżej w zależności od wybranego poziomu Przeciwnik w kontakcie z bohaterem zabiera mu energię HP. ///Poziom trudnosci i obrazenia jakie okreslone obiekty dziedziczace z tego rodzica zadaja Bohaterowi if(global.difficulty == "easy") if global.zegarObrazen<0 { global.hp-=17 global.zegarObrazen=room_speed*2 } if(global.difficulty == "medium") if global.zegarObrazen<0 { global.hp-=25 global.zegarObrazen=room_speed*2 } if(global.difficulty == "hard") if global.zegarObrazen<0 { global.hp-=34 global.zegarObrazen=room_speed*2 } i ostatnia kolizja bohatera obj_player z par_attack Ta kolizja jest przypisana do wrogów z moim bohaterem. obj_player kolizja z par_attack ///Obrazenia if other.owner == par_enemy && zegarObrazen == 0 { global.hp -= other.sila; zegarObrazen = room_speed/2; } Problem polega na tym,że mam w dwóch stepach w jednym w obj_player global.hp <= 0 oraz w global_game_controller w stepie mam global.life = 0 Gnysek wspomniał,że if (global.life > 0) { global.life -=1; } Powinien znajdować się u Bohatera w kolizji z obiektem,który ma dawać obrażenia i chyba analogicznie tak samo obiekt który ma zabierać energię a jak energia się skończy zabierać życie. Tak was zrozumiałem zabieranie energii i odjęcie życia oraz odjęcie życia w zetknięciu z obiektem który nie zabiera energii tylko od razu życie nie może być w stepie tylko w kolizji bohatera z danym obiektem,który ma tą energię zabrać a następnie życie lub od razu życie. Mam rozumieć,że mam wywalić jeden i drugi kod ze step z tych dwóch obiektów i wrzucić to do kolizji gracza z obiektami zadającymi obrażenia? Bohater kiedy zginie i skończą mu się życia nie powinien się znowu odradzać na początku planszy chce to wyeliminować..naprawić to. Gracz ma 0 żyć,to koniec gry nie odradza się i już. Przepraszam,że tak po łebkach to wam tłumaczę,ale sam dochodzę powoli do pewnych rzeczy.Doceniam wasz wkład waszą wiedzę...nie każdy od razu zbudował Rzym tak to wygląda: obj_player step //Bohater dostajac obrazenia to miga //miganie dodane specjalnie dla kuli kiedy wartosc zmiennej globalnej hit jest rowna 1 //Bohater miga otrzymujac obrazenia okreslone w pulapce kula oraz innych elementach zadajacych obrazenia global.zegarObrazen-=1 if global.zegarObrazen>0 || global.hit=1 image_alpha=0.7+lengthdir_x(0.3,current_time) else image_alpha=1; if (global.hp <= 0) { global.life-- instance_destroy(); instance_create(x,y,obj_player_ginie) with (instance_create(x,y,obj_entity_die)) { sprite_index = spr_player_die01; image_speed=(image_number/room_speed)/ 2//Czas zanim bohater sie odrodzi image_xscale = other.image_xscale; respawnObject = obj_player; respawnX = spawnX; respawnY = spawnY; physics = true; respawn = true; image_alpha=0 } audio_play_sound(dzwiek_anatol_ginie, 1, false); //odtwarzamy dzwiek gdy bohater ginie } obj_game_controller Step if (global.life = 0) { if (can_finish == false) { if (alarm[0] == -1) { // zacznij tylko gdy jeszcze się nie odlicza alarm[0] = 60; // 150 to 5 sekund } } else { if (global.pScore >= 500) //Sprawdz czy wynik nadaje sie do highscore,ale musi zostac spelniony warunek punktowy { var s=highscores[| ds_list_size(highscores) - 1]; //Czy punkty kwalifikuja sie na top 10 if (ds_list_size(highscores) < 10 || s[?"score"] <= global.pScore) { room_goto(rm_save_score); exit; // zakoncz wykonywanie eventu step w tej klatce } } room_goto(rm_game_over); } }
  4. Konrad, Nie mam w stepie takiej linijki,bo Gnysek Mi to już wyjaśnił,że ten kod nie może być użyty w stepie tylko w kolizji z obiektem czyli np z wrogiem lub dowolny obiekt ,który daje mi obrażenia.. Musiałbym stworzyć jakiegoś parenta dla wszystkich obiektów,które dają obrażenia bohaterowi i tam użyć tego rozwiązania Chłopaki ja wam bardzo dziękuje za pomoc;-) wiem,że staracie się Mi pomóc...naprawdę to doceniam... if (global.life > 0) { global.life -=1; }
  5. Konsola pokazuje mi teraz,że 7 razy "sie wykonalem" właśnie przed chwilką uruchomiłem Simian.
  6. Bez przesady...znaki większości mniejszości równości to ja znam... Mam bazowy silnik gry,który był mocno okrojony... Teraz próbuje do niego dorzucać elementy które są Mi potrzebne do ukończenia gry.
  7. Hehe jest to samo zaraz wychodzi z gry i pojawia się plansza game over;-) Coś Ty cały kod gry by się tu nie zmieścił;D Kurcze mówicie,że global.life wykonuje się co jedna klatkę gry... znalazłem kod w grze naszego kolegi Top Hat i podobnie jak ja ma w stepie bohatera takie rozwiązanie: obj_player z gry Top Hat step global.czasniezniszczalnosci-=1 if global.czasniezniszczalnosci>0 image_alpha=0.7+lengthdir_x(0.3,current_time) else image_alpha=1 //dead if global.graczhp<0 { instance_destroy() instance_create(x+0,y+0,obj_graczdead) global.zycia-=1 } //dead2 if global.graczhp=0 { instance_destroy() instance_create(x+0,y+0,obj_graczdead) global.zycia-=1 } a w kolizji z wrogami obj_player Top hat ma tak if global.czasniezniszczalnosci<0 { global.graczhp-=1 global.czasniezniszczalnosci=room_speed*2 instance_create(x+0,y+0,obj_oberwalefekt); sound_play(snd_oberwal) } i na końcu w Create bohatera Top Hat jest tak grav = 0; vspd = 0; hspd = 0; st=1 time=0 //�ycie i co� tam drabina=0 koniec=0 skok=false nadrabinie=false //bronie global.graczpistol=1 global.graczshotgun=0 global.graczshotgunma=0 global.czasniezniszczalnosci=0 Dlatego teraz zgłupiałem skoro w stepie tak ma i to działa
  8. Sprawdzę później;-) oj zaskoczę was,ale jeszcze cierpliwości;-) fabuły nie zdradzam grafika w stylu hollow knight ;-) coś w ten deseń;-)
  9. Gnysku Mam to w stepie. w kolizjach z wrogami i przeszkodami mam tylko kod na obrażenia jakie zadają bohaterowi. Kurcze to tak jak mówisz...dlatego mi się od razu wykonuje. chociaż spojrzałem w necie na kilka silników gry i widziałem np,że global.hp jest wrzucany do stepa obiektu.. w kolizjach z moim bohaterem mam tak: obj_player kolizja z par_hazzard (jak spadnie na obiekty które od razu zabierają mu życia np kolce) tu jest global.life -=1 :-) było od początku ///smierc natychniastowa po dotknieciu obiektu hazard instance_destroy(); instance_create(x,y,obj_player_ginie) with (instance_create(x,y,obj_entity_die)) { sprite_index = spr_player_die02; image_xscale = other.image_xscale; respawn = true; respawnObject = obj_player; respawnX = spawnX; respawnY = spawnY; physics = false; health=-100; image_speed=(image_number/room_speed)/ 2//Czas zanim anatol sie odrodzi global.life -=1; audio_play_sound(dzwiek_anatol_ginie, 1, false); image_alpha=0 } obj_player kolizja z par_obrazenia ///Obrazenia if other.owner == par_enemy && zegarObrazen == 0 { global.hp -= other.sila; zegarObrazen = room_speed/2; } obj_player kolizja z par_enity który dziedziczy z par_enemy ///poziom trudnosci i obeazenia jakie zadaje Wrog bohaterowi na danym poziomie trudnosci if(global.difficulty == "easy") if global.zegarObrazen<0 { global.hp-=17 global.zegarObrazen=room_speed*2 } if(global.difficulty == "medium") if global.zegarObrazen<0 { global.hp-=25 global.zegarObrazen=room_speed*2 } if(global.difficulty == "hard") if global.zegarObrazen<0 { global.hp-=34 global.zegarObrazen=room_speed*2 } obj_player Step global.zegarObrazen-=1 if global.zegarObrazen>0 || global.hit=1 image_alpha=0.7+lengthdir_x(0.3,current_time) else image_alpha=1; if (global.hp <= 0) { global.life-- instance_destroy(); instance_create(x,y,obj_player_ginie) with (instance_create(x,y,obj_entity_die)) { sprite_index = spr_player_die01; image_speed=(image_number/room_speed)/ 2//Czas zanim bohater sie odrodzi image_xscale = other.image_xscale; respawnObject = obj_player; respawnX = spawnX; respawnY = spawnY; physics = true; respawn = true; image_alpha=0 } audio_play_sound(dzwiek_anatol_ginie, 1, false); //odtwarzamy dzwiek gdy bohater ginie } No i to co wyżej obj_game_controler gdzie w stepie jest ten kod if (global.life > 0) { global.life -=1; } else { if (can_finish == false) { if (alarm[0] == -1) { // zacznij tylko gdy jeszcze się nie odlicza alarm[0] = 60; // 150 to 5 sekund } } else { if (global.pScore >= 500) //Sprawdz czy wynik nadaje sie do highscore,ale musi zostac spelniony warunek punktowy { var s=highscores[| ds_list_size(highscores) - 1]; //Czy punkty kwalifikuja sie na top 10 if (ds_list_size(highscores) < 10 || s[?"score"] <= global.pScore) { room_goto(rm_save_score); exit; // zakoncz wykonywanie eventu step w tej klatce } } room_goto(rm_game_over); } } teraz tak jak wspomniałeś..musiałbym to wrzucić,gdzieś do kolizji jakiegoś obiektu rodzica pod którym są podpięte obiekty dziedziczące jak wrogowie pułapki itp.
  10. Napisałeś żeby warunek dać przed highscore;-) jednak efekt ten sam ;-) gra się włącza zaczynam grać i za momencik wywala mnie do menu głównego;-) dziwna sytuacja global_game_controler step if (global.life > 0) { global.life -=1; } else { if (can_finish == false) { if (alarm[0] == -1) { // zacznij tylko gdy jeszcze się nie odlicza alarm[0] = 60; // 150 to 5 sekund } } else { if (global.pScore >= 500) //Sprawdz czy wynik nadaje sie do highscore,ale musi zostac spelniony warunek punktowy { var s=highscores[| ds_list_size(highscores) - 1]; //Czy punkty kwalifikuja sie na top 10 if (ds_list_size(highscores) < 10 || s[?"score"] <= global.pScore) { room_goto(rm_save_score); exit; // zakoncz wykonywanie eventu step w tej klatce } } room_goto(rm_game_over); } }
  11. No właśnie ten znak równości mnie trochw wybił:-) kurcze co robię nie tak: mam 0 żyć i mi odejmuje życia..nie działa to normalnie obj_game_controler step if (global.life > 0) { if (can_finish == false) { if (alarm[0] == -1) { // zacznij tylko gdy jeszcze się nie odlicza alarm[0] = 60; // 150 to 5 sekund } global.life -=1; } else { if (global.pScore >= 500) //Sprawdz czy wynik nadaje sie do highscore,ale musi zostac spelniony warunek punktowy { var s=highscores[| ds_list_size(highscores) - 1]; //Czy punkty kwalifikuja sie na top 10 if (ds_list_size(highscores) < 10 || s[?"score"] <= global.pScore) { room_goto(rm_save_score); exit; // zakoncz wykonywanie eventu step w tej klatce } } room_goto(rm_game_over); } }
  12. Pomniejszać o jedno życie..tak też robię ale jest błąd global_game_controler Step if (global.life > 0) { if global.life -=1;//tu jest blad if (can_finish == false) { if (alarm[0] == -1) { // zacznij tylko gdy jeszcze się nie odlicza alarm[0] = 150; // 5 sekund } } else { if (global.pScore >= 500) //Sprawdz czy wynik nadaje sie do highscore,ale musi zostac spelniony warunek punktowy { var s = highscores[ | ds_list_size(highscores) - 1]; //Czy punkty kwalifikuja sie na top 10 if (ds_list_size(highscores) < 10 || s[ ? "score"] <= global.pScore) { room_goto(rm_save_score); exit; // zakoncz wykonywanie eventu step w tej klatce } } room_goto(rm_game_over); } } Respawn mam tylko w tym miejscu obj_player Step //Bohater dostajac obrazenia to miga //miganie dodane specjalnie dla kuli kiedy wartosc zmiennej globalnej hit jest rowna 1 //Bohater miga otrzymujac obrazenia okreslone w pulapce kula oraz innych elementach zadajacych obrazenia global.zegarObrazen-=1 if global.zegarObrazen>0 || global.hit=1 image_alpha=0.7+lengthdir_x(0.3,current_time) else image_alpha=1; if (global.hp <= 0) { global.life-- instance_destroy(); instance_create(x,y,obj_player_ginie) with (instance_create(x,y,obj_entity_die)) { sprite_index = spr_player_die01; image_speed=(image_number/room_speed)/ 2//Czas zanim bohater sie odrodzi image_xscale = other.image_xscale; respawnObject = obj_player; respawnX = spawnX; respawnY = spawnY; physics = true; respawn = true; image_alpha=0 } audio_play_sound(dzwiek_anatol_ginie, 1, false); //odtwarzamy dzwiek gdy bohater ginie }
  13. Staram się go analizować...ale wolno Mi idzie.. if global,life > 0 powoduje,że gra się włącza a za chwile ze scenerii przenosi mnie do głównego menu.. obj_game_controler STEP if (global.life > 0) { if (can_finish == false) { if (alarm[0] == -1) { // zacznij tylko gdy jeszcze się nie odlicza alarm[0] = 150; // 5 sekund } } else { if (global.pScore >= 500) //Sprawdz czy wynik nadaje sie do highscore,ale musi zostac spelniony warunek punktowy { var s = highscores[ | ds_list_size(highscores) - 1]; //Czy punkty kwalifikuja sie na top 10 if (ds_list_size(highscores) < 10 || s[ ? "score"] <= global.pScore) { room_goto(rm_save_score); exit; // zakoncz wykonywanie eventu step w tej klatce } } room_goto(rm_game_over); } } obj_player step //Bohater dostajac obrazenia to miga //miganie dodane specjalnie dla kuli kiedy wartosc zmiennej globalnej hit jest rowna 1 //Bohater miga otrzymujac obrazenia okreslone w pulapce kula oraz innych elementach zadajacych obrazenia global.zegarObrazen-=1 if global.zegarObrazen>0 || global.hit=1 image_alpha=0.7+lengthdir_x(0.3,current_time) else image_alpha=1; if (global.hp <= 0) { global.life-- instance_destroy(); instance_create(x,y,obj_player_ginie) with (instance_create(x,y,obj_entity_die)) { sprite_index = spr_player_die01; image_speed=(image_number/room_speed)/ 2//Czas zanim bohater sie odrodzi image_xscale = other.image_xscale; respawnObject = obj_player; respawnX = spawnX; respawnY = spawnY; physics = true; respawn = true; image_alpha=0 } audio_play_sound(dzwiek_anatol_ginie, 1, false); //odtwarzamy dzwiek gdy bohater ginie }
  14. Tak gvX i gvY resetują się na 0. Dobrze..czyli game_end nie jest potrzebny... Wiem w czym jest problem Gnysku... Mój bohater załóżmy ma te 3 życia i po każdym życiu odradza się w pozycji początkowej mapy...Natomiast kiedy kończy się ostatnie życie to bohater zamiast zatrzymać się w miejscu w którym zginał,to znowu się odradza i zaraz następuje koniec gry..Przecież jak zginał,to nie powinien się odradzać. Teraz tak...respawn musiałby być na false rozumiem?po śmierci bohatera kiedy ilość żyć wynosi 0. wystarczy dodać kolejny alarm do obj_game_controler? który wyłączy odradzanie bohatera kiedy jego życia są na zero? obj_game_controler step if (global.life = 0) //czy tu nie powinien być albo warunek lub alarm ustawiony który sprawdzał by czy respawn jest wyłączony gracza??? { if (can_finish == false) { if (alarm[0] == -1) { // zacznij tylko gdy jeszcze się nie odlicza alarm[0] = 150; // 5 sekund } } else { if (global.pScore >= 500) //Sprawdz czy wynik nadaje sie do highscore,ale musi zostac spelniony warunek punktowy { var s = highscores[ | ds_list_size(highscores) - 1]; //Czy punkty kwalifikuja sie na top 10 if (ds_list_size(highscores) < 10 || s[ ? "score"] <= global.pScore) { room_goto(rm_save_score); exit; // zakoncz wykonywanie eventu step w tej klatce } } room_goto(rm_game_over); } }
  15. Czyli u mnie i tak zamyka się gra i nie potrzebne jest użycie game_end()? Flaga wszystko załatwia? Mój bohater jak traci życia wiadomo odradza się i wraca na początku scenerii..(użycie respawnX i respawnY) tak ma być,ale kiedy skończą mu się wszystkie życia to powinien w miejscu gdzie zginie zakończyć grę. ustawienia widoku mam tylko w dwóch obiektach które są cały czas na każdej planszy w grze obj_global_controller - ten sam obiekt End step ///Wyswietlanie widoku okna gry if (view_wport[0] != window_get_width() || view_hport[0] != window_get_height()) && window_get_width() != 0 { view_wport[0] = window_get_width(); view_hport[0] = window_get_height(); view_hview[0] = view_wview[0]/view_wport[0]*view_hport[0]; surface_resize(application_surface,view_wview[0],view_hview[0]); display_set_gui_size(view_wport[0],view_hport[0]); //wersja podstawowa } obj_game_controller End step ///Widok if view_wview[0] != gvW || view_hview[0] != gvH { var tempW, tempH; tempW = view_wview[0]; tempH = view_hview[0]; if gvW/view_wport[0] >= gvH/view_hport[0] { view_hview[0] = lerp(view_hview[0],gvH,.3); view_wview[0] = view_hview[0]/view_hport[0]*view_wport[0]; } else { view_wview[0] = lerp(view_wview[0],gvW,.3); view_hview[0] = view_wview[0]/view_wport[0]*view_hport[0]; } view_xview[0] -= (view_wview[0]-tempW)/2; view_yview[0] -= (view_hview[0]-tempH)/2; } if view_wview[0] > room_width { view_wview[0] = room_width; view_hview[0] = view_wview[0]/view_wport[0]*view_hport[0]; } if view_hview[0] > room_height { view_hview[0] = room_height; view_wview[0] = view_hview[0]/view_hport[0]*view_wport[0]; } if instance_exists(gvObj) { gvX = min(max(0,gvObj.x+gvOffX-view_wview[0]/2),room_width-view_wview[0]); gvY = min(max(0,gvObj.y+gvOffY-view_hview[0]/2),room_height-view_hview[0]); gvOffX = 0; gvOffY = 0; } view_xview[0] = round(min(max(0,lerp(view_xview[0],gvX,.15)),room_width-view_wview[0])); view_yview[0] = round(min(max(0,lerp(view_yview[0],gvY,.15)),room_height-view_hview[0])); gvW = gvWStart; gvH = gvHStart;
×