Sminer Opublikowano 17 Sierpnia 2011 Udostępnij Opublikowano 17 Sierpnia 2011 Witajcie! Aktualnie tworzę grę "Pokemon" I mam problem, że podczas walki z dzikim Pokemonem chcę aby jego poziom byl losowy. Naprzyklad od poziomu 1 do poziomu 3. W draw mam kod aby pokazywał poziom : draw_text(view_xview+200,view_yview+80,"Poziom: "+string(Pokemon_poziom)) Mam też drogi problem z zyciem tych Pokemonow. Chce zeby Pokemon z poziomem 1 mial 5 hp a z poziomem 2 8 hp itd. wiec w draw mam jeszce 1 kod: draw_healthbar(view_xview+110,view_yview+150,view_xview+450,view_yview+180,zycie ,0,c_red,c_green,0,1,1) ale gdy robie 5 hp to mi sie zapelnia 1/20 paska zycia ;/ Dzieki za pomoc Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pablo-GM Opublikowano 17 Sierpnia 2011 Udostępnij Opublikowano 17 Sierpnia 2011 Co do pierwszego pytania : GML // create: pokemon_poziom=choose(1,2,3) Ad.2 Proponuje zwiększać życie wraz z rosnącym poziomem czyli np. GML if pokemon_poziom==1 { zycie=5 } if pokemon_poziom==2 { zycie=8 } //itd...</span> Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ediepl Opublikowano 17 Sierpnia 2011 Udostępnij Opublikowano 17 Sierpnia 2011 Bo funkcja draw_healthbar ma 100hp, więc jest np 5/100hp, użyj draw_sprite_ext. EDIT:draw_sprite_ext(sprite,-1,x,y,zycie/maxzycie,1,0,c_white,1) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pablo-GM Opublikowano 17 Sierpnia 2011 Udostępnij Opublikowano 17 Sierpnia 2011 Ad.2 GML //create: zycie=100 GML //step: if pokemon_poziom=2 { zycie=140 } if pokemon_poziom=3 { zycie=140 } GML //draw: draw_healthbar(view_xview+110,view_yview+150,view_xview+450,view_yview+180,zycie ,0,c_red,c_green,0,1,1) Edie - draw_healthbar będzie miało tyle ile poda w argumencie . EDIT Chyba , że źle Cie zrozumiałem . Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Sminer Opublikowano 17 Sierpnia 2011 Autor Udostępnij Opublikowano 17 Sierpnia 2011 Dziekuje wam za odpowiedzi wszystko dziala zgodnie z planem. Trudzilem sie kilka godzin nad tym a odpowiedz w 5 minut od was dostalem ;)y dopiero potem ten pasek sie zmni A tak wogule to idzie zrobic ze pasek zecia jak poczatkowo ma np 100 hp i 27 hp to zeby byl takiej samej dlugosci?? Bo to wyglada tak: Sprite z 100 hp [------------------------------------] Sprite z 27 hp [-----------] I zeby dopiero po udezeniu ten pasek sie zmniejszal a nie na pocaztku ;/ Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ediepl Opublikowano 17 Sierpnia 2011 Udostępnij Opublikowano 17 Sierpnia 2011 Chodziło mi o to że w draw_healthbar maksymalna ilość hp to 100 i nie idzie tego zmienić. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rudy Opublikowano 17 Sierpnia 2011 Udostępnij Opublikowano 17 Sierpnia 2011 osobiście zrobiłbym te życie nieco inaczej (na poziomach 1-3 jeszcze ify ujdą, wyższe poziomy to już switch ale najlepiej byłoby znaleźć zależność i wpisać wzór, np zycie = 4+power(poziom, 2); albo zycie = 2+poziom*3; itd. draw_sprite_ext w porównaniu do draw_healthbar nie jest najlepszym rozwiązaniem, potrzebny jest sprite. Nie mniej jednak można to obejść i to na dwa sposoby :) . GML (Create) max_zycie = 160; zycie = max_zycie; 1. - przekształcenie draw_healthbar: GML (Draw1) draw_healthbar(view_xview[0]+110, view_yview[0]+150, view_xview[0]+450, view_yview[0]+180, zycie*100/max_zycie, 0, c_red, c_green, 0, 1, 1); 2. - symulowanie draw_healthbar: GML (Draw2) draw_set_color(make_color_rgb(floor(min(255, 510-zycie*510/max_zycie)), floor(min(255, zycie*510/max_zycie)),0)); draw_rectangle(view_xview[0]+110, view_yview[0]+150, view_xview[0]+110+340*zycie/max_zycie, view_yview[0]+180, 0); draw_set_color(c_black); draw_rectangle(view_xview[0]+109, view_yview[0]+149, view_xview[0]+451, view_yview[0]+181, 0); Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Sernat Opublikowano 17 Sierpnia 2011 Udostępnij Opublikowano 17 Sierpnia 2011 2. - symulowanie draw_healthbar: GML (Draw2)draw_set_color(make_color_rgb(floor(min(255, 510-zycie*510/max_zycie)), floor(min(255, zycie*510/max_zycie)),0)); draw_rectangle(view_xview[0]+110, view_yview[0]+150, view_xview[0]+110+340*zycie/max_zycie, view_yview[0]+180, 0); draw_set_color(c_black); draw_rectangle(view_xview[0]+109, view_yview[0]+149, view_xview[0]+451, view_yview[0]+181, 0); Właśnie przykryłeś czarnym prostokątem pasek życia :P . Prawidłowo: GML draw_set_color(c_black); draw_rectangle(view_xview[0]+109, view_yview[0]+149, view_xview[0]+451, view_yview[0]+181, 0); draw_set_color(make_color_rgb(floor(min(255, 510-zycie*510/max_zycie)), floor(min(255, zycie*510/max_zycie)),0)); draw_rectangle(view_xview[0]+110, view_yview[0]+150, view_xview[0]+110+340*zycie/max_zycie, view_yview[0]+180, 0); Ewentualnie, zamieniając false na true: GML draw_set_color(make_color_rgb(floor(min(255, 510-zycie*510/max_zycie)), floor(min(255, zycie*510/max_zycie)),0)); draw_rectangle(view_xview[0]+110, view_yview[0]+150, view_xview[0]+110+340*zycie/max_zycie, view_yview[0]+180, 0); draw_set_color(c_black); draw_rectangle(view_xview[0]+109, view_yview[0]+149, view_xview[0]+451, view_yview[0]+181, 1); Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
karolo320 Opublikowano 17 Sierpnia 2011 Udostępnij Opublikowano 17 Sierpnia 2011 draw_rectangle(view_xview[0]+110, view_yview[0]+150, view_xview[0]+110+340*(zycie/max_zycie), view_yview[0]+180, 0); nawias musi być :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Sernat Opublikowano 17 Sierpnia 2011 Udostępnij Opublikowano 17 Sierpnia 2011 Jaka zasada arytmetyczna tak nakazuje? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Sminer Opublikowano 17 Sierpnia 2011 Autor Udostępnij Opublikowano 17 Sierpnia 2011 U mnie ten Pasek ma czarny kolor. Ustawilem ze naciskajac spacje zycie-=10 i gdy zycie dochodzi do zera pojawia sie rozowy pasek wychodzacy z lewej strony cos chyba jest nie tak. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Sernat Opublikowano 17 Sierpnia 2011 Udostępnij Opublikowano 17 Sierpnia 2011 Pewnie, że ma czarny, bo nie dostosowałeś się do moich przeciwwskazań. A samego paska już nie sprawdzę, nie mam siły. Możliwe, że po prostu nie sprawdzasz, czy hp jest ujemne. Jeśli się mylę - Rudy coś skopał :P . Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
karolo320 Opublikowano 17 Sierpnia 2011 Udostępnij Opublikowano 17 Sierpnia 2011 Sernat, miałeś rację nie trzeba nawiasu :) draw_set_color(c_red) draw_rectangle(0,0,200,20,0) draw_set_color(c_green) draw_rectangle(0,0,(zycie/max_zycie)*200,20) draw_set_color(c_black) draw_rectangle(0,0,200,20,1) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Sminer Opublikowano 17 Sierpnia 2011 Autor Udostępnij Opublikowano 17 Sierpnia 2011 Ok juz jest wszystko w pozadku. Wszystko dziala idealnie ;) Dzieki Sernat bardzo mi pomogles Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Piedro Opublikowano 17 Sierpnia 2011 Udostępnij Opublikowano 17 Sierpnia 2011 co do wzorów z pokemonów na bulbapedii (eng) znajdziesz wszystkie. Są dosyć zawiłe i trzeba będzie dużo zmiennych robić podaje linka: link do bulbapedii (Artykuł:Stats) poszukaj tam też formuły na obliczanie obrażeń od ataków i bonusy życzę powodzenia Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rudy Opublikowano 18 Sierpnia 2011 Udostępnij Opublikowano 18 Sierpnia 2011 Od teraz muszę sprawdzać co piszę ;D . Ale co tam, wprawny uczeń znalazłby błąd :) . No tak, zał: zycie należy do <0, max_zycie> :) Bez nawiasu będzie nawet lepiej, komputer najpierw mnoży, potem dzieli, dzięki temu działa na przyjaznych jemu większych liczbach. A efekt ten sam :) . Wtedy można nawet to rozwiązać na liczbach całkowitych ;P . 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ę