[AGFC: Valley of Gothic] М:Декомпилятор скриптов Готики

Страница 2 из 31 12 345678912 Последняя »
Поиск в этой теме:

Расширенный поиск
Старый 14.10.2004, 12:07   #41
PA
Строители Миртаны
*
 
Регистрация: 29.08.2004
Сообщений: 1
PA вне форума

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

2Vam:

Извини, но запамятовал и не сообщил сразу, что можно покопаться и в исходниках.

Залезь сюда, на этой системе делались все Готики и МОД-ы.
Сорри, знал давно, но как-то в ум не пришло, посоветовать сюда заглянуть.

http://nsis.sourceforge.net/
Ответить с цитированием
Старый 14.10.2004, 13:21   #42
Vam

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

По умолчанию 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, 15:02   #43
Vam

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

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

2Mitrich:
Ты уверен, что надо знать все функции?
Если мы хотим использовать возможности скриптов полностью, то знать надо все функции.  :D
Ответить с цитированием
Старый 14.10.2004, 15:26   #44
Mitrich

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

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

2Vam:
Если мы хотим использовать возможности скриптов полностью, то знать надо все функции.
Логично, но чтобы использовать все возможности скриптов при работе с ними вручную, тоже надо знать все функции. :) Таким образом можно говорить о некотором базовом уровне, основных функциях и версиях утилиты по работе с ними.
Ответить с цитированием
Старый 14.10.2004, 15:58   #45
Mitrich

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

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

Если я правильно понимаю, основная проблема при скриптовании в соблюдении правильной структуры скрипта при задании некоторых условий и связей. И именно эту проблему утилита и должна помочь решить, а функции, не вошедшие в условную библиотеку, можно позволить забивать вручную тем одаренным созданиям, которые знают их название. :)
Ответить с цитированием
Старый 14.10.2004, 16:15   #46
Vam

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

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

2Mitrich:
В скриптах Готики вообще как-бы отсутствует структура, есть базовые (библиотечные) функции (про них я и говорил), а есть функции, созданные теми, кто пишет скрипт. Выполняются же функции совсем не в том порядке, в каком они представлены в скриптах. Базовые функции с их параметрами надо знать, на их основе создается все остальное.
Есть предложение в отдельной теме, например: [glow=red,2,300]Уроки скриптологии[/glow] или что-то в этом роде, рассматривать и обсуждать базовые функции. Это можно сделать таким образом, я выкладываю тройку функций с параметрами, и каждый, кто в этом что-нибудь понимает, пытается описать действие функции и все ее параметры, на основе этого я делаю описание функции и переходим к следующей тройке. Это, конечно, займет много времени, а какой есть другой выход? Дело-то нужное. Ну, как? *;) :D
Ответить с цитированием
Старый 14.10.2004, 22:07   #47
Killer-XXX
Строители Миртаны
 
 
Регистрация: 19.06.2004
Адрес: г. Белая Калитва.
Сообщений: 204
Killer-XXX вне форума

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

2Vam:
Есть предложение в отдельной теме, например:
Уроки скриптологии
Превосходно, очень и очень разумная мысля... Для немцев все расписано, а нам что по немецким руководствам учится?? А то опишем, и получится русская полноценная дока, после прочтенья несколько раз которой чел, хоть что то, да сможет уже реализовать. Предлагаю ведущим рубрики сделать или Ра или Dagot_Ur`а :))

2Mitrich:
Вот ссылка на прогу писанную на яве, это состовлять диалоги, хелп непомню где, попробуй глянь www.fizzban.net, если не найдешь то  внимательно ищи топ на WorldofGothic форуме, это я там надыбал ее, сам так и не разобрался с ней, глючила, если кто то разберется, прошу запостить :)
Ответить с цитированием
Старый 14.10.2004, 22:31   #48
Vam

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

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

2Killer-XXX:
Предлагаю ведущим рубрики сделать или Ра или Dagot_Ur`а
Я согласен, а что скажут они?  ::) Количество базовых функций - 290. Это большая работа.  ;) :)
Ответить с цитированием
Старый 15.10.2004, 11:28   #49
Mitrich

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

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

2Vam:
В скриптах Готики вообще как-бы отсутствует структура, есть базовые (библиотечные) функции (про них я и говорил), а есть функции, созданные теми, кто пишет скрипт.
Мне вчера как раз в тему показывали структуру базовой функции "сядь в стул!". Алгоритм примерно выглядит как "найди стул (обращение к вшитой функции поиска)/подойди/посади свою задницу на него/проиграй рандомную анимацию из сета 1-10/вынь попу из стула". Условному модмейкеру не обязательно эту структуру знать, он просто обращается к Sit_Chair и нужный НПС садиться. Я привел эту последовательность для примера - если бы, допустим!, такой базовой функции не существовало, а ее только предстояло создать из базовых (в данном случае - ф-ция поиска, запуска анимации посадки и высадки, запуска сидячей анимации) чем может быть полезна гипотетическая утилита скриптования для создания новой функции - "сядь в стул!"? Я просто пытаюсь понять предполагаемую задачу.

Есть предложение в отдельной теме, например:
Уроки скриптологии
Превосходно, очень и очень разумная мысля...
Решение скорее неизбежное. :) Только у меня есть предложение постить не по три функции, а сразу дать публичный запрос на известные к-л функции, внести их в список и выложить его для пополнения. А по три функции проще выделять для рассмотрения (изучения), и вот это действительно долго.
Не думаю, что Dagot_Ur нужно ведущим "назначать". Во-первых, при услови, что сочтет это нужным, он и так внесет свою лепту, а во-вторых, он сейчас занимается не менее важным делом и ограничен во времени. Думаю, главное задаться целью и начать, а тема сама себя поведет.
Ответить с цитированием
Старый 15.10.2004, 12:19   #50
Vam

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

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

2Mitrich:
Только у меня есть предложение постить не по три функции, а сразу дать публичный запрос на известные к-л функции
Полный список всех базовых функций у меня есть, но если его выложить целиком, то начнется "каша", на какие-то функции будут ответы, а остальные будут забыты, потом опять по новой? А три, это я написал условно, конечно лучше обсуждать функции, сгруппированные по темам (вывод на экран текста, работа с магией и т.д.)  ;)

Не думаю, что Dagot_Ur нужно ведущим "назначать".
Насчет Dagot_Urа согласен, но хотелось бы услышать ответ от Ра, ведь его тоже предложили.  :)
Ответить с цитированием
Старый 15.10.2004, 13:09   #51
Mitrich

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

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

хотелось бы услышать ответ от Ра, ведь его тоже предложили
Согласен.

А по первому вопросу что думаешь?
Ответить с цитированием
Старый 15.10.2004, 14:46   #52
Vam

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

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

2Mitrich:
Мне вчера как раз в тему показывали структуру базовой функции "сядь в стул!" и т.д.
Как раз "сядь в стул!" и не является базовой функцией, базовые - это те, из которых она состоит, а эта - производная.  ;) В остальном все правильно. Да, модмейкеру, может быть, и необязательно знать структуру производной функции, но тот, кто будет создавать утилиту скриптования, это должен знать обязательно (как и весь набор базовых функций).  :D
Ответить с цитированием
Старый 15.10.2004, 16:36   #53
Mitrich

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

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

2Vam:
Как раз "сядь в стул!" и не является базовой функцией, базовые - это те, из которых она состоит, а эта - производная.
Вот ведь!  :D
Ответить с цитированием
Старый 18.10.2004, 15:24   #54
Vam

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

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

2Mitrich:
Что-то не наблюдается энтузиазма в деле изучения скриптов? Может это никому и не надо.  :(
Ответить с цитированием
Старый 18.10.2004, 15:59   #55
PA
Строители Миртаны
*
 
Регистрация: 29.08.2004
Сообщений: 1
PA вне форума

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

2Vam:
Что-то не наблюдается энтузиазма в деле изучения скриптов? Может это никому и не надо.  
Очень даже надо!
Тем более сейчас появился новый немецкий вариант скриптов АДДОН-а - Gothic.dat версии .2 на вордофготик.
Стал изучат дедовским способом, и через раз вспминал "как бы прекрасно было бы, если бы был декомпилятор!"

2Killer-XXX:
Предлагаю ведущим рубрики сделать или Ра или Dagot_Ur`а )
Сорри. Спасибо за доверие, но честно некогда - запарка.
А почему бы Killer-XXX самому не взяться -очень достойный комрад.
Ответить с цитированием
Старый 18.10.2004, 16:02   #56
Mitrich

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

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

2Vam:
Что-то не наблюдается энтузиазма в деле изучения скриптов? Может это никому и н
А нам нужен энтузиазм? Думаю, сами скрипты лучше энтузиазма. ;)
Ответить с цитированием
Старый 18.10.2004, 16:07   #57
TycoooN
Строители Миртаны
  Аватар для TycoooN
 
 
Регистрация: 15.04.2004
Адрес: Санкт-Петербург
Сообщений: 372
TycoooN вне форума

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

2Pa:
Очень даже надо!
Тем более сейчас появился новый немецкий вариант скриптов АДДОН-а - Gothic.dat версии .2
А чем этот gothic.dat отличается от старого?

2Vam:
Что-то не наблюдается энтузиазма в деле изучения скриптов? Может это никому и не надо.
Ну, допустим, я энтузиаст ;D. А что делать-то?
Отправить личное сообщение для Ответить с цитированием
Старый 18.10.2004, 16:25   #58
Vam

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

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

2TycoooN:
Ну, допустим, я энтузиаст . А что делать-то?
Посмотри с поста #45 и ниже, нужен ведущий новой рубрики, затем необходимо задокументировать описание и параметры базовых функций и т.д.  :D
Я мог бы и сам за это взяться, но сейчас в полным ходом идет работа над компилятором, а затем и декомпилятор.  ;)

2Mitrich:
А нам нужен энтузиазм? Думаю, сами скрипты лучше энтузиазма.
Они, конечно, лучше, но подход к ним должен быть серьезным!  ::)
Ответить с цитированием
Старый 18.10.2004, 20:56   #59
Killer-XXX
Строители Миртаны
 
 
Регистрация: 19.06.2004
Адрес: г. Белая Калитва.
Сообщений: 204
Killer-XXX вне форума

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

2Pa:
Благодарю за честь, но я в этом чайник :)
Так что, предлагаю... мммм.... Ну кто? Люди, ну нужен ведущий рубрики... Vam, может после написания компилятора, берешься? Будем дружно помогать...
Ответить с цитированием
Старый 19.10.2004, 14:17   #60
PA
Строители Миртаны
*
 
Регистрация: 29.08.2004
Сообщений: 1
PA вне форума

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

2TycoooN:
А чем этот gothic.dat отличается от старого?
Отличается предостаточно.
Где,кое что убрали.
Где,кое что добавили.

Текстовка один в один.
Но добавлены вызванные животные или превращения ГГ, не в смысле добавлены, а дополнительно прописаны и изменены статсы.
И т.д.

Ответить с цитированием
Старый 19.10.2004, 22:46   #61
Vam

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

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

Достигнут определенный успех в деле компиляции. Сегодня, моей программой были откомпилированы все файлы скриптов Диккурика. Осталось разобрать и написать функцию записи результата компиляции в dat файл (попросту говоря - линковщик).  :D
Ответить с цитированием
Старый 20.10.2004, 00:05   #62
Killer-XXX
Строители Миртаны
 
 
Регистрация: 19.06.2004
Адрес: г. Белая Калитва.
Сообщений: 204
Killer-XXX вне форума

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

2Vam:
Ну так это сам компилятор, но еще же надо будет написать обратную функцию?
Ответить с цитированием
Старый 20.10.2004, 08:21   #63
Vam

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

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

2Killer-XXX:
но еще же надо будет написать обратную функцию?
Конечно надо, только не функцию, а целую программу, а чтобы это сделать необходимо знать формат dat файлов.
Ответить с цитированием
Старый 26.10.2004, 13:27   #64
Vam

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

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

Формат dat файлов полностью изучен. Осталось определить перечень ограничений, с которыми можно сгенерить скрипты из dat файла, и переходить к написанию декомпилятора.  :D
Ответить с цитированием
Старый 31.10.2004, 10:43   #65
Vam

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

По умолчанию 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";
};

Приму все дальнейшие пожелания. *;)
Ответить с цитированием
Старый 03.11.2004, 16:59   #66
Vam

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

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

2TycoooN:
Ответ по декомпилятору:
Все основные выражения языка декомпилировать уже могу. Идет отладка некоторых моментов (вложенность блоков if - else, использование функций в качестве аргументов других функций и т.д), все это реализуемо.

Выявил еще одно ограничение (хотя ограничением его назвать сложно, кто знает отличие С от С++ в области локальных переменных - тот поймет): Локальные переменные внутри функции будут объявляться сразу при входе в функцию, а не по мере их использования (как сделано в скриптах).

Я думаю, что недели через две будет готов "черновой" рабочий вариант декомпилятора. Затем необходимо будет сделать графическую оболочку и отдать на тестирование. *:D
Ответить с цитированием
Старый 04.11.2004, 04:21   #67
B_Wolf

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

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

2Vam:
Я думаю, что недели через две будет готов "черновой" рабочий вариант декомпилятора. Затем необходимо будет сделать графическую оболочку и отдать на тестирование.  
Отлично! Я долго наблюдал за вашей тяжелейшей работой, и наконец декомпилятор уже почти готов. Будем ждать с нетерпением! Желаю успешного завершения...
Ответить с цитированием
Старый 04.11.2004, 12:25   #68
TycoooN
Строители Миртаны
  Аватар для TycoooN
 
 
Регистрация: 15.04.2004
Адрес: Санкт-Петербург
Сообщений: 372
TycoooN вне форума

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

2Vam:
А сколько он (примерно) будет весить?
Отправить личное сообщение для Ответить с цитированием
Старый 04.11.2004, 13:55   #69
Vam

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

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

2TycoooN:
А сколько он (примерно) будет весить?
Ответить пока сложно,зависит от того, как много места займет оболочка.
На сегодняшний день экзешник весит около 300 кило.   :)
Ответить с цитированием
Старый 05.11.2004, 00:02   #70
Killer-XXX
Строители Миртаны
 
 
Регистрация: 19.06.2004
Адрес: г. Белая Калитва.
Сообщений: 204
Killer-XXX вне форума

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

2Vam:
Кстати у тебя нету какой нибудь Бета версии самого компилятора? А то столкнулся с проблемой, Спэйсер глючит, люди говорят у них такое же было, только сносом системы вылечилось, вот я бы пока и пользовался твоим компилятором, он же оригинальный, просто выдранный?
Ответить с цитированием
Старый 05.11.2004, 09:27   #71
Vam

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

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

2Killer-XXX:
Кстати у тебя нету какой нибудь Бета версии самого компилятора?
Компилятор с декомпилятором делаю в одном пакете, а пока все до конца не отлажено, возможно есть ошибки, допущенные при создании исходников компилятора. Придется немного подождать.  ;)
Ответить с цитированием
Старый 08.11.2004, 18:05   #72
Vam

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

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

Ошибка в скриптах Диккурика (версия rus beta 0.60, возможно и в других версиях).

В файле B_AssignAmbientInfos.d в одноименной функции в строке 12 имеется
else if (amb_self.voice = 16), а должно быть else if (amb_self.voice == 16).
Внутри if выражения присвоение не разрешается!
Ответить с цитированием
Старый 08.11.2004, 22:46   #73
TycoooN
Строители Миртаны
  Аватар для TycoooN
 
 
Регистрация: 15.04.2004
Адрес: Санкт-Петербург
Сообщений: 372
TycoooN вне форума

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

2Vam:
Ну и к чему эта ошибка приводит? Имхо она не очень важна, т.к. файл B_AssignAmbientInfos.d сам по себе не очень важен :)
Отправить личное сообщение для Ответить с цитированием
Старый 09.11.2004, 09:31   #74
Vam

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

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

2TycoooN:
Ну и к чему эта ошибка приводит?
Возможна ошибка в диалоге с рабочими в поле у мельницы и с мельником.
Файл B_AssignAmbientInfos.d отвечает еще и за другие диалоги - разговор с охранником на входе в крепость и многие другие, они все подробно расписаны в файлах B_AssignAmbientInfos_***.d *;)
Ответить с цитированием
Старый 13.11.2004, 21:27   #75
Vam

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

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

В принципе ядро компилятор-декомпилятор закончено. Проверил на скриптах и дат файлах Готики 1 и Диккурика.
Могу выложить консольный вариант на тестирование, а сам начну делать графическую оболочку. Наверняка найдутся замечания и пожелания. По оболочке тоже хотелось бы предложений, какие функции реализовать.

Для подготовки консольного варианта мне необходимо пару дней.
Как вы на это смотрите?  ;)
Ответить с цитированием
Старый 13.11.2004, 22:26   #76
TycoooN
Строители Миртаны
  Аватар для TycoooN
 
 
Регистрация: 15.04.2004
Адрес: Санкт-Петербург
Сообщений: 372
TycoooN вне форума

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

2Vam:
Конечно хотим! :) Выкладывай.
По оболочке главное пожелание - это чтобы при ошибках компиляции писалось, в каком конкретно скрипте ошибка.
Отправить личное сообщение для Ответить с цитированием
Старый 13.11.2004, 23:51   #77
Vam

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

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

Декомпилятор выложен на DiccuricAg. Понадобилось гораздо меньше времени на подготовку консольки, чем ожидал.  ;)
Ответить с цитированием
Старый 14.11.2004, 00:04   #78
TycoooN
Строители Миртаны
  Аватар для TycoooN
 
 
Регистрация: 15.04.2004
Адрес: Санкт-Петербург
Сообщений: 372
TycoooN вне форума

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

2Vam:
Мог бы по такому случаю и сайтик забацать :)
Скорость, с которой ты подготовил программу впечатляет, щас скачаю и попробую потестить :D :D :D
Отправить личное сообщение для Ответить с цитированием
Старый 14.11.2004, 00:46   #79
TycoooN
Строители Миртаны
  Аватар для TycoooN
 
 
Регистрация: 15.04.2004
Адрес: Санкт-Петербург
Сообщений: 372
TycoooN вне форума

По умолчанию 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
Vam

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

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

2TycoooN:
1. К сожалению, в дат файле нет никаких имен исходных файлов, есть только номера файлов в том порядке, в котором проходила компиляция. Мы, сравнивая исходники и декомпилированный текст, видим очевидные имена файлов. Но, если бы у нас не было исходников, исходные имена файлов просто точно не восстановить, можно только предполагать, а декомпилятор не такой умный, чтобы предполагать. Может у кого-нибудь, поработав с программой, возникнет осуществимая идея - рассмотрим.
2. Декомпилятор создает текст строго в той последовательности, в какой проходила компиляция, никакие перестановки он не делает, да и не может делать, иначе возникнут ошибки. Твой вопрос мне не понятен. Если при сравнении декомпилированного файла и исходника наблюдаются перестановки, то это ошибка, требующая устранения (я такого не встречал).
3. Это сделаю обязательно, даже до графической оболочки. Необходимо реализовать два варианта - создание ou.bin и занесение информации из ou.bin в декомпилированные скрипты.
4. Да, следующим этапом, скрипты и дат файлы обеих Готик одинаковы, за исключением некоторых встроенных функций и переменных. Закончив рассмотрение функций Готики 1 (в теме Уроки скриптологии), перейду к Готике 2, а затем и модифицирую программу.
Ответить с цитированием
Страница 2 из 31 12 345678912 Последняя »


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе

Смайлы Вкл.
[IMG] код Вкл.
HTML код Вкл.


Текущее время: 10:24. Часовой пояс GMT +4.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2021, vBulletin Solutions, Inc. Перевод: zCarot

AGFC: Valley of Gothic © 2004-2020

Яндекс.Метрика