Adriann Opublikowano 15 Lipca 2017 Udostępnij Opublikowano 15 Lipca 2017 Witam serdecznie Mam pewien problem z atakami między graczami a dokładniej mam objGracz i połączony z nim objMiecz które mają przypisaną tą samą wartość dmg. Jak mogę najprościej odczytać tę wartość w kolizji kiedy graczy na jednym obiekcie jest kilku? Próbowałem w objGracz: jeśli kolizja to HP-= objMiecz.DMG ale tylko pierwszy gracz mógł atakować. Macie może jakieś sprawdzone rozwiązania na takie rzeczy? 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 Jeżeli robisz HP-=objMiecz.DMG w evencie collision to podmień objMiecz na other: GML HP -= other.DMG Jeżeli korzystasz z funkcji sprawdzających kolizje to czy próbowałeś użyć któreś z funkcji collision_ (np. collision_point) aby otrzymać ID obiektu i potem odnieść się do tego ID? GML var _id = collision_point( x, y, objMiecz, false, true ); if _id!=noone HP-= _id.DMG; Być może będziesz chciał użyć innej z funkcji collision_ w zależności od tego jak ma wyglądać hitbox. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Adriann Opublikowano 15 Lipca 2017 Autor Udostępnij Opublikowano 15 Lipca 2017 Działa! Dziękuję bardzo:) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Adriann Opublikowano 16 Lipca 2017 Autor Udostępnij Opublikowano 16 Lipca 2017 Oto jedyny kod którym różnią się gracze: GML player_id[0]=instance_create(objPlayer_spawner.x,objPlayer_spawner.y,objPlayer); player_id[0].player_id=0; player_id[0].Team=1; player_id[0].draw=1;//rysowanie HUDa player_id[1]=instance_create(objPlayer_spawner.x+50,objPlayer_spawner.y,objPlayer); player_id[1].player_id=1; player_id[1].Team=2; player_id[1].draw=2; player_id[2]=instance_create(objPlayer_spawner.x+100,objPlayer_spawner.y,objPlayer); player_id[2].player_id=2; player_id[2].Team=3; player_id[2].draw=3; player_id[3]=instance_create(objPlayer_spawner.x+150,objPlayer_spawner.y,objPlayer); player_id[3].player_id=3; player_id[3].Team=4; player_id[3].draw=4; A mimo to nikt nie może zaatakować gracza 1go a będąc z nim w teamie drugi gracz nie może atakować innych:o Jak poczeba to zastosowałem ten kod na obrywanie: GML ///HURT/////////////// //Odczytanie tego id var en_id=collision_rectangle (phy_position_x-13, phy_position_y-6,phy_position_x+13,phy_position_y+6, objPlayerSword, false, true ); if HP<0 then HP=0;//Utrzymanie 0 hp jesli umar if en_id!=noone {if en_id.Team!=Team { //Jesli nie jestesmy w teamie z przeciwnikiem if place_meeting(x,y,objPlayerSword) && DEF=0 && sword_coll=0 //Nie bronimy sie ani juz nie obrywamy to { sword_coll=1;//obrywamy } ///////////////////*******************************************/////////////////////////// //Kolizja if sword_coll=1 && DEF=0// //Jak obrywamy {if hurt_anim=0 hurt_anim=choose(s_hurt1,s_hurt2)//losuje animacje if hp_can=0 //zabiera hp { HP-= en_id.DMG//zabiera ilosc hp dopasowana do ilosci dmg przeciwnika hp_can=1; } Poz='hurtA'//Animacja action=0;//Konczymy atak kl=0;//jw. draw_atk=0;//jw. if alarm[4]=-1 alarm[4]=20//stoper if place_meeting(x,y,objPlayerSword) && DEF=0 image_blend=c_red } }//wiadomo, chwilowe wizualne odrożnienie else image_blend=c_white; } ok poprawione Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Danielus Opublikowano 16 Lipca 2017 Udostępnij Opublikowano 16 Lipca 2017 Weź to przeformatuj bo tego się czytać nie da. GML if hp_can=0 //zabiera hp { {HP-= en_id.DMG}//zabiera ilosc hp dopasowana do ilosci dmg przeciwnika hp_can=1; } co to za nawiasy wogole dwa po sobie. Dodatkowo używasz tu masy zmiennych których nam nie pokazujesz skąd się biorą i co robią(np DEF, hp_can). Ogólnie popraw czytelność kodu bo jest straszna w tym momencie. 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ę