Показать сообщение отдельно
Старый 13.08.2006, 16:11   #849
VIF

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

По умолчанию 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");      //Отличная работа. Заходи ко мне еще, когда у тебя будут шкуры...
     }

У  меня  просьба  - объясни, что  означают  эти  ошибки  и  как  их  исправить, а  остальные  однотипные  ошибки  я  попытаюсь  исправить  сам, используя  твои  объяснения. Заранее  благодарен.
Ответить с цитированием