Modnar23 Opublikowano 13 Marca 2005 Udostępnij Opublikowano 13 Marca 2005 To pytanie kieruję gównie do znawców gier RPG. Czy znacie jakiś ciekawy algorytm obliczania wyniku walki na podstawie cech wojowników takichj jak: atak, obrona, celność, szczęście itd. ? A jeśli znacie to napiszcie. Ja osobiście wymysliłem prosty algorytmik oparty na 2 cechach: ataku i obronie. Ale można by to jakoś bardziej rozwinąć. //Cechy atakujacego: max_atak = 20; Atak_1 = 5; //Cechy atakowanego: max_obrona = 20; Obrona_2 = 3; //1. Losuję siłę ataku atakującego: Atak = (random(Atak_1 - max_atak)+Atak_1); //2. Losuję czy atakujący trafi Trafienie = round(random(2)); //przy czym wynik 0 - pudło, 1 - trafienie, 2 - trafienie krytyczne //3. Jeżeli okazuje się że trafi normalnie to sprawdzam czy atakowany się obrony, jeżeli trafi krytycznie to atakowany przyjmuje całą siłę ataku. switch(Trafienie) { case Trafienie = 1: { Obrona = (random(Obrona_2 - max_obrona)+Obrona_2); if (Atak < Obrona || Atak = Obrona) Obrażenia = 0; else Obrażenia = (Atak - Obrona); } break; case Trafienie = 2: Obrażenia = Atak; break; default: Obrażenia = 0; } Wynik = życie - Obrażenia; Mogłem się pomylić w kodzie, ale nie o to tu chodzi.. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
SLy Opublikowano 13 Marca 2005 Udostępnij Opublikowano 13 Marca 2005 Gdzieś, kiedyś miałem wymyślony system walki. Jak znajdę to zapodam :) ...albo wymysle inny :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 13 Marca 2005 Administratorzy Udostępnij Opublikowano 13 Marca 2005 chodzie zrobimy całą ekipą pierwszego rpg w game maker :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 13 Marca 2005 Udostępnij Opublikowano 13 Marca 2005 Mam gdzieś coś takiego ! Ale gdzie ? :lol2: gnysek : Już chyba prubowaliśmy :P i jak narazie wychodzi na to że musze sam robić :D Ale jak coś planujesz to powiadom mnie ;) EDIT Wstaw może takie jednostki obrażeń i obrony żeby mogły łatwo zostać odliczone od życia np. obrona=3; atak=6; hp=10; hp=hp-(atak-obrona); Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Quetzacotl Opublikowano 13 Marca 2005 Udostępnij Opublikowano 13 Marca 2005 Proponuje system z ADiD, najbardziej realistyczny, najpierw oblicza czy cios wogole trafi (czyli np nie bdzie pudla, lub zbroja nie wyparuje ataku) a potem dopiero obrazenia, jesli cios bedzie trafiony. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Mario Opublikowano 14 Marca 2005 Udostępnij Opublikowano 14 Marca 2005 Jestem pełen podziwu... Dla zamieszczonego kodu przez gościa nr.1 ... Ja moge zrozumieć i zastosować tylko ten następny kod.... Hp=hp-(atak-obrona) Jeżeli zrobiłem błąd to niech mnie gęś kopnie :jezor: Ale to nawet działa... To chyba najprostszy sposób... Sam robie teraz gre RPG(a raczej próbuje robić) i mam takie same problemy... Np... : Jak zrobić żeby odliczał się wtedy health tylko jednego stworka, a w rzie health=0 to żeby go zabijał? :huh: Bo ja zawsze jestem taki goopi i mam bzdurne pytanka :lol2: --->prosze o wybaczenie :] Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
bigshark Opublikowano 14 Marca 2005 Udostępnij Opublikowano 14 Marca 2005 a w rzie health=0 to żeby go zabijał? if health<0,1 {instance destroy} Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Quetzacotl Opublikowano 15 Marca 2005 Udostępnij Opublikowano 15 Marca 2005 yyy to nie lepiej if health=0 ? :F Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
bigshark Opublikowano 15 Marca 2005 Udostępnij Opublikowano 15 Marca 2005 No nie lepiej , ocywiscie ze gorzej. Oj Quaztecoclcocoloc przeciez jesli ustawi if health=0 {instance destroy} To bedzie zle. Przypuscmy ze jest taka sytuacja: Ludzik ma 5 energi Stwor uderza go i zabiera mu 10 energiii W zwiazku z tym ludzik ma -5 energii i teraz sprawdzmy ktory kod jest lepszy moj czy twoj....... if health <0,1{instance destroy} TO DZIALA!! ludzik ma mniej niz 0,1 healthu wiec znika if health=0{instance destroy} Buuuu to nie dziala gdyz ludzik ma -5 healthu a nie 0 . Czyli teraz jakby wział apteczke ktora doda mu 5 health to wtedy zniknie. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
SLy Opublikowano 15 Marca 2005 Udostępnij Opublikowano 15 Marca 2005 A nie lepiej if health<=0 ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
bigshark Opublikowano 15 Marca 2005 Udostępnij Opublikowano 15 Marca 2005 no to juz lepsze, ale jest nawet na tym forum temat w ktorym jest spor o to gdzie znak = ma byc. Ja tam wole ominąc kontrowersje i poodalem dlatego if health<0,1 . Jednak jesli health bedzie wyrazal sie tylko w lliczbach calkowitych mozna napisac prosciej if health<1 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Modnar23 Opublikowano 15 Marca 2005 Autor Udostępnij Opublikowano 15 Marca 2005 Proponuję powrócić do głównego wątku. Może ktoś z was gra w gry RPG typy Warhammer itp. (ja na przykład nie gram :( ) i zna jakis dobry sposób obliczania wyniku walki. Czekam na propozycje. Może zrobimy do spółki¹ taki przykład dla GMClan'u... ______________ 1 - tzn. ktoś zapodaje algorytm a ja na przykład wykonałbym przykład, który miałby wtedy dwóch autorów. Albo inaczej - dogadamy sie. ;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
bigshark Opublikowano 15 Marca 2005 Udostępnij Opublikowano 15 Marca 2005 A ja mam inny pomysł- najpier wybiera sie w którą czesc ciala sie uderza, jednak jesli probojesz uderzyc w glowe masz male szanse na trafienie. Obraazenia to atak-Obrona . W zaleznosci w jakom czesc ciala sie uderza to obrazenia sie mnozy np. cios w glowe to atak*2-obrona, a cios w plecy to atak*1.5-obrona itd Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
SLy Opublikowano 15 Marca 2005 Udostępnij Opublikowano 15 Marca 2005 Więc niech będzie ADeDek. Premie do ataku dzielą się na atak: wręcz i dystansowy. Na razie powiedzmy, że obie premie wynoszą 5(je też się oblicza dodając różne modyfikatory). Obrażenia zależne są od używanej broni. Szansa trafienia krytycznego również zależy od używanej broni. Załóżmy, że jest to krótki miecz - 1k6, krytyk-19-20 x2, tzn. gdy wypadnie 19 lub 20 liczba obrazeń się podwaja. atakw=5; atakd=5; kpwroga=15; maxobrazen=6; atak=round(random(20)) if atak = 1 {krytyczne pudło} //jakiś skrypt, np. broń wypada z ręki or sth else { if atak>=19 //sprawdzanie krytyka { atak+=atakw; //przy ataku wręcz if atak>=kpwroga { hpwroga=hpwroga-2*round(random(6)) //"zdrowie" wroga maleje o 1-6 pkt obrazen } } else //zwykłe trafienie { atak+=atakw; //przy ataku wręcz if atak>=kpwroga { hpwroga=hpwroga-round(random(6)) //"zdrowie" wroga maleje o 1-6 pkt obrazen } } } Napewno się gdzieś pomyliłem. ADeDek jest tak skomplikowany, że czasem normalnie można się pogubić a co dopiero algorytm napisać. Oczywiście nie jest on zoptymalizowany i zrobiony tylko w przypadku ataku krótkim mieczem. Pominąłem też conajmniej 2 zasady: 1. W przypadku ataku wręcz do sumy obrażeń dodaje się modyfikator z siły. 2. Przy wylosowaniu liczby odpowiadającej trafieniu krytycznemu dopiero występuje szansa na takowe. Żeby trafić krytycznie trzeba uzyskać wysoki wynik także za drugim rzutem (bezsens, prawie uniemożliwiający krytyka). Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Modnar23 Opublikowano 16 Marca 2005 Autor Udostępnij Opublikowano 16 Marca 2005 Hmm ciekawe ciekawe... Muszę go sobie na spokojnie przetrawić. Jesli nikt nie zapoda jeszcze innego, to jak bedę miał chwile czasu to skrobnę taki przykładzik. A co to jest ten "ADeDek"? :blink: Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Woock Opublikowano 16 Marca 2005 Udostępnij Opublikowano 16 Marca 2005 AD&D = Advanced Dungeons and Dragons Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
SLy Opublikowano 16 Marca 2005 Udostępnij Opublikowano 16 Marca 2005 Heh, ADD jest wyjątkowo skomplikowany i graczom kojarzy się z masą rzutów kośćmi. Tam trzeba "rzucać na wszystko" :D "Stara Droga wije się [...] obok starych dębów oraz 1k4 opuszczonych chałup" A co Warhammera(jak to się stało, że jeszcze nigdy w niego nie grałem?) to jak dopadne podręcznik to dorzuce kolejny przykładzik. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Remx Opublikowano 18 Marca 2005 Udostępnij Opublikowano 18 Marca 2005 Ja polecam tak oczywiscie D&D system :P zrob se skrypt kostek 1k6 1xk10 1k20 1k100 itp.. :D to zalezy jak chcesz ta gre robic nastepnie w samej juz grze poprostu odwolywuj sie do kostek :D i uzywaj prostej matematyki :D naprzyklad obrazenia_twoje - klasa_pancerza_przeciwnika = ob rzeczywiste :) tak samo uniki aa ta kostka co napisalem 1k100 to procety :) naprzyklad twoj bochater ma szanse 30% na unikniecie naprzyklad 1/3 ob rzucasz kostka 1k100 wydzjdzie od 1 do 30 to ob_rzeczywiste/3= (cos tam)*2 tak rozpisujaco sie bo mozna to odraazu ob_rzeczywiste - 33.3% :P ja przynajmniej stosoje to w swojej grze oczywiscie mocniej to rozbudowane bo jest wiele wariantow :) Pozdrawiam 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ę