|
|
19.12.2005, 09:05
|
#641
|
|
Re: Декомпилятор скриптов Готики
2Killer-XXX:
Забыл, сам сейчас проверить не могу, но хотелось бы знать, как я понял при конвертировании в asc модель получается без скелета? Или с ним?
|
До декомпиляции файлов моделей в asc файл ещё очень далеко (да и возможно ли это?), пока сделаны только конвертеры файлов моделей между Г1 и Г2. Для "обычных" моделей в конвертации нуждаются файлы MDL и MDM, остальные файлы подходят без конвертации, но при переносе модели из Г1 в Г2 (и наоборот) нужно переносить все необходимые файлы. Для переноса morph модели нужно конвертировать mmb файл, а может быть и ещё что-то, пока не разобрался. Конвертер morph моделей - это следующий шаг развития программы. 2TSYLin:
Кстати хотел спросить! При повторной конвертации из Макса в Готу файлов типа ACS происходит потеря вот этого куска
|
Блок *MESH_SOFTSKINVERTS в asc файле необходим для нормальной работы модели. К сожалению, работу конвертеров из Макса в asc (и наоборот) я не знаю.
|
|
|
19.12.2005, 12:13
|
#642
|
|
Re: Декомпилятор скриптов Готики
2Vam:
Для переноса morph модели нужно конвертировать mmb файл, а может быть и ещё что-то, пока не разобрался. Конвертер morph моделей - это следующий шаг развития программы.
|
morph модель или динамический меш в исходном виде представляет собой скрипт MMS, который в свою очередь содержит: 1) строчку morphRef(), определяет ASC morph mesh, это информация о материалах, меше и еще какая-то информация о трансформации 2) строчку(строчки) morphAni(), определяет ASC morph animation, это информация опять о материалах и анимации меша. Скрипт MMS со всеми требуемыми ASC компилируется в один MMB файл. Возможно, для конвертации из одной готики в другую опять же достаточно подправить свойства материала в MMB, здесь скорее всего они повторяются один раз. Что касается конвертации в исходный вид, то очень интересует получение исходных скриптов MMS, которых нет, а именно на головы людей, луки, арбалеты. Остальное конвертирование малополезно. 2TSYLin:
При повторной конвертации из Макса в Готу файлов типа ACS происходит потеря вот этого куска
|
Это привязка вертексов к скелету и она обязательно нужна. Писал чуть выше.
возможно ли в будущем создать так же код переноса моделей из Г1 в Г2, и обратно(MRM)?
|
А не проще ли скачать оба полных модкита и пользоваться ими, так как все исходные 3ds там есть !
|
|
|
20.12.2005, 22:50
|
#643
|
|
Re: Декомпилятор скриптов Готики
2WSA:
А не проще ли скачать оба полных модкита и пользоваться ими, так как все исходные 3ds там есть !
|
Да, это есть, но как же пользоваться предметами из модов, напимер мне надо перенести предметы из диккурика в Г2Аддон? Если кому интересно, я накопал какой моб за что отвечает, для первой Готики, очень странно то, что некоторые мобы показыватются в виде моднелей, на которые натягиваются отсутсвующие текстуры, хотя все текстуры есть): BABEBED_1.ASC // Двухместная кровать, как в замке Гомеза BACKPACK_1.ASC // Похожа на взаваленный правиант из первой Готики BARBQ_SCAV.ASC // Барбикю из падальщика (АКА стервятника) BARREL_1_OC.ASC // Бочка, пустая BARREL_2_OC.ASC // Бочка, заполенная BARRELMOUNTED_OC.ASC // Бочка, на боку BARRELO_OC.ASC // Бочонок BASKET_RICE.ASC // Тарелка для промыва риса BATHTUB_WOODEN.ASC // Ванна для мытья BED_1_OC.ASC // Кровать из Первой Готики BED_2_OC.ASC // Кровать, но более неказистая BEDHIGH_1_OC.ASC // Большой ящик, оборудованный для кровати BEDHIGH_2_OC.ASC // Отличнозастеленная кровать, как у наёмников из Г1 BEDHIGH_PC.ASC // Кровать из Братства Спящего BEDLOW_NC.ASC // Подстилка для сна, как у уборщиков Риса из Г1 BEDLOW_PC.ASC // Подстилка для сна, как у сектантов из Г1 BELLOW_MINE.ASC // Огромнейшая раздувательная машина BENCH_1_NC.ASC // Лавочка из Готики 1, слегка грубоватая, но хорошая! BENCH_1_OC.ASC // Лавочка в форме бревна (точнее само бревно, на котором сидят) BENCH_2_OC.ASC // Хорошая скамейка BENCH_3_OC.ASC // Полностью деревянная лавочка BENCH_THRONE.ASC // Стул для баронов BOOK_BLUE.ASC // Подставка для книг, из первой Готики. (Как у Ли в комнате) BSANVIL_OC.ASC // Наковальня BSCOOL_OC.ASC // Вода для охлаждения клинка. (Всегда рядом с наковальней) BSFIRE_OC.ASC // Горнило BSSHARP_OC.ASC // Точило CAULDRON_OC.ASC // Большой котёл для варки CHAIR_1_NC.ASC // Пенёк, для сидения CHAIR_1_OC.ASC // Деревянный стул CHAIR_1_PC.ASC // Деревянный стул из Братства Спящего CHAIR_2_NC.ASC // Камень, для сидения CHAIR_2_OC.ASC // Деревянный стул в виде гриба CHAIR_3_OC.ASC // Деревянный стул на трёх ножках CHAIR_3_PC.ASC // Каменный стул, как у ЮБериона CHAIR_THRONE.ASC // Стул как у баронов, но удобнее CHESTBIG_OCCHESTLARGE.ASC // Сундук из Миненталя без замка CHESTBIG_OCCHESTMEDIUM.ASC // Сундук из Миненталя без замка. Второй вид. CHESTBIG_OCCRATELARGE.ASC // Сундук, похожий на коробку, использовался только в Первой Готике CHESTBIG_ORCMUMMY.ASC // Сундук в виде сундука CHESTSMALL_OCCHESTSMALL.ASC // Сундук из Миненталя без замка. Третий вид. CHESTSMALL_OCCRATESMALL.ASC // Сундук, похожий на коробку, использовался только в Первой Готике. Второй вид. DOOR_WOODEN.ASC // Дверь из Старого лагеря DRUM_IE.ASC // Барабан как у ЭнЭкстремо EXCALIBUR_1.ASC // Место для втыкания мечей, из Храма Спящего FIREPLACE_GROUND.ASC // Ксотёр, ещё горит FIREPLACE_GROUND2.ASC // Затушенный костер Орков FIREPLACE_HIGH.ASC // Железный столб с факелом FIREPLACE_HIGH2.ASC // Столб с факелом FIREPLACE_MIDDLE.ASC // Настенный факел FIREPLACE_NCSTONE.ASC // Костёр в виде каменной ложки FIREPLACE_NCSTONE2.ASC // Каменное место FIREPLACE_ORCSTAND.ASC // Каменный котёл орков FIREPLACE_PCHIGH.ASC // Огромный каменно-железный факел орков FIREPLACE_PCHIGH2.ASC // Железный факел орков HERB_PSI.ASC // Готовка еды, из Готики 1, послушники Спящего! IDOL_SLEEPER3_PC.ASC // Бюст Спящего LEVER_1_OC.ASC // Переключатель LOVEBED_OC.ASC // Кровать для двоих MOB_GONG.ASC // Гонг MOB_PAUKE.ASC // Барабан ORCDRUM_1.ASC // Орочий арабан ORE_GROUND.ASC // Медная Жила PAN_OC.ASC // Сковорода для жарки мяса PILLAR_7M.ASC // Огромный столб, видимо из храма Спящего PILLAR_ORC.ASC // Столб с секретом. Орки и храм Спящего! PRIESTGRAVE_OT.ASC // Саркофаг от мумии, из Храма Спящего! PUSH_STONE.ASC // большой квадратный камень, затрудняюсь ответить откуда он. SCAV_MEAT.ASC // туша протухлого падальщика SECRETDOOR_STONE.ASC // Секретная дверь, тоже из Храма Спящего SMOKE_WATERPIPE.ASC // Кальян SPORTAL_SLEEPER.ASC // Хранилище сердец Шаманов Спящего STOMPER_OM.ASC // Огромная установка по добыче руды, которую кртуил Орк-раб STONEMILL_OM.ASC // Огромная устновка по добыче руды, но орк должен крутить как осёл THRONE_BIG.ASC // Трон Гомеза TOUCHPLATE_STONE.ASC // Маленький каменный переключатель TURNSWITCH_BLOCK.ASC // Огромный каменный переключатель VOBBOX_1.ASC // Что-то для спейсера, в игре не используется VWHEEL_1_OC.ASC // Огромная лебёдка Вот ещё у меня вопрос, какие файлы анимации(расширения) можно безболезненно переносить из Г1 в Г2?
|
|
|
21.12.2005, 10:35
|
#644
|
|
Re: Декомпилятор скриптов Готики
2TSYLin:
Вот ещё у меня вопрос, какие файлы анимации(расширения) можно безболезненно переносить из Г1 в Г2?
|
1. Статическая модель.MDL - через конвертацию. 2.Динамическая модель.MAN, MDH, MDS - напрямую Примечание: Для переноса из Г2 в Г1 скрипта модели (MSB) необходимо перенести его копию из MDK, т.е. файл MDS. MDM - через конвертацию Как определить какие файлы относятся к динамической модели: 1. Файл MDS (MSB для Г2) - скрипт модели. 2. Файл MDH - его имя совпадает с именем MDS. 3. Файлы MAN - их имена строятся следующим образом: имя MDS файла + третий параметр из строки ani (ххх) MDS файла через -. (Для простоты - все MAH файлы первая часть имени которых совпадает с именем MDS). 4. Файлы MDM - их имя является параметром строки registerMesh ("имя") из файла MDS. (Для простоты - все MDM файлы из директории _converted при конвертации одного скрипта модели MDS (MSB для Г2). 3. Трансформация меша.MMB - через конвертер (пока ещё не готов).
|
|
|
22.12.2005, 15:16
|
#646
|
 |
|
 |
|
Регистрация: 19.06.2004
Адрес: г. Белая Калитва.
Сообщений: 204
|
|
 |
|
 |
|
Re: Декомпилятор скриптов Готики
2Vam: Ну из доступных asc у нас есть только брони. Бери на Г1 здесь и на Г2 здесьЗ.Ы. Это тока странички, сначала открой и там ссылочки возьми.
|
|
|
24.12.2005, 18:17
|
#647
|
|
Re: Декомпилятор скриптов Готики
У меня вопрос.С помощью компилятора сделал конвертацию всех монсторов(хотя мне нужен тока элитный орк).Хотел уточнить из Готы2 в 1.Но при вставки игра вылетает,даже не заходя в главное меню,вот что я делал: 1)Распаковал с помощью проги VDFS->Anims.vdf(распоковал в папку на рабочем столе) 2)Из папки _WORK\DATA\ANIMS\_COMPILED взял что было и всунул в C:\DECOMPILED\_work\data\Anims\_compiled 2)Дальше сделал конвертацию(тоесть сначало zlog:8,s -zfile: -zcomp:2,0 -zgame:1 а потом zlog:8,s -zfile: -zcomp:2,1 -zgame:1). 3)После этого в C:\DECOMPILED\_work\data\Anims\_converted появились файлы,я их перенёс(перенёс всё) в Gothic\_work\data\Anims\_compiled. 4)Дальше присвоил внешность элитного орка ГГ и Диего.Тоесть вместо их визуалиции прописал: Mdl_SetVisual(self,"Orc.mds"); Mdl_SetVisualBody(self,"Orc_BodyElite",DEFAULT,DEF AULT,"Orc_HeadWarrior",DEFAULT,DEFAULT,-1); Ну закомпилировал и вставил Gothic.dat и OU.bin в Готу1. Захожу в неё и не доходя до главного меню игра вылетает. Что я сделал не правильно?
|
|
|
24.12.2005, 22:22
|
#648
|
|
Re: Декомпилятор скриптов Готики
Цитата:
Сообщение от DEDROIT link=board=gothic&t=1095241429&start=625#646 date=12/24/05, в 17:17:27
У меня вопрос. 4)Дальше присвоил внешность элитного орка ГГ и Диего.Тоесть вместо их визуалиции прописал: Mdl_SetVisual(self,"Orc.mds"); Mdl_SetVisualBody(self,"Orc_BodyElite",DEFAULT,DEF AULT,"Orc_HeadWarrior",DEFAULT,DEFAULT,-1); Захожу в неё и не доходя до главного меню игра вылетает.
|
Ага, а Mdl_ApplyOverlayMds(self,"Humans_Arrogance.mds"); оставил как было? Получи результат...там Orc, a тут Humans...
|
|
|
24.12.2005, 22:36
|
#649
|
|
Re: Декомпилятор скриптов Готики
2basilio58: У меня нет такой строчки.Может мы про разные Готы говорим,вот часть скрипта: instance PC_Thief(Npc_Default) { name[0] = "Диего"; npcType = npctype_friend; guild = GIL_STT; level = 999; voice = 11; id = 1; flags = NPC_FLAG_IMMORTAL; Mdl_SetVisual(self,"Orc.mds"); Mdl_SetVisualBody(self,"Orc_BodyElite",DEFAULT,DE FAULT,"Orc_HeadWarrior", DEFAULT,DEFAULT,-1); attribute[ATR_STRENGTH] = 70; attribute[ATR_DEXTERITY] = 90; attribute[ATR_MANA_MAX] = 0; attribute[ATR_MANA] = 0; attribute[ATR_HITPOINTS_MAX] = 340; attribute[ATR_HITPOINTS] = 340; protection[PROT_FIRE] = 1000; Npc_SetTalentSkill(self,NPC_TALENT_PICKPOCKET ,1); Npc_SetTalentValue(self,NPC_TALENT_PICKPOCKET,60) ; Npc_SetTalentSkill(self,NPC_TALENT_SNEAK,1); Npc_SetTalentSkill(self,NPC_TALENT_PICKLOCK,1 ); Npc_SetTalentValue(self,NPC_TALENT_PICKLOCK,6 0); Npc_SetTalentSkill(self,NPC_TALENT_MAGE,6); Npc_SetTalentSkill(self,NPC_TALENT_1H,1); Npc_SetTalentSkill(self,NPC_TALENT_BOW,1); EquipItem(self,Diegos_Bogen); EquipItem(self,ItMw_1H_Sword_04); CreateInvItems(self,ItAmArrow,100); daily_routine = Rtn_PreStart_1; fight_tactic = FAI_HUMAN_MASTER; aivar[AIV_IMPORTANT] = TRUE; senses = SENSE_SEE | SENSE_HEAR | SENSE_SMELL; };
|
|
|
25.12.2005, 01:51
|
#650
|
|
Re: Декомпилятор скриптов Готики
2Vam:
Мне удалось конвертировать почти все нужные мне модели животных из формата Г2(а) в формат Г1. Для того, чтобы произвести конвертирование какой-либо *.MDM модели, в комнадную строку нужно было заносить *.MDS этой модели. Например: для модели GOB_BODY.MDM, с файлом Gobbo.MDS, командная строка выглядела так: GothicSourcerV2_15.exe -zlog:8,s -zfile:Gobbo -zcomp:2,1 -zgame:1 Но в некоторых случаях, когда *.MDM (*.ASC) модель не была изначально зарегестрирована в *.MDS файле, но использовала его: Например: GOBBO_SKELETON_BODY.MDM использует Gobbo.MDS // func void Set_GobboSkeleton_Visuals() { Mdl_SetVisual(self,"Gobbo.mds"); Mdl_SetVisualBody(self,"Gobbo_Skeleton_Body",DEFA ULT,DEFAULT,"",DEFAULT,DEFAULT,-1); }; // Конвертер НЕ ЗАМЕЧАЛ данную модель и не конвертировал, даже после того, как она была занесена в *.MDS файл. Выход был найден: GOBBO_SKELETON_BODY.MDM был переименован в GOB_BODY.MDM, успешно конвертирован, а затем обратно переименован в GOBBO_SKELETON_BODY.MDM и впоследствии успешно вставлен в игру, аналогичное решение было предпринято и для Мракориса(Скелета-мракориса). Вообщем все конвертированные модели успешно прижились в игре, в т.ч и "Баран", см. пред. посты. НО, в игре не прижилась ЕДИНСТВЕННАЯ конвертированная модель Болотного голема GOL_SUMPF_BODY.MDM. Были "красные внимания" Шпиона: " [i] 00:00 Info: 2 N: MSB: Loading Model-Script (binary) 'SWAMPGOLEM.MSB' ... .... <zModelProto.cpp,#3965> [i] 00:00 Info: 5 D: MDL: Loading Model-Hierarchy: SWAMPGOLEM.MDH .... <zModelProto.cpp,#1664> [i] 00:00 Info: 5 D: MDL: Parsing 'aniEnum'... .... <zModelProto.cpp,#3445> [w] 00:00 Warn: 0 D: MSB: Frame-Number is out of bounds, ani: S_FISTRUNL .... <zModelProto.cpp,#3902> [w] 00:00 Warn: 0 D: MSB: Frame-Number is out of bounds, ani: S_FISTWALKL .... <zModelProto.cpp,#3902> [w] 00:00 Warn: 0 D: MSB: Frame-Number is out of bounds, ani: T_FALL_2_FALLEN .... <zModelProto.cpp,#3902> [i] 00:00 Info: 5 D: MSB: numAnis: 146, numMAN: 49 .... <zModelProto.cpp,#3924> [i] 00:00 Info: 5 D: MSB: fpsRates min, max, avg: 12.5, 25, 24.34 .... <zModelProto.cpp,#3926> [i] 00:00 Info: 5 D: MDL: Saving Model-Mesh: GOL_SUMPF_BODY.MDM .... <zModelProto.cpp,#4236> [i] 00:00 Info: 3 D: MDL: Saving SoftSkin, polys: 530, verts: 314, mem: 11915 .... <zProgMeshProto.cpp,#2483> [i] 00:00 Info: 0 D: MDL: File "SWAMPGOLEM.MSB" converted OK. .... <zModelProto.cpp,#228> " В данном случае: func void B_SetVisuals_Swampgolem() { Mdl_SetVisual(self,"SwampGolem.mds"); Mdl_SetVisualBody(self,"Gol_Sumpf_Body",DEFAULT,D EFAULT,"",DEFAULT,DEFAULT,-1); }; ...игра попросту вылетала. Но если присвоить *.mds файл обыкновенного голема: func void B_SetVisuals_Swampgolem() { Mdl_SetVisual(self,"Golem.mds"); Mdl_SetVisualBody(self,"Gol_Sumpf_Body",DEFAULT,D EFAULT,"",DEFAULT,DEFAULT,-1); }; ...игра не вылетала, модель болотного голема была прозрачная. --- --- --- Другие вопросы. Конвертировал: 1. Болотную вонючку (SwampDrone_Body.mdm), в Г2(а) существо плевалось зеленой жижей, в данное время нет... 2. Летающий огонек (Irrlicht_Body.mdm), в Г2(а) огонек переливался, в данное время похож на точку... Это анимации модели, или эффекты зашитые в частицах (движке) Г2(а)? Драконов, людей-ящеров конвертированию не подвергал, т.к. некуда пока пристроить :) 2DEDROIT:
Что я сделал не правильно?
|
Хм... (типа для важности размышления :) ) 2DEDROIT:
2)Дальше сделал конвертацию(тоесть сначало zlog:8,s -zfile: -zcomp:2,0 -zgame:1 а потом zlog:8,s -zfile: -zcomp:2,1 -zgame:1).
|
Я не понял? Вы убедились, что режим конвертирования: "4. Конвертация *.mdl файла (с = 2, d = 0)." для многих моделей не работает и потом успешно выполнили: "5. Конвертация *.mdm файлов (с = 2, d = 1)." Ну, пока все правильно. 2DEDROIT:
3)После этого в C:\DECOMPILED\_work\data\Anims\_converted появились файлы,я их перенёс(перенёс всё) в Gothic\_work\data\Anims\_compiled.
|
Отлично, НО, я не вижу того, что вы положили в "Gothic\_work\data\Anims\_compiled" остальные составляющие модели: *.MAN (возможно и существующие в Г1 пододут...), Orc.mdh. Также игра может вылететь, если вы случайно запихнете туда же *.MDL, одноименный *.MDM файлу конвертированной модели.
|
|
|
26.12.2005, 09:50
|
#651
|
|
Re: Декомпилятор скриптов Готики
2Ukur:
Но в некоторых случаях, когда *.MDM (*.ASC) модель не была изначально зарегестрирована в *.MDS файле, но использовала его: Например: GOBBO_SKELETON_BODY.MDM использует Gobbo.MDS // func void Set_GobboSkeleton_Visuals() { * * Mdl_SetVisual(self,"Gobbo.mds"); * * Mdl_SetVisualBody(self,"Gobbo_Skeleton_Body",DEFAU LT,DEFAULT,"&am p;qu ot;,DEFAULT,DEFAULT,-1); }; // Конвертер НЕ ЗАМЕЧАЛ данную модель и не конвертировал, даже после того, как она была занесена в *.MDS файл.
|
Да, такая проблема имеет место, в Г2 есть несколько незарегистрированных мешей, регистрация их в MDS бесполезна, конвертер для Г2 использует только MSB файл, а в двоичный файл ничего не вставишь, пока не знаю что и придумать, хотя способ с переименованием - тоже выход.
НО, в игре не прижилась ЕДИНСТВЕННАЯ конвертированная модель Болотного голема GOL_SUMPF_BODY.MDM. Были "красные внимания" Шпиона: [w] 00:00 Warn: 0 *D: * *MSB: Frame-Number is out of bounds, ani: S_FISTRUNL .... <zModelProto.cpp,#3902> [w] 00:00 Warn: 0 *D: * *MSB: Frame-Number is out of bounds, ani: S_FISTWALKL .... <zModelProto.cpp,#3902> [w] 00:00 Warn: 0 *D: * *MSB: Frame-Number is out of bounds, ani: T_FALL_2_FALLEN .... <zModelProto.cpp,#3902>
|
По идее эта модель тоже должна работать и в Г1, есть такое предположение: возможно, в Г2 MSB и MDS файлы разные, конвертируется в Г1 файл MSB, а конкретно переноситься файл MDS. Необходимо проверить таким образом: в Г2 удалить файл MSB, запустить игру -> будет создан файл MSB идентичный MDS, затем конвертировать. Теперь о вниманиях, они на общую работоспособность модели не влияют, "Frame-Number is out of bounds" говорит о том, что некоторые эффекты (PFX и звуковые) анимации модели находятся за пределами этой фазы анимации, хотя и принадлежат ей. Пример: ani ("s_FistWalkL" 1 "s_FistWalkL" 0.0 0.1 M. "Tro_WalkLoop_M01.asc" F 13 62) { * **eventSFX (10 "TRO_STEPLIGHT" EMPTY_SLOT) * **eventPFX (20 "GolemDust" "BIP01 R Foot" ATTACH) * **eventSFX (44 "TRO_STEPLIGHT" EMPTY_SLOT) * **eventPFX (64 "GolemDust" "BIP01 L Foot" ATTACH) } последние два параметра строки ani(xxx) задают номера начального и конечного фреймов фазы анимации, в остальных строках первый параметр является номером фрейма на котором включается соответствующий эффект. В данном примере в строках 2 и 3 ошибок нет (фазы 20 и 44), а в строках 1 и 4 есть ошибки (фазы 10 и 64 выходят за пределы данной фазы анимации, фреймы 13 - 62).
|
|
|
26.12.2005, 17:51
|
#652
|
|
Re: Декомпилятор скриптов Готики
2Vam:
По идее эта модель тоже должна работать и в Г1, есть такое предположение: возможно, в Г2 MSB и MDS файлы разные, конвертируется в Г1 файл MSB, а конкретно переноситься файл MDS. Необходимо проверить таким образом: в Г2 удалить файл MSB, запустить игру -> будет создан файл MSB идентичный MDS, затем конвертировать.
|
Ваш предположение оказалось истиной. Удалил MSB файл, запустил Г2а, сгенерировался новый MSB файл, причем размер нового файла был на несколько байт меньше. Снова переконвертировал, и о чудо, голем без проблем появился в Г1. 2Vam:
Да, такая проблема имеет место, в Г2 есть несколько незарегистрированных мешей, регистрация их в MDS бесполезна, конвертер для Г2 использует только MSB файл, а в двоичный файл ничего не вставишь, пока не знаю что и придумать, хотя способ с переименованием - тоже выход.
|
А если эту проблему решить так же как и с големом, т.е. удалить MSB из Г2а, зарегистрировать меши моделей в MDS файле и сгенерировать новый MSB.
|
|
|
26.12.2005, 18:07
|
#653
|
|
Re: Декомпилятор скриптов Готики
2Ukur:
А если эту проблему решить так же как и с големом, т.е. удалить MSB из Г2а, зарегистрировать меши моделей в MDS файле и сгенерировать новый MSB.
|
Можно и так, но в будущем постараюсь написать декомпилятор файлов скриптов моделей (MSB -> MDS). Конвертер MMB файлов Готик готов, но не выкладываю, т.к. хочу добавить функцию декомпиляции (MMB -> MMS), пока не очень получается: не знаю откуда взять информацию о номерах начального и конечного фреймов фаз анимации.
|
|
|
26.12.2005, 22:40
|
#654
|
 |
|
 |
|
Регистрация: 19.06.2004
Адрес: г. Белая Калитва.
Сообщений: 204
|
|
 |
|
 |
|
Re: Декомпилятор скриптов Готики
2Vam: Скока не читаю про модели - один фиг постоянно забываю за что какая отвечает, ну да ладно. Вопрос собственно в том, что декомпилятор моделей тока на уровне ядра делается или будет встроен в оболочку декомпилятора 3ей серии?
|
|
|
27.12.2005, 09:12
|
#655
|
|
Re: Декомпилятор скриптов Готики
2Killer-XXX:
Вопрос собственно в том, что декомпилятор моделей тока на уровне ядра делается или будет встроен в оболочку декомпилятора 3ей серии?
|
В последующих версиях (если они будут) останется поддержка всего, что есть в предыдущих версиях.
|
|
|
27.12.2005, 22:26
|
#656
|
 |
|
 |
|
Регистрация: 19.06.2004
Адрес: г. Белая Калитва.
Сообщений: 204
|
|
 |
|
 |
|
Re: Декомпилятор скриптов Готики
2Vam: Ты наверное не совсем меня понял (Ну да, я как заверну, что меня редко понимают :)) Я имел ввиду, что оболочку для декомпилятора которую ты пишешь (что скрин еще показывал) там ведь для скриптов все сделано, прально? Вот, будет ли в нее встроен раздел для моделей или модели будем конвентировать тока через ярлычки\батники?
|
|
|
28.12.2005, 09:59
|
#657
|
|
Re: Декомпилятор скриптов Готики
2Killer-XXX:
Я имел ввиду, что оболочку для декомпилятора которую ты пишешь (что скрин еще показывал) там ведь для скриптов все сделано, прально? Вот, будет ли в нее встроен раздел для моделей или модели будем конвентировать тока через ярлычки\батники?
|
Я тебя понял правильно, написание оболочки пока отложено (занят моделями), да, в первую очередь она "заточена" под скрипты, но и все другие функции планирую реализовать. Если оценить готовность оболочки, то сделано немногим больше половины, туго идет написание полнофункционального редактора скриптов.
|
|
|
30.12.2005, 19:15
|
#659
|
 |
|
 |
|
Регистрация: 19.06.2004
Адрес: г. Белая Калитва.
Сообщений: 204
|
|
 |
|
 |
|
Re: Декомпилятор скриптов Готики
2Vam: Это просьба уже на новый, 2006 год, после всех праздников посмотри пожалуйста ехе от Г1 и от Г2. Все дело в том, что в Г1 работают версии текстур, т.е. HUM_My_Armor_v0-c.tex стандартная текстура. Я в скрипте брони указываю visual_skin = 1; следовательно должна использоваться текстура HUM_My_Armor_v1-c.tex. Но это не происходит в Г2, а вот в Г1 все работает. Этот же баг и с монстрами (хотя в Г2 у них как то на гоблинов накладывается новая текстура).
|
|
|
30.12.2005, 19:42
|
#660
|
|
Re: Декомпилятор скриптов Готи
Представляю Вашему вниманию GothicSourcer Starter, лоадер для декомпилятора. Пока он умеет не много, но совместим с последней версией 2.16 Скачать (17 КБ) Скрин (46 КБ) Требует Microsoft .NET Framework Version 2.0 Redistributable Package версии не ниже 2.0.50727. Скачать здесь (22,4 МБ) --- Так что, если кому нужно - забирайте, комментируйте :)
|
|
|
30.12.2005, 22:30
|
#661
|
|
Re: Декомпилятор скриптов Готики
2Borisoff:
Представляю Вашему вниманию GothicSourcer Starter, лоадер для декомпилятора.
|
Заценил, нужная вещь! 2Borisoff:
Пока он умеет не много, но совместим с последней версией 2.16
|
Да, он не сохраняет настройки, каждый раз нужно все устанавливать по новой.
|
|
|
30.12.2005, 23:35
|
#662
|
 |
|
 |
|
Регистрация: 19.06.2004
Адрес: г. Белая Калитва.
Сообщений: 204
|
|
 |
|
 |
|
Re: Декомпилятор скриптов Готики
2Borisoff: Эм, насколько Я понимаю пересобрать на НЕ .Net Framework не получится... Но хотя бы на первые версии можно? А то 22 мб трудновато осилить.
|
|
|
05.01.2006, 01:10
|
#663
|
|
Re: Декомпилятор скриптов Готики
Цитата:
Сообщение от Killer-XXX link=board=gothic&t=1095241429&start=650#661 date=12/30/05, в 22:35:31
2Borisoff: Эм, насколько Я понимаю пересобрать на НЕ .Net Framework не получится... Но хотя бы на первые версии можно? А то 22 мб трудновато осилить.
|
Друже, ты не расстраивайся! Я скачал...а к нему еще надо инсталлер 3й версии... Да, чего уж мелочиться то? Давай уж сразу Windows Wista закачаем, чтобы лоадер заработал...млин... PS ИМХО прога должна быть ПОЛНОСТЬЮ работоспособна сама по себе, без 100метровых довесков! Извиняюсь, достало...
|
|
|
06.01.2006, 23:20
|
#664
|
|
Re: Декомпилятор скриптов Готики
2Killer-XXX:
Все дело в том, что в Г1 работают версии текстур, т.е. HUM_My_Armor_v0-c.tex стандартная текстура. Я в скрипте брони указываю visual_skin = 1; следовательно должна использоваться текстура HUM_My_Armor_v1-c.tex. Но это не происходит в Г2, а вот в Г1 все работает. Этот же баг и с монстрами (хотя в Г2 у них как то на гоблинов накладывается новая текстура).
|
В Г2 это работает, но как-то странно, например обрабатываются на версии все доспехи, кроме Мага Воды и из Ползунов. А вот животные на версии не обрабатываются, не знаю почему.
|
|
|
07.01.2006, 00:16
|
#665
|
 |
|
 |
|
Регистрация: 19.06.2004
Адрес: г. Белая Калитва.
Сообщений: 204
|
|
 |
|
 |
|
Re: Декомпилятор скриптов Готики
2TSYLin: Странно, но вот как раз на доспехи у меня не получилось.
|
|
|
07.01.2006, 04:18
|
#666
|
|
Re: Декомпилятор скриптов Готики
Буквально два дня назад начал читать эту ветку - очень заинтересовало название. Прочёл всю.. моему восхищению нет предела! У меня нет и базовых знаний того как работает компилятор, а уж каким образом написать декомпилятор я вообще не представляю.
дойдя до конца ветки, скачал саму программу и начал декомпилировать:) первой моей целью стала модификация mudball, решил сделать мада смертным.. но, как и ожидалось, при компиляции gothic.dat повылезала куча ошибок насчёт отсутствия return'ов. скачал codeEditor и сел править. По ходу исправления возникло несколько вопросов, и я решил что задавать лучше их Вам.
1) у меня руссифицированная готика1, файл OU.bin, соответственно, там тоже русский, но при просмотре декомпилированных скриптов обнаружил кучу немецких слов (в диалоги не смотрел) как то: [pre]else if(Npc_GetDistToWP(self,self.wp) > PERC_DIST_DIALOG) { PrintDebugNpc(PD_TA_CHECK,"...Ziel noch zu weit entfernt!"); if(!C_BodyStateContains(self,BS_SWIM))[/pre]
со знанием того, что значат все эти слова было бы легче определить, какое значение надо возвращать.
2) насколько греховно ставить вместо int void где попало? и как определить, можно ли ставить void безнаказанно.
|
|
|
07.01.2006, 12:13
|
#667
|
|
Re: Декомпилятор скриптов Готики
2boobl:
1) у меня руссифицированная готика1, файл OU.bin, соответственно, там тоже русский, но при просмотре декомпилированных скриптов обнаружил кучу немецких слов
|
На аргументы дебаговских функций не обращай внимание, все строчки в них немецкие, никто их не переводил. Это функции, аналогичные PrintDebugNpc (в имени функции есть слово debug)
2) насколько греховно ставить вместо int void где попало? и как определить, можно ли ставить void безнаказанно.
|
Если функция объявлена как int и в конце ничего не возвращает, а в теле функции есть return'ы, то вероятнее всего в конце добавить return 0; Если функция объявлена как int и в теле функции нет return'ов со значением, то вероятнее всего объявить функцию как void. Это общие правила, но в некоторых случаях возможны исключения.
|
|
|
07.01.2006, 13:43
|
#668
|
|
Re: Декомпилятор скриптов Готи
Некоторое замечание по поводу выставления во всех возможных случаях return 0; просматриваю сейчас все ошибки выданные декомпилятором, в числе оных оказалась функция Condition в файле диалогов, которая отвечает за возможность появления определённого диалога. нашёл несколько таких кондишнов в теле которых нет ничего. я сам до этого времени считал что обработчик скриптов, не увидев слова return просто возвращает нулик, в таком случае тот диалог был бы невозможен в любом случае... речь идёт о диалоге со Скатти рядом с ареной, в этом диалоге ГГ говорит "Я хочу сражаться на арене!", но проблема в том что я не помню, есть ли этот диалог на самом деле!! вот и прокрались сомнения в мои рассуждения о умолчаниях.. Дальше - больше: я начал рыться в других диалогах в поисках таких же пустых кондишнов, но имеющих return. я нашёл. там было написано return 1;
---- на этом поток мыслей оборвался
кажется я понял, я был прав.. по дефолту любая функция возвращает 0, и "Я хочу сражаться на арене!" действительно невозможно. видимо разработчики начали писать это, но решили не морочиться с организацией битв на арене, также это объясняет то, что когда спрашиваешь у Скатти насчёт ставки, он говорит что бои пока не намечаются и надо подойти позже.. хорошо. в таком случае в функциях *_loop по дефолту возвращается LOOP_END, как в случае с "ошибочной" функцией рандомной болтовни орков между собой.
а void я ставить всётаки не решаюсь, всёравно возвращаемое значение можно не использовать нигде, больше ошибок от этого не станет.
|
|
|
07.01.2006, 14:57
|
#669
|
|
Re: Декомпилятор скриптов Готики
Приветствую всех! Столкнулся со следующей проблемой. При компиляции Dat ver 2.16 происходит вылет Спейсера и вылет игры. Spacer.rpt: //======================ASSERTION FAILED====================== //======================ASSERTION FAILED====================== Assertion failed: !objectList[index] in file P:\dev\g2addon\release\ZenGin\_dieter\zArchiver2.c pp, Line: 1705 Reason: Archiver tried to overwrite object in its list. Did you try to load an incompatible savegame? EAX=00000000 EBX=0098814C ECX=00849DE9 EDX=7FFE0304 ESI=09379CA9 EDI=009884A0 EBP=0149F82C ESP=0149F4AC EIP=00695CBB FLG=00010246 CS=001B DS=0023 SS=0023 ES=0023 FS=003B GS=0000 //===================== INFOS ========================= Spacer II - 2.6 (mod), Parser Version: 50 User: basilio, CPUType: 586, Mem: 511 MB total, 335 MB free //====================== CALLSTACK ======================== 001B:006ABD75 (0x4E20FFFF 0x00000000 0x008E2BD0 0x65746900) Spacer2.exe //================================================== ===
//===================== MODULES ======================= и так далее....
[i] 00:00 ++++++++++++++ Start by ++++++++++++++ [i] 00:02 Info: 3 B: VP: Initialize zBinkPlayer .... <zBinkPlayer.cpp,#45> [i] 00:02 Info: 3 B: GMAN: Initialize GameManager .... <oGameManager.cpp,#476> [i] 00:02 Info: 2 B: zOPT: Initialize configurations .... <zOption.cpp,#758> [i] 00:02 Info: 3 B: zOPT: Found file paths.d .... <zOption.cpp,#785> [i] 00:02 Info: 5 B: zOPT: Initialising Parser .... <zOption.cpp,#789> [i] 00:02 Info: 5 B: zOPT: Parsing paths.d ... .... <zOption.cpp,#792> [i] 00:02 Info: 5 B: zOPT: Analysing paths.d ... .... <zOption.cpp,#795> [i] 00:02 Info: 1 B: VFILE: Initializing filesystem (VDFS) .... <zDisk_Vdfs.cpp,#538> [i] 00:02 Info: 2 B: zDSK: InitFileSystem .... <zDisk.cpp,#1629> [i] 00:03 Info: 2 B: VFILE: VDFS successfully initialized: 3 drives, 0 found. .... <zDisk_Vdfs.cpp,#597> [i] 00:03 Info: 3 D: RESMAN: Classes registered: zCSoundFX zCTexture .... <zResource.cpp,#366> [i] 00:03 ---------------
[i] 00:09 --------------- [i] 00:09 Info: 4 N: VFX: Loading file System\VisualFX.src or .dat .... <oVisFx.cpp,#863> [i] 00:09 Info: 3 B: SG: Initializing savegame-manager ... .... <oSavegame.cpp,#277> [i] 00:09 Info: 5 B: BS: Savegame 1 found: "1" .... <oSavegame.cpp,#327> [i] 00:09 Info: 5 B: SPC: Loading binary output-library OU.BIN... .... <zCCsManager.cpp,#387> [i] 00:09 Info: 3 B: CSLib: loading library ... .... <zCCsLib.cpp,#33> [i] 00:09 Info: 3 B: CSLib: Number of items: 3569 (UnArc) .... <zCCsLib.cpp,#39> [i] 00:09 Info: 5 C: Shutting down MSS .... <zSndMss.cpp,#629> [i] 00:09 Info: 5 X: EmergencyExit: Releasing all DirectX-Objects ... .... <zRndD3D_Render.cpp,#283> [i] 00:09 Info: 5 X: EmergencyExit: D3DXUninitialize done .... <zRndD3D_Render.cpp,#301> [w] 00:09 Warn: 0 X: [RND3D-Destructor]: Can't uninitialize D3DX Utility Library ! Error: D3DXERR_D3DXNOTSTARTEDYET .... <zRndD3D.h,#127> [i] 00:09 Info: 5 X: [RND3D-Destructor]: D3DXUninitialize done .... <zRndD3D_Render.cpp,#309>
Вот такие делы...
|
|
|
08.01.2006, 00:48
|
#671
|
|
Re: Декомпилятор скриптов Готики
Цитата:
Сообщение от boobl link=board=gothic&t=1095241429&start=650#669 date=01/07/06, в 14:35:43
насчёт сообщения при вылете: у меня выскакивало такое же сообщение когда я засовывал в папку игры оушник созданный декомпилятором.
|
Уточнения к моему предыдущему посту. После компиляции я одновременно меняю и DAT и BIN. Так вот, при пользовании предыдущими версиями всё ОК.
|
|
|
08.01.2006, 03:33
|
#672
|
|
Re: Декомпилятор скриптов Готики
Уточнения к моему предыдущему посту. После компиляции я одновременно меняю и DAT и BIN. Так вот, при пользовании предыдущими версиями всё ОК.
|
незнаю, сам я начал пользоваться декомпилятором с версии 2_16 и ни один ou.bin не работал корректно, более того, созданный оушник весит намного больше чем исходный. Насчёт focus.d, декомпилятор обрезает все нулики не только у оригинального датника, но даже у того, который я правил руками. И вообще, это у меня одного чтоли такая проблема?
|
|
|
08.01.2006, 21:34
|
#675
|
|
Re: Декомпилятор скриптов Готики
Прошу прощения, но у меня вопрос, связанный с одной ошибкой в скрипте мода "Жизнь Пиртата", который я как и почти все остальные обьединил с Обычной Г2а, всё нормально, но вот именно это ф-ция не компилируется, и выдаётся ошибка.
Вот ф-ция:
func void b_doupgrade(var C_Npc slf,var int newflags,var int newweapflag) { var C_Item slfarmor; var int armid; slfarmor = Npc_GetEquippedArmor(slf); armid = b_analysearmor(slfarmor); Npc_RemoveInvItem(slf,Hlp_GetInstanceID(slfarmor) ); if(newweapflag > 0) { if((armid & ARMOR_WEAPON1) != 0) { armid = armid - ARMOR_WEAPON1; }; if((armid & ARMOR_WEAPON2) != 0) { armid = armid - ARMOR_WEAPON2; }; if((armid & ARMOR_WEAPON3) != 0) { armid = armid - ARMOR_WEAPON3; }; armid = armid | newweapflag; }; if(newflags > 0) { armid = armid | newflags; }; createarmorbycode(slf,armid); };
А вот что выдаёт:
Cannot convert from type INSTANCE to INSTANCE
Помогите мне пожалусто!
|
|
|
09.01.2006, 01:21
|
#677
|
 |
|
 |
|
*
Регистрация: 29.08.2004
Сообщений: 1
|
|
 |
|
 |
|
Re: Декомпилятор скриптов Готики
2Vam:
Новая версия Декомпилятора V2.20выложена на Яндексе. Очень надеюсь, что устранил все допущенные ошибки.
|
Думал, что только у меня не получаеться... Работать пришлось с 2.13 версией - а оказывается все проще, ну и слава богу. Потестить - постараюсь на Висте 5270 (уже декабрьская) 32-х и 64-х разрядных...
|
|
|
09.01.2006, 11:18
|
#678
|
|
Re: Декомпилятор скриптов Готики
2TSYLin:
но вот именно это ф-ция не компилируется, и выдаётся ошибка.
|
Cannot convert from type INSTANCE to INSTANCE
|
Внутри функции есть переопределенные типы, чтобы компиляция прошла успешно их необходимо зарегистрировать в файле RedefinedFunc.d или RedefinedLocalVariable.d, но для этого необходимо знать: 1. На какую строчку скрипта жалуется компилятор (приведи полную строку сообщения). 2. Объяву функции b_analysearmor(slfarmor) (типы возвращаемого значения и аргументов). 3. Объяву функции createarmorbycode(slf,armid).
|
|
|
10.01.2006, 10:32
|
#680
|
|
Re: Декомпилятор скриптов Готики
2TSYLin:
Кстати, я думал эта ошибка возникает и з-за моей халатности, а оказывается эта ошибка была допущена в самом ДАТнике мода Жизнь Пирата.
|
Это моя недоработка, в следующей версии постараюсь исправить, ты можешь устранить ошибку, упростив запись, вместо строки Npc_RemoveInvItem(slf,Hlp_GetInstanceID(slfarmor)) ;нужно записать следующее - int itemInstance = Hlp_GetInstanceID(slfarmor); Npc_RemoveInvItem(slf,itemInstance);Возможно, что ещё нужно в файл RedefinedLocalVariable.d добавить строчку int# b_doupgrade.itemInstance;и всё должно заработать.
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
Опции темы |
Поиск в этой теме |
|
|
Ваши права в разделе
|
|
|
|
Текущее время: 09:08. Часовой пояс GMT +4.
|
|
|
|
 |
|
 |
|
|
|
|
|
|
|
|
|