|
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); };
З.Ы.Где лежат скрипты писем, книжек и т.д.?
|