spawn compiler/decompiler new!

Cмотреть полную версию
spawn compiler/decompiler new! Скачать

Новая программа ACDC, для тех кто не хочет заниматься гемороем, типа: установка active perl и т. д.
Для извлечения файлов all.spawn нада лишь два файла - all.spawn и game.graph.

Спойлер

Основные фичи:
-распаковка оригинальных спавнов ТЧ, ЧН, ЗП и билдов ТЧ, начиная с xrCore build 1265.
-распаковка спавнов от модов (требуется папка конфигов от мода)
-конвертация спавна в любую другую версию.
-массовая замена гейм-вертексов в распакованном спавне.
-разбивка all.spawn на level.spawn'ы и level.game'ы

Что нужно для работы:
-собственно, сам спавн (all.spawn, level.spawn)
-game.graph (только если распаковываете all.spawn).
Если all.spawn от билда 3120, ЧН или ЗП - game.graph не нужен (он вшит в спавн).
-папка configs (если распаковываете мод и acdc жалуется на unknown section)

Для корректной работы используйте с папкой stkutils строго последней версии.

Использование:
Кладете all.spawn (или level.spawn) и game.graph в папку с программой, делаете батник (команды ниже),
запускаете батник, радуетесь жизни.

Пояснение по дальнейшему тексту: в угловых скобочках () указано значение опции. Это путь до спавна,
папка для распаковки и т.п., то есть то, что нужно вписывать вам. В квадратных скобочках ([])
указаны необязательные опции. Опции без скобочек - обязательны.

----------------------------------------------------
----------------[Распаковка спавна]-----------------
----------------------------------------------------

Команда: universal_acdc.pl -d [common_options]

-d - путь до спавна.
common_options - общие опции. Читайте про них ниже.

----------------------------------------------------
----------------[Запаковка спавна]------------------
----------------------------------------------------

Команда: universal_acdc.pl -compile

  • [-idx ] [-f ] [common_options]

    -compile
    • - папка, в которой лежит распакованный спавн. Если работаете в текущей папке,
      • не нужно.
        common_options - общие опции. Читайте про них ниже.
        -idx - с этим ключом скрипт сформирует ltx конфиг с секциями вида:

        [13_box_wood_01_0021] ;формат - "индекс_локации"_"имя_объекта"
        id = 2907 ;id объекта
        story_id = -1 ;story_id объекта

        Такие записи создадутся для ВСЕХ объектов из спавна.
        Если указать ключ -idx без пути до конфига, он появится в папке с acdc (spawn_ids).
        Зачем это нужно? В игре вы сможете открыть этот файл из скриптов и найти нужный вам объект.
        Если раньше для нахождения нужного id объекта по имени требовалось перебрать все объеты в игре,
        теперь это можно сделать, просто считав id из нужной секции конфига.

        ----------------------------------------------------
        ------------[Конвертирование спавна]----------------
        ----------------------------------------------------

        Команда: universal_acdc.pl -convert -version [-ini ] [common_options]

        -convert - файл, который нужно сконвертировать. Можно указывать как запакованный (*.spawn) спавн,
        так и распакованный (alife_***.ltx). Внимание! Так как граф и кросс-таблицы в ЧН и ЗП вшиты в спавн,
        для конвертирования ЗАПАКОВАННЫХ спавнов ТЧ в эти форматы вам потребуется положить в папку с acdc
        папку levels из игры. Необязательно копировать все файлы, достаточно оставить в папке с каждой локацией
        файл level.gct.

        -version - новая версия спавна. Подобрать версию вы сможете, посмотрев файл spawn_versions.txt

        -ini - файл тонкой настройки конвертации (convert.ini). Если не указан, используется convert.ini, лежащий
        в текущей папке.
        common_options - общие опции. Читайте про них ниже.

        Также поддерживается тонкая настройка конвертации через файл convert.ini.
        В файле есть две секции: [exclude] и [change]. В секции exclude можно прописать те секции,
        которые надо удалить из спава при конвертации. Пример:

        [exclude]
        secti m_trader, m_car, flesh_weak

        Также поддерживается маскирование. Вместо кучи однотипных секций (stalker_zombied, stalker_sakharov и т.д.)
        можно задать маску, используя символ *. Пример: stalker*. Такая запись приведет к исключению всех
        секций, в названии которых есть слово stalker.

        В секции change прописываются имена тех секций, в которых нужно что-то поменять или дополнить.
        Пример:

        [change]
        secti inventory_box

        Далее заполняете файл записями для тех секций, которые вы прописали в change. Пример:

        [inventory_box] //section_name нужной секции
        add:custom_data = PREVED //префикс add используется для тех параметров, в которые нужно добавить
        add:game_vertex_id = 10000 //необходимое значение (если число - складывается, если строка - добавляется в конец)
        rep:level_vertex_id = 0 //префикс rep используется для параметров, которые необходимо заменить на что-то

        Общий пример. Следующий конфиг приведет к тому, что у всех сталкеров прибавится 500 к гейм-вертексу и
        визуал сменится на визуал вояки в противогазе:

        [exclude]

        [change]
        secti stalker

        [stalker]
        add:game_vertex_id = 500
        rep:visual_name = actors/soldier/soldier_antigas.ogf

        ----------------------------------------------------
        ----------[Массовая замена вертексов]---------------
        ----------------------------------------------------

        Команда: acdc -parse -old -new [-way] [common_options]

        -parse - имя ltx, в котором находится спавн.
        -old - старый начальный game_vertex_id локации.
        -new - новый начальный game_vertex_id локации.
        -way - обрабатывает аткже файл way_***.ltx для этой же локации.

        Пример: acdc -parse alife_l01_escape.ltx -old 0 -new 934

        ----------------------------------------------------
        -------[Разбивка all.spawn на level.spawn]----------
        ----------------------------------------------------

        Команда: acdc -split [-use_graph] [-way] [common_options]

        -split - разбиваемый спавн. Для восстановления граф-поинтов необходимы level.spawn для всех локаций,
        находящихся в графе. Их следует поместить в папку levels согласно их положению в геймдате сталкера - по папкам,
        соответствующим локациям. Папка levels должна быть в папке с acdc (или путь до нее можно задать ключом - читайте далее).
        -use_graph - использование game.graph для восстановления граф-поинтов. Плюс - не нужны level.spawn, минус -
        не восстанавливаются имена граф-поинтов (за исключением граф-поинтов переходов).
        -way - также из спавна генерируются level.game

        ----------------------------------------------------
        ------------------[Общие опции]---------------------
        ----------------------------------------------------

        -out - путь до файла/папки с результатом. Имеет разный смысл для разных опций:
        для decompile, parse - папка с результатом
        для compile, convert - результрующий файл.
        для split - папка levels, куда сохранять level.spawn.

        -scan - путь до папки с конфигами. Используется в случае спавнов от модов.
        -g - путь до папки с game.graph. Бесполезен для compile и parse, а также
        если работаете со спавном ЧН, ЗП, build 3120.
        -level - обрабатывать спавн как level.spawn.
        -af - также распаковываются\запаковываются места спавна артефактов в аномалиях (section2.bin).
        -nofatal - отключает вылет при фатальной ошибке, заменяя ее предупреждением.


        ======================================

        Если acdc генерирует ошибку 'unknown clsid ... for section...', это означает,
        что в данном моде добавлены новые пары клиентский/серверный класс в class_registrator.script.
        Дабы не усложнять работу с acdc, такие пары не определяются автоматически.
        Лучше всего сообщить об этом мне (www.amk-team.ru/forum/index.php?showuser=11696),
        однако, если вы понимаете, что находится внутри class_registrator.script, можете добавить
        новые сеты в clsids.ini сами. Сеты добавляются в таком формате:

        clsid = соответствующий_серверный_класс

        Пример:
        ZS_ELECT = se_zone_anom

        ======================================

        Любые имена опций можно сокращать. К примеру, необязательно использовать именно -use_graph, скрипт поймет также и -use, и -u.
        Однако ряд опций при сокращении их имени могут конфликтовать друг с другом. -compile нельзя сократить до -c, поскольку
        в таком случае скрипту неясно, что имеется ввиду: -compile или -convert. В таком случае наиболее короткое имя для compile
        будет таким: -com

        ======================================

        История правок:
        1.27:
        исправлена ошибка парсера, в некоторых случаях приводившая к порче логики.
        исправлено создание папок при сохранении результата.
        [+] добавлена переинициализация параметров секции после смены класса при конвертации. Это расширяет диапазон
        версий, доступных для конвертирования.
        [+] добавлена поддержка маск при конвертации.
        [+] добавлен ключ -ini в режиме конвертации

        1.26:
        поправлена распаковка спавнов ЧН.
        [+] добавлено автоматическое заполнение версии спавна из первой секции (если актора в спавне нет).
        [+] что-то еще по мелочи, не помню.

        1.25:
        отключен вывод пустого параметра spawned_obj при распаковке.
        [+] реализовано автоматическое заполнение параметров version и script_version при запаковке спавнов с секциями из
        разных версий игры. Версия берется из конфига актора.

        1.24:
        исправлена распаковка/запаковка спавна билда 2571.
        исправлена запись guids.ltx
        мелкие правки

        1.23b:
        [+] убрано предупреждение "state data left" при распаковке спавнов ЗП, запакованных
        ранее с помощью acdccop.
        исправлены ошибки split, из-за которых могли получаться кривые level.spawn
        переделана логика чтения/записи пакетов se_stalker/se_monster
        мелкие изменения

        1.22b:
        [+] добавлен ключ -nofatal

        1.21b:
        исправлены небольшие опечатки в коде.
        парсер теперь корректно читает значения с комментариями.

        1.2b:
        [+] небольшие правки по конвертации.
        [+] добавленные в модах соответствия clsid -> серверный класс теперь редактируются
        в отдельном конфиге (clsids.ini).
        [+] ошибка при встрече незнакомого clsid теперь выдается при распаковки секции
        спавна с таким clsid, а не при сканировании конфигов, как раньше.

        1.1b:
        [+] проверена распаковка билд-спавнов, решена проблема декомпиляции спавнов
        билдов 25хх.
        [+] добавлен контроль наличия параметра version в секциях распакованного спавна.
        исправлено исключение файла со spawn_id объектов при сканировании конфигов.

        1.0b:
        [+] основательно переработан код, часть скрипта вынесена в отдельные модули.
        исправлены все неработавшие функции.
        [+] увеличена скорость выполнения кода, уменьшены требования по памяти.
        ================================================================
        Копирайты:
        ACDC для ТЧ - bardak, для ЗП - bardak, Kolmogor. Все остальное - K.D.
Источник
ЕЩЁ ПО ТЕМЕ S.T.A.L.K.E.R.: Shadow of Chernobyl "3 новые модели Контролёров" Предлагайте идеи для мода S.T.A.L.K.E.R.: Shadow of Chernobyl "Сборка Entity на Freeplay Start 1.3" [1.1]
Комментарии: 3
Магмыч

Не работает, нужен Perl

0
Shad0wCandy

Хм, вроде было уже, и не раз. Но все равно плюс - полезная вещь.

-2