|
Re: М:Декомпилятор скриптов Готики
Vam’у. Всю субботу и воскресенье разбирался с ошибками. Но смог разобраться только с одной: AI\Magic\C_CanNPCCollideWithSpell.d(210): error: Unexpected return : COLL_APPLYDOUBLEDAMAGE; (добавил return, и ошибка исчезла) }; return COLL_DOEVERYTHING; }; if(spellType == SPL_Fear) { if((self.guild != GIL_FIREGOLEM) && (self.guild != GIL_ICEGOLEM) && (self.guild != GIL_STONEGOLEM) && (self.guild != GIL_SUMMONED_GOLEM) && (self.guild != GIL_SWAMPSHARK) && (self.guild != GIL_TROLL) && !C_NpcIsEvil(self) && (C_NpcIsGateGuard(self) == FALSE)) { return COLL_DOEVERYTHING; }; return COLL_DONOTHING; }; if(spellType == SPL_DestroyUndead) { if(C_NpcIsUndead(self) && (self.attribute[ATR_HITPOINTS_MAX] <= SPL_Damage_DESTROYUNDEAD)) {
А в остальных так и не разобрался. Пытался следовать твоему совету: фраза на которой возникла ошибка ставится в конец строки, эту фразу нужно оттуда взять и состыковать (логически) со строкой выше, если это имеет место, в противном случае исправить в этой фразе ошибку и записать строкой выше. Первую часть строки необходимо саму по себе привести (логически) к правильному виду. Но в некоторых случаях в строчке, где ошибка помещена только такая скобка }, и как мне её состыковывать со строкой выше, или что мне нужно исправить в этом случае (для наглядности привожу пример):
AI\Monster\B_Monster\B_MM_DeSynchronize.d(6): error: Function should return value Сам фрагмент: func int B_MM_DeSynchronize() { var int msec; msec = Hlp_Random(1000); AI_Waitms(self,msec); }; (напротив этой скобки появляется маленькая красная стрелка, которая по идее указывает на строчку с ошибкой во всех местах, где есть ошибки, я прав?)
А в целом все ошибки можно разбить на 3 группы: к 1 группе я отнес все ошибки, которые отмечены строкой error: Function should return value (пример см выше, таких ошибок большинство)
ко 2 - story\dialoge\dia_pc_thief_nw.d(284): cannot convert from type int to instance (пример прилагается): else if(Npc_HasItems(other,ItMi_Gold < DiegosTreasure)) { AI_Output(self,other,"DIA_DiegoNW_HaveYourGold_11 _02"); //Но здесь не все! Ты что, не доверяешь мне? Мне нужна вся сумма. AI_Output(self,other,"DIA_DiegoNW_HaveYourGold_11 _03"); //Если мой план сработает, золота останется достаточно и для тебя. AI_Output(self,other,"DIA_DiegoNW_HaveYourGold_11 _04"); //Так что, пожалуйста, принеси всю сумму. Это очень важно! } else { B_GiveInvItems(other,self,ItMi_Gold,DiegosTreasur e); b_diegonw_diegosrevenge(); DiegosRevenge = TRUE; }; if((Npc_IsDead(Gerbrandt) == FALSE) && (DiegosRevenge == TRUE)) { AI_Output(self,other,"DIA_DiegoNW_HaveYourGold_11 _06"); //Послушай, я все еще не договорился со стражей. AI_Output(self,other,"DIA_DiegoNW_HaveYourGold_11 _07"); //Я хочу, чтобы ты отнес это письмо Гербрандту. Это один из торговцев в верхнем квартале. AI_Output(self,other,"DIA_DiegoNW_HaveYourGold_11 _08"); //Передай ему привет от меня. А затем встретимся перед домом Гербрандта. CreateInvItems(self,ItWr_DiegosLetter_MIS,1); B_GiveInvItems(self,other,ItWr_DiegosLetter_MIS,1 ); B_StartOtherRoutine(Gerbrandt,"WaitForDiego") ; MIS_HelpDiegoNW = LOG_SUCCESS;
К 3 - story\dialoge\dia_vld_413_bosper.d(834): comparison is possible only in «if» expression Bosper_TrollFurSold == TRUE; } else { AI_Output(self,other,"DIA_Bosper_SellFur_11_0 9"); //Еще одна шкура огромного тролля... ты что, охотишься на них? AI_Output(other,self,"DIA_Bosper_SellFur_15_1 0"); //Когда я натыкаюсь на одного из них, я не упускаю такой возможности... }; if(Npc_HasItems(other,ItAt_TrollFur) > 0) { B_GiveInvItems(self,other,ItMi_Gold,Npc_HasItems( other,ItAt_TrollFur) * Value_TrollFur); B_GiveInvItems(other,self,ItAt_TrollFur,Npc_HasIt ems(other,ItAt_TrollFur)); }; if(Npc_HasItems(other,ItAt_TrollBlackFur) > 0) { AI_Output(self,other,"DIA_Bosper_SellFur_11_1 1"); //И шкура черного тролля, надо же! B_GiveInvItems(self,other,ItMi_Gold,Npc_HasItems( other,ItAt_TrollBlackFur) * Value_TrollBlackFur); B_GiveInvItems(other,self,ItAt_TrollBlackFur,Npc_ HasItems(other,ItAt_TrollBlackFur)); }; }; AI_Output(self,other,"DIA_Bosper_SellFur_11_1 2"); //Отличная работа. Заходи ко мне еще, когда у тебя будут шкуры... }
У меня просьба - объясни, что означают эти ошибки и как их исправить, а остальные однотипные ошибки я попытаюсь исправить сам, используя твои объяснения. Заранее благодарен.
|