Page about Rage of Mages

[ru] [en]  
[0] [1] [2]

 
  

ALM format

Author: Vladimir Chebotarev aka ex-lend
Categories: RoM 2, Technical

Эта статья будет время от времени дописываться.

Формат зависит от версии файла. Нижеследующее описание соответствует версии 1600 (0x640).

Формат таблиц простой - размер и описание элемента. Если есть несколько похожих элементов, идущих друг за другом, ставится знак многоточия. Красным обозначены не целиком разобранные блоки

файл alm
0x14заголовок alm
variableсекция alm
......
variableсекция alm

заголовок alm
0x04сигнатура (M7R\0)
0x04размер заголовка alm (0x14)
0x04некий размер (0x48+H*W*4)
0x04количество секций
0x04версия редактора (0x640)

секция alm
0x14заголовок секции alm
variableданные секции alm

заголовок секции alm
0x047, иногда 5 (что это?)
0x04размер заголовка секции alm (0x14)
0x04размер данных секции (*)
0x04id секции (не совпадает с порядком по умолчанию)
0x04произвольное значение
(*) Размер данных неверно задается редактором карт для секции c id=0.

данные секции 1 (id=0) (общая информация)
0x04ширина карты (W)
0x04высота карты (H)
0x04отрицательный угол солнца (float, -45..45)
0x04время суток в минутах
0x04антияркость (0x00-0x40)
0x04контрастность (0x00-0x40)
0x04флаги присутствия типов ландшафта (useTiles)
0x04количество игроков в секции 5
0x04количество строений в секции 7 (*)
0x04количество юнитов в секции 10
0x04суммарное количество триггеров, проверок и инструкций (instance)
0x04количество мешков в секции 9
0x04количество групп в секции 12
0x04количество описаний таверн в секции 6
0x04количество описаний магазинов в секции 6
0x04количество описаний указателей в секции 6
0x04количество записей о музыке в секции 13
0x40название карты
0x04рекомендуемое число игроков
0x04уровень карты
0x040 (что это?)
0x0460,000,000, иногда 90,000,000 (что это?)
0x200автор карты
(*) Таверны и лавки записываются в обе секции: (6 и 7)

данные секции 2 (id=1) (ландшафт)
0x02флаги | id тайла в данной клетке (всего W*H)
......
0x02флаги | id тайла в данной клетке (всего W*H)
Примечание. tile_id = raw & 0x3FF, флаги: 0x2000 - клетка не проходима

данные секции 3 (id=2) (высоты)
0x01высота данного узла (всего W*H)
......
0x01высота данного узла (всего W*H)

данные секции 4 (id=3) (объекты)
0x01id объекта в данной клетке (всего W*H)
......
0x01id объекта в данной клетке (всего W*H)

данные секции 5 (id=5) (игроки)
0x4Cданные игрока
......
0x4Cданные игрока

данные игрока
0x04цвет игрока
0x04флаги (1 - AI, 2 - quest kill)
0x04деньги игрока
0x20имя игрока
0x02дипломатия относительно каждого игрока (всего 16) - флаги (0x01 - враг, 0x02 - друг, 0x10 - вид)
......
0x02дипломатия относительно каждого игрока (всего 16) - флаги (0x01 - враг, 0x02 - друг, 0x10 - вид)

данные секции 6 (id=11) (опции)
0x0Cописание данной таверны
......
0x0Cописание данной таверны
0x54описание данного магазина
......
0x54описание данного магазина
0x0Cописание данного указателя
......
0x0Cописание данного указателя
Примечание. В файле могут находиться описания несуществующих строений

описание таверны
0x04id постройки
0x04флаги (0x02 - delivery item, 0x04 - raise dead, 0x10 - kill all (humans), 0x20 - kill all (monsters), 0x40 - kill all (undead/necro)
0x04delivery item id (если не задано, то -1)

описание указателя
0x04id постройки
0x04флаг instanceOn
0x04instance id

описание лавки
0x04id постройки
0x04флаги вещей на полке 1
материалы:
0x00000001: из железа
0x00000002: из бронзы
0x00000004: из стали
0x00000008: из серебра
0x00000010: из золота
0x00000020: из мифрила
0x00000040: из адаманта
0x00000080: из метеорита
0x00000100: из дерева
0x00000200: из волшебного дерева
0x00000400: из кожи
0x00000800: из толстой кожи
0x00001000: из драконьей кожи
0x00002000: из кристалла
0x00004000: "никакие" (none)
типы предметов:
0x00400000: оружие
0x00800000: щиты
0x01000000: броня
0x02000000: одежда (для магов)
0x04000000: остальное (other)
0x08000000: посохи
allowed extra:
0x10000000: common
0x20000000: magic
виды предметов:
0x00008000: common
0x00010000: uncommon
0x00020000: rare
0x00040000: very rare
0x00080000: elven
0x00100000: bad
0x00200000: good
0x04флаги вещей на полке 2
0x04флаги вещей на полке 3
0x04флаги вещей на полке 4
0x04минимальная цена (полка 1)
0x04минимальная цена (полка 2)
0x04минимальная цена (полка 3)
0x04минимальная цена (полка 4)
0x04максимальная цена (полка 1)
0x04максимальная цена (полка 2)
0x04максимальная цена (полка 3)
0x04максимальная цена (полка 4)
0x04максимальное число предметов (полка 1)
0x04максимальное число предметов (полка 2)
0x04максимальное число предметов (полка 3)
0x04максимальное число предметов (полка 4)
0x04максимальное число однотипных предметов (полка 1)
0x04максимальное число однотипных предметов (полка 2)
0x04максимальное число однотипных предметов (полка 3)
0x04максимальное число однотипных предметов (полка 4)

данные секции 7 (id=4) (постройки)
0x14данные постройки
......
0x14данные постройки
Примечание. Если секция пуста, она не записывается.

данные постройки
0x04(x << 0x10) + 0x80
0x04(y << 0x10) + 0x80
0x04type id постройки
0x02здоровье постройки
0x04id игрока
0x02id постройки
0x04ширина моста (*)
0x04высота моста (*)
Примечания. Поля (*) существуют только при typeid & 0x10000000

данные секции 8 (id=9) (эффекты)
0x04количество эффектов
variableданные эффекта
......
variableданные эффекта

данные эффекта
эффект вещиэффект ловушки (trap)
0x04effect id (начиная с 0), видимо, не используется
0x040trap x
0x040trap y
0x02урон магией ... (0, 1-5)флаги: 1 - from structure, 2 - to unit
0x02минимальный урон магиейstructure id (4 байта)
0x02разброс урона магии
0x02type id заклинания (либо 0)
0x02сила заклинания (0-100)
0x04количество модификатороввсегда 2
0x06данные модификатораspell src x (2 байта)
spell src y (4 байта)
......spell dest x (2 байта)
spell dest y (4 байта)
0x06данные модификатора

данные модификатора эффекта
0x02тип модификатора
0x04значение модификатора

данные секции 9 (id=8) (мешки)
variableданные мешка
......
variableданные мешка

данные мешка
0x04количество предметов в мешке
0x04id юнита, в котором мешок (или 0, если просто мешок)
0x04x
0x04y
0x04количество золота в мешке
0x0Aданные предмета
......
0x0Aданные предмета

данные предмета
0x04id предмета
0x02признак wielded
0x04номер присоединенного эффекта, начиная с 1 (в секции 8)

данные секции 10 (id=6) (юниты)
0x30данные юнита
......
0x30данные юнита
Примечание. Если секция пуста, она не записывается.

данные юнита
0x04(x << 0x10) + 0x80
0x04(y << 0x10) + 0x80
0x02typeId
0x02face
0x04флаги (0x10 - isHuman)
0x04флаги (01 - quest kill, 02 - quest intercept, 04 - quest escort, 08 - no xp for kill)
0x04тип юнита (serverId)
0x04id игрока
0x04id вложенного мешка
0x04поворот юнита (0 - С, 2 - СЗ, 4 - З, 6 - ЮЗ, 8 - Ю...)
0x02HP
0x02max HP
0x04id юнита
0x04id группы

данные секции 11 (id=7) (логика)
0x04количество инстанций (кто найдет перевод лучше пишите)
0x31Сданные инстанции
......
0x31Сданные инстанции
0x04количество проверок (кто найдет перевод лучше пишите)
0x31Сданные проверки
......
0x31Сданные проверки
0x04количество триггеров
0xB8данные триггера
......
0xB8данные триггера

данные инстанции (instance)
0x40название
0x04instance type id (начиная с 1)
0x04instance index (начиная с 1)
0x04execute once flag
0x04значение данного аргумента instance (всего 10)
......
0x04значение данного аргумента instance (всего 10)
0x04тип данного аргумента instance (всего 10)
1 - число, индекс
2 - group
3 - player
4 - unit
5 - x
6 - y
8 - item
9 - building
см. Description checks/instants.ini
......
0x04тип данного аргумента instance (всего 10)
0x40название данного аргумента instance (всего 10)
......
0x40название данного аргумента instance (всего 10)

данные проверки (check)
0x40название
0x04check type id (начиная с 1)
0x04check index (начиная с 1)
0x04execute once flag
0x04значение данного аргумента check (всего 10)
......
0x04значение данного аргумента check (всего 10)
0x04тип данного аргумента check (всего 10), см. данные instance
......
0x04тип данного аргумента check (всего 10)
0x40название данного аргумента check (всего 10)
......
0x40название данного аргумента check (всего 10)

данные триггера
0x04check 1 id
0x04check 2 id
0x04check 3 id
0x04check 4 id
0x04check 5 id
0x04check 6 id
0x04instance 1 id
0x04instance 2 id
0x04instance 3 id
0x04instance 4 id
0x04check 1/2 operator
0 - '='
1 - '!='
2 - '>'
3 - '<'
4 - '>='
5 - '<='
0x04check 3/4 operator
0x04check 5/6 operator
0x04run once flag

данные секции 12 (id=10) (группы)
0x10данные группы
......
0x10данные группы

данные группы
0x04id группы
0x04repop time
0x04flags (01 - ai instant enabled, 02 - random positions, 04 - quest kill, 08 - quest intercept)
0x04instance id (если не выбрано, то -1)

данные секции 13 (id=12) (музыка)
0x1Cзапись о музыке по умолчанию
0x1Cданная запись о музыке
......
0x1Cданная запись о музыке
Примечание. Количество записей о музыке из секции 1 не включает запись по умолчанию.

запись о музыке
0x04x
0x04y
0x04радиус
0x04type id мелодии 1 (-1, если не задано)
0x04type id мелодии 2 (-1, если не задано)
0x04type id мелодии 3 (-1, если не задано)
0x04type id мелодии 4 (-1, если не задано)

Discussion (0)