karolo320 Opublikowano 30 Maja 2011 Udostępnij Opublikowano 30 Maja 2011 Siema, jak zrobić w grze menu pauzy? Tzn: Gram sobie, wciskam P i pojawia się menu Zakończ grę, wczytaj itd itp. Głównie chodzi mi o to, jak to najoptymalniej zrobić i jak zastopować całą grę poza tym menu. Z góry dzięki Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 30 Maja 2011 Udostępnij Opublikowano 30 Maja 2011 GML while ( true ) { /*tutaj kod pauzy włącznie z funkcjami rysowania */ if ( keyboard_check_direct( vk_escape )) { break; /* zamknięcie pauzy*/ keyboard_clear(vk_escape); } screen_wait_vsync(); screen_refresh(); } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
karolo320 Opublikowano 30 Maja 2011 Autor Udostępnij Opublikowano 30 Maja 2011 Ok, zrobiłem sobie obiekt pauza i wstawiłem go do roomu :) Odpalam grę i wywaliło mi czarny kwadrat, ale bez alphy, a po wciśnięciu eskejpu nic się nie stało. W draw pauzy wstawiłem: while ( true ) { draw_set_color(c_black) draw_set_alpha(0.5) draw_rectangle(view_xview+10,view_yview+10,view_xview+630,view_yview+470,0) draw_set_alpha(1) if ( keyboard_check(vk_escape)) break; instance_destroy() screen_refresh() } Co zrobiłem źle? Bo chyba Cię nie zrozumiałem :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
David Dark Opublikowano 30 Maja 2011 Udostępnij Opublikowano 30 Maja 2011 wywal draw_set_alpha(1) i powinno byc ok. po tym jak ustawiasz alpha na 0.5 nagle ustawiasz ja na 1 i dlatego tego nie widac ;) co do drugiego problemu wywal break ktory konczy skrypt dlatego nie dochodzi do wylaczania menu, przynajmniej tak mi sie wydaje :p Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
karolo320 Opublikowano 30 Maja 2011 Autor Udostępnij Opublikowano 30 Maja 2011 O nie :P Po odpaleniu gry cały komp się wiesza Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 30 Maja 2011 Udostępnij Opublikowano 30 Maja 2011 To właśnie ten break powoduje zamknięcie pętli która zatrzymuje grę. Ta pętla while nie może być w stepie sorry miało być check_direct małe poprawki: GML while ( true ) { draw_clear(0); draw_set_color(c_black) draw_set_alpha(0.5) draw_rectangle(view_xview+10,view_yview+10,view_xview+630,view_yview+470,0) draw_set_alpha(1) if ( keyboard_check_direct(vk_escape)) { instance_destroy(); break; } screen_wait_vsync(); screen_refresh(); } keyboard_clear(vk_escape); // zapomniałem o tym xd</span> Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
karolo320 Opublikowano 30 Maja 2011 Autor Udostępnij Opublikowano 30 Maja 2011 Dzięki Huder :) Ale teraz chcym zrobić, żeby ko kliknięciu w rysowany kwadracik coś się stało, ale nie mam pomysłu jak to zrobić :/ Mam taki kodzik, ale średnio działa: GML While(true){ draw_set_color(c_lime) draw_rectangle(50,200,150,250,0) draw_set_color(c_black) draw_text(55,205,'KONTYNUUJ') draw_set_color(c_lime) draw_rectangle(200,200,300,250,0) draw_set_color(c_black) draw_text(205,205,'WYJDZ') if ( keyboard_check_direct(mb_left)){ x=mouse_x y=mouse_y if collision_rectangle(50,200,150,250,pauza,0,0){ instance_destroy() }else if collision_rectangle(200,200,300,250,pauza,0,0){ game_end() } } } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 30 Maja 2011 Udostępnij Opublikowano 30 Maja 2011 napisz sobie skrypt sprawdzający czy myszka jest w określonym prostokącie: GML // mouse_rect_enter(x1, y1, x2, y2) return ( mouse_x > argument0 && mouse_x < argument2 && mouse_y > argument1 && mouse_y < argument3 ); i teraz za jego pomocą możesz sprawdzić czy został naciśnięty dany obszar myszką np tak: GML if ( mouse_check_button(mb_left) ) { if ( mouse_rect_enter( 50 ,200, 150, 250 ) ) ) { instance_destroy(); break; mouse_clear(mb_left); } if ( mouse_rect_enter( 200, 200, 300, 250 ) ) ) { game_end(); break; } } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
karolo320 Opublikowano 30 Maja 2011 Autor Udostępnij Opublikowano 30 Maja 2011 hmm, może to while(true) przerywa? W innych przypadkach działa poprawnie, ale w tej pauzie nie :( Pewnie nie odczytuje mouse_x i mouse_y Ale dzięki, nie wymyśliłbym tego pewnie :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 31 Maja 2011 Udostępnij Opublikowano 31 Maja 2011 No ale co nie działa to? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
karolo320 Opublikowano 31 Maja 2011 Autor Udostępnij Opublikowano 31 Maja 2011 nie. :P Ale chyba wiem co, zaraz sprawdzę i powiem :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
karolo320 Opublikowano 31 Maja 2011 Autor Udostępnij Opublikowano 31 Maja 2011 nie. :P Ale chyba wiem co, zaraz sprawdzę i powiem :) E: A jednak nie, myślałem, że przy tym while nie wykonują się skrypty, ale jak wrzuciłem skrypt (if mouse_x>50 itd) w draw to też nie działa E2: A może ta funkcja keyboard_check_direct(mb_left) jest nie poprawna, bo to nielogicznie brzmi. niby keyboard check, a w nawiasie myszka Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 31 Maja 2011 Udostępnij Opublikowano 31 Maja 2011 nie zauważyłem to zmień na mouse lol. mouse_check_button powinno działać. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
karolo320 Opublikowano 31 Maja 2011 Autor Udostępnij Opublikowano 31 Maja 2011 Ale nie ma mouse_check_direct :) A w dokumentacji pisze, że keyboard niby obsługuje myszke. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 31 Maja 2011 Udostępnij Opublikowano 31 Maja 2011 Nie obsługuje nie wiem gdzie to wyczytałeś :P mouse_check_button będzie działać mam to w mojej grze. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
karolo320 Opublikowano 31 Maja 2011 Autor Udostępnij Opublikowano 31 Maja 2011 Nie wiem :D Powiedz co jest źle bo nie działa, proszę: GML while ( true ){ draw_set_color(c_black) draw_rectangle(view_xview+10,view_yview+10,view_xview+630,view_yview+470,0) draw_set_color(c_white) draw_text(15,15,'Menu pauzy') if ( keyboard_check_direct(vk_escape)){ instance_destroy(); break; } draw_set_color(c_lime) draw_rectangle(50,200,150,250,0) draw_set_color(c_black) draw_text(55,205,'KONTYNUUJ') draw_set_color(c_lime) draw_rectangle(200,200,300,250,0) draw_set_color(c_black) draw_text(205,205,'WYJDZ') if ( mouse_check_button(mb_left)){ if (script0(50,200,150,250){ instance_destroy() }else if script0(200,200,300,250){ game_end() } } screen_wait_vsync(); screen_refresh(); keyboard_clear(vk_escape); } I cytat z dokumentacji: keyboard_check_direct(key) Podobny do keyboard_check, z tym że sprawdza to z poziomu sprzętu, dzięki temu gra odczytuje naciśnięcie nawet kiedy okno gry nie jest aktywne. Umożliwia to także sprawdzenie klawiszy: vk_lshift, vk_lcontrol, vk_lalt, vk_rshift, vk_rcontrol, vk_ralt oraz przycisków myszy: mb_left, mb_middle i mb_right. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
TheMarcQ Opublikowano 31 Maja 2011 Udostępnij Opublikowano 31 Maja 2011 lepiej i prosciej jest zdeaktywowac wszystkie obiekty gdy tworzy sie obiekt z menu ( instance_deactive_all(1) ) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
karolo320 Opublikowano 31 Maja 2011 Autor Udostępnij Opublikowano 31 Maja 2011 A to nie zdeaktywuje też menu? Wtedy gra będzie bez możliwości aktywacji Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
TheMarcQ Opublikowano 31 Maja 2011 Udostępnij Opublikowano 31 Maja 2011 po to w instance_deactive_all ta jedynka, ktora informuje, ze ma zdeaktywowac wszystko procz obiektu wywolujacego ta funkcje Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
karolo320 Opublikowano 31 Maja 2011 Autor Udostępnij Opublikowano 31 Maja 2011 Okej działa :) Wielkie dzięki wszystkim, w szczególności Huderowi. Wystarczyło po akcji (instance_destroy()) dać break; żeby wyjść z pętli Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi