Warunek Npc_GetDistToWP 4974 4

O temacie

Autor Goran

Zaczęty 5.04.2010 roku

Wyświetleń 4974

Odpowiedzi 4

Goran

Goran

Użytkownicy
posty168
Propsy39
  • Użytkownicy

Goran

Warunek Npc_GetDistToWP
2010-04-05, 20:24(Ostatnia zmiana: 2012-03-14, 11:37)
Witam. Chcę wam przedstawić jak korzystać z warunku: Npc_GetDistToWP
Jest on bardzo przydatny. Szczególnie, jeśli tworzymy questy typu: npc prowadzi nas do waypointu,
mamy zaprowadzić npc#msga do waypointu itd. Podam przykład:
if  (Npc_GetDistToWP (self, WAYPOINT) <= 100)
Oznacza to, że: jeśli npc jest w odległości 100m od waypointu o nazwie WAYPOINT, to może porozmawiać na ten temat z bohaterem. Najczęściej stosuje się do tego typu dialogów IMPORTANT
czyli npc sam do nas zagaduje. Wtedy może nastąpić zmiana rutyny. np. prowadzimy npc#msga do waypointu, nagle 100m przed waypointem zagaduje do nas, że dalej poradzi sobie sam i wtedy następuje zmiana rutyny z ta_follow_player na następną. Podam teraz kilka przykładów z gry:
Cytuj
// ------------------------------------------------------------
//                       Orks!
// ------------------------------------------------------------
INSTANCE DIA_Addon_Skip_Orks (C_INFO)
{
   npc         = PIR_1355_Addon_Skip;
   nr         = 1;
   condition   = DIA_Addon_Skip_Orks_Condition;
   information   = DIA_Addon_Skip_Orks_Info;
   permanent   = FALSE;
   important   = TRUE;
};                 
FUNC INT DIA_Addon_Skip_Orks_Condition()
{
   if (self.aivar[AIV_PARTYMEMBER] == TRUE)
   && (Npc_GetDistToWP (self, ADW_CANYON_PATH_TO_LIBRARY_14) <= 2000)
   {
      return TRUE;
   };
};
func VOID DIA_Addon_Skip_Orks_Info()
{   
   AI_Output (self ,other, DIA_Addon_Skip_Add_08_01); //Orkowie! Nienawidzę tych bestii!

   AI_StopProcessInfos (self);

To wszystko. Dziękuję z uwagę.  :)

Cytat: jono link=topic=9582.msg90586#msg#msg90586#msg date=1270491842sg
ja tu widzę jeden, ale przydatne : P

Miałem jeszcze dodać ale zapomniałem, teraz dodam:

Cytuj
///////////////////////////////////////////////////////////////////////
//   Info angekommen
///////////////////////////////////////////////////////////////////////
instance DIA_Rosi_ANGEKOMMEN      (C_INFO)
{
   npc       =    BAU_936_Rosi;
   nr       =    55;
   condition    =    DIA_Rosi_ANGEKOMMEN_Condition;
   information    =    DIA_Rosi_ANGEKOMMEN_Info;
   important    =    TRUE;

};

func int DIA_Rosi_ANGEKOMMEN_Condition ()
{
   if    (Kapitel == 5)
   &&   (MIS_bringRosiBackToSekob != LOG_SUCCESS)
   && (Rosi_FleeFromSekob_Kap5 == TRUE)
   &&   (
         (   (Npc_GetDistToWP(self,CITY2)<6000)    && (hero.guild == GIL_PAL)   )
      ||   (   (Npc_GetDistToWP(self,NW_BIGFARM_KITCHEN_02)<6000)    && (hero.guild == GIL_DJG)   )
      ||   (   (Npc_GetDistToWP(self,KLOSTER)<6000)  && (hero.guild == GIL_KDF)   )
      )
         {
            return TRUE;
         };
};

func void DIA_Rosi_ANGEKOMMEN_Info ()
{
   AI_Output         (self, other, DIA_Rosi_ANGEKOMMEN_17_00); //Dalej już sobie poradzę.
   AI_Output         (self, other, DIA_Rosi_ANGEKOMMEN_17_01); //Bardzo ci dziękuję. Cóż ja bym bez ciebie zrobiła.

   self.aivar[AIV_PARTYMEMBER] = FALSE;
   Till.aivar[AIV_PARTYMEMBER] = FALSE;

   MIS_bringRosiBackToSekob = LOG_OBSOLETE;
   MIS_RosisFlucht = LOG_SUCCESS;
      AI_Output         (self, other, DIA_Rosi_ANGEKOMMEN_17_02); //Proszę, przyjmij w podzięce ten skromny podarek.

      CreateInvItems (Rosi, ItMi_Gold, 650);                           
      B_GiveInvItems (self, other, ItMi_Gold, 450);               

      if (Npc_IsDead(Till))
      {
         B_GivePlayerXP (XP_SavedRosi);
      }
      else
      {
         var int XPForBoth;
         XPForBoth = (XP_SavedRosi + XP_Ambient);
         B_GivePlayerXP (XPForBoth);
      };

      AI_StopProcessInfos (self);
   
         if   (Npc_GetDistToWP(self,CITY2)<8000)
         {
            Npc_ExchangeRoutine   (self,CITY);
            B_StartOtherRoutine (Till,CITY);
         }
         else if   (Npc_GetDistToWP(self,BIGFARM)<8000)
         {
            Npc_ExchangeRoutine   (self,BIGFARM);
            B_StartOtherRoutine (Till,BIGFARM);
         }
         else if   (Npc_GetDistToWP(self,KLOSTER)<8000)
         {
            Npc_ExchangeRoutine   (self,KLOSTER);
            B_StartOtherRoutine (Till,KLOSTER);
         };
};

Npc_ExchangeRoutine   (self,CITY);
Tu widzicie zmianę rutyny, tak jak mówiłem. To chyba wszystko. :)
 

jono

jono

Użytkownicy
posty525
Propsy155
ProfesjaNierób
  • Użytkownicy
Cytuj
Podam teraz kilka przykładów z gry:
ja tu widzę jeden, ale przydatne : P
 

MixX

MixX

Użytkownicy
posty48
  • Użytkownicy
Dzięki za tutka a mam jedno pytanie jak zrobić ze idziesz tam jakimś NPC i po drodze on cie atakuje
 
W tartaku:

Opuszczona Kopalnia [GI]



Goran

Goran

Użytkownicy
posty168
Propsy39
  • Użytkownicy
Cytat: MixX link=topic=9582.msg90817#msg90817 date=Apr 7 2010, 06:31 AM\'
Dzięki za tutka a mam jedno pytanie jak zrobić ze idziesz tam jakimś NPC i po drodze on cie atakuje

Nie rozumiem cię. Żeby cię ktoś zaatakował musisz dać podczas dialogu:
AI_StopProcessInfos (self);
B_Attack (self, other, AR_NONE, 1);

A tak wogóle to po co tu syf robisz? Takie coś pisze się w pytania i problemy.
Cytuj
Liczę na miejsce w cedritsach w twoim modzie #msgote author=MixX link=topic=9582.msg90817#msg90817 date=Apr 7 2010, 06:31 AM\']Dzięki za tutka a mam jedno pytanie jak zrobić ze idziesz tam jakimś NPC i po drodze on cie atakuje

Nie rozumiem cię. Żeby cię ktoś zaatakował musisz dać podczas dialogu:
AI_StopProcessInfos (self);
B_Attack (self, other, AR_NONE, 1);

A tak wogóle to po co tu syf robisz? Takie coś pisze się w pytania i problemy.
Cytuj
Liczę na miejsce w cedritsach w twoim modzie #msgote author=MixX link=topic=9582.msg90817#msg90817 date=Apr 7 2010, 06:31 AM\']Dzięki za tutka a mam jedno pytanie jak zrobić ze idziesz tam jakimś NPC i po drodze on cie atakuje

Nie rozumiem cię. Żeby cię ktoś zaatakował musisz dać podczas dialogu:
AI_StopProcessInfos (self);
B_Attack (self, other, AR_NONE, 1);

A tak wogóle to po co tu syf robisz? Takie coś pisze się w pytania i problemy.
Cytuj
Liczę na miejsce w cedritsach w twoim modzie Nowi na wyspie#msgote author=MixX link=topic=9582.msg90817#msg90817 date=Apr 7 2010, 06:31 AM\']Dzięki za tutka a mam jedno pytanie jak zrobić ze idziesz tam jakimś NPC i po drodze on cie atakuje

Nie rozumiem cię. Żeby cię ktoś zaatakował musisz dać podczas dialogu:
AI_StopProcessInfos (self);
B_Attack (self, other, AR_NONE, 1);

A tak wogóle to po co tu syf robisz? Takie coś pisze się w pytania i problemy.
Cytuj
Liczę na miejsce w cedritsach w twoim modzie #msgote author=MixX link=topic=9582.msg90817#msg90817 date=Apr 7 2010, 06:31 AM\']Dzięki za tutka a mam jedno pytanie jak zrobić ze idziesz tam jakimś NPC i po drodze on cie atakuje

Nie rozumiem cię. Żeby cię ktoś zaatakował musisz dać podczas dialogu:
AI_StopProcessInfos (self);
B_Attack (self, other, AR_NONE, 1);

A tak wogóle to po co tu syf robisz? Takie coś pisze się w pytania i problemy.
Cytuj
Liczę na miejsce w cedritsach w twoim modzie , jako że ci pomogłem.

Można zamknąć.
 

kaczka

kaczka

RaveN Studio
Definitely not kaczka!
posty2281
Propsy2392
NagrodyV
ProfesjaLvl designer
  • RaveN Studio
  • Definitely not kaczka!
Jemu chyba chodziło o takie coś jak w G1 był motyw, że Grim nas prowadził do ogniska z tymi 2 paziami i potem chciał nas pobić ;p
 


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