Problem z orkami 2383 3

O temacie

Autor OrtegaX

Zaczęty 5.02.2016 roku

Wyświetleń 2383

Odpowiedzi 3

OrtegaX

OrtegaX

Użytkownicy
Bractwo Gothica
posty362
Propsy304
ProfesjaSkrypter
  • Użytkownicy
  • Bractwo Gothica
Cześć! Wiecie może jak załatwić problem z orkami, wygląda on następująco:
Podczas walki z orkami, ludzie atakują także mnie. Czy jest jakiś sposób ( Oprócz zmiany gildi orkom ) żeby działało to normalnie?

pawbuj

pawbuj

Użytkownicy
posty1625
Propsy135
ProfesjaSkrypter
  • Użytkownicy
Cześć! Wiecie może jak załatwić problem z orkami, wygląda on następująco:
Podczas walki z orkami, ludzie atakują także mnie. Czy jest jakiś sposób ( Oprócz zmiany gildi orkom ) żeby działało to normalnie?
musisz w AI pogrzebać.
 

OrtegaX

OrtegaX

Użytkownicy
Bractwo Gothica
posty362
Propsy304
ProfesjaSkrypter
  • Użytkownicy
  • Bractwo Gothica
No wiesz, nie wiedziałem -_- Ale wiesz co mam tam zrobić?

Kranek

Kranek

Użytkownicy
posty35
Propsy14
ProfesjaNierób
  • Użytkownicy

Kranek

Problem z orkami
#3 2016-02-07, 19:15(Ostatnia zmiana: 2016-02-07, 22:44)
Jeżeli korzystasz z notepada++ to za pomocą regexa możesz znaleźć wywołanie funkcji:
AI_StartState(self, ZS_ATTACK, tu jakieś inne zbdety)można to osiągnąć przez użycia wyrażenia w postaci:
AI_StartState.+ZS_AttackJak już dostaniesz liste plików w których takie wywołanie się znajduje to radzę się zainteresować tymi co mają w nazwie Assess lub zaczynają się na ZS_. Przed wywołaniem wspomnianej wcześniej funkcji możesz walnać jakiegoś printa, dobrze by było, żeby każdy miał inną wiadomość i najlepiej inne miejsce na ekranie by na siebie nie nachodziły. Wtedy w grze jak człowiek zacznie cię bić, gdy zaatakujesz orka, to będziesz wiedział, które wywołanie funkcji za to odpowiada i ewentualnie będziesz mógł opakować to w jakiś warunek, byś nie dostawał po łbie za bicie zielonoskórych.

Nie sprawdzałem tego i są to jedynie moje domysły, ale chyba warto spróbować.

Edit:

Dobra, w sumie to trochę źle podpowiedziałem. Pogrzebałem trochę w plikach AI przyglądając się pewnym rzeczom i zauważyłem, że ludzkie AI w ogóle olewa przypadek orków. Interesuje cię plik:
_Work\Data\Scripts\Content\AI\AI_Intern\C_Functions.d
W nim to znajduje się między innymi funkcja C_NpcIsMonster, która w skrócie służy między innymi do tego, by AI mogło odpowiednio zareagować w pewnych sytuacjach. Problem w tym, że orkowie nie są uznani za potwory i npc będący orkiem nie przejdzie pozytywnie testów tej funkcji, przez co mogą się dziać dziwne rzeczy, w tym atakowanie nas przez ludzi gdy w pobliżu jest ork. Rozwiązanie szybkie:

Zmieniasz:
func int C_NpcIsMonster(var C_NPC slf)
{
PrintDebugNpc (PD_ZS_DETAIL,"C_NpcIsMonster");
PrintDebugString (PD_ZS_DETAIL,"...name: ", slf.name);

if ((slf.guild > GIL_SEPERATOR_HUM) && (slf.guild < GIL_SEPERATOR_ORC))
{
PrintDebugNpc (PD_ZS_DETAIL,"...true");
return TRUE;
}
else
{
PrintDebugNpc (PD_ZS_DETAIL,"...false");
return FALSE;
};
};

na:

func int C_NpcIsMonster(var C_NPC slf)
{
PrintDebugNpc (PD_ZS_DETAIL,"C_NpcIsMonster");
PrintDebugString (PD_ZS_DETAIL,"...name: ", slf.name);

if (slf.guild > GIL_SEPERATOR_HUM)
{
PrintDebugNpc (PD_ZS_DETAIL,"...true");
return TRUE;
}
else
{
PrintDebugNpc (PD_ZS_DETAIL,"...false");
return FALSE;
};
};

I ludzie powinni już poprawnie reagować na pojawienie się orków w ich najbliższym otoczeniu. Rozwiązanie dłuższe polegałoby na naprawie AI i tam gdzie jest sprawdzane C_NpcIsMonster sprawdzać też C_NpcIsOrc.
 


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