Показать сообщение отдельно
Старый 23.09.2007, 21:55   #1073
HikeR

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

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

жаль. будем ждать ;)
итак, разобрал gothic.dat от немецкой версии 1.08j. при декомпиляции попались следующие ошибки и предупреждения:
Story\Mission\DIA_Org_801_Lares.d(203) Ошибка: Найдена ошибка в dat файле - 'gorn.aivar[AIV_FINDABLE] == TRUE'. Исправьте созданный скрипт вручную
также встретилось 26 предупреждений вида:
Внимание: В библиотеке (OutputUnits)не найден модуль - Info_mine_Vlk_2_Mine_02_01

попробовал повторить операцию над gothic.dat от snowball. одна ошибка, та же самая. предупреждений ноль. вот проблемный скрипт:
Cпойлер(щелкните, чтобы прочесть):
func void ORG_801_Lares_BringListAnteil_Info()
{
* * *var C_Npc gorn;
* * *AI_Output(other,self,"ORG_801_Lares_BringListAnte il_15_00"); * * *//Так конвой уже разбит? А где моя доля?
* * *AI_Output(self,other,"ORG_801_Lares_BringListAnte il_11_01"); * * *//Поговори с Горном. Он отдаст тебе твою долю.
* * *gorn = Hlp_GetNpc(PC_Fighter);
* * *if(gorn.aivar[AIV_FINDABLE] == TRUE)
* * *{
* * * * * *AI_Output(other,self,"ORG_801_Lares_BringListAnte il_15_02"); * * *//Я знаю Горна. Он не член шайки. Он наемник и работает на магов.
* * * * * *AI_Output(self,other,"ORG_801_Lares_BringListAnte il_11_03"); * * *//Да, все верно.
* * * * * *AI_Output(other,self,"ORG_801_Lares_BringListAnte il_15_04"); * * *//Так он в деле?
* * * * * *AI_Output(self,other,"ORG_801_Lares_BringListAnte il_11_05"); * * *//Чем меньше знаешь, тем крепче спишь. Просто иди к нему и забери свою долю.
* * *};
* * *B_LogEntry(CH1_JoinNC,"Горн, наемник, каким-то образом принимал участие в налете на конвой. От него-то я и получу свою долю.");
* * *gorn.aivar[AIV_FINDABLE] == TRUE;
};

кстати, если щелкнуть по ошибке в логе, то автоматом откроется нужное место в редакторе, а на предупреждения такая полезная фича не распостраняется :( в смысле, переход в редактор из лога не работает, только при компиляции.

затем провел обратную компиляцию немеких ресурсов. результат - 66 ошибок и 49 предупреждений. почти все - "ф-ия должна возвращать значение". на вышеприведенный скрипт ошибка вида: "Операция сравнения возможна только в 'if' *выражении"

ну и из-за ошибок компиляция не проходит :( хотя в ряде случаев программа просто не распознает ф-ии вида:
Cпойлер(щелкните, чтобы прочесть):
func int B_SetDayTolerance()
{
* * *if (Wld_IsTime (22, 0, 23, 59))
* * *{
* * * * * *return Wld_GetDay () + 1;
* * *}
* * *else
* * *{
* * * * * *return Wld_GetDay ();
* * *};
};

которые в принципе всегда что-то возвращают.

вобщем, "что нам делать, как нам быть?" чтобы компиляция все-таки прошла удачно?
Ответить с цитированием