LolikZabijaka Opublikowano 13 Lipca 2017 Udostępnij Opublikowano 13 Lipca 2017 Ostatnio regularnie tutaj piszę :D Kolejny problem na jaki natrafiłem, to draw w postaci gracza, mianowicie, posiada on różne sprite, zależne od wykonywanej akcji(strzał, celowanie), problem polega na tym (dopiero teraz go wychwyciłem), że "sprite_strzał"(po prostu animacja wystrzału,kiedy zmienna "shoot" jest true) zlewa się ze "sprite_bron"(animacja celowania), po prostu nachodzą na siebie, a jak wiadomo wygląda to raczej mało estetyczne. Oto fragment kodu "DRAW" odpowiedzialny za owe akcje: GML draw_sprite_ext(sprite_bron[bron],image_index,x-4,y+4,image_xscale, image_yscale,direction ,c_black,0.5) if ( shoot == true ) { if ( ammo_wmagazynku[ bron[ active ]] > 0 or ammo_zapasowe[ bron[ active ]] > 0 and shoot=false ) draw_sprite_ext( sprite_bron[ bron ],image_index,x,y,image_xscale, image_yscale, direction , image_blend,image_alpha) else draw_sprite_ext( sprite_strzal[ bron ],image_index,x,y,image_xscale, image_yscale,direction , image_blend,image_alpha) } else draw_sprite_ext( sprite_bron[ bron ],image_index,x,y,image_xscale, image_yscale,direction , image_blend,image_alpha) } Gdzie jest błąd? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am vader Opublikowano 13 Lipca 2017 Udostępnij Opublikowano 13 Lipca 2017 Opis jest nieprecyzyjny i nie wiem dokladnie co jest problemem, dalbys rade nagrac filmik lub ewentualnie podrzucic screeny? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
LolikZabijaka Opublikowano 13 Lipca 2017 Autor Udostępnij Opublikowano 13 Lipca 2017 1.Sprite przy strzelaniu, czyli akcja. (sprite_strzal) 2.sprite, przy celowaniu, czyli inne zdarzenie.(sprite_bron) Każdy z tych spritów powinien być pokazywany osobno, w zależności od akcji Jednak kiedy już oddaję strzał, powinien być widoczny tylko "Sprite_strzal", ale widoczne są oba na raz, tak jak na rycinie nr 3. Mam nadzieję że załapałeś :D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 13 Lipca 2017 Udostępnij Opublikowano 13 Lipca 2017 No to banał. Nie ważne co się dzieje to pierwsza linijka czyli sprite_bron[bron] zawsze jest rysowana. Potem w zależności od warunków może być rysowana sprite_bron[bron] albo sprite_strzal[ bron ]. Wywal pierwszą linijkę. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
LolikZabijaka Opublikowano 13 Lipca 2017 Autor Udostępnij Opublikowano 13 Lipca 2017 pierwsza linijka odpowiada za cień, wywaliłem i nic, a z nawiasu po wywaleniu pierwszej linijki warunku ze sprite_bron przestaje rysować sprite_strzal Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 13 Lipca 2017 Udostępnij Opublikowano 13 Lipca 2017 to jeszcze nie rozwiązanie problemu, ale tu jest totalny błąd, tj. ten warunek: GML if ( ammo_wmagazynku[ bron[ active ]] > 0 or ammo_zapasowe[ bron[ active ]] > 0 and shoot=false ) można skrócić do: GML if ( ammo_wmagazynku[ bron[ active ]] > 0) teraz pytanie-zagadka: dlaczego? :> EDIT: chwiiilaaaa! :o dlaczego Ty tam przypisujesz false do shoot, miast porównać go z false? O.o Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
LolikZabijaka Opublikowano 13 Lipca 2017 Autor Udostępnij Opublikowano 13 Lipca 2017 Chyba łapię, zmienne które stąd wywaliłeś nie są potrzebne przy DRAW @EDIT - Nie ja pisałem ten silnik, autorem jest Marek.S @EDIT II - Coś pochrzaniłeś, teraz już w ogóle nie rysuje mi strzału. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am vader Opublikowano 14 Lipca 2017 Udostępnij Opublikowano 14 Lipca 2017 EDIT: chwiiilaaaa! :o dlaczego Ty tam przypisujesz false do shoot, miast porównać go z false? O.o Jeżeli nie pamięasz już podstawowych założeń game makera może czas już nie postować. Dla GM'a a=b jest a==b jeżeli jest dokonane w trakcie testu, a więc if shoot=false jest interpretowane jako if (shoot==false). Spróbuj tego: GML if (shoot) { if ( (ammo_wmagazynku[ bron[ active ]] > 0 or ammo_zapasowe[ bron[ active ]] > 0) and shoot==false ) draw_sprite_ext( sprite_bron[ bron ],image_index,x,y,image_xscale, image_yscale, direction , image_blend,image_alpha) else draw_sprite_ext( sprite_strzal[ bron ],image_index,x,y,image_xscale, image_yscale,direction , image_blend,image_alpha) } else draw_sprite_ext( sprite_bron[ bron ],image_index,x,y,image_xscale, image_yscale,direction , image_blend,image_alpha) } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 14 Lipca 2017 Administratorzy Udostępnij Opublikowano 14 Lipca 2017 GML shoot=false ) EDIT: chwiiilaaaa! :o dlaczego Ty tam przypisujesz false do shoot, miast porównać go z false? O.o :psichix: :psichix: :psichix: :psichix: :psichix: :psichix: :psichix: :psichix: :D Przypisywanie w ifie w GM, hahahaha! Marzenie. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
LolikZabijaka Opublikowano 14 Lipca 2017 Autor Udostępnij Opublikowano 14 Lipca 2017 Przykro mi, ale ciągle to samo, może podrzucę Wam cały kod z DRAW, może tam jeszcze jest gdzieś jakiś babol: GML if trzyma=false { if (shoot) { if ( (ammo_wmagazynku[ bron[ active ]] > 0 or ammo_zapasowe[ bron[ active ]] > 0) and shoot==false ) draw_sprite_ext( sprite_bron[ bron ],image_index,x,y,image_xscale, image_yscale, direction , image_blend,image_alpha) else draw_sprite_ext( sprite_strzal[ bron ],image_index,x,y,image_xscale, image_yscale,direction , image_blend,image_alpha) } else draw_sprite_ext( sprite_bron[ bron ],image_index,x,y,image_xscale, image_yscale,direction , image_blend,image_alpha) } draw_set_font( font0 ); draw_set_color( c_white ); draw_set_halign( fa_center ) xx = view_xview[ 0 ] + view_wport[ 0 ] - 107 // pozycja panelu yy = view_yview[ 0 ] + view_yport[ 0 ] +1 if ( bron != nic ) //jezeli aktualna bron != nic { draw_text( xx - 15 , yy + 45 , weapon_name[ bron ] ) // rysuje napis z nazwą broni draw_text( xx + 15 , yy + 65 , string( ammo_wmagazynku[ bron ] ) + '/' + string( ammo_zapasowe[ bron ] )) // rysuje ilość ammo } if ( shoot == false and trzyma=true and celowanie=0 ) { if ( shoot=false ) draw_sprite_ext(sprite_trzyma[bron],image_index,x-4,y+4,image_xscale, image_yscale,direction ,c_black,0.3) draw_sprite_ext( sprite_trzyma[ bron ],image_index,x,y,image_xscale, image_yscale, direction , image_blend,image_alpha) } else { draw_sprite_ext(sprite_bron[bron],image_index,x-4,y+4,image_xscale, image_yscale,direction ,c_black,0.5) draw_sprite_ext( sprite_bron[ bron ],image_index,x,y,image_xscale, image_yscale,direction , image_blend,image_alpha) } draw_healthbar(view_xview+32,view_yview+16,view_xview+150,view_yview+20,stamina,c_white,c_red,c_aqua,0,1,1); draw_healthbar(view_xview+32,view_yview+23,view_xview+150,view_yview+30,zdrowie,c_white,c_red,c_lime,0,1,1); Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am vader Opublikowano 14 Lipca 2017 Udostępnij Opublikowano 14 Lipca 2017 A spróuj tak: GML if trzyma=false { if (shoot) { if ( (ammo_wmagazynku[ bron[ active ]] > 0 or ammo_zapasowe[ bron[ active ]] > 0) and shoot==false ) draw_sprite_ext( sprite_bron[ bron ],image_index,x,y,image_xscale, image_yscale, direction , image_blend,image_alpha) else draw_sprite_ext( sprite_strzal[ bron ],image_index,x,y,image_xscale, image_yscale,direction , image_blend,image_alpha) } else draw_sprite_ext( sprite_bron[ bron ],image_index,x,y,image_xscale, image_yscale,direction , image_blend,image_alpha) } draw_set_font( font0 ); draw_set_color( c_white ); draw_set_halign( fa_center ) xx = view_xview[ 0 ] + view_wport[ 0 ] - 107 // pozycja panelu yy = view_yview[ 0 ] + view_yport[ 0 ] +1 if ( bron != nic ) //jezeli aktualna bron != nic { draw_text( xx - 15 , yy + 45 , weapon_name[ bron ] ) // rysuje napis z nazwą broni draw_text( xx + 15 , yy + 65 , string( ammo_wmagazynku[ bron ] ) + '/' + string( ammo_zapasowe[ bron ] )) // rysuje ilość ammo } if ( shoot == false and trzyma=true and celowanie=0 ) { if ( shoot=false ){ draw_sprite_ext(sprite_trzyma[bron],image_index,x-4,y+4,image_xscale, image_yscale,direction ,c_black,0.3) draw_sprite_ext( sprite_trzyma[ bron ],image_index,x,y,image_xscale, image_yscale, direction , image_blend,image_alpha) } } else { draw_sprite_ext(sprite_bron[bron],image_index,x-4,y+4,image_xscale, image_yscale,direction ,c_black,0.5) draw_sprite_ext( sprite_bron[ bron ],image_index,x,y,image_xscale, image_yscale,direction , image_blend,image_alpha) } draw_healthbar(view_xview+32,view_yview+16,view_xview+150,view_yview+20,stamina,c_white,c_red,c_aqua,0,1,1); draw_healthbar(view_xview+32,view_yview+23,view_xview+150,view_yview+30,zdrowie,c_white,c_red,c_lime,0,1,1); Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 14 Lipca 2017 Udostępnij Opublikowano 14 Lipca 2017 cholera, GMS mial byc lepszy, mieli poprawic jezyk, a podstatowy mindfuck pozostawili xD Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
LolikZabijaka Opublikowano 14 Lipca 2017 Autor Udostępnij Opublikowano 14 Lipca 2017 A spróuj tak: GML if trzyma=false { if (shoot) { if ( (ammo_wmagazynku[ bron[ active ]] > 0 or ammo_zapasowe[ bron[ active ]] > 0) and shoot==false ) draw_sprite_ext( sprite_bron[ bron ],image_index,x,y,image_xscale, image_yscale, direction , image_blend,image_alpha) else draw_sprite_ext( sprite_strzal[ bron ],image_index,x,y,image_xscale, image_yscale,direction , image_blend,image_alpha) } else draw_sprite_ext( sprite_bron[ bron ],image_index,x,y,image_xscale, image_yscale,direction , image_blend,image_alpha) } draw_set_font( font0 ); draw_set_color( c_white ); draw_set_halign( fa_center ) xx = view_xview[ 0 ] + view_wport[ 0 ] - 107 // pozycja panelu yy = view_yview[ 0 ] + view_yport[ 0 ] +1 if ( bron != nic ) //jezeli aktualna bron != nic { draw_text( xx - 15 , yy + 45 , weapon_name[ bron ] ) // rysuje napis z nazwą broni draw_text( xx + 15 , yy + 65 , string( ammo_wmagazynku[ bron ] ) + '/' + string( ammo_zapasowe[ bron ] )) // rysuje ilość ammo } if ( shoot == false and trzyma=true and celowanie=0 ) { if ( shoot=false ){ draw_sprite_ext(sprite_trzyma[bron],image_index,x-4,y+4,image_xscale, image_yscale,direction ,c_black,0.3) draw_sprite_ext( sprite_trzyma[ bron ],image_index,x,y,image_xscale, image_yscale, direction , image_blend,image_alpha) } } else { draw_sprite_ext(sprite_bron[bron],image_index,x-4,y+4,image_xscale, image_yscale,direction ,c_black,0.5) draw_sprite_ext( sprite_bron[ bron ],image_index,x,y,image_xscale, image_yscale,direction , image_blend,image_alpha) } draw_healthbar(view_xview+32,view_yview+16,view_xview+150,view_yview+20,stamina,c_white,c_red,c_aqua,0,1,1); draw_healthbar(view_xview+32,view_yview+23,view_xview+150,view_yview+30,zdrowie,c_white,c_red,c_lime,0,1,1); Cholera, dalej się ze sobą zlewają. @EDIT - Czy mogą mieć na to wpływ inne zdarzenia (stepy, itp) ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am vader Opublikowano 15 Lipca 2017 Udostępnij Opublikowano 15 Lipca 2017 Tylko w draw możesz rysować. Na pewno nie masz np. dwóch nakładających się na siebie instancji przypadkiem? Zacznijmy szukać błędu kod po kroku, bo nic tutaj nie widzę: Sprawdź czy błąd występuje przy trzyma=true czy trzyma=false czy przy obu przypadkach. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
LolikZabijaka Opublikowano 15 Lipca 2017 Autor Udostępnij Opublikowano 15 Lipca 2017 Tu może być też babol(po części sam tworzyłem część instancji) GLOB LEFT BUTTON GML if celowanie=2 and bieganie=false{ // strzelanie _len = sprite_get_width( sprite_bron[ bron ] ) - sprite_get_xoffset( sprite_bron[ bron ] ) //odległosć w której zostanie stworzony pocisk _x = lengthdir_x( _len , direction ) _y = lengthdir_y( _len , direction ) kat_rozrzutu = kat_rozrzutu[ bron ] ilosc_pociskow_min = ilosc_pociskow_min[ bron ] ilosc_pociskow_dodatkowych = ilosc_pociskow_dodatkowych[ bron ] _x = lengthdir_x( _len , direction ) _y = lengthdir_y( _len , direction ) if ( ammo_wmagazynku[ bron ] > 0 and can and laduj ) { repeat( ilosc_pociskow_min + irandom( ilosc_pociskow_dodatkowych ) ) { i = instance_create( x+ _x, y + _y, pocisk_typ[ bron ] ) //tworzymy pocisk i. direction = random_range( direction - kat_rozrzutu, direction + kat_rozrzutu ) // rozrzut i. image_angle = direction i. sprite_index = bullet_sprite[ bron ] i. speed = bullet_speed[ bron ] i. damage = weapon_damage[ bron ] } ammo_wmagazynku[ bron ] -= 1 // odejmujemy od stanu amunicja aktywnej broni 1 can = false alarm[ 0 ] = weapon_time[ bron ] if ( ammo_wmagazynku[ bron ] > 0){ instance_create( x,y, obj_luska[ bron ] ) sound_play ( weapon_sound[ bron ] ) } if ( ammo_wmagazynku[ bron ] = 0) { sound_play( sound_last[ bron ] ) instance_create( x, y, o_ostatnia_luska[ bron ] ) } shoot = true alarm[ 2 ] = sprite_get_number( sprite_strzal[ bron ]) *(strzal_czas[bron]) image_index = 0 } } if celowanie=2 { alarm [ 3 ] = sprite_get_number(sprite_trzyma[ bron ]) *150 trzyma=false} if celowanie=1 { alarm [ 3 ] = sprite_get_number(sprite_trzyma[ bron ]) *150 trzyma=false} if celowanie=0{ celowanie = 1 } bieganie=false Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am vader Opublikowano 16 Lipca 2017 Udostępnij Opublikowano 16 Lipca 2017 Temat zamknięty na privie. 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ę