matik97 Opublikowano 22 Sierpnia 2010 Udostępnij Opublikowano 22 Sierpnia 2010 Jak mogę zrobić w mojej grze taki efekt, że jak naciskam np. escape to mi grę zatrzymuje i pojawia się menu z różnymi opcjami(przykładowo zakończ, zapisz, wczytaj, kontynuuj). Chodzi o zatrzymanie wszystkich obiektów, dźwięków i ogólnie całego rooma bez usypiania gry. Praktycznie we wszystkich grach jest takie coś. Z góry dzięki. Czekam na jakąś pomocną osobę. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Gość Opublikowano 22 Sierpnia 2010 Udostępnij Opublikowano 22 Sierpnia 2010 Na zatrzymywanie gry sam sobie dałeś odpowiedź ;) A co do tego menu. To albo sam je jakoś rysujesz (przykładowo prostokąt z różymi opcjami), albo uzywasz gmowego show_message_ext itp. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
matik97 Opublikowano 22 Sierpnia 2010 Autor Udostępnij Opublikowano 22 Sierpnia 2010 Na zatrzymywanie gry sam sobie dałeś odpowiedź ;) A co do tego menu. To albo sam je jakoś rysujesz (przykładowo prostokąt z różymi opcjami), albo uzywasz gmowego show_message_ext itp. Szczerze mówiąc nie bardzo kumam w jaki sposób sobie odpowiedziałem. Mógłbyś jakoś konkretnie odpowiedzieć? Jestem jeszcze młody i niedoświadczony... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ZeroXbot Opublikowano 22 Sierpnia 2010 Udostępnij Opublikowano 22 Sierpnia 2010 W każdym obiekcie przechowujesz zmienne zapamiętujące wartości typu np. prędkość a te prawdziwe zerujesz i wtedy mamy stop. Przełączasz sobie jakąś zmienna wtedy, która pozwoli rysować menu i resztę. Po powrotnym naciśnięciu zwracasz wartości zmiennych tymczasowych do tych prawdziwych. Ewentualnie możnaby menu zrobić w oddzielnym roomie pod warunkiem, że tamten byłby persistent. Wtedy gra "sama" zapamiętuje wartości i po powrocie wszystko jest tak jak zostawiłeś. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Jaklub Opublikowano 22 Sierpnia 2010 Udostępnij Opublikowano 22 Sierpnia 2010 zrobić screena, zdezaktywować wszystko i stworzyć obiekt pauza, który wyświetlał by tego shota i jakieś menu. wracasz do gry - niszczysz obiekt pauza i aktywujesz wszystko ewentualnie stworzyć obiekt, który operowałby sleepami, odświeżał ekran i pobierał klawisze podczas pętli while. ręczne zatrzymywanie obiektów jest głupie i pracochłonne, kiedy możesz zrobić coś dużo prostszego. edit: znalazłem taki kod: Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
matik97 Opublikowano 22 Sierpnia 2010 Autor Udostępnij Opublikowano 22 Sierpnia 2010 A nie ma po prostu jakiejś zmiennej w stylu room_stop ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ZeroXbot Opublikowano 22 Sierpnia 2010 Udostępnij Opublikowano 22 Sierpnia 2010 Kurde, faktycznie zapomniałem kompletnie o dezaktywacji. Odstawka GMa zrobiła swoje ;p Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Jaklub Opublikowano 22 Sierpnia 2010 Udostępnij Opublikowano 22 Sierpnia 2010 będę dobry kolega i dam prawie gotowy kod: GML quit=0; while(quit=0) { io_handle(); screen_redraw(); // tutaj wrzucasz rysowanie menu screen_refresh(); if keyboard_check_pressed(vk_enter) { quit=1; } io_clear(); sleep(16); } akurat miałem pod ręką. wrzucasz do np. Key Escape. powinno działać, jeśli nie działa, skarż się w poście edit: działa, ale co jakiś czas miga. pokombinuję z tym Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
matik97 Opublikowano 22 Sierpnia 2010 Autor Udostępnij Opublikowano 22 Sierpnia 2010 Jaklub, jak będę miał trochę czasu to pokombinuje z tą twoją propozycją (wydaje się być najbardziej sensowna). Dzięki. oczywiście temat nadal otwarty, czekam na kolejne posty. Aktualnie nie mogę sprawdzić kodu gdyż internet mam na Linuxie a GM'a na Windowsie. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Jaklub Opublikowano 22 Sierpnia 2010 Udostępnij Opublikowano 22 Sierpnia 2010 muszę dodać, że to rozwiązanie nie jest pewne. działa, ale jednak uważam, że lepiej bawić się w dezaktywację Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
matik97 Opublikowano 22 Sierpnia 2010 Autor Udostępnij Opublikowano 22 Sierpnia 2010 Zrobić screena, zdezaktywować obiekty i narysować screena razem z menu. Dobrze zrozumiałem? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Jaklub Opublikowano 22 Sierpnia 2010 Udostępnij Opublikowano 22 Sierpnia 2010 dobrze. nie będzie to tak wygodne, ale ekran nie będzie migać. GML (create) // nie wiem, czy mozna to zrobic lepiej, ale bedzie dzialac screen_save("whatsthis.bmp"); a=background_add("whatsthis.bmp",0,1,0); file_delete("whatsthis.bmp"); instance_deactivate_all(1); GML (draw) draw_background(a,view_xview[0],view_yview[0]); // rysuj menu</span> GML (destroy) background_delete(a); instance_activate_all(); Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
matik97 Opublikowano 22 Sierpnia 2010 Autor Udostępnij Opublikowano 22 Sierpnia 2010 Aż dziwne że sam na to nie wpadłem. Wielkie dzięki. Patrząc po kodzie raczej nie trzeba sprawdzać. Spróbuje jeszcze coś zrobić z surface'ami i jakieś efekty pododawać. Będzie gierka miodzio XD. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
TheMarcQ Opublikowano 23 Sierpnia 2010 Udostępnij Opublikowano 23 Sierpnia 2010 mam fajniejszy sposób: GML (klik escape) game_save() room_goto(menu) a potem przy wyjściu z menu game_load() Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ZeroXbot Opublikowano 23 Sierpnia 2010 Udostępnij Opublikowano 23 Sierpnia 2010 lol, on wcale nie jest fajniejszy. Już lepiej użyć mojego sposobu z roomem persistent, ale i tak jak dotąd najlepszy jest sposób Jakluba. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Jaklub Opublikowano 23 Sierpnia 2010 Udostępnij Opublikowano 23 Sierpnia 2010 mam fajniejszy sposób: GML (klik escape) game_save() room_goto(menu) a potem przy wyjściu z menu game_load() gratulacje, nie myślisz game_save i game_load to kupa Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
matik97 Opublikowano 23 Sierpnia 2010 Autor Udostępnij Opublikowano 23 Sierpnia 2010 mam fajniejszy sposób: GML (klik escape)game_save() room_goto(menu) a potem przy wyjściu z menu game_load() Właśnie tego chciałem uniknąć. Cały trick polega na tym żeby było widać zatrzymane obiekty. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Gość Opublikowano 23 Sierpnia 2010 Udostępnij Opublikowano 23 Sierpnia 2010 Ja bym to jednak zrobił na dezaktywacji obiektów, i poprostu narysował to menu co tam chciałeś. Tak jak Ci właśnie powiedzieli - screen, deaktywacja. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
matik97 Opublikowano 23 Sierpnia 2010 Autor Udostępnij Opublikowano 23 Sierpnia 2010 Dzięki za radę. Chyba właśnie tak zrobię. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Dawidds Opublikowano 23 Sierpnia 2010 Udostępnij Opublikowano 23 Sierpnia 2010 Ja bym wybrał jednak: GML //zmiana global.pause = 1/0; //w kazdym dynamicznym obiekcie if(!global.pause) { kod na ruch } //ew. if(global.pause) exit; kod na ruch //i rysujesz menu if(global.pause) { menu pauzy } +daje większe możliwości niż reszta (możesz kontrolować zachowanie obiektów w czasie pauzy (gdyby Cie wzięła nagła ochota, aby animowane kryształy animowały się nawet w czasie pauzy)) +nie wykorzystuje deaktywacji - nie będzie kolidowało w żaden sposób z ewentualną inna deaktywacją (tą "normalną" w grze, która deaktywuje obiekty poza roomem) -do każdego obiektu musisz dowalić te dwie czy trzy linie kodu. Ed: A screen nie dość, że jest po prostu głupio wyglądającym wyjściem to komplikuje nam sprawę np. gdybyśmy chcieli przesunąć hud w czasie pauzy (albo go całkiem ukryć) - trzeba by wtedy się bawić w ukrywanie/presuwanie hudu na klatkę przed zrobieniem screena. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Jaklub Opublikowano 23 Sierpnia 2010 Udostępnij Opublikowano 23 Sierpnia 2010 Ja bym wybrał jednak:GML //zmiana global.pause = 1/0; //w kazdym dynamicznym obiekcie if(!global.pause) { kod na ruch } //ew. if(global.pause) exit; kod na ruch //i rysujesz menu if(global.pause) { menu pauzy } +daje większe możliwości niż reszta (możesz kontrolować zachowanie obiektów w czasie pauzy (gdyby Cie wzięła nagła ochota, aby animowane kryształy animowały się nawet w czasie pauzy)) +nie wykorzystuje deaktywacji - nie będzie kolidowało w żaden sposób z ewentualną inna deaktywacją (tą "normalną" w grze, która deaktywuje obiekty poza roomem) -do każdego obiektu musisz dowalić te dwie czy trzy linie kodu. Ed: A screen nie dość, że jest po prostu głupio wyglądającym wyjściem to komplikuje nam sprawę np. gdybyśmy chcieli przesunąć hud w czasie pauzy (albo go całkiem ukryć) - trzeba by wtedy się bawić w ukrywanie/presuwanie hudu na klatkę przed zrobieniem screena. ja tam nie używam do pauzy ani dezaktywacji, ani sleepów i odświeżeń. podałem te rozwiązania, które nie wymagają od matika97 przebudowania całej gry. od jakiegoś czasu konstruuję swoje tytuły tak, żeby absolutnie wszystkie eventy związane z gameplayem były umieszczone w Create i eventach użytkownika. daję też obiekt, który u wszystkich innych wywołuje te zdarzenia tylko wtedy, gdy nie ma pauzy. dzięki temu mogę także łatwo dobudować online (niestety sprawdziłem to tylko przez LAN, ale w teorii zapewnia perfekcyjną synchronizację). 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ę