Funkcja zwracająca TRUE, kiedy bohater walczy 3162 6

O temacie

Autor Anarchy

Zaczęty 10.09.2016 roku

Wyświetleń 3162

Odpowiedzi 6

Anarchy

Anarchy

Użytkownicy
posty9
  • Użytkownicy
Generalnie jak w tytule. Próbuję napisać funkcję sprawdzającą, czy bohater walczy, tzn. wyprowadza ciosy lub je blokuje. Zacząłem od sprawdzenia sposobu, w jaki rozwiązali to twórcy w przypadku magicznego golema (plik B_MM_AssessDamage.d). Skopiowałem całość, pod młot magiczny podstawiłem dowolny oręż dzierżony przez postać.

Z bliżej nieokreślonej przyczyny nie chciało działać, przekopałem się trochę przez forum, ostatecznie znalazłem coś, co zwało się Npc_IsInFightMode. Nie bardzo rozumiejąc, jak to działa, zaimplementowałem do prostego if'a.
if(Npc_IsInFightMode(self,FMODE_MELEE))
{

x = x+1;

};

który umieściłem w funkcji sprawdzanej 10 razy na sekundę (FF_ApplyOnceExt). Jakoś działa, ale nie potrafię załapać jej sensu. Kiedy postać jest atakowana lub sama atakuje, czasem x się zwiększa, czasem nie, czasem dosyć mocno podskakuje,o kilka wartości jednocześnie (strzelam, że zależy to od przypadku, czy funkcja jest wywołana akurat w momencie tego zdarzenia). Do tego takie wywoływanie funkcji tak często jest ekstremalnie nieefektywne i obciążające silnik. Stąd pytanie: jak zrobić to lepiej i mądrzej? Przy pisaniu odpowiedzi, weźcie proszę pod uwagę, że słabo jeszcze ogarniam ten język skryptowy, użyty w grze. Jeśli dacie odpowiedź nie wprost, to chociaż z podpowiedzią, gdzie tego szukać, żebym nie musiał tracić godzin na przekopywanie się przez wszystkie pliki skryptów.
 

Siemekk

Siemekk

Złote Wrota
posty2143
Propsy1154
ProfesjaProgramista
  • Złote Wrota
Przykłady:
if(C_BodyStateContains(hero,BS_HIT))
{
Print("Hit");
} else if(C_BodyStateContains(hero,BS_PARADE))
{
Print("Parade");
};
Problem w tym że to nie nadaje się do sprawdzania klatek animacji, ale efekt dla ciebie powinien być zadowalający.
 

P.S A Splash w szafie i nie ma psychy by mi dać bana.

Mark56

Mark56

Moderator
som veľký magič
posty1632
Propsy1846
ProfesjaAnimator
  • Moderator
  • som veľký magič
problem jest tez, "self" ten jest zależny od kontextu. (podczas dialogu jest to npc z ktorym rozmawiamy, w rutynach jest to npc wykonujące rutyny) a wiec za 1 sekundę selfem mogło być praktycznie którekolwiek npc. Jeżeli cie interesuje tylko bohater to użyj hero
 


Anarchy

Anarchy

Użytkownicy
posty9
  • Użytkownicy
Efekt nawet więcej, niż zadowalający, dzięki. A jakiś pomysł, jak sprawdzić, czy atak odniósł sukces (tj. czy trafił w przeciwnika). Ja bym zrobił to przez sprawdzenie, czy któryś npc różny od hero stracił hp (problem 1: jak zdefiniować grupę wszystkich npc), ale nie zadziała to w przypadku, kiedy przeciwnik sparuje cios (to problem 2). W ogóle, są gdzieś zbiory skryptów, funkcji, eventów i zmiennych/stałych zaimplementowanych w języku opisanych wg działania? Jakiś scriptbase, czy coś w tym stylu? Bo przeglądanie gotowców w poszukiwaniu konkretnej rzeczy jest mało efektywne, zwłaszcza gdy nie wie się, gdzie szukać.
 

Mark56

Mark56

Moderator
som veľký magič
posty1632
Propsy1846
ProfesjaAnimator
  • Moderator
  • som veľký magič
AI_intern/externals.d
 


K4R0L111

K4R0L111

Użytkownicy
posty31
Propsy14
ProfesjaSkrypter
  • Zbanowany
Ten plik jest niekompletny lub posiada funkcje których nie ma w Gothicu.

Używaj tych:
Gothic 1
Gothic 2

Lehona

Lehona

Użytkownicy
posty196
Propsy190
  • Użytkownicy
Efekt nawet więcej, niż zadowalający, dzięki. A jakiś pomysł, jak sprawdzić, czy atak odniósł sukces (tj. czy trafił w przeciwnika). Ja bym zrobił to przez sprawdzenie, czy któryś npc różny od hero stracił hp (problem 1: jak zdefiniować grupę wszystkich npc), ale nie zadziała to w przypadku, kiedy przeciwnik sparuje cios (to problem 2). W ogóle, są gdzieś zbiory skryptów, funkcji, eventów i zmiennych/stałych zaimplementowanych w języku opisanych wg działania? Jakiś scriptbase, czy coś w tym stylu? Bo przeglądanie gotowców w poszukiwaniu konkretnej rzeczy jest mało efektywne, zwłaszcza gdy nie wie się, gdzie szukać.

Maybe have a look at this: http://forum.worldofplayers.de/forum/threads/1149697-Script-Eigene-Schadensberechnung
It's called every time an NPC takes damage (I think it doesn't get called when there's a parade, not sure though).
 
Unless specified otherwise, my posts are always about Gothic 2 Night of the Raven.


0 użytkowników i 1 Gość przegląda ten wątek.
0 użytkowników
Do góry