Ice Cube Opublikowano 8 Stycznia 2019 Udostępnij Opublikowano 8 Stycznia 2019 Cześć chce w grze zrobić coś w stylu show_message ale po swojemu chodzi o to by wyświetlic napis i zatrzymać gre na tak długo,aż np. nie nacisne myszką na okienko OK lub nie nacisne esc. roumiem,że będe potrzebować jakiegoś loopa i skoku (programowałem kiedyś w basicu i asm tam takie cos było )coś w stylu: 1 wyswietl napis 2 jezeli nacisniete esc lub myszka na ok skocz do 4 3 jump do 1 4 dalsza czesc programu próbowałem kombinować coś z while ,ale zawieszała mi sie gra .. poprosze o jakies sugestie Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Konrad-GM Opublikowano 8 Stycznia 2019 Udostępnij Opublikowano 8 Stycznia 2019 Cześć, musisz przyblokować wykonywanie się kodu innym obiektom, pętla while Ci nie zadziała ze względu na to, jak działa pętla główna Game Makera. Jak używasz pętli while, to GameMaker nie przetwarza systemowych zdarzeń jak np. kliknięcie myszką czy klawisza. Żeby przyblokować wykonywanie kodu w obiektach, możesz stworzyć np. zmienną globalną jak: global.is_paused = false; A potem w każdym z obiektów w Step Event, przed blokiem całego kodu dodaj po prostu taką linijkę: if (global.is_paused) exit; Jak chcesz zapałzować grę, to po prostu ustawiasz zmiennej global.is_paused na true, analogicznie odblokowujesz grę po ustawieniu global.is_paused na false. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Ice Cube Opublikowano 8 Stycznia 2019 Autor Udostępnij Opublikowano 8 Stycznia 2019 Godzinę temu, Konrad-GM napisał: Cześć, musisz przyblokować wykonywanie się kodu innym obiektom, pętla while Ci nie zadziała ze względu na to, jak działa pętla główna Game Makera. Jak używasz pętli while, to GameMaker nie przetwarza systemowych zdarzeń jak np. kliknięcie myszką czy klawisza. Żeby przyblokować wykonywanie kodu w obiektach, możesz stworzyć np. zmienną globalną jak: global.is_paused = false; A potem w każdym z obiektów w Step Event, przed blokiem całego kodu dodaj po prostu taką linijkę: if (global.is_paused) exit; Jak chcesz zapałzować grę, to po prostu ustawiasz zmiennej global.is_paused na true, analogicznie odblokowujesz grę po ustawieniu global.is_paused na false. powaznie nie ma innego sposobu?,mam chyba z 1000 obiektów ;/ nie idzie jakos całości zatrzymać np.przy pomocy keyboard wait() ?,albo przy pomocy ukrytego show_message,by tylko zatrzymało gre ? ps. ale klikniecie myszka,wyswietlanie napisu było by własnie w petli,ewentualnie zamiast myszki zrobiłbym klawiature Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Konrad-GM Opublikowano 8 Stycznia 2019 Udostępnij Opublikowano 8 Stycznia 2019 Możesz jeszcze użyć dezaktywacji obiektów, ale trzeba pamiętać, aby obiekt popup-a był aktywny, bo inaczej nie będzie można wrócić do gry W Create Event obiektu obj_popup daj taki kod: instance_deactivate_all(); instance_activate_object(obj_popup); Ale pamiętaj też o aktywacji obiektów po zniknięciu komunikatu, np. w Event Destroy obiektu obj_popup daj: instance_activate_all(); Edit: Godzinę temu, Ice Cube napisał: ps. ale klikniecie myszka,wyswietlanie napisu było by własnie w petli,ewentualnie zamiast myszki zrobiłbym klawiature GameMaker nie udostępnia funkcji do przetworzenia zdarzeń systemowych -> pętla w grze po prostu Ci nie zadziała, bo nie będziesz w stanie obsłużyć żadnego kliknięcia, nawet krzyżyka na belce okna. Jeżeli pisałeś kiedykolwiek aplikacje na Windowsa, to jest tam taka funkcja jak GetMessage/PeekMessage, GameMaker nie udostępnia swojego odpowiednika Pętla musiałaby wyglądać tak: 1. obsłuż zdarzenia systemowe 2. jezeli nacisniete esc lub myszka na ok skocz do 6<- tutaj można sprawdzić, czy esc/myszka została naciśnięta bo zdarzenia systemowe zostały zinterpretowane 3. wyswietl napis 4. swap buffers - wyświetl na ekran wygenerowany obraz 5. skocz do 1 6. <kontynuuj program> Ale w GameMakerze jest to niemożliwe. Przynajmniej nie znalazłem funkcji do obsługi systemowych zdarzeń. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 8 Stycznia 2019 Udostępnij Opublikowano 8 Stycznia 2019 Wtedy oczywiście wszystko zniknie z ekranu ale i na to jest rozwiązanie by redrawować cały screen do surface i ten popup by sobie go rysował. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Ice Cube Opublikowano 9 Stycznia 2019 Autor Udostępnij Opublikowano 9 Stycznia 2019 a jak to robi show_message ? ,macie może cały kod ,chętnie bym zobaczył jak ta komenda "zamraża" wszystko,a mimo tego widać wszystko na ekranie plus wiadomość oczywiście i obsługa myszki Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 9 Stycznia 2019 Udostępnij Opublikowano 9 Stycznia 2019 Ale to jest coś hardcodowanego w runnerze GMa więc tego nie odtworzysz. Ice Cube 1 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ę