Skocz do zawartości

H2S04

Użytkownicy
  • Postów

    47
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    2

Ostatnia wygrana H2S04 w dniu 28 Stycznia 2022

Użytkownicy przyznają H2S04 punkty reputacji!

O H2S04

  • Urodziny 12.04.1995

Informacje

  • Użytkownik GameMaker Studio 2
    Tak
  • Użytkownik GameMaker Studio
    Tak
  • Użytkownik Unity
    Nie
  • Użytkownik Godot
    Tak
  • Steam
    GanjaViruss

O mnie

  • Skąd
    Lubelskie

Ostatnie wizyty

2 252 wyświetleń profilu

Osiągnięcia H2S04

Smart Newbie

Smart Newbie (2/13)

4

Reputacja

  1. EDIT 2: Ogólnie, kamera się popsuła i zaczęła mi wywalać czarne pasy po bokach ekranu, więc po prostu zmodyfikowałem End Stepa, by przy wykryciu zmiany rozmiaru okna zmienił wielkość kamery oraz zmienił rozmiar, app_surface. Wszystko działa poprawnie, jednak dalej trzeba zmaksymalizować okno (GM na to nie pozwala, trzeba dodać plik dll który by to wykonał) EDIT: Dobra... Widzę gdzie jest problem... Gra uruchamia się w oknie, ale jest nie dopasowane do ekranu, po wciśnięciu dopasowania (wypełnienia jak kto woli :P) do ekranu (kwadracik), wszystko się naprawia -.-. Matko, a ja już 3 kamerę piszę... przynajmniej ją skróciłem o 3/4 z funkcją window_set_showborder(false); też wszystko się naprawia 😪 Witajcie, mam problem z GUI, a mianowicie skalowanie... Otóż, na fullscreenie koordynaty rysowania oraz myszy się zgadzają, po wyłączeniu fullscreena pozycja myszy z GUI się nie zgadza... Nie ważne jakiej funkcji do ustalania wielkości Gui użyję, koordy się nie zgadzają.. (Próbowałem display_set_gui_size(Window_Width, Window_Height); // display_set_gui_size(window_get_width(),window_get_height()); // display_set_gui_size(view_wport[0], view_hport[0]); // teraz pytanie gdzie jest problem, szukam w google i nie mogę ogarnąć problemu) Kamerę tworzę bezpośrednio w roomie i w alarmie skaluję GUI. // create Window_Width = 1920; Window_Height = 1080; Cam_Scale = 1; Cam_W = Window_Width / Cam_Scale; Cam_H = Window_Height / Cam_Scale; FullScreen = false; move = true; alarm[0] = 1; surface_resize(application_surface,Window_Width,Window_Height); window_set_size(Window_Width,Window_Height); window_center(); view_enabled = true; view_visible[0] = true; view_xport[0] = 0; view_yport[0] = 0; view_wport[0] = Cam_W; view_hport[0] = Cam_H; view_camera[0] = camera_create_view(0, 0, view_wport[0], view_hport[0], 0, o_Player, -1, -1, Cam_W/2, Cam_H/2); camera_set_view_pos(view_camera[0],o_Player.x - (Cam_W/2),o_Player.y - (Cam_H / 2)); alarm[0] = 1; //alarm 0 x = o_Player.x; y = o_Player.y; if move{ if alarm[0] < 0{ alarm[0] = 1*room_speed; } } if FullScreen{ display_set_gui_maximize(); window_set_fullscreen(true); } else { display_set_gui_size(view_wport[0], view_hport[0]); window_set_fullscreen(false); } //clean up camera_destroy(view_camera[0]); Mysz jest na górze czerwonego kwadratu...
  2. Mam pytanie z innej beczki, otóż posiadam kod ekwipunku, czyli rysowanie slotów, oraz przenoszenie przedmiotów, łączenie ich itp. Jednak napisałem kod w DrawGui zamiast step, jak bardzo może wpłynąć to na grę? Oczywiście kod działa tylko po kliknięciu myszą oraz gdy EQ jest włączone. Pozdrawiam PS. Tak wiem, że kod powinienem przenieść do stepa, bo on obsługuje logikę gry i jest wykonywany co ilość klatek, a Draw jest do rysowania, bo wykonywany jest ciągle, jednak ciekawi mnie to, zanim napiszę kod od nowa przenosząc do StepEvent
  3. W takim razie po prostu zrobię znikającą alphę, w czasie klikunastu s obiekt zniknie i się zniszczy, będzie mniej kombinacji i tyle ?
  4. Zaraz obczaję, problem jest taki, że przy with jak obiekt został zniszczony usuwało go z surface ale zaraz pokombinuję EDIT: Hmm wczesniej kombinowałem z camera_apply to nie chciało działać teraz dałem na początku drawu surface i działa ok jeden problem mniej jednak dalej przy with przy zniszczeniu obiektu draw na surface się niszczy
  5. Mam pytanie dotyczące surface podążającego za kamerą. Otóż rysując surface na powierzchni stałej (tj. jakiś koordynatach typu room_width room_height) rysowanie polega na rysowaniu na koordach danego obiektu, przy kamerze muszę odjąć view width/height by narysowało mi surface tam gdzie chce, i tutaj jest problem bo ile wszystko się rysuje, (przy obiekcie jak istnieje tego problemu nie ma bo pozycja obiektu jest stała więc rysowanie w with będzie ładnie działać z kamerą), narysowany surface podąża za kamerą zamiast być w miejscu rysowania... Jak można to naprawić bo skończyły mi się pomysły i nic nie wydukałem patrząc na forum yoyo. Pozdrawiam. ///SURFACE RYSUJE SIĘ W POSTACI Create: global.FloorSurafce = -1; Draw: var VW = camera_get_view_width(view_camera[0]), VH = camera_get_view_height(view_camera[0]), VX = camera_get_view_x(view_camera[0]), VY = camera_get_view_y(view_camera[0]); if (surface_exists(global.FloorSurf)){ draw_surface(global.FloorSurf,VX,VY); } else { global.FloorSurf = surface_create(VW,VH); } /// OBIEKT KTÓREGO SZCZĄTKI CHCĘ RYSOWAĆ Draw: if speed == 0{ // obiekt się porusza i zmniejsza prędkość lub zatrzymuje się na ścianie if (surface_exists(global.FloorSurf)){ surface_set_target(global.FloorSurf); draw_sprite_ext(sprite_index,image_index,x-camera_get_view_x(view_camera[0]),y-camera_get_view_y(view_camera[0]),image_xscale,image_yscale,image_angle,TPColor,image_alpha); // TPColor to wybranie koloru surface_reset_target(); } }
  6. Paaanie luksus teraz światła które na siebie nachodzą ładnie się zlewają Dzięki Gnysek! Zdrówka
  7. EDIT: Problem występuje przy blend mode bm_add... jak jest sam biały bm_substract, to nie ma tego problemu. Więc chyba po prostu wywalę tę linijkę i zamiast, żółtego światła będzie białe i tyle Właśnie próbowałem na różne sposoby, efekt byle jaki, i człowiek już nie wie jak to przykombinować, nawet uciąłem trochę gardient ale dalej widać linię, rysowanie w pętli for też daje ten sam efekt ?
  8. Trzeba powiększyć, spróbuj na smartphonie ?
  9. Już zmniejszyłem, popatrz jak gradient na siebie nachodzi, jeśli chodzi o latarnie, widać zaokrąglenia, bawiłem się bmami ale efekty słabe, wygląda jak by rysowały się wszystkie na raz, bo światełko od pawnshopu ładnie nachodzi bo jest rysowane następne w kolejności, jeszcze jutro nadam im jakiś nr i spróbuję for narysować je po kolei, może coś to da, bo wygląda fajnie ale jednak te zaokrąglenia jakoś mnie w oczy bolą ?
  10. Pytanko co do surface... Mam Sprite 500x500 okrągłego gardientu na światełko, ale rysowanie surface nachodzi na siebie i nie wygląda to zbyt ładnie, co mogę z tym zrobić? var VW = camera_get_view_width(view_camera[0]), VH = camera_get_view_height(view_camera[0]), VX = camera_get_view_x(view_camera[0]), VY = camera_get_view_y(view_camera[0]); if(surface_exists(global.Light_Surf)){ surface_set_target(global.Light_Surf); //BlackAlpha draw_clear_alpha(c_black,0.8); with(o_Light){ gpu_set_blendmode(bm_subtract); draw_sprite_ext(s_Light,0,x-VX,y-VY,0.5,0.5,0,c_white,1); // gpu_set_blendmode(bm_normal); gpu_set_blendmode(bm_add); draw_sprite_ext(s_Light,0,x-VX,y-VY,0.5,0.5,0,c_yellow,0.15); gpu_set_blendmode(bm_normal); draw_sprite_ext(s_RoadLight,0,x-VX,y-VY,1,1,image_angle,c_white,1); } with(o_PawnShp){ gpu_set_blendmode(bm_subtract); draw_sprite_ext(s_Light,0,x-VX,y-VY,0.3,0.3,0,c_white,1); gpu_set_blendmode(bm_normal); gpu_set_blendmode(bm_add); draw_sprite_ext(s_Light,0,x-VX,y-VY,0.3,0.3,0,LightColor,0.15); gpu_set_blendmode(bm_normal); draw_sprite_ext(s_PawnShop,image_index,x-VX,y-VY-8,1,1,180,c_white,1); draw_sprite_ext(s_PawnShop,image_index,x-VX,y-VY+8,1,1,0,c_white,1); } surface_reset_target(); draw_surface(global.Light_Surf,VX,VY); } else { global.Light_Surf = surface_create(VW,VH); }
  11. Brak czasu tamten projekt zabił, ale dało mi to trochę nauki, i teraz bawię się kolejnym, ale dało to zawsze jakaś naukę ?
  12. Nie ma problemu, jeszcze do tego wrócę
  13. E tam, nie odblokowywało itemu do zebrania, na razie borykam się z innym problemem ?
  14. EDIT: Po napisaniu inwentarza, nie idzie czasami podnieść obiektu bo fiksuje. Będę musiał napisać to od nowa -.- A jak nie będzie działać, to po prostu z tego zrezygnuje... Amount to po prostu zmienna, która przechowuje ilość. Przy stworzeniu obiektu jest to 1, bo jest jeden obiekt i tyle ma pobrać przy łączeniu się chyba, że po złączeniu ma więcej. Właśnie po napisaniu show_debug_message, pokazuje mi, że kod GoTo = True, się nie wykonuje, mimo, że timer działa... Zaraz napiszę wszystkie debugi i eytuję post dla wglądu. (czy mi się wydaje, czy timer dostaje szału? bo widzę po debugu, tu ma 30 tu nagle 17 tu nagle 30...) (Kurła, wszytko się rozwala tutaj, dlatego wrzucam debug do pliku tekstowego i tutaj kod, by nie walnąć posta na całą stronę, bo spoiler wszystko psuje, a nie chce robić śmietnika...) show_debug_message(" Start Step "); show_debug_message(" Nastepe if FindMultiple 2 == true"); if FindMultiple2 == true{ // Aktywowanie szukania show_debug_message(" If Find multiple2 == true "); var i, obj; show_debug_message(" Ustal var i, obj, "); show_debug_message(" start 'FOR' "); for (i = 0; i < instance_number(o_Wood); i++){ show_debug_message(" ustalanie obj[i] "); show_debug_message(" [i] ="+string(i)); obj[i] = instance_find(o_Wood,i); // Ustalenie numeru szukanego obiektu show_debug_message(" obj[i] ="+string(obj[i])); show_debug_message(" Przejscie do szukania obiektu z iloscia (if obj[i].Amount >= AMount "); if obj[i].Amount >= Amount{ // #1 Jezeli Ilosc w danym obiekcie jest wieksza lub rowna show_debug_message(" Jezeli obiekt z iloscia > od mojej ilosci: obj[i].Amount, obj[:"+string(i)+"]."+string(obj[i].Amount)); FindMultiple2 = false; // Wylacz szukanie show_debug_message(" Zmien FindMultiple z true na false "); Mx = obj[i].x; // Pobierz x show_debug_message(" ustal MX = obj[i].x "); My = obj[i].y; // Pobierz y show_debug_message(" ustal My = obj[i].y "); GoTo = true; // Wlacz ruch obiektu show_debug_message(" GoTo = true "); timer = 30; // ustaw timer na 30; show_debug_message(" Ustaw timer na 30 "); show_debug_message(" Koniec If Amount >= Amount "); } else { show_debug_message(" Else "); FindMultiple2 = true; // #1 Jeżeli nie to szukaj od nowa show_debug_message(" FindMultiple = True // szukaj od nowa "); } show_debug_message(" Koniec For "); } show_debug_message(" Koniec Multiple2 == true "); } show_debug_message(" KONIEC SZUKANIA "); show_debug_message(" . "); show_debug_message(" . "); show_debug_message(" . "); show_debug_message(" Przejscie do GoTo = true // nastepna linijka powinna byc jezeli GoTo = true "); if GoTo = true{ // Jeżeli ruch jest wlaczony show_debug_message(" jezeli GoTo = True "); show_debug_message(" Przejscie do obliczania odleglosci "); if point_distance(x,y,Mx,My) > 10 and point_distance(x,y,Mx,My) < 250{ // Jezeli odleglosc od obiektu jest wieksza od 10 i mniejsza od 250 show_debug_message(" Jezeli odleglosc > 10 i < 250 "); direction = point_direction(x,y,Mx,My); // obroc sie w jego strone show_debug_message(" uslal dira "); speed = 20; // idz show_debug_message(" ustal speed "); show_debug_message(" Koniec GoTo = True "); } else { show_debug_message(" ELSE ");// jezeli nie show_debug_message(" Przejscie do point distance "); if point_distance(x,y,Mx,My) <= 10 { // jezeli jest mniejsza od 10 show_debug_message(" Jezeli Point Distance < 10 "); GoTo = false; // wylacz ruch show_debug_message(" GoTo = false "); speed = 0; // wylacz speed show_debug_message(" speed = 0 "); col = collision_circle(x,y,10,o_Wood,false,true); // ustal kolizje show_debug_message(" Ustalam col= colision "); show_debug_message(" Przejscie do Col "); if col{ // jezeli jest kolizja show_debug_message(" If Col "); col.Amount += Amount; // dodaj do kolizji swoja ilosc show_debug_message(" Pobierz ilosc i dodaj do col "); Amount = 0; // ustal ja na wszelki wypadek na 0 show_debug_message(" Ulstal na 0 "); instance_destroy(); // zniszcz sie show_debug_message(" usun sie "); show_debug_message(" kONIEC COL "); } show_debug_message(" KONIEC IF POINT DISTANCE "); } show_debug_message(" KONIEC ELSE "); } show_debug_message(" KONIEC GOTO przed nawiasem }"); } show_debug_message(" KONIEC CALEGO KODU GO TO "); show_debug_message(" . "); show_debug_message(" . "); show_debug_message(" . "); // tutaj wiadomo ocb show_debug_message(" Przescie do timera "); if timer >= 0 { show_debug_message(" Jezeli Timer >= 0 "); show_debug_message(" Timer = "+string(timer)); timer -= 1; show_debug_message(" Odejmij -1 "); show_debug_message(" koniec odejmowania timera "); } else { show_debug_message(" else // jezeli timer <= 0 "); FindMultiple2 = true; show_debug_message(" szukaj obiektu // FindMultiple2 = true "); show_debug_message(" koniec Else "); } show_debug_message(" Koniec Timera "); show_debug_message(" KONIEC STEPU "); DEBUG MESSAGE.rtf
  15. Bry. Walczę z tym shitem, i już nie wiem ocb. WG debug_message omija mi Goto = true {...}... Ale po kolei. Chcę by itemki łączyły się jak np. w Graveyard Keeper, po prostu leciały do siebie, i zwiększały ilość. Poniekąd kod działa, jednak jest mały problem... Czasami obiekty są blisko siebie i nie chcą się połączyć, dopiero jak stworzę dwa lub trzy nowe i któreś się złączą, to w tedy reszta może się połączyć. Coś chyba pokićkałem w kodzie. Pozdrawiam if FindMultiple2 == true{ // Aktywowanie szukania var i, obj; for (i = 0; i < instance_number(o_Wood); i++){ obj[i] = instance_find(o_Wood,i); // Ustalenie numeru szukanego obiektu if obj[i].Amount >= Amount{ // #1 Jezeli Ilosc w danym obiekcie jest wieksza lub rowna FindMultiple2 = false; // Wylacz szukanie Mx = obj[i].x; // Pobierz x My = obj[i].y; // Pobierz y GoTo = true; // Wlacz ruch obiektu timer = 30; // ustaw timer na 30; } else { FindMultiple2 = true; // #1 Jeżeli nie to szukaj od nowa } } } if GoTo = true{ // Jeżeli ruch jest wlaczony if point_distance(x,y,Mx,My) > 10 and point_distance(x,y,Mx,My) < 250{ // Jezeli odleglosc od obiektu jest wieksza od 10 i mniejsza od 250 direction = point_direction(x,y,Mx,My); // obroc sie w jego strone speed = 20; // idz } else { // jezeli nie if point_distance(x,y,Mx,My) <= 10 { // jezeli jest mniejsza od 10 GoTo = false; // wylacz ruch speed = 0; // wylacz speed col = collision_circle(x,y,10,o_Wood,false,true); // ustal kolizje if col{ // jezeli jest kolizja col.Amount += Amount; // dodaj do kolizji swoja ilosc Amount = 0; // ustal ja na wszelki wypadek na 0 instance_destroy(); // zniszcz sie } } } } // tutaj wiadomo ocb if timer >= 0 { timer -= 1; } else { FindMultiple2 = true; }
×
×
  • Dodaj nową pozycję...