warunek odnoszący się do walki 2 losowych npc (nie może być hero) 2634 4

O temacie

Autor pawbuj

Zaczęty 29.03.2014 roku

Wyświetleń 2634

Odpowiedzi 4

pawbuj

pawbuj

Użytkownicy
posty1625
Propsy135
ProfesjaSkrypter
  • Użytkownicy
chcę zrobić warunek, który będzie określał, że główny bohater nie jest atakującym, ani osobą na który skierowany jest atak.

ma ktoś jakieś pomysły?

dodam,że nie może być to zrobione na perceptionach obrażeń.
 

chicken

chicken

RaveN Studio
posty1230
Propsy559
ProfesjaNierób
  • RaveN Studio
A mogłoby być to? if !(Npc_IsInState(hero, Zs_Attack))
A co do drugiego func INT    Npc_IsAiming                (VAR C_NPC self, VAR C_NPC other) { return 0; };

pawbuj

pawbuj

Użytkownicy
posty1625
Propsy135
ProfesjaSkrypter
  • Użytkownicy
A mogłoby być to? if !(Npc_IsInState(hero, Zs_Attack))
A co do drugiego func INT    Npc_IsAiming                (VAR C_NPC self, VAR C_NPC other) { return 0; };
to nie przejdzie, bo npc musi być właśnie w stanie zs_attack, a celowanie jest tylko z dystansu, a co z bronią w zwarciu?
 

chicken

chicken

RaveN Studio
posty1230
Propsy559
ProfesjaNierób
  • RaveN Studio
To jeszcze raz :F

Do 1:      FUNC INT    Npc_IsInFightMode        (VAR C_NPC self, VAR INT fmode)      { return 0; };
Do 2:      FUNC INT    Npc_HasDetectedNpc            (VAR C_NPC self, VAR C_NPC other) { return 0; };
Tutaj masz fmody:
const int FMODE_NONE = 0;
const int FMODE_FIST = 1;
const int FMODE_MELEE = 2;
const int FMODE_FAR = 5;
const int FMODE_MAGIC = 7;

pawbuj

pawbuj

Użytkownicy
posty1625
Propsy135
ProfesjaSkrypter
  • Użytkownicy
już ci dokładniej opiszę sytuację.

zrobiłem kolor nazwy npc w zależności od stosunku (attitude)  i zawsze jeżeli npc jest w trybie walki (czyt. zs_attack) to kolor jego nazwy zapal się na czerwono. po walce kolor wraca do właściwego.

oba te warunki nie pomogą,tu musi być cos takiego jak hero nie jest atakującym, ani broniącym się, a może być widzem. dzięki, że próbowałeś!

Post połączony: 2014-03-30, 08:54
chodziło mi o coś takiego, na razie sprawdzam ten tropfunc int C_NpcIsAttacker(var C_NPC self)
{
   PrintDebugNpc      (PD_ZS_DETAIL, "C_NpcIsAttacker" );

   if   (self.aivar[AIV_LASTTARGET] == Hlp_GetInstanceID(hero))
   {
   //||   (guard.npctype == NPCTYPE_MINE_GUARD)
      if (Npc_GetNextTarget(self))         // Vorsicht: löscht 'other', wenn kein neues Ziel gefunden
      {
         if   (Hlp_IsValidNpc(hero))
   {
         PrintDebugNpc(PD_ZS_DETAIL,   "...true");
         return       TRUE;
      };
   };
   
   PrintDebugNpc      (PD_ZS_DETAIL,   "...false");
   return            FALSE;
};
};

Post połączony: 2014-03-30, 18:33
udało mi się to rozwiązać, wystarczył jeden warunek w zs_attack Npc_PerceiveAll            (self);      // nötig, da Npc_GetNextTarget() auf der Liste der zuletzt Wahrgenommenen VOBs beruht
      self.aivar[AIV_LASTTARGET] = Hlp_GetInstanceID(other);
      if (Npc_GetNextTarget(self))         // Vorsicht: löscht 'other', wenn kein neues Ziel gefunden
      {
         if   (Hlp_IsValidNpc(other)
         &&   !C_NpcIsDown(other)
         &&   Npc_CanSeeNpcFreeLOS(self,other)
         &&   !C_OtherIsToleratedEnemy(self,other))   // sonst ignorierte Feinde nicht in die Auswahl mit aufnehmen
         && !Npc_IsPlayer(other)//edit by pawbuj
 


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