NPC nie reaguje na walkę z bandytą 4346 4

O temacie

Autor Graveir

Zaczęty 3.10.2020 roku

Wyświetleń 4346

Odpowiedzi 4

Graveir

Graveir

Użytkownicy
Avatar Twilight Sparkle / Pożeracz serc
posty1275
Propsy235
ProfesjaGracz
  • Użytkownicy
  • Avatar Twilight Sparkle / Pożeracz serc
Hej, takie pytanie. Od jakiegoś czasu próbuję ogarnąć sprawę dołączania innych npc'ów do walki z postacią bandyty. Jednak nie mogę znaleźć, w którym pliku to może siedzieć, bo w B_Attack i ZS_Attack próbowałem pozmieniać/pododawać parę opcji, które teoretycznie mogłyby "naprawić" problem. A mianowicie chodzi o to, że jeśli wdam się w walkę z innym npc'em(lub potworem), który nie należy do bandytów, to pozostałe postacie w zasięgu percepcji reagują na walkę(obserwują), natomiast jeśli za plecami takiego npc'a walczę z bandytą, to dopóki nie pokaże się praktycznie przed twarzą npc'a, to ten go nie zaatakuje.
 
Mój obecny sprzęt PC:
Intel core i5-4590
8 gb ram
Geforce GTX 1050Ti

Lobos

Lobos

Użytkownicy
posty594
Propsy360
Profesjabrak
  • Użytkownicy
Niewiem co tam kombinowałeś w tych plikach, o których wspomniałeś ale czasami bandyci i npc mają laga jak wcześniej mieli enemyoverride na true a potem wyzwalasz im tego aivara na false. Spróbuj dać npc-towi attitude hostile i obu postaciom aivar[AIV_INVINCIBLE] na false.

self.aivar[AIV_INVINCIBLE] = FALSE;B_SetAttitude (nazwa_npc, ATT_HOSTILE);
 

Graveir

Graveir

Użytkownicy
Avatar Twilight Sparkle / Pożeracz serc
posty1275
Propsy235
ProfesjaGracz
  • Użytkownicy
  • Avatar Twilight Sparkle / Pożeracz serc
Próbowałem pozmieniać w plikach wartości AIV_EnemyOverride true na false i na odwrót. Jednak nic to nie dało. A to Invicible wygląda na to, że dotyczy tylko rozmów, żeby postać nie była atakowana.
Edit: Wygląda na to, że coś tutaj leży
// ------ NUR in WatchFight gehen, wenn kein Feind am Start ------
if (Npc_GetAttitude(self, other) == ATT_HOSTILE)
|| (Npc_GetAttitude(self, victim) == ATT_HOSTILE)
{

if (self.guild == GIL_BDT)
{
Print("1");//Sonderfall: Weiter im Text (BDT werden oben abgehandelt)
}
else
{
Print("2");
Npc_SendPassivePerc    (self, PERC_ASSESSFIGHTSOUND, self, other);
return;
};
};
Przy ataku bandyty(GIL_BDT w skrypcie) npc ma wywalone, dopóki nie stanie mu przed oczami, gdzie każdy pozostały, który jest na linii wzroku atakuje go. Natomiast jeśli zmienię self.guild na other.guild, wtedy postać się obraca, ale zamiast atakować bandytę, to ogląda walkę(czyli Print 1 się wyzwala), a przy normalnym wariancie wyskakuje print 2 bez obracania.
 
Mój obecny sprzęt PC:
Intel core i5-4590
8 gb ram
Geforce GTX 1050Ti

Lobos

Lobos

Użytkownicy
posty594
Propsy360
Profesjabrak
  • Użytkownicy
Dotyczy to zachowania tylko jednego npca? Jeśli tak to pokaż jego skrypt.
 

Graveir

Graveir

Użytkownicy
Avatar Twilight Sparkle / Pożeracz serc
posty1275
Propsy235
ProfesjaGracz
  • Użytkownicy
  • Avatar Twilight Sparkle / Pożeracz serc
Wszystkich npc'ów, którzy nie widzą przeciwnika. Chwilowo zrobiłem coś takiego
if (Npc_GetAttitude(self, other) == ATT_HOSTILE)
|| (Npc_GetAttitude(self, victim) == ATT_HOSTILE)
&& (self.guild != GIL_BDT)
{

if (other.guild == GIL_BDT)
{
B_Attack (self, other, AR_GuildEnemy, -1);
Print("1");//Sonderfall: Weiter im Text (BDT werden oben abgehandelt)
return;
}
else
{
B_Attack (self, victim, AR_GuildEnemy, -1);
Print("2");
return;
};
};
I w tym wypadku npc się odwraca i atakuje bandytę, tylko nie wiem, czy później to się nie odbije na jakiś innych postaciach(aczkolwiek w przypadku pirata, który nie jest agresywnie nastawiony, npc się odwraca i ogląda walkę - czyli tak, jak być powinno).
 
Mój obecny sprzęt PC:
Intel core i5-4590
8 gb ram
Geforce GTX 1050Ti


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