Показать сообщение отдельно
Старый 26.04.2005, 08:39   #301
Galhan

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: Скриптинг в Готике

Вот скрипт диалога охранника, который по-идее должен не пускать. Может кто подсказать, что в скрипте не правильно:

INSTANCE Mil_018_Migel_Exit (C_INFO)
{
    npc                        = Mil_018_Migel;
    nr                 = 999;
    condition          = Mil_018_Migel_Exit_Condition;
    information            = Mil_018_Migel_Exit_Info;
    permanent            = 1;
    description            = DIALOG_ENDE;
};                      

FUNC INT Mil_018_Migel_Exit_Condition()
{
    return 1;
};

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

//************************************************** ***************************

     const string Mil_018_CheckPoint      = "Ow_NewMine_01_B";      
//************************************************** ***************************

instance Mil_018_Migel_FirstWarn (C_INFO)
{
     npc                  = Mil_018_Migel;
     nr                  = 1;
     condition      = Mil_018_Migel_FirstWarn_Condition;
     information      = Mil_018_Migel_FirstWarn_Info;
     permanent      = TRUE;
     important      = TRUE;
};                      

func int Mil_018_Migel_FirstWarn_Condition()
{
     if (Npc_GetDistToWP(other, Mil_018_CheckPoint) <= 700)
     {
           Npc_SetRefuseTalk(self,5);
           return FALSE;
     };
     
     if ((self.aivar[AIV_Guardpassage_Status]                  == GP_NONE            )
     &&  (self.aivar[AIV_PASSGATE]                                    == FALSE            )
     &&      (Hlp_StrCmp(Npc_GetNearestWP(self),self.wp)            == TRUE                  )
     &&  (Npc_RefuseTalk(self)                                          == FALSE            )
     &&      (Nugget_150_Done                                                == 0                  ))
     {
           return TRUE;
     };
};

func void Mil_018_Migel_FirstWarn_Info()
{
     other.aivar[AIV_LastDistToWP]            = Npc_GetDistToWP(other,Mil_018_CheckPoint);
     self.aivar[AIV_Guardpassage_Status]      = GP_FirstWarnGiven;
     self.aivar[AIV_PASSGATE]                  = FALSE;
     AI_Output (self, other,"Mil_018_Migel_FirstWarn_12_00"); //Стой! Ты куда это собрался, а?
     AI_Output (self, other,"Mil_018_Migel_FirstWarn_12_01"); //Возвращайся к работе, пока я не снес тебе башку!
     AI_StopProcessInfos (self);
};

// ************************************************** *************************
// ************************************************** *************************
// ************************************************** *************************

INSTANCE Mil_018_Migel_SecondWarn (C_INFO)
{
     npc                  = Mil_018_Migel;
     nr                  = 2;
     condition      = Mil_018_Migel_SecondWarn_Condition;
     information      = Mil_018_Migel_SecondWarn_Info;
     permanent      = TRUE;
     important      = TRUE;
};                      

FUNC INT Mil_018_Migel_SecondWarn_Condition()
{
     if ((self.aivar[AIV_Guardpassage_Status]                  == GP_FirstWarnGiven                              )
     &&  (self.aivar[AIV_PASSGATE]                                    == FALSE                                                )
     &&      (Hlp_StrCmp(Npc_GetNearestWP(self),self.wp)            == TRUE                                                      )
     &&  (Npc_GetDistToWP(other,Mil_018_CheckPoint)            <=  (other.aivar[AIV_LastDistToWP]-175)      )
     &&      (Nugget_150_Done                                                == 0                  ))
     {
           return TRUE;
     };
};

func void Mil_018_Migel_SecondWarn_Info()
{
     AI_Output (self, other,"Mil_018_Migel_SecondWarn_12_00"); //Ты что оглох? Я сказал возвращайся!!!

     other.aivar[AIV_LastDistToWP]            = Npc_GetDistToWP (other,Mil_018_CheckPoint);
     other.aivar[AIV_Guardpassage_Status]      = GP_SecondWarnGiven;      
     
     AI_StopProcessInfos      (self);
};

// ************************************************** *************************
// ************************************************** *************************
// ************************************************** *************************

INSTANCE Mil_018_Migel_Attack (C_INFO)
{
     npc                  = Mil_018_Migel;
     nr                  = 3;
     condition      = Mil_018_Migel_Attack_Condition;
     information      = Mil_018_Migel_Attack_Info;
     permanent      = TRUE;
     important      = TRUE;
};                      

FUNC INT Mil_018_Migel_Attack_Condition()
{
     if ((self.aivar[AIV_Guardpassage_Status]                  == GP_SecondWarnGiven                              )
     &&  (self.aivar[AIV_PASSGATE]                                    == FALSE                                                )
     &&      (Hlp_StrCmp(Npc_GetNearestWP(self),self.wp)            == TRUE                                                      )
     &&  (Npc_GetDistToWP(other,Mil_018_CheckPoint)            <  (other.aivar[AIV_LastDistToWP]-175)      ))
     {
           return TRUE;
     };
};

func void Mil_018_Migel_Attack_Info()
{
     other.aivar[AIV_LastDistToWP]                  = 0;
     other.aivar[AIV_Guardpassage_Status]            = GP_NONE;                              
     AI_Output (self, other,"Mil_018_Migel_Attack_12_00"); //Ты сам напросился!
     AI_StopProcessInfos      (self);            
     B_Attack (self, other, AR_GuardStopsIntruder, 0);
};

// ************************************************** *************************
// ************************************************** *************************
// ************************************************** *************************

INSTANCE Mil_018_Migel_NuggetControl_Yes (C_INFO)
{
     npc                  = Mil_018_Migel;
     nr                  = 4;
     condition      = Mil_018_Migel_NuggetControl_Yes_Condition;
     information      = Mil_018_Migel_NuggetControl_Yes_Info;
     permanent      = 1;
     important      = 0;
     description = "Я уже нароботал дневную норму!";
};

FUNC INT Mil_018_Migel_NuggetControl_Yes_Condition()
{      
     if ((Npc_HasItems(other, ItMi_Nugget) >= 150)
     && (Nugget_150_Done                        == 0 ))
     {
           return TRUE;
     };
};

FUNC VOID Mil_018_Migel_NuggetControl_Yes_Info()
{
     AI_Output (other, self,"Mil_018_Migel_NuggetControl_Yes_12_00"); //Эй, я уже нароботал дневную норму.
     AI_Output (self, other,"Mil_018_Migel_NuggetControl_Yes_12_01"); //Парень, а ты не такой уж бездельник, как я думал!
     AI_Output (self, other,"Mil_018_Migel_NuggetControl_Yes_12_02"); //Ладно, проходи, только не вздумай препрятать себе хоть кусок руды, а то тебя по всей стоянке не соберут, усек?
     
     self.aivar[AIV_PASSGATE] = TRUE;
     Nugget_150_Done                  = 1;
     B_CheckLog();
     AI_StopProcessInfos      (self);
};

// ************************************************** *************************
// ************************************************** *************************
// ************************************************** *************************

INSTANCE Mil_018_Migel_NuggetControl_No (C_INFO)
{
     npc                  = Mil_018_Migel;
     nr                  = 5;
     condition      = Mil_018_Migel_NuggetControl_No_Condition;
     information      = Mil_018_Migel_NuggetControl_No_Info;
     permanent      = 1;
     important      = 0;
     description = "Я уже нароботал дневную норму!";
};

FUNC INT Mil_018_Migel_NuggetControl_No_Condition()
{      
     if ((Npc_HasItems(other, ItMi_Nugget) < 150)
     && (Nugget_150_Done                        == 0 ))
     {
           return TRUE;
     };
};

FUNC VOID Mil_018_Migel_NuggetControl_No_Info()
{
     AI_Output (other, self,"Mil_018_Migel_NuggetControl_No_12_00"); //Эй, я уже нароботал дневную норму.
     AI_Output (self, other,"Mil_018_Migel_NuggetControl_No_12_01"); //Знаешь, мне кажеться ты меня обманываешь- здесь нет 150 кусков! А я не люблю, когда меня обманывают!
     AI_Output (self, other,"Mil_018_Migel_NuggetControl_No_12_02"); //А ну быстро работать, а то счас шкуру спущу!
     
     self.aivar[AIV_PASSGATE] = FALSE;
     Nugget_150_Done                  = 0;
     AI_StopProcessInfos      (self);
};


З.Ы.Где лежат скрипты писем, книжек и т.д.?
Ответить с цитированием