Re: М: Скриптинг в Готике
2UkroLeha: Можно еще впорос? Как перекомпилировать zen с новой моделью mds? Просто у меня есть zen с предметами, вейнетом и прочим. Я обнаружил, что в mds модели в одном месте вода твердая. Исправил, и сейчас мне нужно перекомпилировать zen с новой mds'кой. Год назад я это уже делал, но за это время напрочь забыл, как это делается.<br><br><br>Более не актуально, вспомнил.<br><br> Добавление от 11/18/12, в 12:16:09 <hr class="hr_agfc">AIVAR_ отслеживаются движком, или можно в скриптах ввести свой и нормально использовать?<br><br> Добавление от 11/18/12, в 19:15:21 <hr class="hr_agfc">Есть скрипт ZS_Intercept:<br>
Cпойлер(щелкните, чтобы прочесть):
<br>func void ZS_Intercept()<br>{<br> Npc_PercEnable(self,PERC_ASSESSPLAYER,B_Asse ssSCMad);<br> Npc_PercEnable(self,PERC_ASSESSDAMAGE,B_Inte rceptMadAssessDamage);<br> Npc_PercEnable(self,PERC_ASSESSMAGIC,B_Inter ceptMadAssessMagic);<br> Npc_PercEnable(self,PERC_ASSESSCASTER,B_Asse ssSCMad);<br> Npc_PercEnable(self,PERC_ASSESSTHREAT,B_Asse ssSCMad);<br> self.senses = SENSE_HEAR | SENSE_SEE;<br> self.senses_range = 1300;<br> Npc_SetPercTime(self,0.5);<br> AI_Standup(self);<br> AI_SetWalkMode(self,NPC_WALK);<br> AI_GotoWP(self,self.wp);<br> AI_AlignToWP(self);<br>};<br><br>func int ZS_Intercept_Loop()<br>{<br> AI_Wait(self,1);<br> return LOOP_CONTINUE;<br>};<br><br>func void ZS_Intercept_End()<br>{<br>};<br><br>func void B_AssessSCMad()<br>{<br> if(Npc_CheckInfo(self,1))<br> {<br> hero.aivar[AIV_IMPORTANT] = TRUE;<br> B_FullStop(self);<br> AI_StartState(self,ZS_Talk,1,"");< br> return;<br> };<br>};<br><br>func void B_InterceptMadAssessDamage()<br>{<br> if(Npc_CheckInfo(self,1))<br> {<br> hero.aivar[AIV_IMPORTANT] = TRUE;<br> B_FullStop(self);<br> AI_StartState(self,ZS_Talk,1,"");< br> return;<br> }<br> else<br> {<br> B_FullStop(self);<br> AI_StartState(self,ZS_ReactToDamage,0," ");<br> };<br>};<br><br>func void B_InterceptMadAssessMagic()<br>{<br> if(Npc_CheckInfo(self,1))<br> {<br> hero.aivar[AIV_IMPORTANT] = TRUE;<br> B_FullStop(self);<br> AI_StartState(self,ZS_Talk,1,"");< br> return;<br> }<br> else<br> {<br> B_FullStop(self);<br> B_AssessMagic();<br> };<br>};<br>
<br><br>и есть файл диалога:<br>
Cпойлер(щелкните, чтобы прочесть):
<br>instance Info_HighPriest1(C_Info)<br>{<br> npc = ORC_Priest_1;<br> nr = 1;<br> condition = Info_HighPriest1_Condition;<br> information = Info_HighPriest1_Info;<br> permanent = 0;<br> important = 1;<br>};<br><br><br>func int Info_HighPriest1_Condition()<br>{<br> return TRUE;<br>};<br><br>func void Info_HighPriest1_Info()<br>{<br> B_SelectWeapon(self,other);<br> AI_SetWalkMode(self,NPC_WALK);<br> AI_GotoNpc(self,other);<br> AI_Output(self,other,"Info_HighPriest1_ 17_01"); //СМЕЕЕЕЕЕЕРТНЫЫЫЙ!<br> AI_Output(self,other,"Info_HighPriest1_ 17_02"); //КАК ОСМЕЕЕЛИЛСЯ ТЫ ПОТРЕВОЖИТЬ МЕНЯ???!!!<br> AI_Output(self,other,"Info_HighPriest1_ 17_03"); //ГОТОВЬСЯ УМЕРЕТЬ!<br> AI_Output(other,self,"Info_HighPriest1_ 15_04"); //Мы еще посмотрим, кому нужно готовиться, ты, сгнивший кусок мяса!<br> B_LogEntry(CH4_EnterTemple,"Я стою перед Варраг-Нашором, одним из пяти орочьих шаманов, которые привели Спящего в наш мир. Я положу конец его существованию.");<br> AI_StopProcessInfos(self);<br> Npc_SetAttitude(self,ATT_HOSTILE);<br> Npc_SetTempAttitude(self,ATT_HOSTILE);<br > Npc_SetTarget(self,hero);<br> B_Attack(self,other,AR_NONE,1);<br>};<br>
<br><br>После разговора орк должен атаковать героя, но он тупо стоит и даже не реагирует на удары. Хотя другой НПС с таким же ZS скриптом и с такой вставкой диалоге<br>
Cпойлер(щелкните, чтобы прочесть):
Npc_SetAttitude(self,ATT_HOSTILE);<br>Npc_SetTempA ttitude(self,ATT_HOSTILE);<br>Npc_SetTarget(self,h ero);<br>B_Attack(self,other,AR_NONE,1);
<br>нормально атакует после разговора. В чем ошибка?<br><br>
|