Arcanum файлы : SEC (карты)

Небольшое лирическое отступление :
В июне появился экспериментальный билд unity 5.5 с расширенной поддержкой 2D, где добавили класс TileMap. Инструмент всё еще сырой, но довольно занятный. Мне сразу захотелось его опробовать! Но на чем ? И тут я вспомнил про старый добрый Arcanum : Of Steamworks and Magick Obscura. Тайловый ? Да. Форматы файлов известны ? Вроде бы да.. Ну тогда поехали !

Если с формат большинства файлов был разобран до меня , то с *.sec или картами было всё сложно. Во-первых формат известен, но не всем и (возможно) не весь. Подлинно известны два человека : Crypton с arcanum.game-alive.com который внезапно положил потерял интерес к Аркануму, и radzh,  который разрабатывает Arcanum : Revolution, оказался совсем не дружелюбен (ацкий конспиратор), хоть и доступен онлайн. Выходит, что сообщество хоть и не походило на секту анально огороженных, но на чью-либо помощь рассчитывать не приходилось. Было еще два источника информации : чья-то копипаста на dropbox, и исходники ToEE. Первый документ оказался не совсем полным и местами ошибочным, второй - подходил только для понимания каким путем шла Тройка,  т.к. движок ToEE был серьезно модифицирован по сравнению с арканумом..
Основной проблемой стал парсинг объектов. ToEE в этом отношении ушел немного вперед, и его исходники мало применимы к аркануму .

Я пошел методом тыка :

Создано 4 одинаковых объекта типа Scenery

 

Получилось вот это

Plants 0FBE LOC :0,0
77 00 00 00 01 00 00 00 72 F5 5D 01 BE 0F 00 00
02 00 00 00 6A F5 5D 01 6E C4 A0 FD 00 00 00 00
00 00 00 00 3C B2 30 CD A6 81 3B 41 9E E0 6E ED
21 10 C3 24 03 00 00 00 04 00 0E 00 04 00 00 00
00 00 00 00 00 00 00 FF FF FF FF F9 FF FF FF 30
0C 40 00

Plants 0FBE LOC :3,0
77 00 00 00 01 00 00 00 72 F5 5D 01 BE 0F 00 00
02 00 00 00 6A F5 5D 01 6E C4 A0 FD 00 00 00 00
00 00 00 00 45 E4 F5 56 9A 08 C1 4B 9C F4 EB 61
5F E4 AA 2D 03 00 00 00 04 00 0E 00 04 00 00 00
00 00 00 00 00 00 01 03 00 00 00 00 00 00 00 FF
FF FF FF FB FF FF FF 30 0C 40 00

Plants 0FBE LOC :0,3
77 00 00 00 01 00 00 00 72 F5 5D 01 BE 0F 00 00
02 00 00 00 6A F5 5D 01 6E C4 A0 FD 00 00 00 00
00 00 00 00 40 31 78 91 DD D2 48 4B 83 5A 7D 3F
62 FC 15 9D 03 00 00 00 04 00 0E 00 04 00 00 00
00 00 00 00 00 00 01 00 00 00 00 03 00 00 00 01
00 00 00 F7 FF FF FF 30 0C 40 00

Plants 0FBE LOC :3,3
77 00 00 00 01 00 00 00 72 F5 5D 01 BE 0F 00 00
02 00 00 00 6A F5 5D 01 6E C4 A0 FD 00 00 00 00
00 00 00 00 05 F0 28 29 7E EC 06 40 BC AF E0 92
8F 4E BB BA 03 00 00 00 04 00 0E 00 04 00 00 00
00 00 00 00 00 00 01 03 00 00 00 03 00 00 00 FF
FF FF FF 02 00 00 00 30 0C 40 00



На примере Plants 0FBE LOC :0,3

HEADER 4BIT
77 00 00 00 

PRO_GUID 24BIT - одинаковый у всех Plants
01 00 00 00 72 F5 5D 01 BE 0F 00 00 02 00 00 00 6A F5 5D 01 6E C4 A0 FD

BE 0F 00 00 - PRO ID 

OBJ_GUID 24BIT - уникален для каждого объекта
00 00 00 00 00 00 00 00 40 31 78 91 DD D2 48 4B 83 5A 7D 3F 62 FC 15 9D

00 00 00 00 - изменений нет, 02 00 00 00 - свойства изменены

PRO_TYPE
03 00 00 00 4BIT - тип объекта. в данном случае Scenery (декорации)

После поля PRO_TYPE начинаются расхождения с исходниками ToEE.

04 00 - предположительно количество property, далее PROP_0 CNT.
По умолчанию равен 04 предположительно считает OFFSET_X, OFFSET_Y, DELTA_X, DELTA_Y. Но данное предположение опровергается сокращенной версией (83 байта, когда LOC [0,0]).

UPD 30.10.16//
Всё верно.
04 -> LOCATION, OFFSET_X, OFFSET_Y, FLAGS.


00 00 00 01 - флаг того, что координаты отличны от [0,0]

00 00 00 00 - OFFSET_X
03 00 00 00 - OFFSET_Y

Не уверен, но кажется эти блоки - позиция объекта внутри ячейки сетки
01 00 00 00 - DELTA_X (SIGNED INT32)
F7 FF FF FF - DELTA_Y (SIGNED INT32)

Следующие блоки это отдельная песня и о ней будет чуть ниже
0E 00 04 00 00 00 00 00 00
30 0C 40 00


Меняем Property


Если в свойствах обьекта есть изменения по отношению к оригинальному pro файлу, то по адресу 0x1С (от начала обьекта) ждите значение 0x02 вместо 0х00. У наших Plants по умолчанию следующие свойства.



Изменим свойство Resistance.Damage 0 > 13. После 0x5B появились какие-то данные, а по адресу 0х38 сменилось значение 0х04 to 0х05 (собственно по этому я предполагаю, что это что-то вроде счетчика property т.к. для битовых флагов поле совсем не подходит.

77 00 00 00 01 00 00 00 72 F5 5D 01 BE 0F 00 00
02 00 00 00 6A F5 5D 01 6E C4 A0 FD 02 00 00 00
00 00 00 00 52 D2 A1 DF 9B EB EE 46 96 5C 73 9F
59 03 FC DD 03 00 00 00 05 00 0E 00 04 40 00 00
00 00 00 00 00 00 01 03 00 00 00 00 00 00 00 00
00 00 00 FF FF FF FF 30 0C 40 00 01 04 00 00 00
02 00 00 00 86 25 00 00 0D 00 00 00 64 00 00 00 | 02 - RESIST PROP CNT | 0D 00 00 00 - 13
02 00 00 00 09 00 00 00 00 00 00 00

Блок 64 00 00 00 - это свойство Resistance.Poison = 100. Почему некоторые свойства перманентно находятся в обьекте, хотя не изменялись ? Причина еще не выяснена.

Изменим Resistance.Fire 0 > 11. Поменялось количество измененных свойств 0x02 to 0x03

77 00 00 00 01 00 00 00 72 F5 5D 01 BE 0F 00 00
02 00 00 00 6A F5 5D 01 6E C4 A0 FD 02 00 00 00
00 00 00 00 52 D2 A1 DF 9B EB EE 46 96 5C 73 9F
59 03 FC DD 03 00 00 00 05 00 0E 00 04 40 00 00
00 00 00 00 00 00 01 03 00 00 00 00 00 00 00 00
00 00 00 FF FF FF FF 30 0C 40 00 01 04 00 00 00
03 00 00 00 86 25 00 00 0D 00 00 00 0B 00 00 00 | 03 - RESIST PROP CNT | 0B 00 00 00 - 11
64 00 00 00 02 00 00 00 0B 00 00 00 00 00 00 00 | 0B - PROP IDENTITY FLAG 

PROP IDENTITY FLAG 0x0B (0000 1011) : от младшего бита к старшемуDAMAGEFIRE, ELECTRICAL, POISON, MAGIC

Поехали дальше :

Изменяем свойства AC, Sound Effect и Respawn Delay.


Изменим
 свойство AC 0 > 10.

77 00 00 00 01 00 00 00 72 F5 5D 01 BE 0F 00 00 
02 00 00 00 6A F5 5D 01 6E C4 A0 FD 02 00 00 00 
00 00 00 00 52 D2 A1 DF 9B EB EE 46 96 5C 73 9F 
59 03 FC DD 03 00 00 00 06 00 0E 00 04 42 00 00  | 0100 0010 , ? 0000 0000
00 00 00 00 00 00 01 03 00 00 00 00 00 00 00 00 
00 00 00 FF FF FF FF 30 0C 40 00 0A 00 00 00 01  | AC 0x0A (10)
04 00 00 00 05 00 00 00 86 25 00 00 0D 00 00 00  | 05 - RESIST PROP CNT
0B 00 00 00 25 00 00 00 65 00 00 00 11 00 00 00 
02 00 00 00 1F 00 00 00 00 00 00 00 

77 00 00 00 01 00 00 00 72 F5 5D 01 BE 0F 00 00
02 00 00 00 6A F5 5D 01 6E C4 A0 FD 02 00 00 00
00 00 00 00 52 D2 A1 DF 9B EB EE 46 96 5C 73 9F
59 03 FC DD 03 00 00 00 07 00 0E 00 04 42 01 00  | 07 PROP_0 CNT | 0100 0010 , ? 0000 0001
00 00 00 00 00 00 01 03 00 00 00 00 00 00 00 00
00 00 00 FF FF FF FF 30 0C 40 00 0A 00 00 00 01  | AC 0x0A (10)
04 00 00 00 05 00 00 00 86 25 00 00 0D 00 00 00
0B 00 00 00 25 00 00 00 65 00 00 00 11 00 00 00
02 00 00 00 1F 00 00 00 00 00 00 00 73 00 00 00  | Sound Effect 0x73 (115)

77 00 00 00 01 00 00 00 72 F5 5D 01 BE 0F 00 00
02 00 00 00 6A F5 5D 01 6E C4 A0 FD 02 00 00 00
00 00 00 00 52 D2 A1 DF 9B EB EE 46 96 5C 73 9F
59 03 FC DD 03 00 00 00 08 00 0E 00 04 42 01 00  | 08 PROP_0 CNT | 0100 0010 , ? 0000 0001
00 00 04 00 00 00 01 03 00 00 00 00 00 00 00 00  | 04 ?
00 00 00 FF FF FF FF 30 0C 40 00 0A 00 00 00 01  | AC 0x0A (10)
04 00 00 00 05 00 00 00 86 25 00 00 0D 00 00 00
0B 00 00 00 25 00 00 00 65 00 00 00 11 00 00 00
02 00 00 00 1F 00 00 00 00 00 00 00 73 00 00 00  | Sound Effect 0x73 (115)
2A 00 00 00                                      | Respawn Delay 0x2A (42)

Для чистоты эксперемента поменяем флаги новых объектов.

AC 0 to 12
77 00 00 00 01 00 00 00 72 F5 5D 01 BE 0F 00 00
02 00 00 00 6A F5 5D 01 6E C4 A0 FD 02 00 00 00
00 00 00 00 F7 D0 0F 18 D0 09 05 4C 8A 2B C9 49
89 00 30 28 03 00 00 00 05 00 0E 00 04 02 00 00 | 05 PROP_0 CNT | 0000 0010 , ? 0000 0000
00 00 00 00 00 00 01 03 00 00 00 00 00 00 00 FE
FF FF FF FF FF FF FF 30 0C 40 00 0C 00 00 00    | AC 0x0C (12)

Default
77 00 00 00 01 00 00 00 72 F5 5D 01 BE 0F 00 00
02 00 00 00 6A F5 5D 01 6E C4 A0 FD 00 00 00 00
00 00 00 00 F7 D0 0F 18 D0 09 05 4C 8A 2B C9 49
89 00 30 28 03 00 00 00 04 00 0E 00 04 00 00 00
00 00 00 00 00 00 01 03 00 00 00 00 00 00 00 F3
FF FF FF FD FF FF FF 30 0C 40 00

+ Sound Effect 0 to 11
77 00 00 00 01 00 00 00 72 F5 5D 01 BE 0F 00 00
02 00 00 00 6A F5 5D 01 6E C4 A0 FD 02 00 00 00
00 00 00 00 6E 9F 70 CB 31 EF A9 4A A8 7B 66 18
D6 21 4E F5 03 00 00 00 05 00 0E 00 04 00 01 00
00 00 00 00 00 00 01 03 00 00 00 00 00 00 00 F3
FF FF FF FD FF FF FF 30 0C 40 00 0B 00 00 00   

+ Respawn Delay 0 to 1
77 00 00 00 01 00 00 00 72 F5 5D 01 BE 0F 00 00
02 00 00 00 6A F5 5D 01 6E C4 A0 FD 02 00 00 00
00 00 00 00 6E 9F 70 CB 31 EF A9 4A A8 7B 66 18
D6 21 4E F5 03 00 00 00 06 00 0E 00 04 00 01 00
00 00 04 00 00 00 01 03 00 00 00 00 00 00 00 F3
FF FF FF FD FF FF FF 30 0C 40 00 0B 00 00 00 01
00 00 00


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

Флаги


По умолчанию у наших Plants установлены вот такие флаги :




Для начала поиграем со смешиванием (Blending) поменяем None -> Add.

77 00 00 00 01 00 00 00 72 F5 5D 01 BE 0F 00 00
02 00 00 00 6A F5 5D 01 6E C4 A0 FD 02 00 00 00
00 00 00 00 5E 57 B6 41 E7 AB B0 47 A7 F3 30 30
4C D9 37 5A 03 00 00 00 05 00 0E 01 04 00 00 00 | 0x01 - BLENDING FLAG
00 00 00 00 00 00 01 03 00 00 00 00 00 00 00 FE
FF FF FF FE FF FF FF 10 00 00 00 30 0C 40 00    | 10 00 00 00 - BLENDING ADD


77 00 00 00 01 00 00 00 72 F5 5D 01 BE 0F 00 00
02 00 00 00 6A F5 5D 01 6E C4 A0 FD 02 00 00 00
00 00 00 00 5E 57 B6 41 E7 AB B0 47 A7 F3 30 30
4C D9 37 5A 03 00 00 00 05 00 0E 01 04 00 00 00 | 0x01 - BLENDING FLAG
00 00 00 00 00 00 01 03 00 00 00 00 00 00 00 FE
FF FF FF FE FF FF FF 40 00 00 00 30 0C 40 00    | 40 00 00 00 - BLENDING MUL


Теперь Positional Audio change Large (default) to Small

77 00 00 00 01 00 00 00 72 F5 5D 01 BE 0F 00 00
02 00 00 00 6A F5 5D 01 6E C4 A0 FD 02 00 00 00
00 00 00 00 5E 57 B6 41 E7 AB B0 47 A7 F3 30 30
4C D9 37 5A 03 00 00 00 05 00 0E 00 04 00 00 00
00 00 01 00 00 00 01 03 00 00 00 00 00 00 00 FE
FF FF FF FE FF FF FF 30 0C 40 00 40 00 00 00

-> Medium
77 00 00 00 01 00 00 00 72 F5 5D 01 BE 0F 00 00
02 00 00 00 6A F5 5D 01 6E C4 A0 FD 02 00 00 00
00 00 00 00 5E 57 B6 41 E7 AB B0 47 A7 F3 30 30
4C D9 37 5A 03 00 00 00 05 00 0E 00 04 00 00 00
00 00 01 00 00 00 01 03 00 00 00 00 00 00 00 FE
FF FF FF FE FF FF FF 30 0C 40 00 80 00 00 00

-> Extra Large
77 00 00 00 01 00 00 00 72 F5 5D 01 BE 0F 00 00
02 00 00 00 6A F5 5D 01 6E C4 A0 FD 02 00 00 00
00 00 00 00 5E 57 B6 41 E7 AB B0 47 A7 F3 30 30
4C D9 37 5A 03 00 00 00 05 00 0E 00 04 00 00 00
00 00 01 00 00 00 01 03 00 00 00 00 00 00 00 FE
FF FF FF FE FF FF FF 30 0C 40 00 00 01 00 00

-> Large (Default)
Для Positional Audio -> Large требовалось найти такой pro, где по умолчанию находится другое значение, мне это не удалось.


Непосредственно сами флаги


Def
77 00 00 00 01 00 00 00 72 F5 5D 01 BE 0F 00 00
02 00 00 00 6A F5 5D 01 6E C4 A0 FD 00 00 00 00
00 00 00 00 F7 D0 0F 18 D0 09 05 4C 8A 2B C9 49
89 00 30 28 03 00 00 00 04 00 0E 00 04 00 00 00
00 00 00 00 00 00 01 03 00 00 00 00 00 00 00 F3
FF FF FF FD FF FF FF 30 0C 40 00

Флаг OFF
77 00 00 00 01 00 00 00 72 F5 5D 01 BE 0F 00 00
02 00 00 00 6A F5 5D 01 6E C4 A0 FD 02 00 00 00
00 00 00 00 F7 E4 79 FC 34 58 18 48 B7 63 14 D6
75 A7 76 8D 03 00 00 00 04 00 0E 00 04 00 00 00
00 00 00 00 00 00 01 03 00 00 00 00 00 00 00 FF
FF FF FF 00 00 00 00 32 0C 40 00                 | 0x32 = 0011 0010 => 0000 0010 – OFF

77 00 00 00 01 00 00 00 72 F5 5D 01 BE 0F 00 00
02 00 00 00 6A F5 5D 01 6E C4 A0 FD 02 00 00 00
00 00 00 00 F7 E4 79 FC 34 58 18 48 B7 63 14 D6
75 A7 76 8D 03 00 00 00 04 00 0E 00 04 00 00 00
00 00 00 00 00 00 01 03 00 00 00 00 00 00 00 FF
FF FF FF 00 00 00 00 34 0C 40 00                 | 0x34 = 0011 0100 => 0000 0100 – FLAT

77 00 00 00 01 00 00 00 72 F5 5D 01 BE 0F 00 00
02 00 00 00 6A F5 5D 01 6E C4 A0 FD 02 00 00 00
00 00 00 00 F7 E4 79 FC 34 58 18 48 B7 63 14 D6
75 A7 76 8D 03 00 00 00 04 00 0E 00 04 00 00 00
00 00 00 00 00 00 01 03 00 00 00 00 00 00 00 FF
FF FF FF 00 00 00 00 20 0C 40 00                 | 0x20 = 0010 0000 => 0001 0000 – SEE THR

77 00 00 00 01 00 00 00 72 F5 5D 01 BE 0F 00 00
02 00 00 00 6A F5 5D 01 6E C4 A0 FD 02 00 00 00
00 00 00 00 F7 E4 79 FC 34 58 18 48 B7 63 14 D6
75 A7 76 8D 03 00 00 00 04 00 0E 00 04 00 00 00
00 00 00 00 00 00 01 03 00 00 00 00 00 00 00 FF
FF FF FF 00 00 00 00 00 0C 40 00                 | 0x00 = 0000 0000 => 0010 0000 – SHOOT THR

77 00 00 00 01 00 00 00 72 F5 5D 01 BE 0F 00 00
02 00 00 00 6A F5 5D 01 6E C4 A0 FD 02 00 00 00
00 00 00 00 F7 E4 79 FC 34 58 18 48 B7 63 14 D6
75 A7 76 8D 03 00 00 00 04 00 0E 00 04 00 00 00
00 00 00 00 00 00 01 03 00 00 00 00 00 00 00 FF
FF FF FF 00 00 00 00 00 08 40 00                 | 0x08 = 0000 1000 => 0000 0100 – NO BLOCK

77 00 00 00 01 00 00 00 72 F5 5D 01 BE 0F 00 00
02 00 00 00 6A F5 5D 01 6E C4 A0 FD 02 00 00 00
00 00 00 00 F7 E4 79 FC 34 58 18 48 B7 63 14 D6
75 A7 76 8D 03 00 00 00 04 00 0E 00 04 00 00 00
00 00 00 00 00 00 01 03 00 00 00 00 00 00 00 FF
FF FF FF 00 00 00 00 00 00 40 00                 | 0x00 = 0000 0000 => 0000 1000 – CLIC THR

77 00 00 00 01 00 00 00 72 F5 5D 01 BE 0F 00 00
02 00 00 00 6A F5 5D 01 6E C4 A0 FD 02 00 00 00
00 00 00 00 F7 E4 79 FC 34 58 18 48 B7 63 14 D6
75 A7 76 8D 03 00 00 00 04 00 0E 00 04 00 00 00
00 00 00 00 00 00 01 03 00 00 00 00 00 00 00 FF
FF FF FF 00 00 00 00 00 00 10 00                 | 0x10 = 0001 0000 – DON’T LIGHT

77 00 00 00 01 00 00 00 72 F5 5D 01 BE 0F 00 00
02 00 00 00 6A F5 5D 01 6E C4 A0 FD 02 00 00 00
00 00 00 00 F7 E4 79 FC 34 58 18 48 B7 63 14 D6
75 A7 76 8D 03 00 00 00 04 00 0E 00 04 00 00 00
00 00 00 00 00 00 01 03 00 00 00 00 00 00 00 FF
FF FF FF 00 00 00 00 00 00 40 00                 | 0x40 = 0100 0000 – INVULNERABLE

77 00 00 00 01 00 00 00 72 F5 5D 01 BE 0F 00 00
02 00 00 00 6A F5 5D 01 6E C4 A0 FD 02 00 00 00
00 00 00 00 F7 E4 79 FC 34 58 18 48 B7 63 14 D6
75 A7 76 8D 03 00 00 00 05 00 0E 00 0C 00 00 00  | 0x0С = 1100 0000 – ILLUSION
00 00 00 00 00 00 01 03 00 00 00 00 00 00 00 FF
FF FF FF 00 00 00 00 00 00 00 00 00 80 00 00     | 0x40 = 0100 0000 – ILLUSION

77 00 00 00 01 00 00 00 72 F5 5D 01 BE 0F 00 00
02 00 00 00 6A F5 5D 01 6E C4 A0 FD 02 00 00 00
00 00 00 00 F7 E4 79 FC 34 58 18 48 B7 63 14 D6
75 A7 76 8D 03 00 00 00 05 00 0E 00 0C 00 00 00  |
00 00 00 00 00 00 01 03 00 00 00 00 00 00 00 FF
FF FF FF 00 00 00 00 00 00 00 00 00 00 01 00     | STONED

77 00 00 00 01 00 00 00 72 F5 5D 01 BE 0F 00 00
02 00 00 00 6A F5 5D 01 6E C4 A0 FD 02 00 00 00
00 00 00 00 F7 E4 79 FC 34 58 18 48 B7 63 14 D6
75 A7 76 8D 03 00 00 00 06 00 0E 00 0C 00 00 00
00 00 01 00 00 00 01 03 00 00 00 00 00 00 00 FF  | FLAG
FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 01  | 0x01 -> No Auto Animate  
00 00 00

77 00 00 00 01 00 00 00 72 F5 5D 01 BE 0F 00 00
02 00 00 00 6A F5 5D 01 6E C4 A0 FD 02 00 00 00
00 00 00 00 9D B6 83 96 A1 59 41 48 9E 54 CD F9
AD 15 C1 C2 03 00 00 00 05 00 0E 00 04 00 00 00
00 00 01 00 00 00 01 03 00 00 00 00 00 00 00 FE
FF FF FF 00 00 00 00 00 00 00 00 04 00 00 00     | 0x04 -> NOCTURNAL

77 00 00 00 01 00 00 00 72 F5 5D 01 BE 0F 00 00
02 00 00 00 6A F5 5D 01 6E C4 A0 FD 02 00 00 00
00 00 00 00 9D B6 83 96 A1 59 41 48 9E 54 CD F9
AD 15 C1 C2 03 00 00 00 05 00 0E 00 04 00 00 00
00 00 01 00 00 00 01 03 00 00 00 00 00 00 00 FE
FF FF FF 00 00 00 00 00 00 00 00 08 00 00 00     | 0x08 -> MARKS TOWN MAP

77 00 00 00 01 00 00 00 72 F5 5D 01 BE 0F 00 00
02 00 00 00 6A F5 5D 01 6E C4 A0 FD 02 00 00 00
00 00 00 00 9D B6 83 96 A1 59 41 48 9E 54 CD F9
AD 15 C1 C2 03 00 00 00 05 00 0E 00 04 00 00 00
00 00 01 00 00 00 01 03 00 00 00 00 00 00 00 FE
FF FF FF 00 00 00 00 00 00 00 00 10 00 00 00     | 0x10 -> IS FIRE

77 00 00 00 01 00 00 00 72 F5 5D 01 BE 0F 00 00
02 00 00 00 6A F5 5D 01 6E C4 A0 FD 02 00 00 00
00 00 00 00 9D B6 83 96 A1 59 41 48 9E 54 CD F9
AD 15 C1 C2 03 00 00 00 05 00 0E 00 04 00 00 00
00 00 01 00 00 00 01 03 00 00 00 00 00 00 00 FE
FF FF FF 00 00 00 00 00 00 00 00 20 00 00 00     | 0x20 -> RESPAWNABLE

ХитПоинты (HP)


77 00 00 00 01 00 00 00 72 F5 5D 01 BE 0F 00 00
02 00 00 00 6A F5 5D 01 6E C4 A0 FD 00 00 00 00
00 00 00 00 DE 3F 87 37 F9 73 41 4E A8 2E A8 08
01 07 13 50 03 00 00 00 04 00 0E 00 04 00 00 00
00 00 00 00 00 00 01 03 00 00 00 00 00 00 00 FE
FF FF FF FF FF FF FF 30 0C 40 00

77 00 00 00 01 00 00 00 72 F5 5D 01 BE 0F 00 00
02 00 00 00 6A F5 5D 01 6E C4 A0 FD 02 00 00 00
00 00 00 00 DE 3F 87 37 F9 73 41 4E A8 2E A8 08
01 07 13 50 03 00 00 00 05 00 0E 00 04 04 00 00 | 0x04 0000 0100
00 00 00 00 00 00 01 03 00 00 00 00 00 00 00 FE
FF FF FF FF FF FF FF 30 0C 40 00 64 00 00 00    | HP

77 00 00 00 01 00 00 00 72 F5 5D 01 BE 0F 00 00
02 00 00 00 6A F5 5D 01 6E C4 A0 FD 02 00 00 00
00 00 00 00 46 EE 84 69 CE F8 95 43 9E 3C 7C CC
24 87 DC 6E 03 00 00 00 06 00 0E 00 04 0C 00 00  | 0x0C 0000 1100
00 00 00 00 00 00 01 03 00 00 00 00 00 00 00 FE
FF FF FF FF FF FF FF 30 0C 40 00 64 00 00 00 47  | ADJ
00 00 00

77 00 00 00 01 00 00 00 72 F5 5D 01 BE 0F 00 00
02 00 00 00 6A F5 5D 01 6E C4 A0 FD 02 00 00 00
00 00 00 00 46 EE 84 69 CE F8 95 43 9E 3C 7C CC
24 87 DC 6E 03 00 00 00 07 00 0E 00 04 1C 00 00  | 0x1C 0001 1100
00 00 00 00 00 00 01 03 00 00 00 00 00 00 00 FE
FF FF FF FF FF FF FF 30 0C 40 00 64 00 00 00 47
00 00 00 35 00 00 00                             | DAMAGE TAKEN


Меняем ART


Поменяем наш арт на "fbsh1". 


Вот что получится:

77 00 00 00 01 00 00 00 72 F5 5D 01 BE 0F 00 00
02 00 00 00 6A F5 5D 01 6E C4 A0 FD 00 00 00 00
00 00 00 00 DE 3F 87 37 F9 73 41 4E A8 2E A8 08
01 07 13 50 03 00 00 00 04 00 0E 00 04 00 00 00
00 00 00 00 00 00 01 03 00 00 00 00 00 00 00 FE
FF FF FF FF FF FF FF 30 0C 40 00

77 00 00 00 01 00 00 00 72 F5 5D 01 BE 0F 00 00
02 00 00 00 6A F5 5D 01 6E C4 A0 FD 02 00 00 00
00 00 00 00 B7 DE 58 7B DB 25 25 43 9A BE 97 41
92 79 90 BF 03 00 00 00 06 00 0F 00 84 00 00 00  | + 2 property | 0000 0001? | 1000 0000?
00 00 00 00 00 00 40 01 30 40 01 03 00 00 00 00
00 00 00 FF FF FF FF 00 00 00 00 30 0C 40 00 40 01 30 40


В следующей серии будет немного кода, работа со стенами и вообще перенос информации в unity3D.

PS// За время написания статьи было несколько сбоев, и местами съехало форматирование, некоторые предложения и абзацы могут быть не на своем месте (хотя я всё проверил).



Комментарии