Gibki Kaktus Opublikowano 14 Maja 2015 Udostępnij Opublikowano 14 Maja 2015 1)Mam taki skrypt: GML i ni_open( 'mapy.ini' ) with(obj_start_edytor) { for(i=0;i<kratkix;i++) { for(u=0;u<kratkiy,u++) { ini_write_real(nazwa,'kratkaa['+string(i)+','+string(u)+']',kratkaa[i,u]); ini_write_real(nazwa,'obiektt['+string(i)+','+string(u)+']',obiektt[i,u]);}}} ini_close(); Nie widzę, żeby nic tutaj nie grało(kratki mają po 10), jednakże nigdzie się nic nie zapisuje. Powinno(chyba) samo się stworzyć, jak pliku nie ma, a plik tak czy siak wrzuciłem do Included Files. 2) Chcę skorzystać z paru vievów, ponieważ będą odpowiedzialne za skalowanie mapy. Na viewvie 0 ma być HUD i on ma się nie zmieniać, w sumie może być nawet nieruchomy. Problemem jest dla mnie view 1, ponieważ to od niego się wszystko dostosowuje, a ja chcę, żeby on działał dopiero od pewnego x i pewnego y, jak to osiągnąć? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 15 Maja 2015 Udostępnij Opublikowano 15 Maja 2015 1. Tak pętle for nie działają. 2. Użyj Draw GUI Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Gibki Kaktus Opublikowano 15 Maja 2015 Autor Udostępnij Opublikowano 15 Maja 2015 1. Tak pętle for nie działają. 2. Użyj Draw GUI Cos sie skopalo przy edycji posta, nie mam pojecia czemu. Poprawilem. Z petlami problemu nie ma, jak cos bez nich projowalem, to tex tak samo jest. W sensie, ze uzywac jednego viewa i w draw_gui rysowac gui? W draw_gui nie dawac view_xview, tylko sama pozycje? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 15 Maja 2015 Udostępnij Opublikowano 15 Maja 2015 Pozycja 0 i 0 w Draw GUI to lewy górny róg okna gry. Możesz mieć problemy z fullscreenem bo musisz pamiętać o tym że każdy ma inne rozdzielczości i proporcje ekranu, ale poszukaj tutoriali to znajdziesz sposób. A w INI chyba nie możesz używać znaków [ i ] bo oznaczają sekcję. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Gibki Kaktus Opublikowano 15 Maja 2015 Autor Udostępnij Opublikowano 15 Maja 2015 Juz wczesniej uzywalem nawiasow kwadratowych i nie bylo problemu. Dla testu tez bez petli zapisialem sobie zmienna lol i tez nic sie nie zapisalo :/ Skrypt jest uruchamiany, sprawdzalem. I czy da się zrobić, że jak klikniesz w jakimś miejscu w draw gui, to to się robi? Bo tutaj view_xview i view_yview mi nie pomoże, bo room jest skalowany. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
-[PhariseuS]- Opublikowano 15 Maja 2015 Udostępnij Opublikowano 15 Maja 2015 zacznij od GML display_set_gui_size(view_wview[0],view_hview[0]); zaraz po tym, jak znane będą już wymiary widoku (wview i hview). W ten sposób GUI będzie miało ten sam rozmiar, co widok. Resztę załatwi event Global mouse (lub jego pochodne pressed/released) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Gibki Kaktus Opublikowano 15 Maja 2015 Autor Udostępnij Opublikowano 15 Maja 2015 Albo ja Ciebie nie rozumiem, albo Ty mnie :D Nie chce, zeby gui mialo taki sam rozmiar co view, ono ma z gory ustalony rozmiar, a view sie zmienia. I teraz mam problem, bo nie wiem, jak dostosowac do tego klikanie myszki. Chyba, ze to napisales, ale jakos tego nie zczailem. i co z ini? :/ Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 15 Maja 2015 Udostępnij Opublikowano 15 Maja 2015 ini po prostu oducz się używać. -[PhariseuS]- podał funkcję na zmianę rozmiaru GUI. Musisz poczytać jak to wszystko działa, bo GUI nie będzie miało rozmiaru view a rozmiar ekranu. Są funkcje od myszy. Zaczynają się chyba do display_* zobacz w dokumentacji. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Gibki Kaktus Opublikowano 15 Maja 2015 Autor Udostępnij Opublikowano 15 Maja 2015 Dobra, zobaczę. Czemu mam się oduczyć ini? Są przydatne. To nie jest do zapisu mi potrzebne, więc każdy będzie mógł to edytować. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
-[PhariseuS]- Opublikowano 15 Maja 2015 Udostępnij Opublikowano 15 Maja 2015 W sumie nigdy się nie nauczyłem, jak w GM operować plikami INI, gdyż wszystko (i jeszcze więcej) da się załatwić funkcjami file_*. W związku z tym nie mam na ich temat zdania. Co do display_: Wybacz, stosowałem skróty myślowe, by naprowadzić Cię na dobry kierunek, bo za dużo umiesz, by podawać Ci gotowce ;) Jeżeli już ustawisz rozmiar GUI, w evencie Global mouse obiektu GUI, na który chcesz kliknąć, musisz sprawdzić, czy pozycja myszy znajduje się w zakresie tego obiektu. Zakładając, że każdy z rysowanych elementów jest ograniczony czterema koordynatami (minx, miny, maxx, maxy) prostokątu GML //funkcja checkForGUIClickRectangle(minx,miny,maxx,maxy) return (mouse_x>=argument[0] && mouse_y>=argument[1] && mouse_x<=argument[2] && mouse_y<=argument[3]) A dla okrągłych elementów, będących kołami o środku w punkcie (mx, my) i ograniczonych promieniem mradius GML //funkcja checkForGUIClickCircle(mx,my,mradius) return (point_distance(mouse_x,mouse_y,argument[0],argument[1])<=argument[2]) Tradycyjnie - nie sprawdzałem, czy działa. I teraz jak masz na przykład kwadratowy element GUI w prawym górnym rogu ekranu, i element ten ma 64x64 px - oraz nie ważne są jego "prawdziwe" x i y, gdyż rysowany jest z poziomu Draw GUI w ten lub podobny sposób GML var minx=room_width-64; var miny=0; var maxx=room_width; var maxy=64; //ok, powyzsze nie musi byc wcale zmienna tymczasowa, moga to byc niezmieniajace sie zmienne zadeklarowane np. w Create draw_rectangle(minx,miny,maxx,maxy,0) Wtedy w jego Global mouse (zwykły, pressed lub released, w zależności od tego, co chcesz osiągnąć) daj GML if (checkForGUIClickRectangle(minx,miny,maxx,maxy)) { show_message("Udalo sie kliknac w kwadrot. Dyplom wyslemy poczta"); } Byc moze jest to niezbyt wydajne obejscie, bo nie mam doswiadczenia z wiekszoscia funkcji display_*, ale podejrzewam, ze zasada dzialania jest podobna. Jak czegos nie rozumiesz to wal. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 15 Maja 2015 Udostępnij Opublikowano 15 Maja 2015 Nie da rady sprawdzać zwykłego mouse_x/y dla GUI bo ono ma rozmiar i wymiary ekranu, nie gry. To co podałeś jest prawdziwe tylko w wypadku gdy warstwa GUI ma rozmiar application_surface, a nie zawsze się opłaca tak robić. Polecam: https://yoyogames.com/tech_blog/109 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
-[PhariseuS]- Opublikowano 15 Maja 2015 Udostępnij Opublikowano 15 Maja 2015 Oboje mieliśmy trochę racji. Aż sam byłem ciekawy, bo chyba jeszcze nie musiałem korzystać z tego sposobu. Więc zrobiłem przykład. clickable_gui.zip (58 kb) W ogóle to widzę, że uploader nie idzie z duchem czasu i spośród dozwolonych rozszerzeń nie ma tam *.gmz. Jeżeli więc chciałby kto zaimportować do GMStudio, wystarczy zmienić rozszerzenie z zip na *.gmz. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Gibki Kaktus Opublikowano 16 Maja 2015 Autor Udostępnij Opublikowano 16 Maja 2015 Bardzo fajny przykład, wielkie dzięki ;) 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ę