Редактирование: *.spawn compiler/decompiler (Universal ACDC)

Перейти к: навигация, поиск

Внимание! Вы не авторизовались на сайте. Ваш IP-адрес будет публично видимым, если вы будете вносить любые правки. Если вы войдёте или создадите учётную запись, правки вместо этого будут связаны с вашим именем пользователя, а также у вас появятся другие преимущества.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия Ваш текст
Строка 7: Строка 7:
 
| '''Автор'''            || K.D.
 
| '''Автор'''            || K.D.
 
|-
 
|-
| '''Последняя версия''' || [https://files.xray-engine.org/k.d./perl_scripts/spawn_unpackers/universal_acdc_v.1.38.7z 1.38 (21 мая 2014)]
+
| '''Последняя версия''' || 1.31 (30.08.2012)
 
|-
 
|-
| '''Написан на'''       || [https://www.activestate.com/activeperl/downloads ActivePerl 5]
+
| '''Платформа'''       || x86, x86-64
 
|-
 
|-
| '''Обратная связь'''  || [https://www.amk-team.ru/forum/index.php?showtopic=11568 AMK форум]
+
| '''Написан на'''      || Perl 5
 +
|-
 +
| '''Обратная связь'''  || [http://www.amk-team.ru/forum/index.php?showtopic=11568 AMK форум]
 
|}
 
|}
 
</div>
 
</div>
  
Утилита предназначена для распаковки и запаковки '''all.spawn/level.spawn'''
+
Утилита предназначена для распаковки и запаковки '''all.spawn/level.spawn''' от любого билда, начиная с 1265.
  
 
Основные возможности:
 
Основные возможности:
Строка 27: Строка 29:
 
* собственно, сам спавн ('''all.spawn''', '''level.spawn''')
 
* собственно, сам спавн ('''all.spawn''', '''level.spawn''')
 
* '''game.graph''' (только если распаковываете '''all.spawn'''). Если '''all.spawn''' от билда 3120, ЧН или ЗП — '''game.graph''' не нужен (он вшит в спавн).
 
* '''game.graph''' (только если распаковываете '''all.spawn'''). Если '''all.spawn''' от билда 3120, ЧН или ЗП — '''game.graph''' не нужен (он вшит в спавн).
* папка <code>config</code> или <code>configs</code> (если распаковываете мод и acdc жалуется на ''unknown section'')
+
* папка <code>configs</code> (если распаковываете мод и acdc жалуется на ''unknown section'')
  
Для корректной работы используйте с [[stkutils]] строго последней версии.
+
Для корректной работы используйте с <code>stkutils</code> строго последней версии.
  
 
= Установка =
 
= Установка =
# Установите [[ActivePerl]].
+
 
# Распакуйте [https://files.xray-engine.org/k.d./perl_scripts/spawn_unpackers/universal_acdc_v.1.38.7z архив со скриптом] в нужную папку.
+
# Установите [http://www.activestate.com/activeperl/downloads ActivePerl].
# Скопируйте свежую библиотеку модулей [[stkutils]] в папку с библиотеками Perl (например, <code>C:\Perl\lib</code>) или в папку со скриптом.
+
# Распакуйте [http://files.xray-engine.org/k.d./perl_scripts/spawn_unpackers/universal_acdc_v.1.31.rar архив со скриптом] в нужную папку.
 +
# Скопируйте [http://files.xray-engine.org/k.d./perl_scripts/stkutils/stkutils_01_09_2012.rar библиотеку модулей <code>stkutils</code>] в папку с библиотеками Perl (например, <code>C:\Perl\lib</code>) или в папку со скриптом.
  
 
= Использование =
 
= Использование =
 +
 
== Распаковка спавна ==
 
== Распаковка спавна ==
Режим предназначен для распаковки файлов all.spawn и level.spawn
 
  
 
Команда:<br />
 
Команда:<br />
Строка 44: Строка 47:
 
* '''-d <spawn_file>''' <br />Путь до спавна.
 
* '''-d <spawn_file>''' <br />Путь до спавна.
 
* '''common_options''' <br />Общие опции. См. ниже.
 
* '''common_options''' <br />Общие опции. См. ниже.
При распаковке спавнов от модов может возникнуть ошибка "unknown section". Это означает, что в моде используются нестандартные секции предметов/мобов. Для распаковки такого спавна необходимо использовать ключ ''-scan'', указав ему в качестве параметра путь до папки config/configs. Пример смотрите в '''acdc_decompile_scan.bat'''
 
  
 
== Запаковка спавна ==
 
== Запаковка спавна ==
Режим предназначен для запаковки распакованных текстовых файлов спавна в all.spawn или level.spawn
 
  
 
Команда:<br />
 
Команда:<br />
Строка 64: Строка 65:
 
Если раньше для нахождения нужного id объекта по имени требовалось перебрать все объекты в игре,
 
Если раньше для нахождения нужного id объекта по имени требовалось перебрать все объекты в игре,
 
теперь это можно сделать, просто считав id из нужной секции конфига.
 
теперь это можно сделать, просто считав id из нужной секции конфига.
 
Также есть кое-какие дополнительные опции:
 
* При компиляции для правильной работы необязательно проставлять всем секциям в спавне
 
параметры version и script_version. Достаточно поставить их в секции актора, acdc далее будет использовать их. Полезно, когда спавн "сборный".
 
* При компиляции контролируется уникальность параметров [[story_id]], чтобы не мучаться потом с вылетами игры.
 
  
 
== Конвертирование спавна ==
 
== Конвертирование спавна ==
Режим позволяет конвертировать спавны ТЧ, ЧН, ЗП между собой.
 
  
 
Команда:<br />
 
Команда:<br />
Строка 109: Строка 104:
  
 
==Массовая замена вертексов==
 
==Массовая замена вертексов==
При подключении новых локаций без перекомпиляции графа возникает необходимость одновременного
 
сдвига всех гейм-вертексов спавна новых локаций на какое-то определенное значение. Это можно сделать в данном режиме.
 
  
 
Команда:
 
Команда:
Строка 123: Строка 116:
  
 
==Разбивка all.spawn на level.spawn==
 
==Разбивка all.spawn на level.spawn==
Опция может быть полезна при одновременной правке спавна в X-Ray SDK и с помощью acdc.
 
  
 
Команда:
 
Команда:
 
<syntaxhighlight lang="winbatch">acdc -split <file> [-use_graph] [-way] [common_options]</syntaxhighlight>
 
<syntaxhighlight lang="winbatch">acdc -split <file> [-use_graph] [-way] [common_options]</syntaxhighlight>
 +
 
* '''-split <file>''' <br />Разбиваемый спавн. Для восстановления '''graph point''''ов необходимы '''level.spawn''' для всех локаций, находящихся в графе. Их следует поместить в папку <code>levels</code> согласно их положению в геймдате сталкера — по папкам, соответствующим локациям. Папка <code>levels</code> должна быть в папке с acdc (или путь до нее можно задать ключом — читайте далее).
 
* '''-split <file>''' <br />Разбиваемый спавн. Для восстановления '''graph point''''ов необходимы '''level.spawn''' для всех локаций, находящихся в графе. Их следует поместить в папку <code>levels</code> согласно их положению в геймдате сталкера — по папкам, соответствующим локациям. Папка <code>levels</code> должна быть в папке с acdc (или путь до нее можно задать ключом — читайте далее).
 
* '''-use_graph''' <br />Использовать '''game.graph''' для восстановления граф-поинтов. Плюс — не нужны '''level.spawn''', минус — не восстанавливаются имена граф-поинтов (за исключением граф-поинтов переходов).
 
* '''-use_graph''' <br />Использовать '''game.graph''' для восстановления граф-поинтов. Плюс — не нужны '''level.spawn''', минус — не восстанавливаются имена граф-поинтов (за исключением граф-поинтов переходов).
 
* '''-way''' <br />Генерировать '''level.game''' из спавна.
 
* '''-way''' <br />Генерировать '''level.game''' из спавна.
  
== Сравнение файлов распакованного спавна ==
+
== Общие опции ==
В этом режиме сравниваются два текстовых файла спавна. Итоговый файл формируется на основе первого файла. Все секции, которых нет во втором файле, но есть в первом, удаляются, а те секции, которые есть во втором, но нет в первом, переносятся в итоговый файл. Параметры секций не меняются. Режим позволяет сэкономить время в случае, если надо совместить два файла, причем секции там идут вразнобой.
 
 
 
Команда:
 
<syntaxhighlight lang="winbatch">acdc -compare <file1,file2> [common_options]</syntaxhighlight>
 
* '''-compare <file1,file2>''' <br />Файлы для сравнения.
 
  
== Обновление вертексов по координатам ==
 
При изменении ИИ-сетки у объектов изменяются '''game_vertex_id''' и '''level_vertex_id'''. Это влечет за собой необходимость повторного снятия данных параметров в игре. Данный режим позволяет автоматически обновить вертексы у всех секций спавна.
 
 
Команда:
 
<syntaxhighlight lang="winbatch">universal_acdc -update <spawn_name> [common_options]</syntaxhighlight>
 
* '''-update <spawn_name>'''<br />all.spawn, для которого надо обновить вертексы.
 
 
Режим update требует дополнительной настройки. В папке с acdc есть файл '''fs_vertex.ltx'''. В этот файл необходимо вписать путь до локаций с ОБНОВЛЕННОЙ аи-сеткой. Обязательно должны присутствовать файлы level.ai, level.gct для всех локаций из спавна.
 
 
{| style="background-color: #fffdee;" width="100%"
 
|<span style="color:#172172;">'''Внимание!'''</span>
 
----
 
Для нормальной отработки режима геймграф должен быть СТАРЫЙ, использовавшийся до перекомпиляции. После нормальной отработки режима спавн можно распаковывать уже с НОВЫМ геймграфом.
 
|}
 
 
== Общие опции ==
 
 
* '''-out <file>''' Путь до файла/папки с результатом. Имеет разный смысл для разных опций:
 
* '''-out <file>''' Путь до файла/папки с результатом. Имеет разный смысл для разных опций:
 
** для '''-decompile''', '''-parse''' — папка с результатом
 
** для '''-decompile''', '''-parse''' — папка с результатом
 
** для '''-compile''', '''-convert''' — результирующий файл.
 
** для '''-compile''', '''-convert''' — результирующий файл.
 
** для '''-split''' — папка <code>levels</code>, куда сохранять '''level.spawn'''.
 
** для '''-split''' — папка <code>levels</code>, куда сохранять '''level.spawn'''.
 +
 
* '''-scan <scan_dir>''' <br />Путь до папки с конфигами. Используется в случае спавнов от модов.
 
* '''-scan <scan_dir>''' <br />Путь до папки с конфигами. Используется в случае спавнов от модов.
 
* '''-g <graph_dir>''' <br />Путь до папки с '''game.graph'''. Бесполезен для ''-compile'' и ''-parse'', а также если в случае работы со спавном ЧН, ЗП, build 3120.
 
* '''-g <graph_dir>''' <br />Путь до папки с '''game.graph'''. Бесполезен для ''-compile'' и ''-parse'', а также если в случае работы со спавном ЧН, ЗП, build 3120.
Строка 163: Строка 136:
 
* '''-af''' <br />Также распаковываются\запаковываются места спавна артефактов в аномалиях ('''section2.bin''').
 
* '''-af''' <br />Также распаковываются\запаковываются места спавна артефактов в аномалиях ('''section2.bin''').
 
* '''-nofatal''' <br />Отключает вылет при фатальной ошибке, заменяя ее предупреждением.
 
* '''-nofatal''' <br />Отключает вылет при фатальной ошибке, заменяя ее предупреждением.
* '''-sort <type>''' <br />Включает сортировку alife-объектов. Имеет два состояния: '''simple''' — сортировка по name в алфавитном порядке, '''complex''' — сортировка сначала по '''section_name''', потом по '''name''' в алфавитном порядке.
 
  
 
== Замечания ==
 
== Замечания ==
 +
 
Если acdc генерирует ошибку '' 'unknown clsid ... for section...' '', это означает,
 
Если acdc генерирует ошибку '' 'unknown clsid ... for section...' '', это означает,
 
что в данном моде добавлены новые пары клиентский/серверный класс в '''class_registrator.script'''.
 
что в данном моде добавлены новые пары клиентский/серверный класс в '''class_registrator.script'''.
Строка 184: Строка 157:
 
|}
 
|}
  
= История версий =
+
== История правок ==
'''[https://files.xray-engine.org/k.d./perl_scripts/spawn_unpackers/universal_acdc_v.1.38.7z 1.38]'''
 
* [!] добавлена поддержка релизного спавна Lost Alpha
 
* [!] исправлена конвертация и запаковка
 
 
 
'''[https://files.xray-engine.org/k.d./perl_scripts/spawn_unpackers/universal_acdc_v.1.37.7z 1.37]'''
 
* [+] добавлена распаковка и запаковка спавна [http://www.gameru.net/forum/index.php?showforum=320 билда Lost Alpha]
 
* [!] все нераспознаные пути при сплите теперь сваливаются в unrecognized_ways.game
 
 
 
'''[https://files.xray-engine.org/k.d./perl_scripts/spawn_unpackers/universal_acdc_v.1.36.rar 1.36]'''
 
* [!] исправлена разбивка спавна на level.spawn и level.game
 
* [!] исправлено сканирование конфигов
 
 
 
'''[https://files.xray-engine.org/k.d./perl_scripts/spawn_unpackers/universal_acdc_v.1.35.7z 1.35]'''
 
* [!] исправлено автоназначение версии при отсутствии этого параметра в секции
 
* [!] убрано чтение game.graph при компиляции
 
 
 
'''[https://files.xray-engine.org/k.d./perl_scripts/spawn_unpackers/universal_acdc_v.1.34.7z 1.34]'''
 
* [!] исправлено обновление вертексов
 
* [+] добавлено обновление параметра distance при обновлении вертексов
 
* [+] добавлен контроль уникальности story_id при компиляции
 
 
 
'''[https://files.xray-engine.org/k.d./perl_scripts/spawn_unpackers/universal_acdc_v.1.33.7z 1.33]'''
 
* [!] исправлена распаковка спавнов нектороых билдов
 
* [+] добавлен режим обновления вертексов
 
* [+] добавлен "умный" разбор way-объектов по локациям для режима split
 
  
'''[https://files.xray-engine.org/k.d./perl_scripts/spawn_unpackers/universal_acdc_v.1.322.7z 1.322]'''
+
'''1.31'''
* [+] добавлено сравнение распакованных файлов
 
 
 
'''[https://files.xray-engine.org/k.d./perl_scripts/spawn_unpackers/universal_acdc_v.1.321.7z 1.321]'''
 
* [!] исправлена распаковка спавнов ЗП
 
 
 
'''1.32'''
 
* [!] guids.ltx больше не нужен без ключа -idx
 
* [+] реализована сортировка way-объектов по алфавиту
 
* [+] реализовано определение принадлежности way-секции по gvid и префиксу
 
* [+] реализована сортировка alife-объектов
 
 
 
'''[https://files.xray-engine.org/k.d./perl_scripts/spawn_unpackers/universal_acdc_v.1.31.rar 1.31]'''
 
 
* [!] изменен алгоритм сканирования конфигов
 
* [!] изменен алгоритм сканирования конфигов
 
* [!] изменен приоритет запросов из clsids.ini, теперь данные из него перекрывают внутренние таблицы
 
* [!] изменен приоритет запросов из clsids.ini, теперь данные из него перекрывают внутренние таблицы
Строка 296: Строка 232:
 
* [+] увеличена скорость выполнения кода, уменьшены требования по памяти.
 
* [+] увеличена скорость выполнения кода, уменьшены требования по памяти.
  
= Разработчики =
+
== Разработчики ==
 
ACDC для ТЧ — bardak, для ЗП — bardak, Kolmogor. Все остальное — K.D.<br />
 
ACDC для ТЧ — bardak, для ЗП — bardak, Kolmogor. Все остальное — K.D.<br />
 
Используйте/выкладывайте где и как хотите, с указанием авторов.
 
Используйте/выкладывайте где и как хотите, с указанием авторов.
 
[[Категория:Perl]]
 

Обратите внимание, что все добавления и изменения текста статьи рассматриваются как выпущенные на условиях лицензии GNU Free Documentation License 1.3 или более поздняя (см. xrWiki:Авторские права). Если вы не хотите, чтобы ваши тексты свободно распространялись и редактировались любым желающим, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого.
НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ МАТЕРИАЛЫ, ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ!

To protect the wiki against automated edit spam, we kindly ask you to solve the following CAPTCHA:

Отменить | Справка по редактированию  (в новом окне)