|
|
14.10.2004, 13:07
|
#41
|
|
|
|
|
*
Регистрация: 29.08.2004
Сообщений: 1
|
|
|
|
|
|
Re: Декомпилятор скриптов Готики
2Vam:
Извини, но запамятовал и не сообщил сразу, что можно покопаться и в исходниках.
Залезь сюда, на этой системе делались все Готики и МОД-ы. Сорри, знал давно, но как-то в ум не пришло, посоветовать сюда заглянуть.
http://nsis.sourceforge.net/
|
|
|
14.10.2004, 14:21
|
#42
|
|
Re: Декомпилятор скриптов Готики
2Pa:
на этой системе делались все Готики и МОД-ы
|
NSIS can create Windows installers that are capable of installing, uninstalling, setting system settings, extracting files, etc. Because NSIS is based on script files, you can create both simple or advanced installers. Вот дословно что это такое, да, на нем делались все инсталляторы Готик и модов, но не сама программа. Спасибо за попытку помощи. ;)
|
|
|
14.10.2004, 16:02
|
#43
|
|
Re: Декомпилятор скриптов Готики
2Mitrich:
Ты уверен, что надо знать все функции?
|
Если мы хотим использовать возможности скриптов полностью, то знать надо все функции. :D
|
|
|
14.10.2004, 16:26
|
#44
|
|
Re: Декомпилятор скриптов Готики
2Vam:
Если мы хотим использовать возможности скриптов полностью, то знать надо все функции.
|
Логично, но чтобы использовать все возможности скриптов при работе с ними вручную, тоже надо знать все функции. :) Таким образом можно говорить о некотором базовом уровне, основных функциях и версиях утилиты по работе с ними.
|
|
|
14.10.2004, 17:15
|
#46
|
|
Re: Декомпилятор скриптов Готики
2Mitrich: В скриптах Готики вообще как-бы отсутствует структура, есть базовые (библиотечные) функции (про них я и говорил), а есть функции, созданные теми, кто пишет скрипт. Выполняются же функции совсем не в том порядке, в каком они представлены в скриптах. Базовые функции с их параметрами надо знать, на их основе создается все остальное. Есть предложение в отдельной теме, например: [glow=red,2,300]Уроки скриптологии[/glow] или что-то в этом роде, рассматривать и обсуждать базовые функции. Это можно сделать таким образом, я выкладываю тройку функций с параметрами, и каждый, кто в этом что-нибудь понимает, пытается описать действие функции и все ее параметры, на основе этого я делаю описание функции и переходим к следующей тройке. Это, конечно, займет много времени, а какой есть другой выход? Дело-то нужное. Ну, как? *;) :D
|
|
|
14.10.2004, 23:07
|
#47
|
|
|
|
|
Регистрация: 19.06.2004
Адрес: г. Белая Калитва.
Сообщений: 204
|
|
|
|
|
|
Re: Декомпилятор скриптов Готики
2Vam:
Есть предложение в отдельной теме, например: Уроки скриптологии
|
Превосходно, очень и очень разумная мысля... Для немцев все расписано, а нам что по немецким руководствам учится?? А то опишем, и получится русская полноценная дока, после прочтенья несколько раз которой чел, хоть что то, да сможет уже реализовать. Предлагаю ведущим рубрики сделать или Ра или Dagot_Ur`а :)) 2Mitrich:Вот ссылка на прогу писанную на яве, это состовлять диалоги, хелп непомню где, попробуй глянь www.fizzban.net, если не найдешь то внимательно ищи топ на WorldofGothic форуме, это я там надыбал ее, сам так и не разобрался с ней, глючила, если кто то разберется, прошу запостить :)
|
|
|
14.10.2004, 23:31
|
#48
|
|
Re: Декомпилятор скриптов Готики
2Killer-XXX:
Предлагаю ведущим рубрики сделать или Ра или Dagot_Ur`а
|
Я согласен, а что скажут они? ::) Количество базовых функций - 290. Это большая работа. ;) :)
|
|
|
15.10.2004, 12:28
|
#49
|
|
Re: Декомпилятор скриптов Готики
2Vam:
В скриптах Готики вообще как-бы отсутствует структура, есть базовые (библиотечные) функции (про них я и говорил), а есть функции, созданные теми, кто пишет скрипт.
|
Мне вчера как раз в тему показывали структуру базовой функции "сядь в стул!". Алгоритм примерно выглядит как "найди стул (обращение к вшитой функции поиска)/подойди/посади свою задницу на него/проиграй рандомную анимацию из сета 1-10/вынь попу из стула". Условному модмейкеру не обязательно эту структуру знать, он просто обращается к Sit_Chair и нужный НПС садиться. Я привел эту последовательность для примера - если бы, допустим!, такой базовой функции не существовало, а ее только предстояло создать из базовых (в данном случае - ф-ция поиска, запуска анимации посадки и высадки, запуска сидячей анимации) чем может быть полезна гипотетическая утилита скриптования для создания новой функции - "сядь в стул!"? Я просто пытаюсь понять предполагаемую задачу.
Есть предложение в отдельной теме, например: Уроки скриптологии Превосходно, очень и очень разумная мысля...
|
Решение скорее неизбежное. :) Только у меня есть предложение постить не по три функции, а сразу дать публичный запрос на известные к-л функции, внести их в список и выложить его для пополнения. А по три функции проще выделять для рассмотрения (изучения), и вот это действительно долго. Не думаю, что Dagot_Ur нужно ведущим "назначать". Во-первых, при услови, что сочтет это нужным, он и так внесет свою лепту, а во-вторых, он сейчас занимается не менее важным делом и ограничен во времени. Думаю, главное задаться целью и начать, а тема сама себя поведет.
|
|
|
15.10.2004, 13:19
|
#50
|
|
Re: Декомпилятор скриптов Готики
2Mitrich:
Только у меня есть предложение постить не по три функции, а сразу дать публичный запрос на известные к-л функции
|
Полный список всех базовых функций у меня есть, но если его выложить целиком, то начнется "каша", на какие-то функции будут ответы, а остальные будут забыты, потом опять по новой? А три, это я написал условно, конечно лучше обсуждать функции, сгруппированные по темам (вывод на экран текста, работа с магией и т.д.) ;)
Не думаю, что Dagot_Ur нужно ведущим "назначать".
|
Насчет Dagot_Urа согласен, но хотелось бы услышать ответ от Ра, ведь его тоже предложили. :)
|
|
|
15.10.2004, 14:09
|
#51
|
|
Re: Декомпилятор скриптов Готики
хотелось бы услышать ответ от Ра, ведь его тоже предложили
|
Согласен. А по первому вопросу что думаешь?
|
|
|
15.10.2004, 15:46
|
#52
|
|
Re: Декомпилятор скриптов Готики
2Mitrich:
Мне вчера как раз в тему показывали структуру базовой функции "сядь в стул!" и т.д.
|
Как раз "сядь в стул!" и не является базовой функцией, базовые - это те, из которых она состоит, а эта - производная. ;) В остальном все правильно. Да, модмейкеру, может быть, и необязательно знать структуру производной функции, но тот, кто будет создавать утилиту скриптования, это должен знать обязательно (как и весь набор базовых функций). :D
|
|
|
15.10.2004, 17:36
|
#53
|
|
Re: Декомпилятор скриптов Готики
2Vam:
Как раз "сядь в стул!" и не является базовой функцией, базовые - это те, из которых она состоит, а эта - производная.
|
Вот ведь! :D
|
|
|
18.10.2004, 16:59
|
#55
|
|
|
|
|
*
Регистрация: 29.08.2004
Сообщений: 1
|
|
|
|
|
|
Re: Декомпилятор скриптов Готики
2Vam:
Что-то не наблюдается энтузиазма в деле изучения скриптов? Может это никому и не надо.
|
Очень даже надо! Тем более сейчас появился новый немецкий вариант скриптов АДДОН-а - Gothic.dat версии .2 на вордофготик. Стал изучат дедовским способом, и через раз вспминал "как бы прекрасно было бы, если бы был декомпилятор!" 2Killer-XXX:
Предлагаю ведущим рубрики сделать или Ра или Dagot_Ur`а )
|
Сорри. Спасибо за доверие, но честно некогда - запарка. А почему бы Killer-XXX самому не взяться -очень достойный комрад.
|
|
|
18.10.2004, 17:02
|
#56
|
|
Re: Декомпилятор скриптов Готики
2Vam:
Что-то не наблюдается энтузиазма в деле изучения скриптов? Может это никому и н
|
А нам нужен энтузиазм? Думаю, сами скрипты лучше энтузиазма. ;)
|
|
|
18.10.2004, 17:07
|
#57
|
|
|
|
|
Регистрация: 15.04.2004
Адрес: Санкт-Петербург
Сообщений: 372
|
|
|
|
|
|
Re: Декомпилятор скриптов Готики
2Pa:
Очень даже надо! Тем более сейчас появился новый немецкий вариант скриптов АДДОН-а - Gothic.dat версии .2
|
А чем этот gothic.dat отличается от старого? 2Vam:
Что-то не наблюдается энтузиазма в деле изучения скриптов? Может это никому и не надо.
|
Ну, допустим, я энтузиаст ;D. А что делать-то?
|
|
|
18.10.2004, 17:25
|
#58
|
|
Re: Декомпилятор скриптов Готики
2TycoooN:
Ну, допустим, я энтузиаст . А что делать-то?
|
Посмотри с поста #45 и ниже, нужен ведущий новой рубрики, затем необходимо задокументировать описание и параметры базовых функций и т.д. :D Я мог бы и сам за это взяться, но сейчас в полным ходом идет работа над компилятором, а затем и декомпилятор. ;) 2Mitrich:
А нам нужен энтузиазм? Думаю, сами скрипты лучше энтузиазма.
|
Они, конечно, лучше, но подход к ним должен быть серьезным! ::)
|
|
|
18.10.2004, 21:56
|
#59
|
|
|
|
|
Регистрация: 19.06.2004
Адрес: г. Белая Калитва.
Сообщений: 204
|
|
|
|
|
|
Re: Декомпилятор скриптов Готики
2Pa: Благодарю за честь, но я в этом чайник :) Так что, предлагаю... мммм.... Ну кто? Люди, ну нужен ведущий рубрики... Vam, может после написания компилятора, берешься? Будем дружно помогать...
|
|
|
19.10.2004, 15:17
|
#60
|
|
|
|
|
*
Регистрация: 29.08.2004
Сообщений: 1
|
|
|
|
|
|
Re: Декомпилятор скриптов Готики
2TycoooN:
А чем этот gothic.dat отличается от старого?
|
Отличается предостаточно. Где,кое что убрали. Где,кое что добавили. Текстовка один в один. Но добавлены вызванные животные или превращения ГГ, не в смысле добавлены, а дополнительно прописаны и изменены статсы. И т.д.
|
|
|
20.10.2004, 01:05
|
#62
|
|
|
|
|
Регистрация: 19.06.2004
Адрес: г. Белая Калитва.
Сообщений: 204
|
|
|
|
|
|
Re: Декомпилятор скриптов Готики
2Vam: Ну так это сам компилятор, но еще же надо будет написать обратную функцию?
|
|
|
20.10.2004, 09:21
|
#63
|
|
Re: Декомпилятор скриптов Готики
2Killer-XXX:
но еще же надо будет написать обратную функцию?
|
Конечно надо, только не функцию, а целую программу, а чтобы это сделать необходимо знать формат dat файлов.
|
|
|
31.10.2004, 10:43
|
#65
|
|
Re: Декомпилятор скриптов Готики
Определено несколько ограничений, возможно, это не все.
1. Имена файлов скриптов, а так же и директории, где они лежат, в dat файлах отсутствуют, поэтому файлы будут нумероваться 0.d, 1.d и т.д. и располагаться в одной директории (номера файлов соответствуют порядку компиляции). 2. В именах переменных отсутствует деление на нижний и верхний регистры символов (например имя AI_Output после компиляции будет AI_OUTPUT), поэтому при декомпиляции имена переменных можно представить только в нижнем или верхнем регистрах. Это не относится к инициализации текстовых строк, там все ОК! 3. В dat файле после компиляции отсутствуют имена размерностей и индексов массивов, есть только числовые значения. Поэтому при декомпиляции можно сделать так: было - const int max_menu_item = 5; const int monster = 2; ... menu[max_menu_item]; menu[monster] = aaa;
станет - const int max_menu_item = 5; const int monster = 2; ... menu[5]; menu[2] = aaa;
Все эти ограничения на круговые процессы компиляция <-> декомпиляция влияния оказывать не будут, результат будет всегда один.
Хочу привести первый результат работы декомпилятора при обработке файла music.dat, можно сравнить эти файлы с оригиналами и высказать замечания.
Первый файл 0.d
const string MOTIF_DEATH = "J_DEATH"; const string MOTIF_RESURRECTION = "J_RESURRECT"; const string MOTIF_FOUNDITEM = "J_FOUNDITEM"; const string MOTIF_SOLVEDMISSION = "J_MISSOLVED"; const string MOTIF_FAILEDMISSION = "J_MISFAILED"; const string MOTIF_KILLEDENEMY = "J_KILLEDENEMY"; const string MOTIF_KILLEDBIGENEMY = "J_KILLEDBIGENEMY"; const string MOTIF_LEVEL_GAIN = "J_LEVELGAIN"; const string MOTIF_ATTITUDE_INCREASE = "J_INC_AT"; const string MOTIF_ATTITUDE_DECREASE = "J_DEC_AT"; const string MOTIF_TRAP_ACTIVATE = "J_TRAP_ACTIVATE"; const string MOTIF_STEAL_FAIL = "J_STEAL_FAIL"; const string MOTIF_REFRESH_MANA = "J_MANA_REFRESH"; const string MOTIF_REFRESH_HEALTH = "J_HEALTH_REFRESH"; const string MOTIF_REFRESH_PSI = "J_PSI_REFRESH"; const string MOTIF_HEALTHLOW = "J_HEALTH_LOW";
const int TRANSITION_TYPE_NONE = 1; const int TRANSITION_TYPE_GROOVE = 2; const int TRANSITION_TYPE_FILL = 3; const int TRANSITION_TYPE_BREAK = 4; const int TRANSITION_TYPE_INTRO = 5; const int TRANSITION_TYPE_END = 6; const int TRANSITION_TYPE_ENDANDINTRO = 7; const int TRANSITION_SUB_TYPE_IMMEDIATE = 1; const int TRANSITION_SUB_TYPE_BEAT = 2; const int TRANSITION_SUB_TYPE_MEASURE = 3;
class C_MUSICSYS_CFG { * * *var float volume; * * *var int bitresolution; * * *var int globalreverbenabled; * * *var int samplerate; * * *var int numchannels; * * *var int reverbbuffersize; };
class C_MUSICTHEME { * * *var string file; * * *var float vol; * * *var int loop; * * *var float reverbmix; * * *var float reverbtime; * * *var int transtype; * * *var int transsubtype; };
class C_MUSICJINGLE { * * *var string name; * * *var int loop; * * *var float vol; * * *var int transsubtype; };
prototype C_MUSICTHEME_DEF(C_MUSICTHEME) { * * *vol = 1; * * *loop = 1; * * *transtype = TRANSITION_TYPE_NONE; * * *transsubtype = TRANSITION_SUB_TYPE_MEASURE; * * *reverbmix = -10; * * *reverbtime = 8500; };
prototype C_MUSICJINGLE_DEF(C_MUSICJINGLE) { * * *name = ""; * * *vol = 1; * * *loop = 0; * * *transsubtype = TRANSITION_SUB_TYPE_BEAT; };
Второй файл 1.d
instance MUSICSYSCONFIG(C_MUSICSYS_CFG) { * * *volume = 1; * * *bitresolution = 16; * * *globalreverbenabled = 1; * * *samplerate = 44100; * * *numchannels = 16; * * *reverbbuffersize = 262144; };
instance JINGLEFOUNDITEM(C_MUSICJINGLE_DEF) { * * *name = "E-Positive 2"; * * *transsubtype = TRANSITION_SUB_TYPE_BEAT; };
instance JINGLELEVELGAIN(C_MUSICJINGLE_DEF) { * * *name = "E-Positive 1"; * * *transsubtype = TRANSITION_SUB_TYPE_MEASURE; };
instance JINGLEKILLEDFOE(C_MUSICJINGLE_DEF) { * * *name = "E-Positive 2"; * * *transsubtype = TRANSITION_SUB_TYPE_BEAT; };
instance JINGLELEARNTALENT(C_MUSICJINGLE_DEF) { * * *name = "E-Positive 1"; * * *transsubtype = TRANSITION_SUB_TYPE_BEAT; };
instance SYS_MENU(C_MUSICTHEME_DEF) { * * *file = "menu.sgt"; * * *transtype = TRANSITION_TYPE_NONE; * * *transsubtype = TRANSITION_SUB_TYPE_BEAT; * * *reverbmix = -10; * * *reverbtime = 8500; };
instance SYS_LOADING(C_MUSICTHEME_DEF) { * * *file = "menu.sgt"; * * *transtype = TRANSITION_TYPE_NONE; * * *transsubtype = TRANSITION_SUB_TYPE_BEAT; * * *reverbmix = -12; * * *reverbtime = 8500; };
instance DEF_DAY_STD(C_MUSICTHEME_DEF) { * * *file = "ow_day_std.sgt"; };
instance DEF_DAY_THR(C_MUSICTHEME_DEF) { * * *file = "cam_day_thr.sgt"; };
instance DEF_DAY_FGT(C_MUSICTHEME_DEF) { * * *file = "cam_day_fgt.sgt"; };
instance DEF_NGT_STD(C_MUSICTHEME_DEF) { * * *file = "cam_ngt_std.sgt"; };
instance DEF_NGT_THR(C_MUSICTHEME_DEF) { * * *file = "cam_ngt_std.sgt"; };
instance DEF_NGT_FGT(C_MUSICTHEME_DEF) { * * *file = "cam_day_fgt.sgt"; };
instance OC_DAY_STD(C_MUSICTHEME_DEF) { * * *file = "oc_day_std.sgt"; * * *transtype = TRANSITION_TYPE_BREAK; * * *transsubtype = TRANSITION_SUB_TYPE_MEASURE; };
instance OC_DAY_THR(C_MUSICTHEME_DEF) { * * *file = "oc_day_std.sgt"; * * *transtype = TRANSITION_TYPE_BREAK; * * *transsubtype = TRANSITION_SUB_TYPE_MEASURE; };
instance OC_DAY_FGT(C_MUSICTHEME_DEF) { * * *file = "oc_day_fgt.sgt"; * * *transtype = TRANSITION_TYPE_FILL; * * *transsubtype = TRANSITION_SUB_TYPE_MEASURE; };
instance OC_NGT_STD(C_MUSICTHEME_DEF) { * * *file = "cam_ngt_std.sgt"; };
instance OC_NGT_THR(C_MUSICTHEME_DEF) { * * *file = "cam_ngt_thr.sgt"; };
instance OC_NGT_FGT(C_MUSICTHEME_DEF) { * * *file = "oc_day_fgt.sgt"; * * *transtype = TRANSITION_TYPE_FILL; * * *transsubtype = TRANSITION_SUB_TYPE_MEASURE; };
instance ARE_DAY_STD(C_MUSICTHEME_DEF) { * * *file = "foc_day_std.sgt"; };
instance ARE_DAY_THR(C_MUSICTHEME_DEF) { * * *file = "foc_day_std.sgt"; };
instance ARE_DAY_FGT(C_MUSICTHEME_DEF) { * * *file = "oc_day_fgt.sgt"; * * *transtype = TRANSITION_TYPE_FILL; * * *transsubtype = TRANSITION_SUB_TYPE_MEASURE; };
instance IE_DAY_STD(C_MUSICTHEME_DEF) { * * *file = "oc_day_std.sgt"; };
instance IE_NGT_STD(C_MUSICTHEME_DEF) { * * *file = "cam_ngt_std.sgt"; };
instance IE_DAY_THR(C_MUSICTHEME_DEF) { * * *file = "oc_day_std.sgt"; };
instance IE_DAY_FGT(C_MUSICTHEME_DEF) { * * *file = "oc_day_fgt.sgt"; };
instance NCO_DAY_STD(C_MUSICTHEME_DEF) { * * *file = "cam_day_std.sgt"; * * *transtype = TRANSITION_TYPE_BREAK; * * *transsubtype = TRANSITION_SUB_TYPE_MEASURE; };
instance NCO_DAY_THR(C_MUSICTHEME_DEF) { * * *file = "cam_day_thr.sgt"; * * *transtype = TRANSITION_TYPE_BREAK; * * *transsubtype = TRANSITION_SUB_TYPE_MEASURE; };
instance NCO_DAY_FGT(C_MUSICTHEME_DEF) { * * *file = "cam_day_fgt.sgt"; * * *transtype = TRANSITION_TYPE_FILL; * * *transsubtype = TRANSITION_SUB_TYPE_MEASURE; };
instance NCO_NGT_STD(C_MUSICTHEME_DEF) { * * *file = "cam_ngt_std.sgt"; };
instance NCO_NGT_THR(C_MUSICTHEME_DEF) { * * *file = "cam_ngt_std.sgt"; };
instance NCO_NGT_FGT(C_MUSICTHEME_DEF) { * * *file = "cam_ngt_std.sgt"; };
instance NCI_DAY_STD(C_MUSICTHEME_DEF) { * * *file = "nci_day_std.sgt"; * * *transtype = TRANSITION_TYPE_BREAK; * * *transsubtype = TRANSITION_SUB_TYPE_MEASURE; };
instance NCI_DAY_THR(C_MUSICTHEME_DEF) { * * *file = "nci_day_std.sgt"; * * *transtype = TRANSITION_TYPE_BREAK; * * *transsubtype = TRANSITION_SUB_TYPE_MEASURE; };
instance NCI_DAY_FGT(C_MUSICTHEME_DEF) { * * *file = "nci_day_fgt.sgt"; * * *transtype = TRANSITION_TYPE_FILL; * * *transsubtype = TRANSITION_SUB_TYPE_MEASURE; };
instance NCI_NGT_STD(C_MUSICTHEME_DEF) { * * *file = "nci_day_std.sgt"; };
instance NCI_NGT_THR(C_MUSICTHEME_DEF) { * * *file = "nci_day_std.sgt"; };
instance NCI_NGT_FGT(C_MUSICTHEME_DEF) { * * *file = "nci_day_fgt.sgt"; * * *transtype = TRANSITION_TYPE_FILL; * * *transsubtype = TRANSITION_SUB_TYPE_MEASURE; };
instance PSI_DAY_STD(C_MUSICTHEME_DEF) { * * *file = "psi_day_std.sgt"; * * *transtype = TRANSITION_TYPE_BREAK; * * *transsubtype = TRANSITION_SUB_TYPE_MEASURE; };
instance PSI_DAY_THR(C_MUSICTHEME_DEF) { * * *file = "psi_day_thr.sgt"; * * *transtype = TRANSITION_TYPE_BREAK; * * *transsubtype = TRANSITION_SUB_TYPE_MEASURE; };
instance PSI_DAY_FGT(C_MUSICTHEME_DEF) { * * *file = "psi_day_fgt.sgt"; * * *transtype = TRANSITION_TYPE_FILL; * * *transsubtype = TRANSITION_SUB_TYPE_MEASURE; };
instance PSI_NGT_STD(C_MUSICTHEME_DEF) { * * *file = "psi_ngt_std.sgt"; };
instance PSI_NGT_THR(C_MUSICTHEME_DEF) { * * *file = "psi_ngt_std.sgt"; };
instance PSI_NGT_FGT(C_MUSICTHEME_DEF) { * * *file = "psi_day_fgt.sgt"; };
instance OW_DAY_STD(C_MUSICTHEME_DEF) { * * *file = "ow_day_std.sgt"; };
instance OW_DAY_THR(C_MUSICTHEME_DEF) { * * *file = "ow_day_std.sgt"; };
instance OW_DAY_FGT(C_MUSICTHEME_DEF) { * * *file = "ow_day_std.sgt"; };
instance OW_NGT_STD(C_MUSICTHEME_DEF) { * * *file = "ow_day_std.sgt"; };
instance OW_NGT_THR(C_MUSICTHEME_DEF) { * * *file = "ow_day_std.sgt"; };
instance OW_NGT_FGT(C_MUSICTHEME_DEF) { * * *file = "ow_day_std.sgt"; };
instance STA_DAY_STD(C_MUSICTHEME_DEF) { * * *file = "ban_day_std.sgt"; };
instance BEA_DAY_STD(C_MUSICTHEME_DEF) { * * *file = "ow_day_std.sgt"; };
instance BEA_NGT_STD(C_MUSICTHEME_DEF) { * * *file = "ow_day_std.sgt"; };
instance BAN_DAY_STD(C_MUSICTHEME_DEF) { * * *file = "ban_day_std.sgt"; };
instance CAM_DAY_STD(C_MUSICTHEME_DEF) { * * *file = "cam_day_std.sgt"; };
instance CAS_DAY_STD(C_MUSICTHEME_DEF) { * * *file = "cam_day_thr.sgt"; };
instance CAS_NGT_STD(C_MUSICTHEME_DEF) { * * *file = "cam_ngt_std.sgt"; };
instance DT_DAY_STD(C_MUSICTHEME_DEF) { * * *file = "cam_day_thr.sgt"; };
instance DT_NGT_STD(C_MUSICTHEME_DEF) { * * *file = "cam_ngt_std.sgt"; };
instance FC_DAY_STD(C_MUSICTHEME_DEF) { * * *file = "ban_day_std.sgt"; };
instance FC_NGT_STD(C_MUSICTHEME_DEF) { * * *file = "ban_day_std.sgt"; };
instance FOC_DAY_STD(C_MUSICTHEME_DEF) { * * *file = "FOC_day_std.sgt"; };
instance FOC_DAY_THR(C_MUSICTHEME_DEF) { * * *file = "FOC_day_std.sgt"; };
instance FOC_NGT_STD(C_MUSICTHEME_DEF) { * * *file = "FOC_day_std.sgt"; };
instance FOC_NGT_THR(C_MUSICTHEME_DEF) { * * *file = "FOC_day_std.sgt"; };
instance OGR_DAY_STD(C_MUSICTHEME_DEF) { * * *file = "foc_day_std.sgt"; };
instance OGR_NGT_STD(C_MUSICTHEME_DEF) { * * *file = "foc_day_std.sgt"; };
instance OL1_DAY_STD(C_MUSICTHEME_DEF) { * * *file = "ban_day_std.sgt"; };
instance OL1_NGT_STD(C_MUSICTHEME_DEF) { * * *file = "cam_ngt_std.sgt"; };
instance OME_DAY_STD(C_MUSICTHEME_DEF) { * * *file = "cam_day_thr.sgt"; };
instance OME_NGT_STD(C_MUSICTHEME_DEF) { * * *file = "cam_ngt_std.sgt"; };
instance ORC_DAY_STD(C_MUSICTHEME_DEF) { * * *file = "orc_day_std.sgt"; * * *transtype = TRANSITION_TYPE_BREAK; * * *transsubtype = TRANSITION_SUB_TYPE_MEASURE; };
instance ORC_DAY_THR(C_MUSICTHEME_DEF) { * * *file = "orc_day_std.sgt"; * * *transtype = TRANSITION_TYPE_BREAK; * * *transsubtype = TRANSITION_SUB_TYPE_MEASURE; };
instance ORC_DAY_FGT(C_MUSICTHEME_DEF) { * * *file = "oc_day_fgt.sgt"; * * *transtype = TRANSITION_TYPE_FILL; * * *transsubtype = TRANSITION_SUB_TYPE_MEASURE; };
instance ORC_NGT_STD(C_MUSICTHEME_DEF) { * * *file = "orc_day_std.sgt"; };
instance ORC_NGT_THR(C_MUSICTHEME_DEF) { * * *file = "orc_day_std.sgt"; };
instance ORC_NGT_FGT(C_MUSICTHEME_DEF) { * * *file = "oc_day_fgt.sgt"; };
instance OR_DAY_STD(C_MUSICTHEME_DEF) { * * *file = "ban_day_std.sgt"; };
instance OR_DAY_THR(C_MUSICTHEME_DEF) { * * *file = "ban_day_std.sgt"; };
instance OR_DAY_FGT(C_MUSICTHEME_DEF) { * * *file = "oc_day_fgt.sgt"; };
instance OR_NGT_STD(C_MUSICTHEME_DEF) { * * *file = "cam_ngt_std.sgt"; };
instance OR_NGT_THR(C_MUSICTHEME_DEF) { * * *file = "cam_ngt_std.sgt"; };
instance OR_NGT_FGT(C_MUSICTHEME_DEF) { * * *file = "cam_ngt_std.sgt"; };
instance PDN_DAY_STD(C_MUSICTHEME_DEF) { * * *file = "ow_day_std.sgt"; };
instance PDN_NGT_STD(C_MUSICTHEME_DEF) { * * *file = "cam_ngt_std.sgt"; };
instance PIR_DAY_STD(C_MUSICTHEME_DEF) { * * *file = "ban_day_std.sgt"; };
instance STO_DAY_STD(C_MUSICTHEME_DEF) { * * *file = "foc_day_std.sgt"; };
instance STO_NGT_STD(C_MUSICTHEME_DEF) { * * *file = "foc_day_std.sgt"; };
instance TA_DAY_STD(C_MUSICTHEME_DEF) { * * *file = "ow_day_std.sgt"; };
instance TA_NGT_STD(C_MUSICTHEME_DEF) { * * *file = "cam_ngt_std.sgt"; };
instance TD_DAY_STD(C_MUSICTHEME_DEF) { * * *file = "ow_day_std.sgt"; };
instance TD_NGT_STD(C_MUSICTHEME_DEF) { * * *file = "cam_ngt_std.sgt"; };
instance TRU_DAY_STD(C_MUSICTHEME_DEF) { * * *file = "ow_day_std.sgt"; };
instance TRU_NGT_STD(C_MUSICTHEME_DEF) { * * *file = "cam_ngt_std.sgt"; };
instance TPL_DAY_STD(C_MUSICTHEME_DEF) { * * *file = "ogy_day_std.sgt"; };
instance TPL_DAY_THR(C_MUSICTHEME_DEF) { * * *file = "ogy_day_std.sgt"; };
instance TPL_DAY_FGT(C_MUSICTHEME_DEF) { * * *file = "ogy_day_fgt.sgt"; };
instance TPL_NGT_STD(C_MUSICTHEME_DEF) { * * *file = "ogy_day_std.sgt"; };
instance KAT_DAY_STD(C_MUSICTHEME_DEF) { * * *file = "ogy_day_std.sgt"; };
instance KAT_DAY_THR(C_MUSICTHEME_DEF) { * * *file = "ogy_day_std.sgt"; };
instance KAT_DAY_FGT(C_MUSICTHEME_DEF) { * * *file = "ogy_day_fgt.sgt"; };
instance KAT_NGT_STD(C_MUSICTHEME_DEF) { * * *file = "ogy_day_std.sgt"; };
instance SPL_DAY_STD(C_MUSICTHEME_DEF) { * * *file = "ogy_day_std.sgt"; };
instance SPL_DAY_THR(C_MUSICTHEME_DEF) { * * *file = "ogy_day_std.sgt"; };
instance SPL_DAY_FGT(C_MUSICTHEME_DEF) { * * *file = "ogy_day_fgt.sgt"; };
instance SPL_NGT_STD(C_MUSICTHEME_DEF) { * * *file = "ogy_day_std.sgt"; };
instance FRM_DAY_STD(C_MUSICTHEME_DEF) { * * *file = "olm_day_std.sgt"; * * *transtype = TRANSITION_TYPE_BREAK; * * *transsubtype = TRANSITION_SUB_TYPE_MEASURE; };
instance FRM_DAY_THR(C_MUSICTHEME_DEF) { * * *file = "olm_day_thr.sgt"; * * *transtype = TRANSITION_TYPE_BREAK; * * *transsubtype = TRANSITION_SUB_TYPE_MEASURE; };
instance FRM_DAY_FGT(C_MUSICTHEME_DEF) { * * *file = "olm_day_fgt.sgt"; * * *transtype = TRANSITION_TYPE_FILL; * * *transsubtype = TRANSITION_SUB_TYPE_MEASURE; };
instance FRM_NGT_STD(C_MUSICTHEME_DEF) { * * *file = "olm_day_std.sgt"; * * *transtype = TRANSITION_TYPE_BREAK; * * *transsubtype = TRANSITION_SUB_TYPE_MEASURE; };
instance OLM_DAY_STD(C_MUSICTHEME_DEF) { * * *file = "olm_day_std.sgt"; * * *transtype = TRANSITION_TYPE_BREAK; * * *transsubtype = TRANSITION_SUB_TYPE_MEASURE; };
instance OLM_NGT_STD(C_MUSICTHEME_DEF) { * * *file = "olm_day_std.sgt"; * * *transtype = TRANSITION_TYPE_BREAK; * * *transsubtype = TRANSITION_SUB_TYPE_MEASURE; };
instance OLM_DAY_THR(C_MUSICTHEME_DEF) { * * *file = "olm_day_thr.sgt"; * * *transtype = TRANSITION_TYPE_BREAK; * * *transsubtype = TRANSITION_SUB_TYPE_MEASURE; };
instance OLM_DAY_FGT(C_MUSICTHEME_DEF) { * * *file = "olm_day_fgt.sgt"; * * *transtype = TRANSITION_TYPE_FILL; * * *transsubtype = TRANSITION_SUB_TYPE_MEASURE; };
instance OGY_DAY_STD(C_MUSICTHEME_DEF) { * * *file = "ogy_day_std.sgt"; };
instance OGY_DAY_THR(C_MUSICTHEME_DEF) { * * *file = "ogy_day_std.sgt"; };
instance OGY_DAY_FGT(C_MUSICTHEME_DEF) { * * *file = "ogy_day_fgt.sgt"; };
instance OGY_NGT_STD(C_MUSICTHEME_DEF) { * * *file = "ogy_day_std.sgt"; };
instance DIC_DAY_STD(C_MUSICTHEME_DEF) { * * *file = "dic_day_std.sgt"; };
instance DIC_DAY_THR(C_MUSICTHEME_DEF) { * * *file = "dic_day_std.sgt"; };
instance DIC_DAY_FGT(C_MUSICTHEME_DEF) { * * *file = "dic_day_std.sgt"; };
instance DIC_NGT_STD(C_MUSICTHEME_DEF) { * * *file = "dic_day_std.sgt"; };
instance DIC_NGT_THR(C_MUSICTHEME_DEF) { * * *file = "dic_day_std.sgt"; };
instance DIC_NGT_FGT(C_MUSICTHEME_DEF) { * * *file = "dic_day_std.sgt"; };
Приму все дальнейшие пожелания. *;)
|
|
|
04.11.2004, 04:21
|
#67
|
|
Re: Декомпилятор скриптов Готики
2Vam:
Я думаю, что недели через две будет готов "черновой" рабочий вариант декомпилятора. Затем необходимо будет сделать графическую оболочку и отдать на тестирование.
|
Отлично! Я долго наблюдал за вашей тяжелейшей работой, и наконец декомпилятор уже почти готов. Будем ждать с нетерпением! Желаю успешного завершения...
|
|
|
04.11.2004, 13:55
|
#69
|
|
Re: Декомпилятор скриптов Готики
2TycoooN:
А сколько он (примерно) будет весить?
|
Ответить пока сложно,зависит от того, как много места займет оболочка. На сегодняшний день экзешник весит около 300 кило. :)
|
|
|
05.11.2004, 00:02
|
#70
|
|
|
|
|
Регистрация: 19.06.2004
Адрес: г. Белая Калитва.
Сообщений: 204
|
|
|
|
|
|
Re: Декомпилятор скриптов Готики
2Vam: Кстати у тебя нету какой нибудь Бета версии самого компилятора? А то столкнулся с проблемой, Спэйсер глючит, люди говорят у них такое же было, только сносом системы вылечилось, вот я бы пока и пользовался твоим компилятором, он же оригинальный, просто выдранный?
|
|
|
05.11.2004, 09:27
|
#71
|
|
Re: Декомпилятор скриптов Готики
2Killer-XXX:
Кстати у тебя нету какой нибудь Бета версии самого компилятора?
|
Компилятор с декомпилятором делаю в одном пакете, а пока все до конца не отлажено, возможно есть ошибки, допущенные при создании исходников компилятора. Придется немного подождать. ;)
|
|
|
09.11.2004, 09:31
|
#74
|
|
Re: Декомпилятор скриптов Готики
2TycoooN:
Ну и к чему эта ошибка приводит?
|
Возможна ошибка в диалоге с рабочими в поле у мельницы и с мельником. Файл B_AssignAmbientInfos.d отвечает еще и за другие диалоги - разговор с охранником на входе в крепость и многие другие, они все подробно расписаны в файлах B_AssignAmbientInfos_***.d *;)
|
|
|
14.11.2004, 00:46
|
#79
|
|
|
|
|
Регистрация: 15.04.2004
Адрес: Санкт-Петербург
Сообщений: 372
|
|
|
|
|
|
Re: Декомпилятор скриптов Готики
2Vam: Ну что ж, я с успехом декомпилировал снежковский Готик.дат :) Разумеется, пожеланий довольно много, так что ты сразу скажи, что реально сделать, а что нет :) 1. Нельзя ли называть файлы не числами, а хотя бы примерно как это сделано у разработчиков? Ведь вполне реально назвать файл диалогов с Кор Галомом DIA_GUR_1201_CORKALOM. 2. Было бы неплохо, если бы в скриптах диалогов шел сначала Instance (C_Info), потом его _Condition, потом _Info (т.е. как принято у разрабов) 3. При наличии ou.csl/ou.bin чтобы после строк AI_Output добавлялся комментарий с фразами. 4. Собираешься ли ты делать декомпилятор для Готики 2? Он ведь тоже нужен ::)
|
|
|
14.11.2004, 11:19
|
#80
|
|
Re: Декомпилятор скриптов Готики
2TycoooN: 1. К сожалению, в дат файле нет никаких имен исходных файлов, есть только номера файлов в том порядке, в котором проходила компиляция. Мы, сравнивая исходники и декомпилированный текст, видим очевидные имена файлов. Но, если бы у нас не было исходников, исходные имена файлов просто точно не восстановить, можно только предполагать, а декомпилятор не такой умный, чтобы предполагать. Может у кого-нибудь, поработав с программой, возникнет осуществимая идея - рассмотрим. 2. Декомпилятор создает текст строго в той последовательности, в какой проходила компиляция, никакие перестановки он не делает, да и не может делать, иначе возникнут ошибки. Твой вопрос мне не понятен. Если при сравнении декомпилированного файла и исходника наблюдаются перестановки, то это ошибка, требующая устранения (я такого не встречал). 3. Это сделаю обязательно, даже до графической оболочки. Необходимо реализовать два варианта - создание ou.bin и занесение информации из ou.bin в декомпилированные скрипты. 4. Да, следующим этапом, скрипты и дат файлы обеих Готик одинаковы, за исключением некоторых встроенных функций и переменных. Закончив рассмотрение функций Готики 1 (в теме Уроки скриптологии), перейду к Готике 2, а затем и модифицирую программу.
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
Опции темы |
Поиск в этой теме |
|
|
Ваши права в разделе
|
|
|
|
Текущее время: 15:35. Часовой пояс GMT +4.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|