|
|
26.01.2005, 19:42
|
#362
|
|
Re: Декомпилятор скриптов Готики
2TycoooN:
Числовые значения до декомпиляции и после совершенно идентичны. Но есть одна особенность: в дат файле при присвоении константе числового выражения отсутствуют все составляющие из которых она получена, поэтому предугадать какая запись числового выражения была в оригинале невозможно. Пример: Оригинал - const int BS_SNEAK = 2 OR BS_FLAG_INTERRUPTABLE; где const int BS_FLAG_INTERRUPTABLE = 32768; (объявлен ранее) в итоге получаем BS_SNEAK = 32770; что и видим после декомпиляции. Возможны и другие записи, во многих местах в скриптах вместо числа 32768 (это 2 в степени 15) присутствует запись 1 << 15, это одно и тоже. Декомпилятор все числа > 1024 и кратные степени числа 2 записывает в виде 1 << x, где х - степень числа 2. Все довольно просто. *;) PS: Не первый раз спрашиваю, подскажите, как сделать, чтобы печатались вертикальные палочки (логическое и бинарное ИЛИ).
|
|
|
27.01.2005, 07:39
|
#363
|
|
Re: Декомпилятор скриптов Готики
2Vam:
Не первый раз спрашиваю, подскажите, как сделать, чтобы печатались вертикальные палочки
|
никак, оин автоматом перекодируются в коды символов.
|
|
|
27.01.2005, 10:13
|
#366
|
|
|
|
|
Регистрация: 15.04.2004
Адрес: Санкт-Петербург
Сообщений: 372
|
|
|
|
|
|
Re: Декомпилятор скриптов Готики
2Vam: Никакой :) Так же как и *
Код:
© *™ * *† * *® * * ‡ * §
Только копированием ;D
|
|
|
27.01.2005, 13:38
|
#367
|
|
Re: Декомпилятор скриптов Готики
2Vam:
А что это за символ не клаве?
|
это вертикальная палка в DOS кодировке :)
|
|
|
28.01.2005, 23:50
|
#369
|
|
Re: Декомпилятор скриптов Готики
Цитата:
Сообщение от aleks999 link=board=gothic&t=1095241429&start=350#367 date=01/28/05, в 19:00:16
2Vam: Не могу декомпилировать Gothic.dat из Г2 от Акеллы. Пишет, что неподдерживаемая версия файла и просит Reparse'ровать. Помоги, пожалуйста!
|
Ты что-то неправильно делаешь. Только что декомпилировал. С одним OU.csl, без bin
|
|
|
29.01.2005, 10:34
|
#370
|
|
Re: Декомпилятор скриптов Готики
2aleks999:
Не могу декомпилировать Gothic.dat из Г2 от Акеллы. Пишет, что неподдерживаемая версия файла и просит Reparse'ровать. Помоги, пожалуйста!
|
А ты указал, что работаешь с Готикой 2? :)
|
|
|
01.02.2005, 03:26
|
#372
|
|
|
|
|
Строители Миртаны
Регистрация: 25.05.2004
Сообщений: 3
|
|
|
|
|
|
Re: Декомпилятор скриптов Готики
2Vam: При декомпиляции компилированного датника возникают ошибки. Любое изменение в датнике приводит к еще большим ошибкам. Например, функция InitPerceptions(), строка первая (и далее также): Perc_SetRange(PERC_ASSESSDAMAGE, 9999); После: Perc_SetRange(PERC_ASSESSDAMAGE, her); В файлах диалогов также her очень полюбилась этой проге. Особенно в функциях сравнения вейпоинтов. С этим нужно бороться! :) Из-за этого немного стремновато компилировать исходники. А вдруг? ;)
|
|
|
01.02.2005, 09:48
|
#373
|
|
Re: Декомпилятор скриптов Готики
2Dagot_Ur:
Например, функция InitPerceptions(), строка первая (и далее также): Perc_SetRange(PERC_ASSESSDAMAGE, 9999); После: Perc_SetRange(PERC_ASSESSDAMAGE, her); В файлах диалогов также her очень полюбилась этой проге. Особенно в функциях сравнения вейпоинтов. С этим нужно бороться!
|
Проверил с последней версией декомпилятора 1.8, данных ошибок нет, а ты какую версию используешь?
|
|
|
02.02.2005, 00:38
|
#374
|
|
|
|
|
Строители Миртаны
Регистрация: 25.05.2004
Сообщений: 3
|
|
|
|
|
|
Re: Декомпилятор скриптов Готики
2Vam: Последнюю 1.8. Но как я уже сказал, это больше проявляется при добавлении чего-нибудь нового в скрипты. Ты попробуй что-нибудь добавить или изменить. И при этом - при каждом новом изменении или дополнении появляются новые неточности. :) Родные исходники я не пробовал обратно компилить, поэтому не могу сказать - есть ошибки или нет. Сейчас поробую. Но на измененных однозначно есть.
|
|
|
10.02.2005, 05:43
|
#375
|
|
|
|
|
Строители Миртаны
Регистрация: 25.05.2004
Сообщений: 3
|
|
|
|
|
|
Re: Декомпилятор скриптов Готики
2Vam: Ты можешь сделать, чтобы при декомпи- функции записывались с разделением одна от другой. Например, в диалогах: AI_Output все вместе, но если между ними встречается B_TurnToNpc, то соответственно пустые строки с обоих сторон. То же и с B_LogEntry и остальным. Если идут похожие функции - опять же их слитно.
Пример:
AI_Output (self, other, "DIA_Addon_Bartok_MissingPeople_04_03"); // AI_Output (self, other, "DIA_Addon_Bartok_MissingPeople_04_04"); //
MIS_Bartok_MissingTrokar = LOG_RUNNING; Info_ClearChoices (DIA_Addon_Bartok_MissingPeople); Info_AddChoice (DIA_Addon_Bartok_MissingPeople, "Ты?", DIA_Addon_Bartok_MissingPeople_such ); Info_AddChoice (DIA_Addon_Bartok_MissingPeople, "А?", DIA_Addon_Bartok_MissingPeople_wo );
if (MIS_Bosper_Bogen != LOG_SUCCESS) { MIS_Bosper_Bogen = LOG_RUNNING; };
Log_CreateTopic (Topic_CityTeacher, LOG_NOTE); B_LogEntry (Topic_CityTeacher, "...");
Так гораздо удобнее будет. А то все вместе, разбирать сложнее... :)
|
|
|
10.02.2005, 09:31
|
#376
|
|
Re: Декомпилятор скриптов Готики
2Dagot_Ur:
Ты можешь сделать, чтобы при декомпи- функции записывались с разделением одна от другой. Например, в диалогах: AI_Output все вместе, но если между ними встречается B_TurnToNpc, то соответственно пустые строки с обоих сторон. То же и с B_LogEntry и остальным. Если идут похожие функции - опять же их слитно.
|
Попробую, в следующей версии. :)
|
|
|
10.02.2005, 10:29
|
#378
|
|
|
|
|
Строители Миртаны
Регистрация: 25.05.2004
Сообщений: 3
|
|
|
|
|
|
Re: Декомпилятор скриптов Готики
Ну, например, вот это:
func void B_GivePlayerXP(var int add_xp) { var string concatText; if(hero.level == 0) { hero.exp_next = 500; }; hero.exp = hero.exp + add_xp; concatText = PRINT_XPGained; concatText = ConcatStrings(concatText,IntToString(add_xp)); PrintScreen(concatText,-1,YPOS_XPGained,FONT_ScreenSmall,2); if(hero.exp >= hero.exp_next) { hero.level = hero.level + 1; hero.exp_next = hero.exp_next + ((hero.level + 1) * 500); hero.attribute[1] = hero.attribute[1] + HP_PER_LEVEL; hero.attribute[0] = hero.attribute[0] + HP_PER_LEVEL; hero.lp = hero.lp + LP_PER_LEVEL; PrintScreen(PRINT_LevelUp,-1,YPOS_LevelUp,FONT_Screen,2); Snd_Play("LevelUp"); }; B_CheckLog(); };
лучше было бы так:
func void B_GivePlayerXP(var int add_xp) { var string concatText;
if(hero.level == 0) { hero.exp_next = 500; };
hero.exp = hero.exp + add_xp;
concatText = PRINT_XPGained; concatText = ConcatStrings(concatText,IntToString(add_xp)); PrintScreen(concatText,-1,YPOS_XPGained,FONT_ScreenSmall,2);
if(hero.exp >= hero.exp_next) { hero.level = hero.level + 1; hero.exp_next = hero.exp_next + ((hero.level + 1) * 500); hero.attribute[1] = hero.attribute[1] + HP_PER_LEVEL; hero.attribute[0] = hero.attribute[0] + HP_PER_LEVEL; hero.lp = hero.lp + LP_PER_LEVEL;
PrintScreen(PRINT_LevelUp,-1,YPOS_LevelUp,FONT_Screen,2); Snd_Play("LevelUp"); };
B_CheckLog(); };
|
|
|
10.02.2005, 11:11
|
#380
|
|
Re: Декомпилятор скриптов Готики
2Dagot_Ur:
func void B_GivePlayerXP(var int add_xp)
|
Или необходимо выработать конкретные правила, или оставляем как есть. Твой второй пример автоматом не реализуем, есть противоречивые моменты. ::) В принципе, где нужно, можно и ручками поправить и вставить нужные комментарии. ;)
|
|
|
10.02.2005, 18:05
|
#381
|
|
|
|
|
Строители Миртаны
Регистрация: 25.05.2004
Сообщений: 3
|
|
|
|
|
|
Re: Декомпилятор скриптов Готики
2Vam: Ну тогда хотя бы: * * * * * * * * * * * * * * * * * * * * * *//{ if*(...) { * * *if*(...) * * *{ * * * * * *a1*+*a2*=*a3; * * *}; * * ** * * *return; }; * Npc_ChangeAttribute*(self,*ATR_STRENGTH,*100); * * * * * * * //};
Места помеченные звездочкой - это пробелы, либо пустые строки.
А также:
if*(a1*>=*a2) &&*(a2*>=*a3) &&*((a3*<=*a1) ||*(a1*==*a2)) { * * *// };
|
|
|
10.02.2005, 18:20
|
#382
|
|
|
|
|
Регистрация: 15.04.2004
Адрес: Санкт-Петербург
Сообщений: 372
|
|
|
|
|
|
Re: Декомпилятор скриптов Готики
2Dagot_Ur: А я вот, к примеру, не люблю пробелы в подобных местах - Npc_ChangeAttribute*(self,*ATR_STRENGTH,*100)
А разве сейчас не так? ::)
|
|
|
10.02.2005, 18:35
|
#385
|
|
|
|
|
Строители Миртаны
Регистрация: 25.05.2004
Сообщений: 3
|
|
|
|
|
|
Re: Декомпилятор скриптов Готики
2Vam: Если это обладает повышенной сложность, то обойдемся и без этого. :) Но вот пробелы - это весч нужная! Вот кое-что интересное на декомпи- : if((a1 > a2) && (a3 > a4) && ((((a5 > a6))))) * * * * * * * * * * * * * * * * * ??? 2TycoooN:
Ну это я так, для более лучшей понятливости написал (чтобы все обобщить). :)
|
|
|
10.02.2005, 18:40
|
#386
|
|
Re: Декомпилятор скриптов Готики
2Dagot_Ur:
if((a1 > a2) && (a3 > a4) && ((((a5 > a6)))))
|
Такого быть не должно, скобки расставляются чисто логически, можешь привести нормальную строку из скриптов?
|
|
|
16.02.2005, 20:00
|
#387
|
|
|
|
|
Строители Миртаны
Регистрация: 25.05.2004
Сообщений: 3
|
|
|
|
|
|
Re: Декомпилятор скриптов Готики
2Vam:
Такого быть не должно, скобки расставляются чисто логически, можешь привести нормальную строку из скриптов?
|
Сейчас, к сожалению, посмотреть не могу... Есть точно в файле диалога Мики (ополчение). Строка 200 с чем-то (в условии). Посмотри. :)
|
|
|
17.02.2005, 17:10
|
#390
|
|
|
|
|
Строители Миртаны
Регистрация: 25.05.2004
Сообщений: 3
|
|
|
|
|
|
Re: Декомпилятор скриптов Готики
2Vam: Отлично!
|
|
|
18.02.2005, 12:48
|
#392
|
|
Re: Декомпилятор скриптов Готики
2basilio58:
Кстати, никто не пробовал декомпилировать мод Gestrandet? Версия декомпилятора 1.8 вообще не увидела ничего, и zspy не выдал сообщений кроме начало и конец. Версия 1.9 декомпилировала нормально.
|
Странно, версия 1.9 от 1.8 мало чем отличаются, по идее 1.8 тоже должна была декомпиляцию выполнить, может она у тебя попорчена? ::)
|
|
|
18.02.2005, 13:32
|
#393
|
|
|
|
|
*
Регистрация: 29.08.2004
Сообщений: 1
|
|
|
|
|
|
Re: Декомпилятор скриптов Готики
2Vam:
Странно, версия 1.9 от 1.8 мало чем отличаются, по идее 1.8 тоже должна была декомпиляцию выполнить
|
У меня версия 1.8 мод Gestrandet нормально декомпилировала - тогда версия 1.9 еще не вышла.
|
|
|
18.02.2005, 15:49
|
#394
|
|
Re: Декомпилятор скриптов Готики
2Pa:
У меня версия 1.8 мод Gestrandet нормально декомпилировала - тогда версия 1.9 еще не вышла.
|
Аналогично. Все нормально декомпилировалось версией 1.8.
|
|
|
18.02.2005, 18:06
|
#396
|
|
|
|
|
*
Регистрация: 29.08.2004
Сообщений: 1
|
|
|
|
|
|
Re: Декомпилятор скриптов Готики
2TycoooN:
Господа, переводить мод Gestrandet будем? Предлагаю скооперироваться, чтобы не заниматься одним и тем же
|
В репе я попросил basilio58 сделать перевод. Сам я сейчас играю на немецком - текстовки в принципе не много. МОД просто прелесть!!!Если скооперируетесь и переведете быстро - то думаю Все только огромное Спасибо скажут.
|
|
|
18.02.2005, 22:46
|
#397
|
|
Re: Декомпилятор скриптов Готики
В репе я попросил basilio58 сделать перевод.
|
Что-то я не получал никакой просьбы... ;) Хотя можно конечно, но мод то уж больно маленький. Кстати, насчёт декомпилятора: я видимо ввёл всех в заблуждение. Сегодня всё нормально декомпилировалось 1.8. Хм...тёмные силы электричества.... ;D ::)
|
|
|
20.02.2005, 03:42
|
#398
|
|
|
|
|
Строители Миртаны
Регистрация: 25.05.2004
Сообщений: 3
|
|
|
|
|
|
Re: Декомпилятор скриптов Готики
2Vam: Кстати, как ты считаешь - ранее декомпилированные скрипты "со скобками" совместимы с компиляцией на 1.9?
|
|
|
20.02.2005, 11:22
|
#399
|
|
Re: Декомпилятор скриптов Готики
2Dagot_Ur:
Кстати, как ты считаешь - ранее декомпилированные скрипты "со скобками" совместимы с компиляцией на 1.9?
|
Если компилятор не выдает ошибок - то все совместимо (в смысле грамматики), но есть еще и логика, которую компилятор проверить не может, а вот здесь не все так просто. Попробую объяснить на примере, первоначально предполагалось сделать так: if((!выражение) && (!варажение) && (!выражение) && выражение), а до версии 1.9 получалось вот так - if(!выражение && !варажение && !выражение && (((выражение)))), то есть скобки с отрицания выражения уходили на последнее выражение, если оно было. В принципе, здесь логической ошибки нет, смысл выражения остается прежним. Но в некоторых местах встречаются сложные выражения, например, в файле ZS_Attack.h вместо правильного выражения - if(Npc_GetDistToNpc(self,other) < self.aivar[AIV_Dist]) ¦¦ ((!C_BodyStateContains(other,BS_RUN)) && (!C_BodyStateContains(other,BS_JUMP)))
получалось выражение - if((Npc_GetDistToNpc(self,other) < self.aivar[AIV_Dist]) ¦¦ !(C_BodyStateContains(other,BS_RUN) && !C_BodyStateContains(other,BS_JUMP)))
в котором присутствует логическая ошибка (вместо отрицания только второго выражения имеем суммарное отрицание второго и третьего выражения). Увы, последствия таких ошибок иногда непредсказуемы.
|
|
|
21.02.2005, 04:49
|
#400
|
|
|
|
|
Строители Миртаны
Регистрация: 25.05.2004
Сообщений: 3
|
|
|
|
|
|
Re: Декомпилятор скриптов Готики
2Vam:
Увы, последствия таких ошибок иногда непредсказуемы.
|
А ты больше нигде ничего подобного не замечал?
|
|
|
Здесь присутствуют: 5 (пользователей: 0 , гостей: 5)
|
|
Ваши права в разделе
|
|
|
|
Текущее время: 22:59. Часовой пояс GMT +4.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|