Skocz do zawartości

pankracy

Użytkownicy
  • Zawartość

    289
  • Rejestracja

  • Ostatnia wizyta

Reputacja

0 Neutralny

O pankracy

  • Tytuł
    Major User

Previous Fields

  • Użytkownik GameMaker Studio
    Tak
  • Użytkownik GameMaker 8
    Tak

Ostatnie wizyty

3610 wyświetleń profilu
  1. Problemy z rozmiarem GUI

    Używam jeszcze w jednym obiekcie aplication_surface..tak było od początku w tym silniku gry...tylko usunąłem tą linijkę którą mi zasugerowałeś żebym to zrobił,bo wychodziły wtedy dziwne anomalia z rozdzielczością Zostawiłem sobie tak: na pełnym ekranie mimo,że mam view ustawiony na 1280x720 to gra uruchamia się na pełny ekran i pokazuje 1920x1080 ok tak mi odpowiada..zresztą to już dawno jest standardem i większość monitorów to obsłuży.. Natomiast w oknie gry samo dostosowuje sobie proporcje ekranu tylko muszę ustawić szerokość np 720p lub inną dowolną obj_global_controller begin 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 } co do alarmu nie zjadłem go..tylko celowo usunąłem bo jak jest włączony to znika mi pasek gui lub dziwnie się zachowuje..dlatego usunąłem tą linijkę
  2. Problemy z rozmiarem GUI

    Dziękuję...pomogło...miałeś rację w zdarzeniu create na sztywno miałem przypisaną nazwę dla przycisku.. Wiem,że gms 1.4 jest nie wspierany od 3 lat,ale sporo osób jeszcze go używa..ba nawet znam takich co jeszcze używają wersję 8.1 Gnysku powiedz mi jeszcze... uszczuplę kod żeby nie wklejać tu wszystkiego.. czy ta część kodu powinna być w zdarzeniu alarm[0] lub dowolny inny alarm? bo jak wrzucę to do zdarzenia step to gui się psuje...więc mam to w alarmie i jest teraz dobrze.. czyli mam dokładnie tak // create display_set_gui_size(1280, 720) full_screen = -1; // step if (full_screen != window_get_fullscreen()) { full_screen = window_get_fullscreen(); } // alarm0 if (full_screen) { display_set_gui_maximize( 1, 1 ); } else { display_set_gui_maximise( room_width/1280,room_height/720 ); } No i druga ostatnia już sprawa...bo nie chce Cie już męczyć..przynajmniej dziś ;-) nie no żartuje...dużo mi pomogłeś i bardzo dziękuję Ci za pomoc.. Używam tego kodu do naprawy wyświetlania grafiki jak skończę grę i wracam do menu gry... i to ładnie działa..ale jak mam teraz nowy kod od ciebie to zakomenderowałem tą linijkę kodu display_set_gui_maximise() Ponieważ wtedy rozwala mi się menu GUI..raz jest ok,a raz nie..dlatego to wyłączyłem i tego zjawiska już nie ma.. ale pytanie,czy muszę tu wstawić jakieś wartości? czy wystarczy,że to wyłączyłem.. poniżej kod.. obj_poprawa_grafika create surface_resize(application_surface,room_width,room_height) //display_set_gui_maximise()//tu wyłaczylem tą linikę,bo przy włączonej tej funkcji psuje mi się całe gui w oknie gry obj_poprawa_grafika1 step if(instance_exists(obj_global_controller)) {with(obj_game_controller){instance_destroy()}} surface_resize(application_surface,room_width,room_height) //display_set_gui_maximise() //to samo wyłaczyłem bo włączenie tej funkcji psuje mi gui..na w oknie gry draw_texture_flush()
  3. Problemy z rozmiarem GUI

    To nie pomaga...ale coś odkryłem...Gnysku i wygląda na to,że jest to przyczyna powstawania tego problemu otóż.. kiedy tutaj wstawię zamiast display_set_gui_maximize( window_get_width()/1280, window_get_height()/720 ); to display_set_gui_maximise( room_width/1280,room_height/720 ); Przecież mam włączone view w planszach gdzie mam scenerię gry i chodzę bohaterem..a view wszędzie jest ustawiony na 1280x720..wiadomo,że sceneria ma rożne wymiary,ale to nie ma wpływu na wyświetlanie się na warstwie GUI pauzy zegara i paska HUD prawda? To przez dosłownie ułamek sekundy w trybie okienkowym pasek hud oraz zegar jest w prawidłowej pozycji i ładnie skalowany..ale zaraz to znika.. pauza też przez ułamek sekundy jest dobrze skalowana i w dobrej pozycji,ale później już się psuje..Wiem wina alarmu...można to naprawić? tu przykład... menu gry nie mam włączonych view,bo tam grafika ma rozmiary planszy czyli 1280x720... a plansze gdzie jest rozgrywka w grze gdzie chodzi bohater są różnego rozmiaru,ale z ustawionym podglądem gry view 1280x720...wszędzie tak ustawiłem Edycja 1 Wywaliłem w zdarzeniu step linijkę z alarmem alarm[0] = 10; I teraz wszystkie jest w porządku;-) pauza zegar i pasek hud idealnie skalują się na warstwie GUI na małym ekranie..I dopasowują swoją pozycję.;-) Widzisz...mówiłem,że coś jest z tą linijka kodu nie tak;-)jednak coś tam mi świtało wujaszku Gnysku ;-) Mam nadzieje,że na różnych monitorach będzie to cały czas w tym samym miejscu pauza zegar i pasek hud...nie tylko na moim monitorze.. Ostatecznie zostawiłem ten kod tylko wywaliłem tą linijkę..więc kod jest w zdarzeniu step w alarm[0](chociaż chyba tam nie powinien teraz być) i w create Jednak jak dam go do step to się wszystko psuje..a w Alarm0 jest idealnie.. ostatecznie kod wygląda tak // create display_set_gui_size(1280, 720) full_screen = -1; // step if (full_screen != window_get_fullscreen()) { full_screen = window_get_fullscreen(); } // alarm0 if (full_screen) { display_set_gui_maximize( 1, 1 ); } else { display_set_gui_maximise( room_width/1280,room_height/720 ); } Sprawdzisz czy tak to powinno wyglądać? ok jeszcze po za tym mam dwa pytania do tego tematu.. 1.Kiedy przechodzę z plansz gameplayu do menu gry to używam tego kodu aby nie psuło mi grafiki gry..bo zawsze tak jest...pewnie ma to wspólnego ze mianą rozdzielczości itp... Mam to włączone i jest ok..jednak mam pytanie,czy ta poniżej linijka kodu powinna być też włączona? bo obecnie jak ją włączam to wtedy psuje mi się całe gui obj_grafika_poprawa create surface_resize(application_surface,room_width,room_height) //display_set_gui_maximise()//tu wyłaczylem tą linikę,bo przy włączonej tej funkcji psuje mi się całe gui w oknie gry obj_grafika_poprawa1 step if(instance_exists(obj_global_controller)) {with(obj_game_controller){instance_destroy()}} surface_resize(application_surface,room_width,room_height) //display_set_gui_maximise() //to samo wyłaczyłem bo włączenie tej funkcji psuje mi gui..na w oknie gry draw_texture_flush() i pytanie drugie 2. Mam w menu opcji przycisk który naciskam i zmienia mi się tryb wyświetlania gry..pełny ekran/okno i wyświetla mi się też informacja czy jest to tryb pełnoekranowy czy okienkowy... Ale jest jeden mankament z tym wyświetlaniem..Otóż kiedy wejdę do menu opcji..i wybiorę pozycję zmiany wyświetlania obrazu i pokaże mi się jak nacisnę ENTER napis na przycisku windowed i zmieni się tryb na okienkowy to jeśli jeszcze raz wejdę do menu opcji to nie wyświetla mi się napis windowed tylko display.. i analogicznie to samo jak teraz nacisnę przycisk ENTER to przełączy mnie na full screen i wyświetli się napis na przycisku full screen,ale jak znów wejdę do menu opcji to zamiast wyświetlać się napis full screen wyświetla mi się napis display.. Wiem,że to ma związek z tym,że w zdarzeniu create mam tak to zdefiniowane i nazwane..jak usunę nazwę display z create i nic nie wstawię to nic mi się nie wyświetla i przycisk jest pusty..więc coś musiałem tam wpisać.. Reasumując.. Chciałbym aby w menu opcji przycisk jak przejdę w tryb okienkowy to wyświetlał mi się napis windowed nawet jak wejdę po raz drugi do tego menu opcji..póki nie przełączę się w tryb pełnoekranowy i analogicznie tak samo przy pełnym ekranie full screen chce żeby mi się w menu opcji wyświetlał nawet jak wrócę do tej opcji póki nie zmienię go na tryb okienkowy windowed. ok tak wygląda zaprogramowany przycisk obj_opcje create options=ds_list_create() options[|0]=("Controlls") options[|1]=("Sound") options[|2]=("Display") options[|3]=("Back") selected=0 gp_up=false gup_down=false gp_left=false gp_right=false //Używane do animacji menu animation_speed=room_speed/4 for(var i=0; i<ds_list_size(options); i++) { animation[i]=0 } step if(abs(gamepad_axis_value(0,gp_axislv))<0.3 && !keyboard_check(vk_anykey)) { gp_up=0 gp_down=0 } if(abs(gamepad_axis_value(0,gp_axislh))<0.3 && !keyboard_check(vk_anykey)) { gp_left=0 gp_right=0 } if(keyboard_check_pressed(vk_down) || gamepad_button_check_pressed(0,gp_padd) || (gamepad_axis_value(0,gp_axislv)>0.7 && !gp_up)) { selected++ if(selected>=ds_list_size(options)) { selected=ds_list_size(options)-1 } gp_up=true } if(keyboard_check_pressed(vk_up) || gamepad_button_check_pressed(0,gp_padu) || (gamepad_axis_value(0,gp_axislv)<-0.7 && !gp_down)) { selected-- if(selected<0) { selected=0 } gp_down=true } if(keyboard_check_pressed(vk_enter) || gamepad_button_check_pressed(0,gp_face1)) { if(selected=0) { room_goto(room_setup_controlls) } else if(selected=1) { room_goto(room_setup_sound) } else if(selected=2) { window_set_fullscreen(!window_get_fullscreen()); options[|2]=("Fullscreen") if (!window_get_fullscreen()) { window_set_size(obj_display_manager.ideal_width, obj_display_manager.ideal_height); options[|2]=("Windowed") } } else if(selected=3) { room_goto(room_main_menu) } } draw draw_set_valign(1) draw_set_halign(1) draw_set_font(font_menu) var line_height=ceil(string_height("M")*1.1) for(var i=0; i<ds_list_size(options); i++) { if(i=selected) { //Wybrana opcja animation[i]=clamp(animation[i]+(1/animation_speed),0,1) } else { animation[i]=clamp(animation[i]-(1/animation_speed),0,1) } var color=merge_colour(c_white,c_red,animation[i]) var s=options[|i] draw_text_transformed_color(x,y+(line_height*i),s,1+animation[i]/5,1+animation[i]/5,0,color,color,color,color,1) }
  4. Problemy z rozmiarem GUI

    Gnysek.. Uwierz mi że jest takaa sama rozdzielczość w trybie pełnoekranowym i w oknie czyli 1280x720 Sprawdziłem to jak podałeś mi kod draw_text(10,10, string(view_wport[0]) + ", " + string(view_hport[0])); ..i mi wyświetliły się te wartości na ekranie Wspomniałem Ci że wyłączyłem ten jedyny kod który miał te hport w kodzie i na włączonym tamtym kodzie tryb pełnoekranowy pokazywał 1920x1080 a okienkowy 1280x720..ale to wyłączyłem.. Pytasz czemu takie wartości tu zasugerowałem? display_set_gui_maximise(720/window_get_width(),0,360/window_get_height(),0); bo to jest przecież połowa rozdzielczości w jakiej gra ma podgląd gry. Stąd takie proporcje.. Ja obstawiam..że coś źle jest w tej linijce..może faktycznie musiałbym podać xoffset i yoffset? Nie wartości 0,0 tylko wstawić odpowiednią wartość która w trybie okienkowym przesunie mi na środek pauze i na prawy górny róg zegarek?
  5. Problemy z rozmiarem GUI

    Gnysek, Sprawdziłem... Nie mam w żadnym z obiektów kodu który zmienia gdzieś po drodze rozmiary. W menu gry idealnie wszystko wygląda bo tam nie używam view ponieważ menu gry jest w natywnej rozdzielczości 1280x720 a scenerie mają różne wymiary i włączony view gdzie wszędzie ustawiam podgląd gry na 1280x720 Skoro przy użyciu tego poniżej kodu te trzy obiekty pasek HUD zegar i pauza skalują się o te wartości to chyba jest to w porządku prawda? display_set_gui_maximise(720/window_get_width(),0,360/window_get_height(),0); One mają dobre w trybie okienkowym rozmiary..ale położeniew trybie okienkowym pauzy i zegara jest w złym miejscu.. nie wiem jak mam to bardziej wytłumaczyć:-) jak wstawie takie np wartości display_set_gui_maximise(1280/window_get_width(),0,720/window_get_height(),0); To te trzy obiekty pasek hud zegar i pauza nie zmniejszają się i są takie same jak na pełnym ekranie i w trybie okienkowym..A ich umiejscowienie w trybie pełnoekranowym i okienkowym jest prawidłowe
  6. Problemy z rozmiarem GUI

    jak pasek HUD ma pozycję x,y nie wycentrowaną tylko 0,0 to chyba tak myślę jest to wytłumaczenie dlaczego sam pasek HUD jest prawidłowo usytuowany..bo przecież jego pozycja nie zmieni po przełączeniu w tryb okienkowy.. ok już zajrzałem i sprawdzam teraz te wartości..
  7. Problemy z rozmiarem GUI

    czyli tak dać argument;-) display_set_gui_maximise(720/window_get_width(),0,360/window_get_height(),0);
  8. Problemy z rozmiarem GUI

    Źle mnie Gnysek zrozumiałeś... wyjaśniam ;-) użycie tych wartości display_set_gui_maximise(720/window_get_width(),360/window_get_height()); powoduje,że w trybie okienkowym pasek hud pauza i zegar mają dobry rozmiar..tylko umiejscowienie pauzy i zegara jest złe.Narysowałem to na tych dwóch obrazkach gdzie są umiejscowione;-) i teraz sztuczka.. jak ustawię te wartości na takie display_set_gui_maximise(1280/window_get_width(),720/window_get_height()); To wtedy pasek HUD,pauza i zegar jest takiej samej wielkości jak na pełnym ekranie jak przełączę się w tryb okienkowy..plusem tego rozwiązania,że wszystko jest wtedy na swoim miejscu pauza i zegar..ale wszystko jest powiększone i rozmiarów takich jak na pełnym ekranie;-) Teraz rozumiesz co mam na myśli?
  9. Problemy z rozmiarem GUI

    Już usunąłem display_set_gui_size z tego poprzedniego kodu. Ja mam na środku pauze..jest w zdarzeniu draw GUI... zobacz obj_pauza_controller (wywołuje on obiekt obj_pauza na ekranie) step if keyboard_check_pressed(vk_escape) { if !instance_exists(obj_pauza) { instance_create(0, 0, obj_pauza); } } obj_pauza draw gui draw_set_color(c_fuchsia); draw_set_font(fn_pauza); draw_set_halign(fa_center); draw_set_valign(fa_middle); draw_text( display_get_gui_width()/2, display_get_gui_height()/2-200,"PAUSED"); draw_set_font(fn_pauza); draw_set_valign(fa_middle); draw_set_halign(fa_center); if (interest == "continue") { draw_text_colour(display_get_gui_width()/2, display_get_gui_height()/2-100,"CONTINUE",c_red,c_red,c_red,c_red,1) draw_text_colour(display_get_gui_width()/2, display_get_gui_height()/2,"RESTART",c_white,c_white,c_white,c_white,1) draw_text_colour(display_get_gui_width()/2, display_get_gui_height()/2+100,"EXIT",c_white,c_white,c_white,c_white,1) } else if (interest == "restart") { draw_text_colour(display_get_gui_width()/2, display_get_gui_height()/2-100,"CONTINUE",c_white,c_white,c_white,c_white,1) draw_text_colour(display_get_gui_width()/2, display_get_gui_height()/2,"RESTART",c_red,c_red,c_red,c_red,1) draw_text_colour(display_get_gui_width()/2, display_get_gui_height()/2+100,"EXIT",c_white,c_white,c_white,c_white,1) } else if (interest == "exit") { draw_text_colour(display_get_gui_width()/2, display_get_gui_height()/2-100,"CONTINUE",c_white,c_white,c_white,c_white,1) draw_text_colour(display_get_gui_width()/2, display_get_gui_height()/2,"RESTART",c_white,c_white,c_white,c_white,1) draw_text_colour(display_get_gui_width()/2, display_get_gui_height()/2+100,"EXIT",c_red,c_red,c_red,c_red,1) } else if (interest == "main manu") { draw_text_colour(display_get_gui_width()/2, display_get_gui_height()/2-100,"CONTINUE",c_white,c_white,c_white,c_white,1) draw_text_colour(display_get_gui_width()/2, display_get_gui_height()/2,"RESTART",c_white,c_white,c_white,c_white,1) draw_text_colour(display_get_gui_width()/2, display_get_gui_height()/2+100,"EXIT",c_red,c_red,c_red,c_red,1) } tak samo zegar patrz obj_timer draw gui var i, notimer_room; notimer_room = false; for (i = 0; i < ds_list_size(global.RT_room_list); ++i) { if (ds_list_find_value(global.RT_room_list, i) == room) { notimer_room = true; break; } } if (notimer_room == false) { draw_set_font(fnt_zegar); draw_set_color(c_white); draw_set_halign(fa_right); draw_set_valign(fa_top); draw_text(display_get_gui_width()+30-string_width(time_string), 0, "CZAS: " + time_string); draw_text(display_get_gui_width()-string_width(fps),y-5,"FPS: " + string(fps)); } Na pełnym ekranie jest wszystko w porządku z pozycja pauzy i zegara... jeśli nie zmniejszymy paska hud i zegara oraz pauzy to pozycja w okienku też wtedy jest w porządku tych rzeczy,ale są one za duże.. jest tak obecnie a powinno być tak To jest dziwna sytuacja..bo skoro na warstwie GUI jest narysowana pauza i zegar gry to powinni dostosować się do trybu okienkowego... Wygląda to tak,że przez zmianę rozmiaru pauzy i zegara podczas zmiany w tryb okienkowy zmienia się ich pozycja... Pasek hud ma swoją stałą pozycję bo jest usytuowany cały czas w lewym górnym rogu bez względu na rozmiar okna gry.. zmniejszając całą warstwę GUI przy trybie okienkowym...zmienia się ich położenie...tylko pasek HUD ma prawidłowe położenie a pauza i zegar już nie...w trybie okienkowym display_set_gui_maximise(720/window_get_width(),360/window_get_height());
  10. Problemy z rozmiarem GUI

    Gnysku tak.. Teraz pytanie dlaczego pauza i zegar narysowane na warstwie GUI (draw GUI) przy zmianie na tryb okienkowy nie chcą zmienić swojego położenia dopasowanego do okna gry...? Pomogło wyświetlić wartości na ekranie.. draw_text(10,10, string(view_wport[0]) + ", " + string(view_hport[0])); Przy wyłączonym tym poniżej kodzie ///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]); } */ Tryb pełnoekranowy wyświetla informacje 1280x720 a tryb okienkowy wyświetla informacje 1280x720 pauza i zegar gry bez względu na tryb gry czy to pełnoekranowy czy okienkowy ich położenie jest złe nie są na swoim miejscu Pasek HUD jest usytuowany w porządku Natomiast przy włączonym poniżej kodzie ///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]); } Tryb pełnoekranowy wyświetla informacje 1920x1080 a tryb okienkowy wyświetla informacje 1280x720 Tu pauza i zegar w trybie pełnoekranowym są dobrze umieszczone,ale kiedy przełączymy na tryb okienkowy ich położenie jest złe(jest takie same jak w powyższym wcześniejszym przypadku) pasek HUD jest usytuowany w porządku Tylko teraz...jak to naprawić? aby i pauza i zegarek które są narysowane na warstwie GUI tak samo skalowały się jak reszta rzeczy Tak to ostatecznie powinno wyglądać jak na poniższym obrazku
  11. Problemy z rozmiarem GUI

    Gnysku, Teraz skaluje się pasek HUD do rozmiaru okna... Jeszcze jedna rzecz...nie chce skalować się pauza a skalowała się i zegar gry...który jest w prawym górnym rogu.. Jak jest na pełnym ekranie to wszystko ładnie wygląda i jest na swoim miejscu..kiedy przełączę na tryb okienkowy pasek HUD też się ładnie już skaluje,ale nie skaluje się pauza i zegar. Odkryłem tą zależność..jak włączę ten kod poniżej to zegar i pauza skalują się,ale wtedy pasek HUD nie skaluje się.... Jak to naprawić? Pauza i zegar też jest rysowany na warstwie GUI obj_game_controller begin 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]); } edit tak to wygląda jak na obrazku
  12. Problemy z rozmiarem GUI

    Wiesz..dokumentacja to pojęcie szeroko rozumiane:-) Nie przeczytałem książki gms...ale przeczytałem krótki opis tej funkcji... Z której zrozumiałem jak zrozumiałem. Gnysku, Czy pod obsługę innych monitorów niż mój muszę zmienić te wartości z 1,1 na dzielenie przez display_get_width() i ..._height() .?
  13. Problemy z rozmiarem GUI

    I dupka;-) teraz w trybie okienkowym są dobre proporcje paska hud,a w trybie pełny ekran pasek jest bardzo malutki..jeszcze mniejszy niż w trybie okienkowym.. create display_set_gui_maximize( 1, 1 ); draw gui display_set_gui_maximize( 720/window_get_width(), 360/window_get_height() ); Może muszą być większe te wartości niż 1?
  14. Problemy z rozmiarem GUI

    Łobuz z Ciebie;-) Dobra...pytam,bo nie używałem tej funkcji wcześniej... a napisałeś ją dwukrotnie z innymi wartościami stąd moje pytanie;-)
  15. Problemy z rozmiarem GUI

    Fakt...masz rację nie podstawiłem sobie cyfry pod dzielenie. czy przypadkiem tu nie ma być display_set_gui_size(1, 1) zamiast display_set_gui_maximize( 1, 1 ); ?
×