Показать сообщение отдельно
Старый 13.08.2006, 18:47   #850
Vam

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

По умолчанию Re: М:Декомпилятор скриптов Готики

2VIF:
COLL_APPLYDOUBLEDAMAGE; (добавил *return, *и *ошибка *исчезла)
Это правильно.
А *в *остальных *так *и *не *разобрался. Пытался *следовать *твоему *совету: фраза на которой возникла ошибка ставится в конец строки, эту фразу нужно оттуда взять и состыковать (логически) со строкой выше, если это имеет место, в противном случае исправить в этой фразе ошибку и записать строкой выше. Первую часть строки необходимо саму по себе привести (логически) к правильному виду.
Невнимательно читал, это относится только к ошибкам датника, т.е. тем, которые появляются на стадии декомпиляции.
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);
}; (напротив *этой *скобки *появляется *маленькая *красная *стрелка, которая *по *идее *указывает *на *строчку *с *ошибкой *во *всех *местах, где *есть *ошибки, я *прав?)
В данном случае неправ, если функция должна возвращать значение, т.е. в конце блока (блоком называется часть текста между {}; ) должен быть return xxx;, а его нет, то курсор ошибки всегда показывает на закрывающую скобку блока.
Здесь два выхода:
1. Функция объявлена ошибочно с возвращаемым типом, она ничего не должна возвращать и её тип должен быть void.
2. Функция действительно должна возвратить значение, тогда перед закрывающей скобкой блока пишем return xxx;, значение xxx необходимо подобрать по смыслу.
В твоем случае функция func int B_MM_DeSynchronize() объявлена ошибочно с возвращаемым значением, значит исправляем так func void B_MM_DeSynchronize().
к *1 *группе *я *отнес *все *ошибки, которые *отмечены *строкой *error: Function should return value (пример *см *выше, таких *ошибок *большинство)
Как исправлять большинство этих ошибок - см. пост #833 на этой странице.
ко *2 - story\dialoge\dia_pc_thief_nw.d(284): cannot convert from type int to instance (пример *прилагается):
else if(Npc_HasItems(other,ItMi_Gold < DiegosTreasure))
Здесь поставлена не там скобка, должно быть так else if(Npc_HasItems(other,ItMi_Gold) < DiegosTreasure)
К *3 - story\dialoge\dia_vld_413_bosper.d(834): comparison is possible only in «if» expression
* * * * * * * * Bosper_TrollFurSold == TRUE;
Но здесь то вообще просто - стоит операция сравнения ==, а условия if нет, значит опечатка, должно быть Bosper_TrollFurSold = TRUE;
Ответить с цитированием