|
|
14.04.2005, 10:43
|
#482
|
|
Re: Декомпилятор скриптов Готики
2TSYLin:
zSpy выдаёт кучу ошибок (17, по одной на каждый переведённый), так что делать?
|
Ошибки надо исправлять, без этого компиляция не пройдет, если есть затруднения, напиши конкретно ошибку из zSpy, помогу. А руководство по ошибкам читал?
|
|
|
16.04.2005, 10:45
|
#484
|
|
|
|
|
Регистрация: 15.04.2004
Адрес: Санкт-Петербург
Сообщений: 372
|
|
|
|
|
|
Re: Декомпилятор скриптов Готики
2Ipse San:По логике можно так делать:
Код:
func int Func(){ if(***) { return 1; }; return 0;};
И еще, можно ли создать компилятором файл ou.csl?
|
А зачем он тебе, если не секрет? :) А вообще, можно получить файл .SRC из .BIN с помощью утилит от bigglass
|
|
|
16.04.2005, 18:27
|
#486
|
|
Re: Декомпилятор скриптов Готики
2Ipse San: Оба приведенных тобой примере в версии Декомпилятора 2.01 попадают в группу Вниманий, их можно не исправлять, это в версии 2.00 первый пример был в ошибках, а второй во вниманиях.
И еще, можно ли создать компилятором файл ou.csl?
|
Этот файл декомпилятором создать нельзя, да он и не нужен, он используется экзешником Готики только о одном случае, если отсутствует ou.bin
|
|
|
18.04.2005, 22:40
|
#489
|
|
Re: Декомпилятор скриптов Готики
2TycoooN:
Нельзя ли все-таки сделать строгий отсев ошибок опциональным? А то новичков очень отпугивает, что скомпилировать даже оригинальные скрипты не удается, и они, так и не разобравшись, бросают это дело
|
Если кто захочет разобраться, то разберется в чем дело и исправит ошибки, а компилировать с ошибками могут и Спейсер и экзешники Готик.
|
|
|
19.04.2005, 20:36
|
#490
|
|
Re: Декомпилятор скриптов Готики
Что-то странное: выдает warn - Possible error, function should return value * instance DIA_OCPAL_4_PEOPLE(C_Info) { * * *nr = 3; * * *condition = DIA_OCPAL_4_PEOPLE_Condition; * * *information = DIA_OCPAL_4_PEOPLE_Info; * * *permanent = TRUE; * * *description = "**************"; }; func int DIA_OCPAL_4_PEOPLE_Condition() { * * *return TRUE; }; func void DIA_OCPAL_4_PEOPLE_Info() { * * *AI_Output(other,self,"DIA_OCPAL_4_PEOPLE_15_00"); * * *//************* * * *AI_Output(self,other,"DIA_OCPAL_4_PEOPLE_04_01"); * * *//************** }; И что же тут не так? Практически все диалоги такие. Все неправильные? Добавление от 04/19/05, в 19:47:07
Цитата:
Сообщение от Ipse San link=board=gothic&t=1095241429&start=475#482 date=04/16/05, в 08:41:18
2Vam: Заметил некоторую нелогичность в работе компилятора: на конструкцию вида
|
func int Func() { * * *if(...) * * *{ * * * * * *return 1; * * *} * * * *else * * * *{ * * * * * *return 0; * * * *} };
|
компилятор ругается, приходится исправлять.
|
Хоть бы написал, что исправлять, не совсем понятно ;) :D У меня таких 4 штуки... 21 исправил...чтой-то господа немцы не того...или мы не того... ;D
|
|
|
19.04.2005, 23:12
|
#492
|
|
Re: Декомпилятор скриптов Готики
2basilio58:
И что же тут не так? Практически все диалоги такие. Все неправильные?
|
В приведенном тобой фрагменте ни ошибок, ни внаманий нет. На него компилятор ругаться не должен, может ты что-нибудь напутал. Я уже говорил, что исправлять все внимания нет необходимости, скрипты в обоих случаях будут работать правильно, если не дописывать что-то своё, если же изменять скрипты, то надо быть осторожным, могут появиться ошибки. Есть хорошая и правильная практика программирования, если ей следовать, то много ошибок просто не возникнет. Могу привести несколько простых правил: 1. Если блок else закрывает функцию (расположен в конце), то он не нужен. Записывается просто содержимое блока. 2. По возможности избегать неявных передач параметров в функцию, для этого есть аргументы или глобальные переменные. 3. Если функция объявлена с возвращаемым значением, то оно должно явно возвращаться оператором return xx;
...чтой-то господа немцы не того...или мы не того...
|
И немцы того, и мы того. Просто нужно понимать, что разработчикам многие неявные вещи прозрачны, а нам еще надо до этого дойти. Но, если смотреть с другой стороны, скрипты писало несколько разных людей и каждый со своим стилем программирования, кто-то старался сократить текст, оставив только суть. А кто-то привык расписывать все подробно, даже за счет лишнего и неоптимального кода. В принципе, большинство огрехов выявляется тестированием, но, к сожалению, далеко не все.
|
|
|
20.04.2005, 09:09
|
#494
|
|
Re: Декомпилятор скриптов Готики
2basilio58:
я просто не указал, в приведенном фрагменте не ошибка,там внимание
|
Вниманий в этом фрагменте тоже быть не должно, всё строго написано. Если не трудно, можешь указать строчку с вниманием.
|
|
|
20.04.2005, 20:20
|
#495
|
|
Re: Декомпилятор скриптов Готики
Цитата:
Сообщение от Vam link=board=gothic&t=1095241429&start=475#493 date=04/20/05, в 08:09:46
2basilio58:
|
Вниманий в этом фрагменте тоже быть не должно, всё строго написано. Если не трудно, можешь указать строчку с вниманием.
|
В моем сообщении это красная скобка. Добавление от 04/20/05, в 19:22:21
Цитата:
Сообщение от Vam link=board=gothic&t=1095241429&start=475#493 date=04/20/05, в 08:09:46
2basilio58:
|
Вниманий в этом фрагменте тоже быть не должно, всё строго написано. Если не трудно, можешь указать строчку с вниманием.
|
В моем сообщении это красная скобка. В скипте, если не ошибаюсь, строка 39.
|
|
|
20.04.2005, 22:35
|
#496
|
|
Re: Декомпилятор скриптов Готики
2basilio58:
В моем сообщении это красная скобка. В скипте, если не ошибаюсь, строка 39
|
Что-то ты где-то не туда посмотрел, у меня этот файл компилируется без Вниманий и без Ошибок. ;)
|
|
|
17.05.2005, 13:35
|
#497
|
|
Re: Декомпилятор скриптов Готики
Недавно скачал мод к Г2Аддону, Каста . Так как он на немецком, мне захотелось его перевести, а следовательно раскомпилировать датник, но оказалось, что это НЕВОЗМОЖНО. Дело в том, что на одном из скриптов exe-шник декомпилятора выдаёт ошибку, что мол ошибка exe-шника, и всё, притом НИ ОДНА ВЕРСИЯ декомпилятора НЕ МОЖЕТ С НИМ РАБОТАТЬ, И ВСЕ ВЫДАЮТ ОДНУ И ТУЖЕ ОШИБКУ. :(
|
|
|
17.05.2005, 13:44
|
#498
|
|
Re: Декомпилятор скриптов Готики
2TSYLin:
Дело в том, что на одном из скриптов exe-шник декомпилятора выдаёт ошибку, что мол ошибка exe-шника, и всё, притом НИ ОДНА ВЕРСИЯ декомпилятора НЕ МОЖЕТ С НИМ РАБОТАТЬ, И ВСЕ ВЫДАЮТ ОДНУ И ТУЖЕ ОШИБКУ.
|
Для устранения этой проблемы мне необходима ссылка на датник и оушник мода, или можно оные выложить на Яндексе (DiccuricAG, forum).
|
|
|
17.05.2005, 18:06
|
#500
|
|
|
|
|
*
Регистрация: 29.08.2004
Сообщений: 1
|
|
|
|
|
|
Re: Декомпилятор скриптов Готики
Появился интересный инструмент для работы со скриптами точнее ДиалогМенеджер http://www.worldofgothic.de/dl/index.php?go=downloads&file_id=157 как выглядит [img]ftp.worldofgothic.de/gothic2/editing/Dialogmanager.gif[/img]
|
|
|
17.05.2005, 22:54
|
#506
|
|
Re: Декомпилятор скриптов Готики
Цитата:
Сообщение от francisc link=board=gothic&t=1095241429&start=500#500 date=05/17/05, в 17:12:55
2DimaD: а чем он будет отличаться от старого?
|
Ну как чем, в него наверное включат декомпиляцию демо-версии Г1, а может быть ещё что-нибудь. Добавление от 05/17/05, в 22:07:03
Ссылка на Секту вот http://www.worldofgothic.de/dl/index.php?go=downloads&file_id=156 STORY\DIALOGE\DIA_VLK_498_IGNAZ.D : Decompile... .... <zError.cpp,#462> Вот на этом файле у меня декомпилятор вылетает, при том zSpy ни чего не выдаёт, а выводится ошибка принадлежащая к GothicSourcerV2_1. Я ещё пробывал 2_01 но он тоже не хочет.
|
|
|
18.05.2005, 06:20
|
#508
|
|
Re: Декомпилятор скриптов Готики
2DimaD:
Товарищи, а вам нужен новый Loader для декомпилятора, или все консолью пользуются?
|
Да, еще как! До появления оболочки юзал батники, а потом стало намного удобнее. Пожелания, что хотелось бы увидеть в новой версии. 1. Сохранение последнего пути к GothicSourcer_xx.exe для каждой копии лоадера (Каждый раз вводить не очень утомляет, но все же) 2. Сохранение последних использованных действий для каждой копии лоадера. 3. В интерфейсе лоадера отдельную кнопочку для запуска ZSpy, возможно путь к нему.. (Очень бы хотелось, ну или чтоб он сам его запускал). Почему я выделил: "Для каждой копии лоадера" - это потому, что когда одновременно работаешь с разными файлами: (gothic.dat + ou.bin, fight.dat, menu.dat), которые лежат в абсолютно разных каталогах, соответственно используются сразу несколько копий лоадеров, иногда можно проглядеть и выбрать "не тот" датник, или не ту версию Готики :) ИМХО, для каждой копии лоадера для этих целей можно использовать свой *.ini файл с настройками в каталоге с лоадером. Еще раз респект за оболочку!
|
|
|
18.05.2005, 09:43
|
#510
|
|
Re: Декомпилятор скриптов Готики
2DimaD:
я думаю вообще инфу о местоположении Готики из реестра читать
|
Какой Готики? Если установленной, то это ИМХО бессмысленно - вовсе не факт, что установленная Готика = рабочий экземпляр. К тому же этих рабочих экземпляров может быть несколько. Наверное вариант с персональным ини-файлом для каждой копии оболочки - это все-таки оптимально.
|
|
|
19.05.2005, 05:09
|
#514
|
|
|
|
|
Регистрация: 19.06.2004
Адрес: г. Белая Калитва.
Сообщений: 204
|
|
|
|
|
|
Re: Декомпилятор скриптов Готики
2Vam: Еще одно, конструктивное предложение насчет декомпилятора. Вот появился новый мод к аддону, после декомпиляции нужно искать новые строки. А если руководствуясь базами данных всех ф-ий, т.е. NamesGothic1.d и NamesGothic2.d, декомпилятор при линковке сравнивает же ф-и с этой базой, так вот, при линковки или это сам процесс декомпиляции, но все ф-и, будь то просто void функция, или новый instance, которые он не находит в этих базах, декомпилятор сохраняет в памяти, и после завершения декомпиляции он создает новые txt файл, куда все это запишит, допустим: Story\Dialoge\dia_bau_933_rega.d - func void NewModFunction Это если новая функция в старом скрипте. Ну и аналогично для совершенно новых функций. Что думаешь по этому поводу?
|
|
|
19.05.2005, 09:37
|
#515
|
|
Re: Декомпилятор скриптов Готики
2Boris Tor:
Еще в папке с датником лежит вот этот фаил. http://smithy.mirtana.com/Merlin/MoDs/OUINFO.rar Уважаемый Vam, немог бы ты объяснить его назначение, вернее почему он лежит вместе с датником, ведь его назначение понятно, и его нахождение в этой папке вызывает у меня недоумение.
|
Я думаю, что и назначение его большинству до донца не понятно. Всем известно, что при компиляции скриптов стандартными средствами (экзешник Готики или Спейсер) процессы создания дат файла и оу файла разненсены по времени (экзешник Готики вообще оу файл не делает). Поэтому стандартный компилятор при построении дат файла создает вспомогательный файл ouinfo.txt, который используется отдельным процессом по созданию оу файла (только Спейсер), в этом файле проведена регистрация всех вызовов функций AI_Output из скриптов (для быстроты, чтобы не заниматься поиском по всем скриптам). Если уже есть готовые дат и оу файлы, то ouinfo.txt совершенно не нужен. При использовании моей программы по компиляции и декомпиляции этот файл не создается, т.к. процесс компиляции (создание дат файла) и создание оу файла выполняются параллельно. 2Killer-XXX:
Вот появился новый мод к аддону, после декомпиляции нужно искать новые строки. А если руководствуясь базами данных всех ф-ий, т.е. NamesGothic1.d и NamesGothic2.d, декомпилятор при линковке сравнивает же ф-и с этой базой, так вот, при линковки или это сам процесс декомпиляции, но все ф-и, будь то просто void функция, или новый instance, которые он не находит в этих базах, декомпилятор сохраняет в памяти, и после завершения декомпиляции он создает новые txt файл, куда все это запишит
|
Предложение интересное, но!!! 1. В файы NamesGothic1.d и NamesGothic2.d не являются базами имен функций, в них записаны * все регистрозависимые переменные скриптов, если же переменная (неважно, функция это или нет) в тексте оригинальных скриптов имела имя в верхнем регистре, то её в этих файлах нет. 2. Если ты хочешь создать из новых скриптов файл, аналогичный вышеуказанным, то такая возможность в декомпиляторе имеется, надо просто активировать новый ключ (о нём я еще не говорил, незадокументированные возможности). Ты же не думаешь, что я эти файлы "набивал" руками? Ключ командной строки -ztest:4, остальные ключи как при компиляции скриптов. Советую предварительно сохранить старый файл или его переименовать. 3. Получив новый файл с именами, можно сравнить его со старым, но, в связи с п.1 это будет не полное выявление всех новых функций.
|
|
|
24.05.2005, 00:43
|
#518
|
|
|
|
|
Регистрация: 19.06.2004
Адрес: г. Белая Калитва.
Сообщений: 204
|
|
|
|
|
|
Re: Декомпилятор скриптов Готики
Еще просьба к Vam`у Когда юзаешь компилятор, то особенно на декомпилированных скриптах заметно, добавляешь новую ф-ю. Потом ее нужно будет вызвать в каком нибудь скрипте, допустим в предмете. Но в gothic.src сначала описан скрипт предмета, а потом скрипт вызываемой ф-и. На это декомпилятор ругается, что неизвестная ф-я. Приходится в gothic.src искать место, куда бы нашу новую ф-ю повыше прописать, чтобы он сначала откомпилировал ее, а потом уже без всяких глюков, зная эту ф-ю, откомпилировал скрипт предмета, в котором эта ф-я будет вызваться. По просьбе трудящихся, объясняю что я тут намудрил: Есть 2 скрипта ItemSc.d - в этом скрипте вызывается ф-я MyFuncMyFunc.d - тут естественно и прописана MyFunc. В файле gothic.src написано
Код:
......ItemSc.d......MyFunc.d
Компилятор попытается откомпилировать ItemSc.d, но т.к. в скрипте ItemSc.d прописана MyFunc, он не сможет этого сделать, потому что компилятор еще "не знает" MyFunc, она прописана ниже. Поэтому приходиться исправлять:
Код:
...MyFunc.dItemSc.d...
И только теперь пойдет компиляция. Вот я и предлагаю, нельзя ли это убрать или выполнять эту проверку уже при линковке?
|
|
|
24.05.2005, 16:09
|
#519
|
|
Re: Декомпилятор скриптов Готики
2Killer-XXX:
Когда юзаешь компилятор, то особенно на декомпилированных скриптах заметно, добавляешь новую ф-ю. Потом ее нужно будет вызвать в каком нибудь скрипте, допустим в предмете. Но в gothic.src сначала описан скрипт предмета, а потом скрипт вызываемой ф-и. На это декомпилятор ругается, что неизвестная ф-я. Приходится в gothic.src искать место, куда бы нашу новую ф-ю повыше прописать, чтобы он сначала откомпилировал ее, а потом уже без всяких глюков, зная эту ф-ю, откомпилировал скрипт предмета, в котором эта ф-я будет вызваться.
|
К сожалению, есть только один вариант, записывать декларацию функции в скрипты до её вызова. Это связано с тем, что при вызове функции проверяются типы аргументов и возвращаемое значение, если же компилятор не знает декларации функции, то эту задачу он выполнить не может. Выход из положения - оформлять функцию отдельным файлом и включать его в компиляцию до файла, из которого производится вызов функции, или функцию включать в файл, описывающий другие функции данного скрипта. 2basilio58:
Заметил такую вещь. Если в одном скрипте много ошибок(или варнингов), то номер строки ошибки смещается в сторону уменьшения, и чем дальше, тем больше.
|
Данный вопрос требует дополнительной проработки, ответ дам позже. Добавление от 05/24/05, в 15:29:18 2basilio58:Ничего такого я не нашёл, при компиляции номера строк с ошибками и вниманиями отображаются правильно, приведи пример, где сползают номера строк.
|
|
|
Здесь присутствуют: 3 (пользователей: 0 , гостей: 3)
|
|
Опции темы |
Поиск в этой теме |
|
|
Ваши права в разделе
|
|
|
|
Текущее время: 15:22. Часовой пояс GMT +4.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|