|
|
|
|
A.G.F.C.
Регистрация: 04.09.2006
Сообщений: 20
|
|
|
|
|
|
Re: М:Декомпилятор скриптов Готики
2Vam: В Тесте использовались: Компилятор/декомпилятор скриптов - GothicSourser 3.12. Dat-файл и Ou-файл GLOBAL_mod v.1.11. Платформа Г2-НВ.
Используемые процессы: - Создание нового dat-файла из SRC, с последующей компиляцией; - декомпиляция dat-файла, с последующей компиляцией; Найдена неточность в проге, после декомпиляции Dat-файла GLOBAL_mod v.1.11, и последующей его компиляции (без внесения изменений)... Компиллятор выдает ошибку НАРУШЕНИЯ СИНТАКСИСА, в следующих файлах: DIA_BDT_1072_Addon_Logan.d
Cпойлер(щелкните, чтобы прочесть):
Блок с ошибкой:
Код:
func void DIA_Addon_Logan_EXIT_Info(){ * * *AI_Output(other,self,"DIA_Addon_Logan_EXIT_15_00"); * * *//Я еще приду... * * *if(!((MIS_HlpLogan == LOG_Running) || !)(MIS_HlpLogan == LOG_SUCCESS) && (Logan_Inside == FALSE)) * * *{ * * * * * *AI_Output(self,other,"DIA_Addon_Logan_EXIT_10_01"); * * *//Да, беги, беги. А я буду тут стоять и всех тварей удерживать, которые подходят слишком близко. * * *}; * * *AI_StopProcessInfos(self);};
Исправленный блок:
Код:
func void DIA_Addon_Logan_EXIT_Info(){ * * *AI_Output(other,self,"DIA_Addon_Logan_EXIT_15_00"); * * *//Я еще приду... * * *if(!((MIS_HlpLogan == LOG_Running) || !(MIS_HlpLogan == LOG_SUCCESS)) && (Logan_Inside == FALSE)) * * *{ * * * * * *AI_Output(self,other,"DIA_Addon_Logan_EXIT_10_01"); * * *//Да, беги, беги. А я буду тут стоять и всех тварей удерживать, которые подходят слишком близко. * * *}; * * *AI_StopProcessInfos(self);};
DIA_NONE_100_Xardas.d
Cпойлер(щелкните, чтобы прочесть):
Блок с ошибкой:
Код:
func int DIA_Xardas_WARUMNICHTJETZT_Condition(){ * * *if(Npc_KnowsInfo(other,DIA_Xardas_RITUALREQUEST) && (Xardas_GoesToRitualInnosEye == FALSE) && ((hero.guild == GIL_MIL) || (hero.guild == GIL_SLD) || ((hero.guild == GIL_BAD) && !))(SC_ISDARKMAGE || SC_ISDARKWARRIOR)) * * *{ * * * * * *return TRUE; * * *}; * * *return FALSE;};
Исправленный блок:
Код:
func int DIA_Xardas_WARUMNICHTJETZT_Condition(){ * * *if(Npc_KnowsInfo(other,DIA_Xardas_RITUALREQUEST) && (Xardas_GoesToRitualInnosEye == FALSE) && ((hero.guild == GIL_MIL) || (hero.guild == GIL_SLD) || ((hero.guild == GIL_BAD) && !(SC_ISDARKMAGE || SC_ISDARKWARRIOR)))) * * *{ * * * * * *return TRUE; * * *}; * * *return FALSE;};
ВЫВОД:GothicSourser 3.12 - не может правильно выстроить некоторые блоки условий. В основном это блоки с использованием истинного НЕ ( !), в следствие чего ошибки, приведенные выше. Благо они не смертельные, мона ручками выправить..:))) - Данная ошибка проявляется при декомпиляции дат-файла, и его последующей компиляции; - Если создать "Новый проект" компиляции из SRC-файла то при компиляции подобной ошибки не возникает, компиляция проходит успешно... ================== PS. Пока эт все что нарыл, буим дальше тестить.. *;)))) Добавление от 03/25/07, в 14:55:43
Со вчерашней ночи и по настояшее время плясал с бубнами, под ритмы GS 3.12, вот что из этого вышло: Тестируемый: Global_mod ver.3.11, (скомпиллирован GS 3.11) Gothic.dat -> 10,1 МБ (10 627 315 байт)Ou.bin * * -> 8,02 МБ (8 415 612 байт)При декомпилляции и последующей компиляции есть не соответствия размеров в файлах Gothic.dat и Ou.bin. Таблица соотношений:
Cпойлер(щелкните, чтобы прочесть):
После процесса - декомпилляции Gothic.dat-файла, с последующей компилляцией, (без внесения изменений в код):
Код:
Cкомпиллировано GS 3.12.:Gothic.dat -> 10,1 МБ (10 627 314 байт)Ou.bin * * -> 8,03 МБ (8 421 376 байт)
После процесса - создания нового Gothic.dat и Ou.bin файлов из SRC, с последующей компилляцией, (без внесения изменений в код):
Код:
Cкомпиллировано GS 3.12.:Gothic.dat -> 10,1 МБ (10 627 314 байт)Ou.bin * * -> 8,02 МБ (8 415 610 байт)
Далее попробывал декомпиллировать уже ранее декомпиллированный и скомпиллированный Gothic.dat и Ou.bin -файлы.(декомпиллирован/компиллирован GS 3.12)
Cпойлер(щелкните, чтобы прочесть):
После очередной декомпилляции и компилляции цифры опять из менились:
Код:
Cкомпиллировано GS 3.12.: Gothic.dat -> 10,1 МБ (10 627 313 байт)Ou.bin * * -> 8,02 МБ (8 415 593 байт)
После повторной декомпилляции/компилляции, нажал для проверки опять компилляцию..., компиллятор выдал ошибку: Story\B_AssignAmbientInfos\B_AssignDragonTalk_Main .d(167): Ошибка: Ожидается ';' Блок с ошибкой:
Код:
func void DIA_DragonTalk_Main_4_Info(){... * * *B_LogEntry(TOPIC_BuchHallenVonIrdorath,"Господин драконов находится в скалах священных залов Ирдората. Хм... Это кажется мне знакомым. Где-то я уже читал про это?"); * * *B_InitGuildAttitudes()OldWorld_Zen; * * *DragonTalk_Exit_Free = TRUE;};
Исправленный блок:
Код:
func void DIA_DragonTalk_Main_4_Info(){... * * *B_LogEntry(TOPIC_BuchHallenVonIrdorath,"Господин драконов находится в скалах священных залов Ирдората. Хм... Это кажется мне знакомым. Где-то я уже читал про это?"); * * *B_NPC_IsAliveCheck(OldWorld_Zen); * * *DragonTalk_Exit_Free = TRUE;};
При исправлении указанной ошибки выше, и нажатии на компилляцию, данныя ошибка вылезла уже в другом месте, компиллятор выдал ошибку: * Story\Dialoge\DIA_b5_9000_mage.d(77): Ошибка: Ожидается ';'
Cпойлер(щелкните, чтобы прочесть):
Блок с ошибкой:
Код:
... * * *MIS_ScoutMine = LOG_SUCCESS; * * *MIS_ReadyForChapter3 = TRUE; * * *B_InitGuildAttitudes()OldWorld_Zen; * * *B_Kapitelwechsel(3,NEWWORLD_ZEN); * * *PLAYER_TALENT_ALCHEMY[CHARGE_Innoseye] = TRUE; * * *PrintScreen(PRINT_LearnAlchemyInnosEye,-1,-1,FONT_Screen,2);...
Исправленный блок:
Код:
... * * *MIS_ScoutMine = LOG_SUCCESS; * * *MIS_ReadyForChapter3 = TRUE; * * *B_NPC_IsAliveCheck(OldWorld_Zen); * * *B_Kapitelwechsel(3,NEWWORLD_ZEN); * * *PLAYER_TALENT_ALCHEMY[CHARGE_Innoseye] = TRUE; * * *PrintScreen(PRINT_LearnAlchemyInnosEye,-1,-1,FONT_Screen,2);...
ВЫВОД: Данная ошибка проявляется везде где должна стоять функция: * * * * * *B_NPC_IsAliveCheck(OldWorld_Zen); Эта функция заменяется прогой на неправильную: * * * * * *B_InitGuildAttitudes()OldWorld_Zen;
ПРИЧЕМ, миры/локации, в данной функции объявленные в константах значения не имеют, ошибка одинакова для всех!!! После исправления всех ошибок, размеры Gothic.dat и Ou.bin - файлов, таковы:
Код:
Gothic.dat -> 10,1 МБ (10 627 313 байт) Ou.bin * * -> 8,02 МБ (8 415 593 байт)
Опять декомпилировал, уже этот Gothic.dat и Ou.bin - файлы.. Скомпилированно GS 3.12, здесь вроде все без изменений.:
Код:
Gothic.dat -> 10,1 МБ (10 627 313 байт) Ou.bin * * -> 8,02 МБ (8 415 593 байт)
При нажатии на компилляцию полезли опять теже самые ошибки.. * * * * * B_InitGuildAttitudes()OldWorld_Zen; и т.д. дальше проверять не стал.
Также отпишу об одной ошибке, которая имела место быть, но не знаю правили ли ее или нет. Данная ошибка проявлялась в прошлых релизах GothicSourser'a версий 3... Было замечено во время компилляции проекта, дублирование строк программой, в большинсте случаев программа, пропускает такую ошибку, и компиляция идет без ошибок. Но в тесте мода потом оказываются повторения некоторый строк диалога, или строк взаимодействия Гг с Вобами.. и т.д.. Причем исправив такие ошибки, после очередной, заливки на хост правленных Gothic.dat и Ou.bin - файлов, данная ошибка вылазит уже в других диалогах и местах игры... Пример такой ошибки, которую отловил GS 3.11., при компиляции исходников GLOBAL_mod DEDROIT'om, сегодня..:
Cпойлер(щелкните, чтобы прочесть):
Строка кода в исходнике:
Код:
... * * *B_GiveInvItems(self,other,MagicPergament,1); ...
А во время компиляции GS 3.11 выдаёт ошибку, которая проявляется так. Строки кода с ошибкой:
Код:
... * * *B_GiveInvItems(self,other,MagicPergament,1); * * *};B_GiveInvItems(self,other,MagicPergament,1); ...
============================= PS. Ну теперь мона отдохнуть, упарился однако...
|