Skocz do zawartości

RPG, metoda podliczania ataku


Dawidds

Rekomendowane odpowiedzi

Nudzi mi się, to chcę se RPG'a jakiegoś zrobić.

Jestem świadom, że go pewnie nie skończę - ale to co :D Najwyżej dam jako przykład, bo na razie mam fajoskie inventory xd

 

No ale wróćmy do tematu.

 

W jaki sposób powinienem podliczać atak i obronę au graczy, aby stwierdzić, jakie który zadał któremu obrażenia...

Gra w widoku od góry, ruch po kratkach, system ataku al'a Tibia/MiniRPG, czyli zaznaczamy przeciwnika, i jednocześnie zaczynamy z nim walczyć, a co powiedzmy sekundę zadają się obrażenia każdemu z graczy (lub nie zadają).

 

Ale napotkałem na pewien głupi problem, dodam, czysto teorytyczny (raczej nie będę miał problemu z opisaniem tgo w kodzie, ale nie mam ogólnego pomysłu, jak taki system ma działać :P)

 

Przykład:

 

Gracz:

Atak: 48

Obrona: 71

 

Enemy:

Atak: 31

Obrona: 26

 

W czasie walki powinny się pojawiać mniej więcej takie obrażenia: (strata hp potwora/strona hp gracza)

6/2, 4/0, 3/2, 4/1...

itepe.

 

I jakoś, jakbym tego nie robił, zawsze wychodzi mi źle - albo zbyt losowe, albo za mało losowe, albo z duże obrażenia, albo za małe... :P

 

Chodzi o coś mniej więcej takiego:

obrazenia_enemyego = round(random(atak_playera-obrona_enemyego));

 

Ale to jest:

1. Zbyt losowe.

2. Wystarczy mieć większa obronę od taku przeciwnika, i już jesteśmy bezpieczni...

 

Tyko proszę, odpowiedz ktoś... :P

 

PS: A, jeszcze do tego pewien udział powinien mieć aktualny level xd...

Odnośnik do komentarza
Udostępnij na innych stronach

Nie polecam uzywania jednej startystyki do obliczania i szansy trafienia i ilosci obrazen ale oczywiscie mozna tak zrobic. Polecalbym taki oto system:

 

Gracz ma 50% szansy trafienia potwora wiec robimy zwykle round(random(100)) i jesli wynik jest mniejszy niz 50 to gracz trafil. Teraz mamy statystyki atak i obrona. Atak zwieksza ta liczbe a obrona zmniejsza wiec jesli mamy silniejszy atak niz obrona przeciwnika to mamy wieksza szanse na trafienie. Przy czym zawsze powinnismy zostawic jakas szanse na trafienie atakujacemu nawet jesli przeciwnik ma bardzo wysoka obrone wtedy nie bedzie sytuacji ze przeciwnik jest nie do zdarcia.

 

Przyklad:

GML
szansa = 50;

szansa += moj_atak;

szansa -= jego_obrona;

// /\ oczywiscie mozna to zrobic w jednym dzialaniu, poprostu napisalem to tak aby bylo bardzo czytelne ^^

if szansa < 10 { szansa = 10}

 

los = round(random(100))

if los <= szansa

{

//kod obrazen; np.

jego_hp -= round(random(moj_atak / 10))+1 //jesli chcemy utrzymac obrazenia przy mniejszych liczbach. +1 aby pozbyc sie zera w obrazeniach.

}

 

Ogolnie polecam wlasnie taki sposob na obliczanie szansy na trafienie czy test umiejetnosci.

Odnośnik do komentarza
Udostępnij na innych stronach

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ę
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...