|
|
10.01.2006, 16:09
|
#681
|
|
Re: Декомпилятор скриптов Готики
2Vam: Огромнейшее спасибо, все пошло как по маслу!
Возможно, что ещё нужно в файл RedefinedLocalVariable.d добавить строчку int# b_doupgrade.itemInstance; и всё должно заработать.
|
Получается, если дописать эту строчку то компилятор будет воспринимать переменную int itemInstance как локальную? Я прав?
|
|
|
10.01.2006, 18:20
|
#682
|
|
Re: Декомпилятор скриптов Готики
2TSYLin:
Получается, если дописать эту строчку то компилятор будет воспринимать переменную int itemInstance как локальную? Я прав?
|
Нет, не прав. В любом случае, если переменная объявлена внутри функции, то она является локальной. Строка int# b_doupgrade.itemInstance; говорит компилятору что в функции b_doupgrade локальная переменная itemInstance имеет переопределенный тип (int -> instance). Другой вопрос - для чего это нужно? Разработчики языка скриптов упростили некоторые типы переменных: есть основные переменные ( int, float, string, func, class, instance и т.д.), но нет производных переменных - указателей и ссылок (формат записи: тип* - указатель, тип& - ссылка), которые представляют из себя адреса места в памяти, где расположена переменная. Попробую пояснить: например, функция C_ITEM Npc_GetEquippedArmor(C_NPC n0); возвращает не сам класс C_ITEM, а только адрес класса, в нормальном языке программирования это должно бы выглядеть так C_ITEM* (указатель) или C_ITEM& (ссылка), тоже относится и к аргументу с типом C_NPC. В связи с такими упрощениями в скриптах невозможно создать функцию возвращающую производный тип. Это могут делать только встроенные функции экзешника, но жить-то надо - и было принято упрощение использовать вместо производных типов (адресов объектов) простой тип INT. К типу INT переопределяется только тип INSTANCE. Поясню: например, функция void Npc_RemoveInvItem(c_npc owner,int itemInstance);, второй аргумент функции имеет тип int, но это не простой тип, а переопределенный, при вызове функции здесь записывается имя конкретной инстанции (например, ItFo_Apple - яблоко будет удалено из инвентаря). Но так как проверки на типы раньше не было, можно было бы записать в качестве второго аргумента любое число, например 10345, - всё бы скомпилировалось, но в игре из инвентаря был бы удален предмет, имеющий номер инстанции 10345, а что это - сказать трудно (в процессе компиляции первая инстанция получает номер 1, вторая - 2 и т.д.). Дальше - чтобы проверить правильность присвоения таких переопределенных типов необходимо их отделить от типа int, вот это и выполняется в файлах RedefinedFunc.d - переопределенные параметры (помечены #) функций и RedefinedLocalVariable.d - переопределенные локальные переменные. Далее - Декомпиляция: встретив число, например, 10345 типа int декомпилятор должен распознать, что это действительно int или номер (ссылка) инстанции, если правильного распознавания не будет, то к чему это приведет - смотри выше, правда, если скрипты не править, а только декомпилировать, а потом компилировать, то ошибки не будет, её не будет и в том случае, если новую инстанцию добавить в конец списка; а если в середину, то все номера инстанций будут смещены, в итоге вместо яблока получишь что-то другое. Эти же два файла нужны и для правильного распознавания переопределенных типов при декомпиляции. В них записаны функции и переменные оригинальных скриптов (какие встретил), если же в модах Готик встречаются новые функции с переопределенными параметрами, то их необходимо зарегистрировать в этих файлах для избежания возможных ошибок. Если что не понятно, спрашивайте! *;)
|
|
|
11.01.2006, 13:07
|
#683
|
|
Re: Декомпилятор скриптов Готики
2Vam:
Проанализировав загрузку модели из файла ASC и запись модели в файл MDL пришел к выводу, что обратный процесс создания модели из файла MDL практически невозможен.
|
Если есть кто-то хорошо знающий принципы построения графических изображений и векторную алгебру...
|
Если еще нужно... Я хорошо знаю векторную алгебру, и в общих чертах представляю сии принципы - одно время возился с 3d-engine (не готическим, правда). Так что, если это еще актуально, хотел бы попробовать помочь.
|
|
|
17.01.2006, 15:29
|
#685
|
|
Re: Декомпилятор скриптов Готики
2TSYLin:
Но если изменить self.name[0] на self.name компиляция идёт, но в игре данная строкка не появляется, прошу помощи!
|
Правильная запись self.name, именно без нуля. Почему строка не появляется в игре сказать не могу, этот кусок отсутствует в приведённой части.
|
|
|
30.01.2006, 13:22
|
#686
|
|
Re: Декомпилятор скриптов Готики
Скачать последнюю версию Декомпилятора v2.20, а также прочитать подробное руководство по использованию программы можно з десь.
|
|
|
05.02.2006, 15:45
|
#689
|
|
Re: Декомпилятор скриптов Готики
Название каталога Content - без знака подчеркивания. Scripts\Content - так должно быть.
|
Извеняюсь, кинул датник в Scripts/_compiled и Zspy выдаёт ошибку 00:00 Info: 5 U: PAR: Loading GOTHIC.DAT .... <zError.cpp,#462> 00:00 Fatal:0 B: zDSK: No such file or directory. (ENOENT) in Open "GOTHIC.DAT" .... <Zdisk.cpp,#365>
|
|
|
11.02.2006, 12:33
|
#690
|
|
Re: Декомпилятор скриптов Готики
Название каталога Content - без знака подчеркивания. Scripts\Content - так должно быть. Извеняюсь, кинул датник в Scripts/_compiled и Zspy выдаёт ошибку
00:00 Info: 5 U: PAR: Loading GOTHIC.DAT .... <zError.cpp,#462> 00:00 Fatal:0 B: zDSK: No such file or directory. (ENOENT) in Open "GOTHIC.DAT" .... <Zdisk.cpp,#365>
|
Ну, что никто не знает?
|
|
|
11.02.2006, 22:48
|
#692
|
|
Re: Декомпилятор скриптов Готики
2Тольман-Готоман:
А это прочитать слабо - подробное руководство по использованию программы з десь, всего-то на 3 поста выше. Если всё сделаешь правильно, то всё получится.
А ты положи все это в папку с готикой. Чтобы GothicSourcer.exe и zSpy.exe были в System а скрипты в _work\Data\Scripts и разложи по директориям.
|
Читай там же - никуда и ничего копировать и ложить не надо.
|
|
|
11.02.2006, 23:56
|
#693
|
|
Re: Декомпилятор скриптов Готики
2Vam:
Если всё сделаешь правильно, то всё получится.
|
Спосибо, но всё получилось как сказал 2-AlexX-:
|
|
|
25.02.2006, 10:55
|
#694
|
|
Re: Декомпилятор скриптов Готики
Проблемы с конвертированием типов переменных в "новых" (выше 1.91) версиях компилятора. Использовался GothicSourcerV2_20.exe
В своем моде для Г1 я захотел оптимизировать несколько часто используемых функций. И вот что из этого получается.
Например:
func void B_ClearItems(var int ClrItm) { Npc_RemoveInvItems(self,ClrItm,Npc_HasItems(self, ClrItm)); };
B_ClearItems(ItRu_Light);
Компилятор выдает: невозможность конвертирование типа instance в int. Действительно, по идее должно быть (var C_Item), НО переменная, описывающая предмет для функций Npc_RemoveInvItems и Npc_HasItems (по урокам скриптологии) все же должна быть INT.
(int Npc_HasItems (c_npc n0, int itemInstance); - возвращает количетво предметов itemInstance у НПС n0.) (void Npc_RemoveInvItems (c_npc owner, int itemInstance, int amount); - указанное кол-во amount предметов itemInstance удаляется из инвентаря НПС owner и из игры.)
Компилятором версии 1.91 никаких варнингов не появляется и в игре все работает нормально.
Пример 2: Сделал функцию, аналогичную Г2а, придающую неписю заданный вид.
func void B_SetNpcVisual(var C_Npc slf,var string bodymesh, var int bodytex, var int bodyskin, var string headmesh, var int facetex, var int teethtex, var int armorInstance) { Mdl_SetVisual(slf,"HUMANS.MDS"); if(slf.guild == GIL_BAB) { bodyTex = bodyTex + 5; }; Mdl_SetVisualBody(self, bodymesh, bodytex, bodyskin, headmesh, facetex, teethtex, armorInstance); };
B_SetNpcVisual(self,"hum_body_Naked0",0,1,"Hum_Hea d_FatBald",15,1,grd_armor_h);
и снова на (var int armorInstance) выдается ошиба невозможности конвертирования типов, хотя по урокам скриптологии тип переменной для функции Mdl_SetVisualBody правильный, но как обычно предмет брони относится к класу C_Item. void Mdl_SetVisualBody (c_npc self, string body, int bodytex, int color, string head, int htex, int ttex, int armor); - установить параметры изображения НПС self, где : body – имя mesh файла изображения тела, bodytex – номер текстуры тела, color – номер палитры цвета кожи, head – имя MMS файла изображения головы, htex – номер текстуры головы, ttex – номер текстуры зубов, armor – номер одетой брони (- 1 – брони нет).***
Но в Г2а на подобную функцию компилятор не ругается. Это что, дикая дискримминация :) прошитое исключение из правил? Так можно ли сделать принудительное отключение проверки типов переменных, если разработчик модификации точно уверен в том, что функция в игре будет нормально работать, тем более он это не раз протестировал на старой версии компилятора.
|
|
|
25.02.2006, 15:09
|
#695
|
|
Re: Декомпилятор скриптов Готики
2Ukur:
Проблемы с конвертированием типов переменных в "новых" (выше 1.91) версиях компилятора. Использовался GothicSourcerV2_20.exe
|
Пост №681 должен тебе помочь. При создании новой функции с переопределенным возвращаемым значением или аргументом декларацию этой функции нужно поместить в файл RedefinedFunc.d (для переменных - файл RedefinedLocalVariable.d)
Компилятором версии 1.91 никаких варнингов не появляется и в игре все работает нормально.
|
Проверка на ошибки введена с версии 2.0, указанная тобой версия компилирует как и Спейсер - без проверок на ошибки. Вывод: Прочитай указанный пост, зарегистрируй свои новые функции в файле и всё должно быть ОК. Успехов! Если что-то не получилось, спрашивай.
|
|
|
25.02.2006, 17:12
|
#696
|
|
Re: Декомпилятор скриптов Готики
2Vam:
Да, я уже видел указанный пост, но не разбирался в нем... 2Vam:
зарегистрируй свои новые функции в файле и всё должно быть ОК.
|
Дейсствительно, все прошло на ОК.
|
|
|
26.02.2006, 09:24
|
#698
|
|
Re: Декомпилятор скриптов Готики
2Extinction:
Люди можете мне помочь? Что там в командной строке нужно написать чтобы открыть GothicSource ?
|
Читай пост №691.
|
|
|
26.02.2006, 17:06
|
#700
|
|
Re: Декомпилятор скриптов Готики
2Extinction:
PAR: Loading GOTHIC.DAT .... <zError.cpp,#462> zDISKL No such file or directory. (ENOENT) in Open "GOTHIC.DAT" .... <Zdisk,cpp,#365>
|
А ты gothic.dat в папку .._work\data\Scripts\_compiled декомпилятора положил? Программа говорит, что его там нет. P.S. Не забудь положить в нужное место и ou.bin
|
|
|
26.02.2006, 17:24
|
#702
|
|
Re: Декомпилятор скриптов Готики
2Extinction:
PAR: External AI_LOOKFORTIEM not found. .... ,zParser_Sumbol.cpp,#1123 PAR: Dat-File is not compatible (Classoffset changed) ! Please reparse ! .... <zParser.cpp,#599
|
Всё просто - у тебя датник от одной Готики, а в опции -zgamе: указана другая Готика, приведи в соответствие.
|
|
|
26.02.2006, 17:59
|
#704
|
|
Re: Декомпилятор скриптов Готики
2Extinction:
т.е. *мне надо написать -zgame:1 * * ? или что ?
|
Во-первых: Это читал? Подробное руководство по использованию программы з десь. Во-вторых: там же написано -zgame:х – задает версию Готики х = 0 – Готика и её моды х = 1 – Готика 2 и её моды х = -1 – демоверсия Готики какую Готику декомпилируешь, ту и укажи в опции. P.S. Ворчание... Какая же молодежь пошла нетерпеливая - всё разжуй, да ещё и в рот положи. Самому-то тоже соображать немного надо.
|
|
|
26.02.2006, 19:48
|
#706
|
 |
|
 |
|
Регистрация: 15.04.2004
Адрес: Санкт-Петербург
Сообщений: 372
|
|
 |
|
 |
|
Re: Декомпилятор скриптов Готики
2Extinction: Либо учим английский, либо бросаем скриптинг. Следующий глупый вопрос будет расценен как флуд.
File CONTENT\STORY\LOG_ENTRIES\LOG_CONSTANS_HOSHI.D not found
|
Файл CONTENT\STORY\LOG_ENTRIES\LOG_CONSTANS_HOSHI.D не найден. Это перевод.
|
|
|
26.02.2006, 21:10
|
#708
|
|
Re: Декомпилятор скриптов Готики
2Extinction:
Так у мя есть этот файл. Почему тогда говорит что его нету ?
|
Если программа говорит, что файла нет - значит его нет. Разберись, что ты компилируешь, оригинальные скрипты или декомпилированные (в руководстве всё это есть) и в той ли ты папке смотришь наличие файла.
|
|
|
28.02.2006, 09:22
|
#710
|
|
Re: Декомпилятор скриптов Готики
2-AlexX-:
Причем, эти ошибки - просто ошибки return function. Есть варианты выхода из этой ситуации?
|
Если это ошибка, а не внимание, то выход один - исправлять. *:( ЗЫ: Но такому опытному скриптёру как ты, не потребуется много времени на исправление. ;)
|
|
|
28.02.2006, 11:35
|
#712
|
|
Re: Декомпилятор скриптов Готики
Уважаемые, вы случайно не подскажете, при установке какой программы ставится NET. Framework 2.0 (на крайний случай 1.1), а то графическая оболочка без нее работать не хочет, а без нею не могу декомпилировать Gothic.dat, хотя все остальные декомпилируются нормально. Так вот с графической оболочкой раньше все работало нормально, просто даже отлично, но однажды я решил преустановить Windows, после чего NET. Framework кстественно исчез. С помощью какой программы ставил не помню, я с Internet качать неохото, 20 метров все-таки. Пожалуйста подскажите програмку в комлекте с которой ставится NET. Framework или подскажите, как решить мою проблему.
|
|
|
28.02.2006, 13:45
|
#714
|
|
Re: Декомпилятор скриптов Готики
2-AlexX-:
Исправлять некогда Тогда такой вопрос. Spacer 1.5 эти ошибки не видит, но комплирует скрипты ОЧЕНЬ долго! Хотя раньше он делал это секунд за 20. В чем может быть проблема?
|
В это трудно поверить; пока ты всё это пишешь и спрашиваешь, да ещё разбираешься со Спейсером - давно бы уже всё исправил, надо-то всего полчаса. По Спейсеру ничем помочь не смогу.
|
|
|
28.02.2006, 15:22
|
#715
|
 |
|
 |
|
Регистрация: 19.06.2004
Адрес: г. Белая Калитва.
Сообщений: 204
|
|
 |
|
 |
|
Re: Декомпилятор скриптов Готики
2Scorpion4iK: Посмотри диски с софтом какие нибудь. Кажется еще на дровах на видеокарту Радеон у друга Фрэймворк ставился сразу. Так что качай с инета.
2Vam: Ну не знаю, я в Руссобите все внимания правил (ну или осталось штук 10) и это заняло где то часа 3 монотонного copy-paste.
|
|
|
28.02.2006, 16:19
|
#716
|
|
Re: Декомпилятор скриптов Готи
2Scorpion4iK:
а то графическая оболочка без нее работать не хочет, а без нею не могу декомпилировать Gothic.dat
|
А в чём, собственно проблема? можно ведь и не использовать графическую оболочку - понаделал ярлыков, или, как вариант, батников и штампуй:) да и вообще... с переходом на dotnetFX эта самая графическая оболочка стала ещё более невостребованной.. для меня, к примеру. Вот перейдём на висту - тогда пожалста, а пока даже и искать не хочется.
|
|
|
28.02.2006, 18:35
|
#717
|
|
Re: Декомпилятор скриптов Готики
2Killer-XXX:
Ну не знаю, я в Руссобите все внимания правил (ну или осталось штук 10) и это заняло где то часа 3 монотонного copy-paste.
|
Насчет вниманий с тобой полностью согласен, но речь ведь идет об ошибках. ;)
|
|
|
09.03.2006, 17:28
|
#719
|
|
Re: Декомпилятор скриптов Готики
Скачать последнюю версию Декомпилятора v2.30 можно з десь. Данное новшевство должно облегчить нелёгкую жизнь "ленивым" скриптёрам. Я думаю, они должны его оценить! *:D ;)
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
Опции темы |
Поиск в этой теме |
|
|
Ваши права в разделе
|
|
|
|
Текущее время: 22:58. Часовой пояс GMT +4.
|
|
|
|
 |
|
 |
|
|
|
|
|
|
|
|
|