nasz przyjaciel atakuje NPC, gdy wdamy się walkę 3981 10

O temacie

Autor pawbuj

Zaczęty 24.10.2010 roku

Wyświetleń 3981

Odpowiedzi 10

pawbuj

pawbuj

Użytkownicy
posty1625
Propsy135
ProfesjaSkrypter
  • Użytkownicy
robie poprawkę do przebudzenia i nie wiem, jak zrobić aby nasz przyjaciel np. diego atakował naszych wrogów,kiedy ci nas uderzą. problem pewnie tkwi w ZS_assessenemy, ale nie wiem od czego zacząć.pomoże ktoś?
 

RafalBudzis

RafalBudzis

Użytkownicy
posty1967
Propsy808
ProfesjaSkrypter
  • Użytkownicy
mi działa jak do postaci dodam
aivar[AIV_PARTYMEMBER] = TRUE;ale jak mówisz ze coś z tamtym plikiem to porównaj sobie go z oryginałem

Spoiler
func void ZS_AssessEnemy ()
{
PrintDebugNpc (PD_ZS_FRAME, "ZS_AssessEnemy");
C_ZSInit ();

Npc_PercEnable   (self, PERC_ASSESSMAGIC , B_AssessMagic );
Npc_PercEnable   (self, PERC_ASSESSMURDER , B_CombatAssessMurder );
Npc_PercEnable   (self, PERC_ASSESSDEFEAT , B_CombatAssessDefeat );
Npc_PercEnable   (self, PERC_CATCHTHIEF , ZS_CatchThief );
Npc_PercEnable   (self, PERC_ASSESSSURPRISE , ZS_AssessSurprise );

B_FullStop (self);
B_WhirlAround (self, other);

//######## NSC ist WACHE oder BOSS ########
if C_NpcIsGuard(self)
|| C_NpcIsGuardArcher(self)
|| C_NpcIsBoss(self)
|| (self.npctype==NPCTYPE_FRIEND) //solche dürfen niemals fliehen!
{
//---- NSC ruft zusätzlich Hilfe ! ----
if (C_AmIWeaker(self,other) || (Npc_IsPlayer(other) && self.aivar[AIV_WASDEFEATEDBYSC]) )
{
B_CallComrades ();
};

//---- NSC greift an ! ----
if (Npc_IsPlayer(other))
{
B_DrawWeapon (self, other);
AI_StartState (self, ZS_ProclaimAndPunish, 0, "");
return;
}
else
{
Npc_SetTarget (self, other);
AI_StartState (self, ZS_Attack, 0, "");
return;
};
}

//######## NSC ist WORKER ########
else
{
//---- Flucht ? ----
if ( (Npc_IsPlayer(other) && self.aivar[AIV_WASDEFEATEDBYSC]) || C_AmIWeaker(self,other) )
{
B_CallGuards ();
AI_StartState (self, ZS_Flee, 0, "");
return;
}

//---- NSC kämpft ! ----
else
{
if (Npc_IsPlayer(other))
{
B_DrawWeapon(self, other);
AI_StartState(self, ZS_ProclaimAndPunish, 0, "");
return;
}
else
{
Npc_SetTarget(self, other);
AI_StartState(self, ZS_Attack, 0, "");
return;
};
};
};
};

pawbuj

pawbuj

Użytkownicy
posty1625
Propsy135
ProfesjaSkrypter
  • Użytkownicy
Cytat: RafalBudzis link=topic=11739.msg115879#msg115879#msg115879#msg115879 date=1287950637
mi działa jak do postaci dodam
aivar[AIV_PARTYMEMBER] = TRUE;ale jak mówisz ze coś z tamtym plikiem to porównaj sobie go z oryginałem

Spoiler
func void ZS_AssessEnemy ()
{
PrintDebugNpc (PD_ZS_FRAME, "ZS_AssessEnemy");
C_ZSInit ();

Npc_PercEnable   (self, PERC_ASSESSMAGIC , B_AssessMagic );
Npc_PercEnable   (self, PERC_ASSESSMURDER , B_CombatAssessMurder );
Npc_PercEnable   (self, PERC_ASSESSDEFEAT , B_CombatAssessDefeat );
Npc_PercEnable   (self, PERC_CATCHTHIEF , ZS_CatchThief );
Npc_PercEnable   (self, PERC_ASSESSSURPRISE , ZS_AssessSurprise );

B_FullStop (self);
B_WhirlAround (self, other);

//######## NSC ist WACHE oder BOSS ########
if C_NpcIsGuard(self)
|| C_NpcIsGuardArcher(self)
|| C_NpcIsBoss(self)
|| (self.npctype==NPCTYPE_FRIEND) //solche dürfen niemals fliehen!
{
//---- NSC ruft zusätzlich Hilfe ! ----
if (C_AmIWeaker(self,other) || (Npc_IsPlayer(other) && self.aivar[AIV_WASDEFEATEDBYSC]) )
{
B_CallComrades ();
};

//---- NSC greift an ! ----
if (Npc_IsPlayer(other))
{
B_DrawWeapon (self, other);
AI_StartState (self, ZS_ProclaimAndPunish, 0, "");
return;
}
else
{
Npc_SetTarget (self, other);
AI_StartState (self, ZS_Attack, 0, "");
return;
};
}

//######## NSC ist WORKER ########
else
{
//---- Flucht ? ----
if ( (Npc_IsPlayer(other) && self.aivar[AIV_WASDEFEATEDBYSC]) || C_AmIWeaker(self,other) )
{
B_CallGuards ();
AI_StartState (self, ZS_Flee, 0, "");
return;
}

//---- NSC kämpft ! ----
else
{
if (Npc_IsPlayer(other))
{
B_DrawWeapon(self, other);
AI_StartState(self, ZS_ProclaimAndPunish, 0, "");
return;
}
else
{
Npc_SetTarget(self, other);
AI_StartState(self, ZS_Attack, 0, "");
return;
};
};
};
};
partmember nie działa,za proste by było.
 

EdekSumo

EdekSumo

Wyspa Khorinis
posty1739
Propsy925
ProfesjaLvl designer
  • Wyspa Khorinis
partmember sprawia że jak NPC coś zabije to dostajesz doświadczenie
 

pawbuj

pawbuj

Użytkownicy
posty1625
Propsy135
ProfesjaSkrypter
  • Użytkownicy
Cytat: edeksumo link=topic=11739.msg115927#msg115927#msg115927#msg115927 date=1288026534
partmember sprawia że jak NPC coś zabije to dostajesz doświadczenie
zgadza się
 

kamiloops

kamiloops

Użytkownicy
posty161
Propsy11
ProfesjaProgramista
  • Użytkownicy
Hmm :idea:  

Poprzeglądałem, troche skrypty(duże troche)
Spróbuj dać swojemu NPC gildie EBR(Magnat)

Wniosek ?

Jak byś troche ruszył głowę, wiedział byś że jak ktoś zaatakuje Gomeza, zaczyna rzucać się na nas, setka strażników :lol2:  

Jak nie zadziała, popróbuj inaczej.
 
Nie mam polskich znakow

pawbuj

pawbuj

Użytkownicy
posty1625
Propsy135
ProfesjaSkrypter
  • Użytkownicy
tu jest kawałek skryptu, który dodałem do pcji followPC. błędu nie wyrzuca, ale i nie dziła.nasz towarzysz nie podejmuje walki, kiedy nasatakują inni NPC. czemu?
Cytuj
func void B_FollowPC_AssessEnemy()
{
   PrintDebugNpc         (PD_ZS_FRAME, "B_FollowPC_AssessEnemy" );
   PrintGlobals(PD_ZS_CHECK);
   if(!other.aivar[AIV_PARTYMEMBER] && (other.npcType != npctype_friend))
   {
      AI_StartState(self,ZS_Attack,0,"");
   };
};


func void B_FollowPC_AssessOthersDamage()
{
      var C_Npc her;
   var C_Npc GorHanis;
   her = Hlp_GetNpc(PC_Hero);
   GorHanis = Hlp_GetNpc(TPL_1422_GorHanis);
   if((Hlp_GetInstanceID(other) == Hlp_GetInstanceID(her)) || (Hlp_GetInstanceID(other) == Hlp_GetInstanceID(GorHanis)))
   {
      if(!Npc_IsInState(self,ZS_Attack))
      {
         Npc_ClearAIQueue(self);
         Npc_SetTarget(self,victim);
         AI_StartState(self,ZS_Attack,0,"");
      };
   }
   else if((Hlp_GetInstanceID(victim) == Hlp_GetInstanceID(her)) || (Hlp_GetInstanceID(victim) == Hlp_GetInstanceID(GorHanis)))
   {
      Npc_ClearAIQueue(self);
      Npc_SetTarget(self,other);
      AI_StartState(self,ZS_Attack,0,"");
   };
};
 

pawbuj

pawbuj

Użytkownicy
posty1625
Propsy135
ProfesjaSkrypter
  • Użytkownicy
nie wiem co jest nie tak,fragment pliku zs_reacttodamage, jest to logiczne, ale niała
Cytuj
   //-------- Atak na NPC ! --------
   if (!C_NpcIsMonster(other))      
   {
      if   C_NpcIsGuard(other)
   ||   C_NpcIsGuardArcher(other)
   || (!Npc_IsPlayer(other))
   ||   C_NpcIsBoss(other)
   
      {
         Bezio.aivar[AIV_BEENATTACKED] = 1;
   
         if ((Npc_GetTempAttitude(Bezio,other)==ATT_FRIENDLY) || (self.npctype==NPCTYPE_FRIEND))
         {
            PrintDebugNpc         (PD_ZS_CHECK,   "...NSC FRIENDLY zum Angreifer");
            C_LookAtNpc          (GorHanis,   other);
            B_Say                (GorHanis,   other,   "WHATAREYOUDOING");
            Npc_SetTempAttitude      (GorHanis,   ATT_HOSTILE);
            AI_ContinueRoutine      (GorHanis);
            Npc_SetTarget   (GorHanis,   other);
            AI_StartState   (GorHanis,   ZS_Attack,   0,   "");
            return;
         }
         else
         {
            PrintDebugNpc         (PD_ZS_CHECK, "...NSC nicht FRIENDLY zum Angreifer!");
   
            if (Npc_GetPermAttitude(GorHanis,other) != ATT_HOSTILE)
            {
               Npc_SetPermAttitude   (GorHanis,   ATT_HOSTILE);
            };
            Npc_SetTempAttitude      (GorHanis,   ATT_HOSTILE);
         };
      };
      Npc_SetTarget       (GorHanis,   other);
      
      Npc_GetTarget      (GorHanis);
      Npc_SetTarget   (GorHanis,   other);
         AI_StartState   (GorHanis,   ZS_Attack,   0,   "");
      AI_StartState      (GorHanis,   ZS_ProclaimAndPunish, 0, "");
      //AI_StartState             (GorHanis,   ZS_AssessEnemy,   0, "" );
   }
   
   //-------- Angreifer ist Monster ! --------
   else      
   {   
      AI_StartState             (GorHanis,   ZS_AssessMonster,   0, "" );
   };
 

pawbuj

pawbuj

Użytkownicy
posty1625
Propsy135
ProfesjaSkrypter
  • Użytkownicy
skoro to zacząłem to i skończę.

odpowiedź jest w pliku zs_summonedbynpc i potem edycja odp. w zs_followpc,

trudno spieprzyć
 

arwi

arwi

Użytkownicy
posty14
Propsy2
  • Użytkownicy
Może i uznacie to SPAM ale musiałem dać propsa i napisać bo wszędzie jest TEMAT DO ZAMKNIĘCIA a w sumie nie do końca wyjaśnione jak doszedł koleś do tego tu jest choć nie wiem czy to działa bo na razie tylko wczytuje się w posty i próbuję coś z tego zrozumieć.
 

pawbuj

pawbuj

Użytkownicy
posty1625
Propsy135
ProfesjaSkrypter
  • Użytkownicy
Cytat: arwi link=topic=11739.msg122824#msg122824#msg122824#msg122824 date=1291950771
Może i uznacie to SPAM ale musiałem dać propsa i napisać bo wszędzie jest TEMAT DO ZAMKNIĘCIA a w sumie nie do końca wyjaśnione jak doszedł koleś do tego tu jest choć nie wiem czy to działa bo na razie tylko wczytuje się w posty i próbuję coś z tego zrozumieć.
napisałem  w którym pliku jest odp.
co jeszcze mam zrobić?
 


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