Добрый день.
Как правильно или чем правильно открывать и читать файлы w3u?
Заинтересовался написанием скрипта для ИИ компьютерного противника вручную - все-таки редактором ИИ файл генерируется довольно громоздкий в плане кода - множество лишних функций, которые бы мне не хотелось использовать. Да и лично мне неудобно в нем (редакторе) ковыряться. Смотрел файлы скриптов из кампании - там все очень просто и сводится к описанию волн атаки и отрядов обороны - как раз минимум того, что мне нужно и очень похоже по смыслу на скрипты ИИ для SC:BW. Однако проблема в том, что я не понимаю, как скрипту сообщаются данные о нестандартных войсках, описанных в карте:
Вот пример из кампании "Исход Орды". В этом фрагменте определяются войска морлоков из последней главы:
globals
    player user = Player(0)
    constant integer TIDERUNNER   = 'nmrl' // level 1 unit
    constant integer HUNTSMAN     = 'nmrr' // Level 3 Unit - Ensnare
    constant integer FLESHEATER   = 'nmfs' // Level 6 Unit - Cannabalize, Venom Spears
    constant integer SEACULTIST   = 'nmsc' // Spell Caster Unit - Heal, Cripple
    constant integer SIEGEGOLEM   = 'nC06' // Siege Unit - Hurle Bolder, Slam
    constant integer SEAWITCH     = 'N001' // Hero - Water Elemental, Earthquake
endglobals
Наверняка, подумал я, что все эти строковые значения типа "nmrl" и "nC06" являются идентификаторами нестандартных боевых единиц, которые используются в карте и однозначно они должны быть описаны в файле редактора объектов w3u. Вот только сам файл закодирован и для меня не читабелен. Как же его прочитать, чтобы понимать, где и когда описывается нужный мне юнит?
PS Может быть кто подскажет другие пути решения задачи, но повторюсь: писать скрипт предпочел бы ручками.

UPD: Вот что удалось выяснить на текущий момент. Файл w3u, если я не ошибаюсь, представляет собой бинарный файл, в котором одной строкой закодирована ваша таблица редактора объектов на вкладке "Войска". При этом у каждого юнита в этой таблице есть какой-то свой особый идентификатор, как он образовывается - пока не могу сказать. Как это выглядит (фрагмент):
... EQN.NUL.NUL.NUL.NUL.NUL.NUL.nggrnC06.NUL.NUL.NUL.unam.ETX.NUL.NUL.NUL.Siege Golem.NUL.NUL.NUL.NUL.NUL. ....
PS Вот за что люблю Blizzard - у них даже бинарники некоторые оказываются вполне читаемыми
  • отрывок строки, описывающий параметры нестандартного юнита Siege Golem в последней главе кампании. Он выступал в качестве осадного юнита морлоков. Дальше еще идут куча параметров, к примеру его способности выглядят вот так:
... uabi.ETX.NUL.NUL.NUL.ACmi, ACtc.NUL.NUL.NUL.NUL. ...
Где тут что не совсем понятно, но можно предположить, что ACmi - это "Бросить камень", а ACtc - "Thunder Clap", то есть "Громовая поступь", но это не суть важно. Меня интересует его идентификатор - 'nC06'. В строке описания этим символам предшествуют символы 'nggr'. Судя по всему это указатель на базового юнита - каменного голема. Пока что это только предположения и теории, надо будет проверить на практике.

UPD2 Да нет, это не уникальный идентификатор нестандартного юнита. Это просто так закодирован базовый юнит. Тогда выходит, что в скрипте ИИ мы сообщаем компьютеру базовые войска, а не нестандартные объекты?

Принятый ответ

www.wc3c.net/tools/specs тут есть
NEW Frozen Throne expansion pack format of "war3map.w3u / w3t / w3b / w3d / w3a / w3h / w3q" The object data files (thanks PitzerMike):
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
7
9 лет назад
0
Хотя вы знаете... мне кажется, что я начинаю понимать. Позже отпишусь, как разберусь во всем этом)
2
37
9 лет назад
2
www.wc3c.net/tools/specs тут есть
NEW Frozen Throne expansion pack format of "war3map.w3u / w3t / w3b / w3d / w3a / w3h / w3q" The object data files (thanks PitzerMike):
Принятый ответ
0
24
9 лет назад
0
Мне каж быстрее будет триггерно состряпать свой ИИ.
0
7
9 лет назад
0
www.wc3c.net/tools/specs тут есть
Спасибо. Нечто подобное я и искал. Будем посмотреть.
Melissa:
Мне каж быстрее будет триггерно состряпать свой ИИ.
Нет, хочется, чтобы было как у Blizz'ов в кампании.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.