[ Обновленные темы · Новые сообщения · Участники · Поиск · RSS ]
Результаты поиска
AlexBond
Админы
Сообщений: 1042
Реп: 106 / Инв: 8
Нет это не для плейстейшон, это задумки которые не воплотились в жизнь. В начале T17 хотела создать все оружие что было в WA, но потом передумали и как я думаю это из-за того что карты были разработаны слишком мелкие для всех видов оружия... Ведь лазер то я смог восстановить к нему даже ресурс нашелся, хоть саму пушку лазерную я не нашел...

 
AlexBond
Админы
Сообщений: 1042
Реп: 106 / Инв: 8
Quote (vera34)
да кстати научите им пользововаться пожалуста smile

Учись http://blender3d.org.ua/tutorial/


 
AlexBond
Админы
Сообщений: 1042
Реп: 106 / Инв: 8
Quote (vera34)
а её сделать можно просто мозг надо напрячь и все

Увы, не все так просто. Нужно во первых иметь этот МОЗГ =) Во вторых Нехило напрягать, чтобы:
1. Полностью декодировать xom формат, где около 150 типов бинарно написанных, инфы по которым нету нигде.
2. Создать лазерную пушку с текстурами
3. Всунуть пушку в игру, так чтобы не повредить остальные ресурсы, что на практике нериально сделать не имея Xom структуры.

Так что это НЕРИАЛЬНО для W3D. Но вполне реально для W4, т.к. там ресурсы открытые.


 
AlexBond
Админы
Сообщений: 1042
Реп: 106 / Инв: 8
Quote (RocketRacer)
И как поменять язык в Blender'e на русский???

Вот кое что про руссификацию
http://ru.wikibooks.org/wiki....1%D0%B0


 
AlexBond
Админы
Сообщений: 1042
Реп: 106 / Инв: 8
слишком мало данных, у тебя картинка 31x31 пиксель. Так можно что угодно изобразить.

 
AlexBond
Админы
Сообщений: 1042
Реп: 106 / Инв: 8
Я знаю что разные, поэтому у меня для worms3D, загрузчик для всех видов экрана:
4:3
5:4
16:10
16:9

А тут я сделал лишь один, чтобы не париться, а вообще неплохая идея, сделать галочку, если будет следующая версия, сделаю.


 
AlexBond
Админы
Сообщений: 1042
Реп: 106 / Инв: 8
Список имен шляп прописан в WORMS 4 MAYHEM.exe поэтому нереально добавить ...

 
AlexBond
Админы
Сообщений: 1042
Реп: 106 / Инв: 8
Теоретически можно. Хотя тут много проблем, т.к. список загружается не из файла, а из самого экзешника, а чтобы добавлять, нужно знать структуру списка шапок, и на все это надо часы декодирования.... проб и ошибок....

 
AlexBond
Админы
Сообщений: 1042
Реп: 106 / Инв: 8
Короче бум и конец игры =) все в воде.... чистой воды идиотизм...

 
AlexBond
Админы
Сообщений: 1042
Реп: 106 / Инв: 8
Герыч когда создашь интерфейс для "матрицы" дай знать =)

 
AlexBond
Админы
Сообщений: 1042
Реп: 106 / Инв: 8
Я думаю проблема в том как сохраняет 3DSMAX, т.к. при сохранении он прописывает кучу всякой ненужной хрени, которую видимо K^2 не удосужился пропустить при написании своей проги. Я когда изучал формат 3DS, то учел этот факт при импорте 3DS в мой редактор.

 
AlexBond
Админы
Сообщений: 1042
Реп: 106 / Инв: 8
Quote (firsacho)
я пока не особо уловил закономерность почему так получается (на карте матрица алексбонда снаряды пролетают через небоскребы сделанные из одного большого пикселя, а на карте Pro Studium Mix стены коробки которая окружает карту, не восприимчивы к взрывающему оружию)

Я знаю почему это происходит. Дело вот в чем:
Физика держится на упрощенной (не сглаженной) модели покселя. Поэтому если объект сглажен, и его обтянуть веревкой, то мы увидим неглаженый контур этого объекта в воздухе. Иными словами, программеры Т17 создали для меньших тормозов, упрощенную физику покселя. Поэтому мы и наблюдаем такие глюки.

Кстати каждый поксель имеет свой удельный вес, я думаю в порядке 0.0 ... 1.0 и если много раз долбать Большой поксель, то он в конечном счете разрушается.

По поводу глюков в карте матрица, то это тоже объясняется. Мало того что поксель имеет удельный вес, он еще имеет удельную плотность, которая уменьшается при увеличении покселя.

Все эти вещи нужно учитывать при создании карт.


 
AlexBond
Админы
Сообщений: 1042
Реп: 106 / Инв: 8
Quote (vera34)
слушай Алекс ты хорошо пользуешься 3ds max'ом?

Ну вот такое с нуля могу сделать:

люблю NURBS =)


 
AlexBond
Админы
Сообщений: 1042
Реп: 106 / Инв: 8
поковыряй в коде может получится. в Scripts.xml

 
AlexBond
Админы
Сообщений: 1042
Реп: 106 / Инв: 8
Итак если найдется более 2-х желающих в декодировании формата xom, то я продолжу тему =)


P.S. Инфа про Xom Формат
http://w4-tweaking.bb-fr.com/tweakin....662.htm

http://www.hardline.ru/4/44/5030/
Прикрепления: 7594015.png (8.9 Kb)


 
AlexBond
Админы
Сообщений: 1042
Реп: 106 / Инв: 8
Если ты имеешь в виду w3dt формат. То это простые *.txt из W3D переименовоные в *.w3dt.
Создается такой файл очень просто через W3DEditor, но нужен шаблон.


 
AlexBond
Админы
Сообщений: 1042
Реп: 106 / Инв: 8
Ладно начнем-с....

Шаг первый

Структура xom файла.

Небольшое вступление от k^2

Quote

Re: Maps

Sent at: Wed Nov 22, 2006 12:55 am
From: K^2
To: AlexBond
Да, если добавлять карты в список проблема таже что и с заменой. По сети это дело не пройдет. Есть несколько идей по поводу синхронизатора который позволит карты закачивать при соединении, но есть сложности. Надо либо создавать виртуальную дерикторию, или перехватывать запрос на открытие потока ввода/вывода файлов, или перехватывать интернет пакеты. В каждом методе свои проблемы.

Я примерно знаю как работают текстуры, и уже начал работу по добавке текстур в едитор. К сожалению, добавлять новые текстуры я не умею. Похоже что это возможно, но я так и не понял как.

Работая с .xom файлами надо держать в уме то что это очень глупый формат. Общая структура .xom файлов такова. Файл начинается с заголовка в 64 байта. Количество Типов (Type) контейнеров находится по смещению 24 (0x18), а количество Контейнеров (Container) по смещению 28 (0x1c). По смещению 32 (0x20) находится номер корневого контейнера, но по моему, он важен только для карт. Сразу за заголовком следует список типов контейнеров. Каждый элемент списка состоит из 64 байт. В каждом, по смещению 8 (0x08) находится количество контейнеров этого типа, а по 32 (0x20) название типа. После списка типов идет еще один или два сегмента по 16 байт. Их назначение мне неизвестно. Их количество задано байтом по смещению 7 (0x07) в заголовке.

Со следующей частью ты знаком. Это список строк. Сдесь собраны все строковые данные в файле, и отсюда они индексуются контейнерами, что и создет сложности с переименованием. По смещению 4 (0x04) наодится количество строк. По смещению 8 (0x08) полная длинна всех строк, включая нулевые байты. Начиная со смещения 12 (0x0c) идет список адресов строк, тоесть смещений относительно первого байта первой строки. Когда из контейнера индексуется строка, индекс является порядковым номером в списке адресов строк, а не номером самой строки. Сразу за этим списком идут сами строки, каждая терминирована нулевым байтом.

За списком строк следует список контейнеров. В них содержится вся информация в файле. Все контейнеры сгрупированы по типу и их порядок соответствует порядку типов в списке. Тоесть, если первому типу принадлежат 5 контейнеров, то первые пять будут этого типа, а начиная с 6го следующему типу. Бывают типы с нулем контейнеров. Зачем они нужны, не понятно.

Структуру каждого контейнера нужно знать. Они все разные, но контейнеры одного типа имеют одинаковую структуру. Есть несколько общих правил. Во первых, все контейнеры начинаются с последовательности их 7ми байт 'C', 'T', 'N', 'R', 0x00, 0x00, 0x00. Эту последовательность можно использовать для поиска контейнера, что часто необходимо, так как структура и длинна многих контейнеров может быть не известна. Следом за этими байтами идет еще один или два которые содержат индекс строки. Эта строка является идентификацией (ID) или названием этого контейнера. Название может повторятся, поэтому нельзя использовать этот номер как однозначную идентификацию. Интересная особеность байт индексующих строки в том что это может быть один байт или пара. Старший бит первого байта, когда выставлен в 1, говорит о том что следует еще один байт. Этот бит не учитывается при состовление числа. Таким образом, только числа превышающие 127 (0x8f) записываются двумя байтами.

Итак теперь нарисую схематичный вид файла:

Code
Файл Xom:
...шляпа...
MOIK | version | ? | Num Types | Num Counteiner | Base Counteiner
...описание типов...
TYPE | Num Counteiner | GUID type | Name Type    
... и так для всех типов ...
...заголовок таблицы строк...
GUID | SCHM |? | STRS | Num Strings | Offset Strings
...индексы строк...
offset1 | offset2 | ... | offsetN
...сами строки...
0 | строка | 0 | строка    
... контейнеры ...
CTNR | data code

В кратце звучит так: в фотраме xom идет количество типов, количество контейнеров, описание типов, потом таблица строк, потом сами данные, начинающиеся CNTR и заканчивающиеся началом следующего контейнера.

Шаг второй
Как же загружается этот формат

Программа считывает количество типов и контейнеров, считывает информацию о том какие типы в файле, и то сколько каждого. Затем она считывает таблицу строк. И тут наступает самое сложное, считываются контейнеры, в зависимости от его типа, т.е. размер и контейнера, и тем самым начало следующего определяется типом.

Когда все данные загружены в память, по ним строится дерево.

Ищется базовый контейнер, который и является корнем дерева, обычно это XDataBank. В этом контейнеры хранятся ссылки на остальные контейнеры. И таким образом строится дерево. (в этом есть большой плюс! Если создан один контейнер, и на него ссылаются куча других, то экономится размер файла, т.е. не нужно писать одинаковые данные. Этим объясняется маленький размер файлов на примере карт)

Итак, наша задача, расшифровать как можно больше типов, чтобы можно было построить дерево, если дерево построено верно, то мы сможем изменять файл, именно так я и поступал с Scripts.xom для W3D где все типы я раскодировал, а именно:
XContainer
LevelDetails
XResourceDetails
XUintResourceDetails
XContainerResourceDetails
XDataBank

Шаг третий
Декодирование типов.

Итак для начала приведу список типов к примеру из модели шляпы HatAfro:

Code
XNode(0)
XInteriorNode(1)
XGroup(2)
XCore(0)
XShape(1)
XShader(0)
XSimpleShader(1)
XAttribute(0)
XMaterial(1)
XImage(1)
XTextureSt age(0)
XTextureMap(0)
XOglTextureMap(1)
XGeometry(0)
XGeoSet(0)
XIndexedGeoSet(0)
XIndexedTriangleSet(1)
XVertexDataSet(0)
XCoordSet (0)
XNormalSet(0)
XColorSet(0)
XTexCoordSet(0)
XCoord3fSet(1)
XNormal3fSet(1)
XColor4ubSet(1)
XTexCoord2fSet(1)
XIndexArray(0)
XInd exSet(1)
XMatrix(0)
XTransform(1)
XCollisionGeometry(1)
XCollisionData(2)
XFortsExportedData(1)
XDetailObjectsData(1)
XGraphSet(0)
X Container(0)

Так мы видем слева в XomView. Где в скобках отмечается количество элементов.

На сегодня хватит, переваривайте....


 
AlexBond
Админы
Сообщений: 1042
Реп: 106 / Инв: 8
Quote (Герыч)
Можешь это поточнее, т.е. длины в байтах и по каждому слову, типа Offset Strings. Все данные, как я понял идут сплошняком?

Да все данные идут сплошняком... Что и усложняет декодирование.

Offset это длинна таблицы строк, т.е. то где строки кончаются и начинаются контейнеры.
В таблице индексов строк, стоят Offset в байтах, до начала нужной строки, длина строки определяется нулем, т.е. Pchar формат.

После строк идут данные, сплошняком...

Quote (Герыч)
Что такое Base Counteiner? Строка/число?

Корень дерева, это индекс из всех контейнеров. К примеру контейнеров было 8, и корень последний контейнер, то в байтах он будет 8-м
Quote (Герыч)
Что есть Name Type? индекс строки/число?

это Pchar строка, прямо в коде.
Quote (Герыч)
Что есть GUID type?

ID класса/типа, контейнера, не знаю зачем эта хрень нужна, видимо имени типа/класса не хватает.

Приведу пример для наглядности того же HatAfro.xom:

Code
000000  4D 4F 49 4B 00 00 00 02  00 00 00 00 00 00 00 00  MOIK............
000010  00 00 00 00 00 00 00 00  24 00 00 00 15 00 00 00  ........$.......
000020  15 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
000030  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
000040  54 59 50 45 00 00 00 00  00 00 00 00 00 00 00 00  TYPE............
000050  2B 8B 1E BF 5D 02 B2 4E  B9 37 05 57 5E 57 71 D3  +...]..N.7.W^Wq.
000060  58 4E 6F 64 65 00 00 00  00 00 00 00 00 00 00 00  XNode...........
000070  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
000080  54 59 50 45 00 00 00 00  01 00 00 00 00 00 00 00  TYPE............
000090  A9 07 E3 8B 05 B7 53 47  9D 80 55 F0 1B 21 22 F8  ......SG..U..!".
0000a0  58 49 6E 74 65 72 69 6F  72 4E 6F 64 65 00 00 00  XInteriorNode...
0000b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
0000c0  54 59 50 45 00 00 00 00  02 00 00 00 00 00 00 00  TYPE............
0000d0  AE CD D0 DE B7 4D E2 42  84 A7 8B C0 56 73 0B A7  .....M.B....Vs..
0000e0  58 47 72 6F 75 70 00 00  00 00 00 00 00 00 00 00  XGroup..........
0000f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
000100  54 59 50 45 00 00 00 00  00 00 00 00 00 00 00 00  TYPE............
000110  84 94 2A 34 C8 87 47 4D  B5 A2 76 A7 12 67 E1 69  ..*4..GM..v..g.i
000120  58 43 6F 72 65 00 00 00  00 00 00 00 00 00 00 00  XCore...........
000130  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
000140  54 59 50 45 03 00 00 00  01 00 00 00 00 00 00 00  TYPE............
000150  2E 01 9F F3 00 DE 1B 45  9B 10 CB 09 40 2F 24 B4  .......E....@/$.
000160  58 53 68 61 70 65 00 00  00 00 00 00 00 00 00 00  XShape..........
000170  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
000180  54 59 50 45 00 00 00 00  00 00 00 00 00 00 00 00  TYPE............
000190  A0 C3 A4 58 4D 8C 94 4E  AE 28 97 5C C0 D2 46 E0  ...XM..N.(.\..F.
0001a0  58 53 68 61 64 65 72 00  00 00 00 00 00 00 00 00  XShader.........
0001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
0001c0  54 59 50 45 00 00 00 00  01 00 00 00 00 00 00 00  TYPE............
0001d0  51 26 BE 21 90 49 C0 41  A5 28 E1 56 2E 8F 1F D0  Q&.!.I.A.(.V....
0001e0  58 53 69 6D 70 6C 65 53  68 61 64 65 72 00 00 00  XSimpleShader...
0001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
000200  54 59 50 45 00 00 00 00  00 00 00 00 00 00 00 00  TYPE............
000210  5A D5 B8 8C B7 66 C6 4F  86 35 E7 4C 3C EC 02 9B  Z....f.O.5.L<...
000220  58 41 74 74 72 69 62 75  74 65 00 00 00 00 00 00  XAttribute......
000230  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
000240  54 59 50 45 00 00 00 00  01 00 00 00 00 00 00 00  TYPE............
000250  EC 48 CC 38 AF 6C FD 41  B7 4E ED 5C 9E 61 0B AE  .H.8.l.A.N.\.a..
000260  58 4D 61 74 65 72 69 61  6C 00 00 00 00 00 00 00  XMaterial.......
000270  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
000280  54 59 50 45 00 00 00 00  01 00 00 00 00 00 00 00  TYPE............
000290  22 BF 3F 96 30 32 89 4C  A4 40 95 66 FE C7 DA A4  ".?.02.L.@.f....
0002a0  58 49 6D 61 67 65 00 00  00 00 00 00 00 00 00 00  XImage..........
0002b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................

Всего 36(0x24) типов из них 21(0x15) контейнеров, в которых 21(0x15) базовый.

Но что самое интересное, так это то что 21-ого контейнера нету!!! Их вообще всего 20 в типах... Но последний контейнер, подозрительно слишком длинный, и имеет таблицу индексов, я думаю что это должен быть контейнер XGraphSet, но в описании типов для него ноль контейнеров... и перед началом этого контейнера не ставится CTRN почему???????? я не знаю....


 
AlexBond
Админы
Сообщений: 1042
Реп: 106 / Инв: 8
Я нашел закономерность!!!!!!!!
Пустые тыпы, это надклассы!!!!!

XNode(0) -> XInteriorNode(1)
XGroup(2)
XCore(0) -> XShape(1)
XShader(0)-> XSimpleShader(1)
XAttribute(0) -> XMaterial(1)
XImage(1)
XTextureStage(0) -> XTextureMap(0) -> XOglTextureMap(1)
XGeometry(0)-> XGeoSet(0) -> XIndexedGeoSet(0)-> XIndexedTriangleSet(1)
XVertexDataSet(0)
XCoordSet (0)
XNormalSet(0)
XColorSet(0)
XTexCoordSet(0)
XCoord3fSet(1)
XNormal3fSet(1)
XColor4ubSet(1)
XTexCoord2fSet(1)
XIndexArray(0) -> XIndexSet(1)
XMatrix(0) -> XTransform(1)
XCollisionGeometry(1)
XCollisionData(2)
XFortsExportedData(1)
XDetailObjectsData(1)
XGraphSet(0)
XContainer(0)

Уже что-то вырисовывается


 
AlexBond
Админы
Сообщений: 1042
Реп: 106 / Инв: 8
Кое что еще расшифровывается:

XIndexedTriangleSet(1) :

Code
01  00  00  0E  00  00  00  00
D2  00  00  00  0A  0B  0C  0D
00  FF  FF  7F  7F  FF  FF  7F
7F  FF  FF  7F  7F  FF  FF  7F
FF  FF  FF  7 F  FF  FF  FF  7F
FF  01  00  00  00  

0x0E 0x0A 0x0B 0x0C 0x0D - прямые индексы на контейнеры
XIndexSet(1)
XCoord3fSet(1)
XNormal3fSet(1)
XColor4ubSet(1)
XTexCoord2fSet(1)

Похожая структура и в 3DS файлах.

Загадка что такое 0xD2 и

FF FF 7F 7F FF FF 7F
7F FF FF 7F 7F FF FF 7F
FF FF FF 7F FF FF FF 7F
FF

...

По поводу пустых контейнеров, то я думаю это надклассы , попробую их связать:

Code

XNode(0) -> XInteriorNode(1)
XGroup(2)
XCore(0) -> XShape(1)
XShader(0)-> XSimpleShader(1)
XAttribute(0) -> XMaterial(1)
XImage(1)
XTextureStage(0) -> XTextureMap(0) -> XOglTextureMap(1)

XGeometry(0)-> XGeoSet(0) -> XIndexedGeoSet(0)-> XIndexedTriangleSet(1)
XVertexDataSet(0) -> XCoordSet (0) -> XCoord3fSet(1)
XVertexDataSet(0) -> XNormalSet(0) -> XNormal3fSet(1)
XVertexDataSet(0) -> XColorSet(0) -> XColor4ubSet(1)
XVertexDataSet(0) -> XTexCoordSet(0) -> XTexCoord2fSet(1)

XIndexArray(0) -> XIndexSet(1)
XMatrix(0) -> XTransform(1)
XCollisionGeometry(1)
XCollisionData(2)
XFortsExportedData(1)
XDetailObjectsData(1)
XGraphSet(0) !!!!!!! тут оказывается не ноль а 1!!!!! что решает не стыковку о количестве
XContainer(0)


 
Поиск: