Problem ze skryptem NPC'a (GOTHIC I) 2448 4

O temacie

Autor BloodHunter926

Zaczęty 26.04.2015 roku

Wyświetleń 2448

Odpowiedzi 4

BloodHunter926

BloodHunter926

Użytkownicy
posty13
Profesjabrak
  • Użytkownicy
Witam.

Mam problem ze skryptem NPC'a; jest on psem (wilkiem), i jest (ma być) przyjazny wobec gracza, biegać za nim, pomogać mu w walce itp, itd.
Napisałem taki skrypt:
Spoiler
instance PC_Lolo (Npc_Default)
{
   //-------- primary data --------
   
   name =                     "Lolo";
   npctype =                  NPCTYPE_FRIEND;
   guild =                     GIL_WOLF;     
   level =                     50;
   flags =                      NPC_FLAG_IMMORTAL;
   
   voice =                     7;
   id =                     10001;


   //-------- abilities --------

   attribute[ATR_STRENGTH] =      30;
   attribute[ATR_DEXTERITY] =      15;
   attribute[ATR_MANA_MAX] =      0;
   attribute[ATR_MANA] =         0;
   attribute[ATR_HITPOINTS_MAX] =   200;
   attribute[ATR_HITPOINTS] =      200;
   
   //-------- visuals --------
   //             animations
   Mdl_SetVisual         (self,"Wolf.mds");
   //                        Body-Mesh      Body-Tex   Skin-Color   Head-MMS   Head-Tex   Teeth-Tex   ARMOR
   Mdl_SetVisualBody      (self,   "Wol_Body",      DEFAULT,   DEFAULT,   "",         DEFAULT,     DEFAULT,   -1);
   Mdl_SetModelScale(self, 0.8, 0.8, 0.8);

   B_Scale (self);
   
   self.aivar[AIV_IMPORTANT] = TRUE;
   
   aivar[AIV_MM_Behaviour]      = PACKHUNTER;
   
   aivar[AIV_MM_PercRange]      = 1500;
   aivar[AIV_MM_DrohRange]      = 1200;
   aivar[AIV_MM_AttackRange]   = 520;
   aivar[AIV_MM_DrohTime]      = 3;
   aivar[AIV_MM_FollowTime]   = 15;
   aivar[AIV_MM_FollowInWater] = TRUE;
   
   fight_tactic   =   FAI_WOLF;

   //-------- Senses --------                                   
   senses = SENSE_SEE|SENSE_HEAR|SENSE_SMELL;// für DIREKTES ansprechen
   senses_range            = 3000;
   
   //-------- inventory --------                                   

   CreateInvItems (self, ItMiNugget,1);
   //-------------Daily Routine-------------
   daily_routine = Rtn_start_10001;
};

FUNC VOID Rtn_start_10001 ()
{
   TA_Stay   (23,00,06,00,"OW_PATH_1_5_B");
   TA_Stay   (23,00,06,00,"OW_PATH_1_5_B");
};

func void Rtn_asist_10001 ()
{
   TA_FollowPC   (23,00,16,00,"OW_PATH_1_5_B");
   TA_FollowPC   (16,00,23,00,"OW_PATH_1_5_B");
};




Oraz skrypt na rozmowę:

Spoiler
// **************************************************
//                    EXIT
// **************************************************

INSTANCE DIA_PC_Lolo_Exit (C_INFO)
{
   npc         = PC_Lolo;
   nr          = 999;
   condition   = DIA_PC_Lolo_Exit_Condition;
   information   = DIA_PC_Lolo_Exit_Info;
   permanent   = 1;
   description = DIALOG_ENDE;
};                       

FUNC INT DIA_PC_Lolo_Exit_Condition()
{
   //if (Npc_KnowsInfo(hero, DIA_PC_Lolo_meal))
   //{
      return 1;
   //};
};

FUNC VOID DIA_PC_Lolo_Exit_Info()
{
   AI_StopProcessInfos   ( self );
};

// **************************************************
//                   First + EXIT
// **************************************************

INSTANCE DIA_PC_Lolo_meal (C_INFO)
{
   npc         = PC_Lolo;
   nr          = 1;
   condition   = DIA_PC_Lolo_meal_Condition;
   information   = DIA_PC_Lolo_meal_Info;
   permanent   = 1;
   important    = 1;
   description = "(DAJ JEDZENIE)";
};                       

FUNC INT DIA_PC_Lolo_meal_Condition()
{
   if ( (Npc_HasItems(other,ItFoMutton)>0) || (Npc_HasItems(other,ItFoMuttonRaw)>0) )
   {
      return 1;
   };
};

FUNC VOID DIA_PC_Lolo_meal_Info()
{
   
   if       (Npc_HasItems(other,ItFoMutton))
      {
         B_GiveInvItems   (other,self,ItFoMutton,1);
         
      }
      else if (Npc_HasItems(other,ItFoMuttonRaw))
      {
         B_GiveInvItems   (other,self,ItFoMuttonRaw,1);
      
      }

};

INSTANCE DIA_PC_Lolo_stay (C_INFO)
{
   npc         = PC_Lolo;
   nr          = 997;
   condition   = DIA_PC_Lolo_stay_Condition;
   information   = DIA_PC_Lolo_stay_Info;
   permanent   = 1;
   important    = 1;
   description = "(ZOSTAŃ)";
};                       

FUNC INT DIA_PC_Lolo_stay_Condition()
{
      return 1;
};

FUNC VOID DIA_PC_Lolo_stay_Info()
{
   
   Npc_ExchangeRoutine (self,"start");

};

INSTANCE DIA_PC_Lolo_asist (C_INFO)
{
   npc         = PC_Lolo;
   nr          = 998;
   condition   = DIA_PC_Lolo_asist_Condition;
   information   = DIA_PC_Lolo_asist_Info;
   permanent   = 1;
   important    = 1;
   description = "(ZA MNĄ)";
};                       

FUNC INT DIA_PC_Lolo_asist_Condition()
{
      return 1;
};

FUNC VOID DIA_PC_Lolo_asist_Info()
{
   
   Npc_ExchangeRoutine (self,"asist");

};

Problem w tym, że kiedy próbuje z nim rozmawać (aby dać mu jedzenia, zawołać aby szedł za mną itd.) przechodzę w "tryb" rozmowy ustawia się kamera tak jak podczas rozmowy, ale nic się nie wyświetla, nie da się zakończyć, pies też nie podąża za graczem, tylko stoi w miejscu gdzie go zrespiłem, nie atakuje, nic  i nikogo, jak go uderzę, to przechodzi w tryb bojowy (fist mode), ale zaraz potem wraca do trybu zwykłego, to jedynie działa, reszta nic nie działa, nic się nie dzieje, a spacer nie wywala błędów.

Z góry dziękuje za pomoc.
 

WateR

WateR

Użytkownicy
Pułkownik IV Rzeszy
posty28
Propsy3
ProfesjaSkrypter
  • Użytkownicy
  • Pułkownik IV Rzeszy
Gdy chcesz z nim porozmawiać pojawia się w ogóle ta ramka z dialogiem ?
 

BloodHunter926

BloodHunter926

Użytkownicy
posty13
Profesjabrak
  • Użytkownicy
Właśnie nie, ale kamera przełącza sie na tryb dialogu. 
 

WateR

WateR

Użytkownicy
Pułkownik IV Rzeszy
posty28
Propsy3
ProfesjaSkrypter
  • Użytkownicy
  • Pułkownik IV Rzeszy
Spróbuj zmienić w skrypcie npc jego gildię na "GIL_NONE".
 

gothic1210
  • Gość
Weź że to important daj na 0 w KAŻDYM dialogu!!!!
   important    = 0;
 


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