Это популярное сообщение. KD87 718 Опубликовано 16 Сентября 2011 Это популярное сообщение. Поделиться Опубликовано 16 Сентября 2011 Как некоторым, может быть, известно, на X-Ray Engine Toolset идет развитие утилит, доставшихся нам вместе с исходниками от выдающихся программистов коммьюнити (прежде всего, конечно, bardak'a). В силу своих скудных навыков по программированию я занимаюсь прежде всего perl-скриптами - ACDC, game.graph recompiler и т.д. В этой теме я прошу тех мододелов, кто часто работает с perl-скриптами, помочь с отловом багов. Прежде всего интересует Universal ACDC - спавны каких модов не распаковывает, какие фичи не работают, все, что найдете. Здравые мысли по развитию скриптов также приветствуются. Надеюсь на вашу помощь. ----------------------------------------------------------- --S.T.A.L.K.E.R. *.spawn compiler/decompiler-- ----------------------------------------------------------- Версия: 1.38 Дата последних правок: 21.05.2014 Данный acdc предназначен для распаковки и запаковки all.spawn/level.spawn от любого билда, начиная с 1265. Основные фичи: -распаковка оригинальных спавнов ТЧ, ЧН, ЗП и билдов ТЧ, начиная с 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 в папку с программой, делаете батник (команды ниже), запускаете батник, радуетесь жизни. Пояснение по дальнейшему тексту: в угловых скобочках (<>) указано значение опции. Это путь до спавна, папка для распаковки и т.п., то есть то, что нужно вписывать вам. В квадратных скобочках ([]) указаны необязательные опции. Опции без скобочек - обязательны. Режим предназначен для распаковки файлов all.spawn и level.spawn Команда: universal_acdc.pl -d <spawn_file> [common_options] -d <spawn_file> - путь до спавна. common_options - общие опции. Читайте про них ниже. При распаковке спавнов от модов может возникнуть ошибка "unknown section". Это означает, что в моде используются нестандартные секции предметов/мобов. Для распаковки такого спавна необходимо использовать ключ -scan, указав ему в качестве параметра путь до папки config/configs. Пример смотрите в батнике acdc_decompile_scan. Режим предназначен для запаковки распакованных текстовых файлов спавна в all.spawn или level.spawn Команда: universal_acdc.pl -compile <dir> [-idx <index_file>] [-f <flag1,flag2,...>] [common_options] -compile <dir> - папка, в которой лежит распакованный спавн. Если работаете в текущей папке, <dir> не нужно. common_options - общие опции. Читайте про них ниже. -idx <index_file> - с этим ключом скрипт сформирует ltx конфиг с секциями вида: [13_box_wood_01_0021] ;формат - "индекс_локации"_"имя_объекта" id = 2907 ;id объекта story_id = -1 ;story_id объекта Такие записи создадутся для ВСЕХ объектов из спавна. Если указать ключ -idx без пути до конфига, он появится в папке с acdc (spawn_ids). Зачем это нужно? В игре вы сможете открыть этот файл из скриптов и найти нужный вам объект. Если раньше для нахождения нужного id объекта по имени требовалось перебрать все объекты в игре, теперь это можно сделать, просто считав id из нужной секции конфига. Также есть кое-какие дополнительные фичи: - при компиляции для правильной работы необязательно проставлять всем секциям в спавне параметры version и script_version. Достаточно поставить их в секции актора, ацдц далее будет использовать их. Полезно, когда спавн "сборный". - при компиляции контролируется уникальность параметров story_id, чтобы не мучиться потом с вылетами игры. Режим позволяет конвертировать спавны ТЧ, ЧН, ЗП между собой. Команда: universal_acdc.pl -convert <file> -version <new_version> [common_options] -convert <file> - файл, который нужно сконвертировать. Можно указывать как запакованный (*.spawn) спавн, так и распакованный (alife_***.ltx). Внимание! Так как граф и кросс-таблицы в ЧН и ЗП вшиты в спавн, для конвертирования ЗАПАКОВАННЫХ спавнов ТЧ в эти форматы вам потребуется положить в папку с acdc папку levels из игры. Необязательно копировать все файлы, достаточно оставить в папке с каждой локацией файл level.gct. -version <new_version> - новая версия спавна. Подобрать версию вы сможете, посмотрев файл spawn_versions.txt common_options - общие опции. Читайте про них ниже. Также поддерживается тонкая настройка конвертации через файл convert.ini. В файле есть две секции: [exclude] и [change]. В секции exclude можно прописать те секции, которые надо удалить из спавна при конвертации. Пример: [exclude] sections = m_trader, m_car, flesh_weak В секции change прописываются имена тех секций, в которых нужно что-то поменять или дополнить. Пример: [change] sections = 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] sections = stalker [stalker] add:game_vertex_id = 500 rep:visual_name = actors/soldier/soldier_antigas.ogf При подключении новых локаций без перекомпиляции графа возникает необходимость одновременного сдвига всех гейм-вертексов спавна новых локаций на какое-то определенное значение. Это можно сделать в этом режиме. Команда: acdc -parse <file> -old <old_gvid0> -new <new_gvid0> [-way] [common_options] -parse <file> - имя ltx, в котором находится спавн. -old <old_gvid0> - старый начальный game_vertex_id локации. -new <new_gvid0> - новый начальный game_vertex_id локации. -way - обрабатывает также файл way_***.ltx для этой же локации. Пример: acdc -parse alife_l01_escape.ltx -old 0 -new 934 Разбивка all.spawn на level.spawn может быть полезна при одновременной правке спавна в СДК и с помощью ACDC. Команда: acdc -split <file> [-use_graph] [-way] [common_options] -split <file> - разбиваемый спавн. Для восстановления граф-поинтов необходимы level.spawn для всех локаций, находящихся в графе. Их следует поместить в папку levels согласно их положению в геймдате сталкера - по папкам, соответствующим локациям. Папка levels должна быть в папке с acdc (или путь до нее можно задать ключом - читайте далее). -use_graph - использование game.graph для восстановления граф-поинтов. Плюс - не нужны level.spawn, минус - не восстанавливаются имена граф-поинтов (за исключением граф-поинтов переходов). -way - также из спавна генерируются level.game В этом режиме сравниваются два текстовых файла спавна. Итоговый файл формируется на основе первого файла. Все секции, которых нет во втором файле, но есть в первом, удаляются, а те секции, которые есть во втором, но нет в первом, переносятся в итоговый файл. Параметры секций не меняются. Режим позволяет сэкономить время в случае, если надо совместить два файла, причем секции там идут вразнобой. Команда: acdc -compare <file1,file2> [common_options] -compare <file1,file2> - файлы для сравнения Зачем нужно: при изменении аи-сетки у объектов изменяются game_vertex_id и level_vertex_id. Это влечет за собой необходимость повторного снятия данных параметров в игре. Данный режим позволяет автоматически обновить вертексы у всех секций спавна. Команда: universal_acdc -update <spawn_name> [common_options] -update <spawn_name> - all.spawn, для которого надо обновить вертексы. Режим update требует дополнительной настройки. В папке с acdc есть файл fs_vertex.ltx В этот файл необходимо вписать путь до локаций с ОБНОВЛЕННОЙ аи-сеткой. Обязательно должны присутствовать файлы level.ai, level.gct для всех локаций из спавна. ВНИМАНИЕ! Для нормальной отработки режима геймграф должен быть СТАРЫЙ, использовавшийся до перекомпиляции. После нормальной отработки режима спавн можно распаковывать уже с НОВЫМ геймграфом. -out <file> - путь до файла/папки с результатом. Имеет разный смысл для разных опций: для decompile, parse - папка с результатом для compile, convert - результрующий файл. для split - папка levels, куда сохранять level.spawn. -scan <scan_dir> - путь до папки с конфигами. Используется в случае спавнов от модов. -g <graph_dir> - путь до папки с game.graph. Бесполезен для compile и parse, а также, если работаете со спавном ЧН, ЗП, build 3120. -level - обрабатывать спавн как level.spawn. -af - также распаковываются\запаковываются места спавна артефактов в аномалиях (section2.bin). -nofatal - отключает вылет при фатальной ошибке, заменяя ее предупреждением. Если acdc генерирует ошибку 'unknown clsid ... for section...', это означает, что в данном моде добавлены новые пары клиентский/серверный класс в class_registrator.script. Дабы не усложнять работу с acdc, такие пары не определяются автоматически. Лучше всего сообщить об этом мне, однако, если вы понимаете, что находится внутри class_registrator.script, можете добавить новые сеты в clsids.ini сами. Сеты добавляются в таком формате: clsid = соответствующий_серверный_класс Пример: ZS_ELECT = se_zone_anom ================================= Любые имена опций можно сокращать. К примеру, необязательно использовать именно -use_graph, скрипт поймет также и -use, и -u. Однако ряд опций при сокращении их имени могут конфликтовать друг с другом. -compile нельзя сократить до -c, поскольку в таком случае скрипту неясно, что имеется ввиду: -compile или -convert. В таком случае наиболее короткое имя для compile будет таким: -com 1.38: [!] добавлена поддержка релизного спавна Lost Alpha [!] исправлена конвертация и конвертация 1.37: [+] добавлена распаковка и запаковка спавна билда Lost Alpha [!] все не распознанные пути при сплите теперь сваливаются в unrecognized_ways.game 1.36: [!] исправлена разбивка спавна на level.spawn и level.game [!] исправлено сканирование конфигов 1.35: [!] исправлено автоназначение версии при отсутствии этого параметра в секции [!] убрано чтение game.graph при компиляции 1.34: [!] исправлено обновление вертексов [+] добавлено обновление параметра distance при обновлении вертексов [+] добавлен контроль уникальности story_id при компиляции 1.33: [!] исправлена распаковка спавнов некоторых билдов [+] добавлен режим обновления вертексов [+] добавлен "умный" разбор way-объектов по локациям для режима split 1.322: [+] добавлено сравнение распакованных файлов 1.321: [!] исправлена распаковка спавнов ЗП 1.32: [!] guids.ltx больше не нужен без ключа -idx [+] реализована сортировка way-объектов по алфавиту [+] реализовано определение принадлежности way-секции к локации по gvid и префиксу [+] реализована сортировка alife-объектов 1.31: [!] изменен алгоритм сканирования конфигов [!] изменен приоритет запросов из clsids.ini, теперь данные из него перекрывают внутренние таблицы [!] скрипт адаптирован под новую систему отладочных сообщений [f] поправлена логика работы с пакетом актора в ЧН [+] добавлена возможность вынесения лога в файл [+] добавлена возможность вынесения сетов в отдельный конфиг-файл 1.30: [f] теперь новая версия обработчика ошибок по-прежнему обрабатывает спавн Народной солянки [f] исправлены проблемы распаковки level.spawn некоторых билдов 1.29: [f] исправлена ошибка распаковки level.spawn билдов [f] исправлена ошибка распаковки спавна ЧН [f] всякие мелкие правки 1.28: [f] исправлено игнорирование парсером ключа -way в режиме split. [f] исправлена ошибка сканирования конфигов при компиляции. [f] исправлена ошибка чтения секций некоторых se-классов. [f] исправлена ошибка разбивки спавна, из-за которой генерировались левел спавны неправильного формата. [+] добавлен контроль дубликатов актора при компиляции. 1.27: [f] исправлена ошибка парсера, в некоторых случаях приводившая к порче логики. [f] исправлено создание папок при сохранении результата. [+] добавлена переинициализация параметров секции после смены класса при конвертации. Это расширяет диапазон версий, доступных для конвертирования. [+] добавлена поддержка масок при конвертации. [+] добавлен ключ -ini в режиме конвертации 1.26: [f] поправлена распаковка спавнов ЧН. [+] добавлено автоматическое заполнение версии спавна из первой секции (если актора в спавне нет). [+] что-то еще по мелочи, не помню. 1.25: [f] отключен вывод пустого параметра spawned_obj при распаковке. [+] реализовано автоматическое заполнение параметров version и script_version при запаковке спавнов с секциями из разных версий игры. Версия берется из конфига актора. 1.24: [f] исправлена распаковка/запаковка спавна билда 2571. [f] исправлена запись guids.ltx [f] мелкие правки 1.23b: [+] убрано предупреждение "state data left" при распаковке спавнов ЗП, запакованных ранее с помощью acdccop. [f] исправлены ошибки split, из-за которых могли получаться кривые level.spawn [f] переделана логика чтения/записи пакетов se_stalker/se_monster [f] мелкие изменения 1.22b: [+] добавлен ключ -nofatal 1.21b: [f] исправлены небольшие опечатки в коде. [f] парсер теперь корректно читает значения с комментариями. 1.2b: [f] небольшие правки по конвертации. [+] добавленные в модах соответствия clsid -> серверный класс теперь редактируются в отдельном конфиге (clsids.ini). [+] ошибка при встрече незнакомого clsid теперь выдается при распаковки секции спавна с таким clsid, а не при сканировании конфигов, как раньше. 1.1b: [+] проверена распаковка билд-спавнов, решена проблема декомпиляции спавнов билдов 25хх. [+] добавлен контроль наличия параметра version в секциях распакованного спавна. [f] исправлено исключение файла со spawn_id объектов при сканировании конфигов. 1.0b: [+] основательно переработан код, часть скрипта вынесена в отдельные модули. [f] исправлены все не работавшие функции. [+] увеличена скорость выполнения кода, уменьшены требования по памяти. ACDC для ТЧ - bardak, для ЗП - bardak, @Kolmogor. Все остальное - @KD87 Используйте/выкладывайте где и как хотите, с указанием авторов. Новичкам в редактировании спавна поможет краткая инструкция: Чтобы не плодить сторонних папок и все было под рукой для работы и игры - будем работать прямо в рабочей папке с игрой/модом. Устанавливаем и настраиваем комплект ACDC: 1. Открываем папку 'gamedata\spawns' и в ней создаем папку 'acdc'. 2. В эту папку (acdc) копируем (распаковываем) весь комплект файлов из архива 'Universal ACDC.7z', т.е. в папке должны лежать: - universal_acdc.pl - перл-скрипт утилиты; - acdc_decompile.bat - командный файл для распаковки; - acdc_compile.bat - командный файл для запаковки; - stkutils - папка со служебными библиотеками утилиты; ... - необязательные или технологические файлы (universal_acdc_readme.txt и т.п.). 4. Выходим опять в папку 'gamedata\spawns' и создаем в ней папку 'unpack' - в этой папке будут находиться файлы распакованного спавна. 5. Открываем командный файл (батник) 'acdc_decompile.bat' и изменяем в нем строку на эту: universal_acdc.pl -d ../all.spawn -o ../unpack -g ../../ -scan ../../config/ 6. Открываем командный файл (батник) 'acdc_compile.bat' и изменяем в нем строку на эту: universal_acdc.pl -c ../unpack -o ../all.spawn 7. Проверьте, есть ли в папке 'gamedata' файл 'game.graph'. Если его нет - распакуйте его из пак-файлов (gamedata.db*) оригинальной игры и скопируйте в папку 'gamedata' мода. 8. Важно! Для вашей безопасности скопируйте файл 'all.spawn' в удобное вам место (зарезервируйте) для возможности восстановления исходного файла спавна после возможных ваших ошибок при редактировании. Все, ваш комплект готов для работы с 'all/spawn'-ом на лету, т.е. вы можете запускать игру и играть, можете распаковывать, редактировать и запаковывать файл спавна. - Распаковка - запускаете 'acdc_decompile.bat' (см. по пути '\gamedata\spawns\acdc'); - Редактируете в папке 'unpack' (см. по пути '\gamedata\spawns\unpack'); - Запаковка - запускаете 'acdc_compile.bat' (см. по пути '\gamedata\spawns\acdc'); - ... проверяете в игре. Примечание: Если у вас стоит ОС Windows 7 - возможно потребуется в начало командных строк добавить вызов 'perl': perl universal_acdc.pl -d ../all.spawn -o ../unpack -g ../../ -scan ../../config/ perl universal_acdc.pl -c ../unpack -o ../all.spawn Успехов в модмейкерстве! :-) Для удобства выкладываю ссылку на ACDC отдельно (папка stkutils - ставить обязательно!) Версия 1.38 Для работы необходим Active Perl (брать с официального сайта) - LA (билд) - АМК v.1.4.1 - Z.E.N.O.B.I.A.N mod - NLC 2-6 - SIMBION - OGSM v.2.3.1 Final - Народная солянка 2010 от 19.04 (с ключом -nofatal) - R.M.A. v.1.1 - Oblivion_Lost - SRP - Тайные тропы 2 - Lost World - Requital - Lost World - Trops of Doom - OGSM v.1.7 (для распаковки исправьте в w_vintorez.ltx class = WP_VINT на class = WP_AK74 либо используйте ключ -nofatal) - Difficult Zone Mod v.1.0 (аналогично OGSM) - SolinX v.1.1.3 - SolinX v.2.0 (без сканирования) - Full Realism Mod v.1.0 - Shoker Mod v.1.2 (без сканирования) - SGM v.1.7 - SGM v.2.0 - Slayer mod beta 0.17 - ARS v.0.5.2 (без сканирования) - AMK ЗП v.0.4 Priboi Story не распаковывается из-за xrSpawner. Кому надо, вот распакованный спавн. Постите результаты распаковки спавнов, полученные вами. Внимание! Для повторного сканирования конфигов необходимо удалить файл sections.ini. Или воспользоваться батником acdc_decompile_scan (распаковка). Собрал большинство перл-скриптов в кучу и адаптировал их под единую библиотеку модулей stkutils. Написал пару новых скриптов. Итак: gamemtl.xr (поддерживается полная распаковка)lanims.xr (поддерживается полная распаковка)particles.xr (поддерживается только распаковка на бинарные файлы)shaders.xr (поддерживается полная распаковка)shaders_xrlc.xr (поддерживается полная распаковка)senvironment.xr (поддерживается полная распаковка) levellevel.snd_staticlevel.ps_static Распаковщик спавнов universal acdc 1.35 Распаковщик сохранений save unpacker 0.4 Сборщик/разборщик файлов RIFF-формата: chunk parser Скрипт для массовой замены строк файлах формата ini сталкера: data repclacement ini Скрипт для массовой замены строк в произвольных текстовых файлах: data repclacement text Скрипт для изменения высоты травы: details height changer Скрипт для копирования ресурсов разрабатываемой локации из СДК: resource copier Распакованную библиотеку модулей (папка stkutils) нужно положить в папку со скриптом или (советую) в C:\Perl\lib (или аналогичную папку, если вы установили ActivePerl в другую папку). Во втором случае stkutils будет работать для всех скриптов сразу независимо от расположения. Universal ACDC.exe от @PSI - версия утилиты, собранная в виде единого .exe файла и не требующая установки дополнительного софта.Репозиторий проектаСсылки на скачивание Universal ACDC v1.40 от @abramcumner - добавлено чтение секций из system.ltx - исправлены переносы строк при разбиении all.spawnРепозиторий проектаСcылки на скачивание 6 9 8 Ссылка на комментарий
KD87 718 Опубликовано 24 Сентября 2011 Автор Поделиться Опубликовано 24 Сентября 2011 Новая версия:http://narod.ru/disk/26175538001/Universal_ACDC_2011-09-24.7z.html Подправлены глюки, найденные Artos. Ссылка на комментарий
Artos 99 Опубликовано 25 Сентября 2011 Поделиться Опубликовано 25 Сентября 2011 (изменено) KD87 В версии "Universal_ACDC_2011-09-24" осталась проблема с 'sections.ini', т.е. при отсутствии этого файла процесс распаковкм/упаковки невозможет при указании ключа '-scan'. Проверяю так: 1. Удаляю из папки с модом (Simbion) все следы спавна и ACDC; 2. В папке 'gamedata\spawns' создаю две подпапки - \acdc и \unpack; 3. В папку 'gamedata\spawns\acdc' распаковываю весь комплект "Universal_ACDC_2011-09-24". По сравнению с релизным вариантом утилиты в папке 'stkutils' не хватает файла 'object.pm' - добавляю его (от 16.06.2011), хотя на работе это и не сказывается.; 4. В папку спавна копирую оригинальный all.spaw (SHoC v1.0006); 5. Запускаю команду распаковки: perl universal_acdc.pl -d ../all.spawn -o ../unpack -g ../../ -scan ../../config/ Ошибка:: Use of uninitialized value in concatenation (.) or string at stkutils/scan.pm line 1074 (#1) (W uninitialized) An undefined value was used as if it were already defined. It was interpreted as a "" or a 0, but maybe it was a mistake. To suppress this warning assign a defined value to your variables. To help you figure out what was undefined, perl tells you what operation you used the undefined value in. Note, however, that perl optimizes your program and the operation displayed in the warning may not necessarily appear literally in your program. For example, "that $foo" is usually optimized into "that " . $foo, and the warning will refer to the concatenation (.) operator, even though there is no . in your program. Can't use an undefined value as an ARRAY reference at stkutils/scan.pm line 1075 (#2) (F) A value used as either a hard reference or a symbolic reference must be a defined value. This helps to delurk some insidious errors. Uncaught exception from user code: Can't use an undefined value as an ARRAY reference at stkutils/scan.pm line 1075. at stkutils/scan.pm line 1075 stkutils::scan::scan_system('../../config/', '\system.ltx', 'HASH(0x21b28c8)', undef) called at stkutils/scan.pm line 1009 stkutils::scan::launch('stkutils::scan', '../../config/', undef) called at universal_acdc.pl line 7124 scanning your gamedata folder...Для продолжения нажмите любую клавишу . . . 6. Запускаю командой: perl universal_acdc.pl -d ../all.spawn -o ../unpack -g ../../ Оригинальный спавн распаковывается. 7. Запускаю упаковку: perl universal_acdc.pl -c ../unpack -o ../all.spawn_new Упаковка оригинального спавна завершается успешно. 8. Вторично запускаю упаковку того же распакованного оригинального спавна: perl universal_acdc.pl -c ../unpack -o ../all.spawn_new -scan ../../config/ Ошибка: Use of uninitialized value in open at D:/Perl/lib/IO/File.pm line 185 (#1) (W uninitialized) An undefined value was used as if it were already defined. It was interpreted as a "" or a 0, but maybe it was a mistake. To suppress this warning assign a defined value to your variables. To help you figure out what was undefined, perl tells you what operation you used the undefined value in. Note, however, that perl optimizes your program and the operation displayed in the warning may not necessarily appear literally in your program. For example, "that $foo" is usually optimized into "that " . $foo, and the warning will refer to the concatenation (.) operator, even though there is no . in your program. Use of uninitialized value in concatenation (.) or string at universal_acdc.pl line 7122 (#1) Uncaught exception from user code: FATAL ERROR! Function: main Line: 7122 Expression: Description: cannot open at stkutils/debug.pm line 1 stkutils::debug::fail('main', 7122, '', 'cannot open ') called at universal_acdc.pl line 7122 Для продолжения нажмите любую клавишу . . . При этом создается 'sections.ini' нулевой длины. Следующие попытки запуска заканчиваются аналогичной ошибкой. 9. Заменяю 'sections.ini' на ранее рабочий (заполненный) файл от этого мода. Запуск на упаковку проходит успешно. Т.о. отсутствие файла 'sections.ini' или его нулевая длина не позволяют работать с измененными конфигами из мода (ни распаковать/ни запаковать даже оригинальный спавн). Копирование ранее сделанного файла - позволяет работать, однако это предполагает НЕ обновление файла с секциями или его обновление в ручном режиме. По 'spawn_ids.ltx': При неуказании ключа -idx, в корне папки утилиты образовался и с имененм и расширением, но нулевой длины. Ад Через пару часов поправлю. KD87 Добавлено через 31 мин.: P.S. Не спеши, но если появится - успею проверить. :-) Для работы пока использую рабочие варианты. Да и последними пользоваться вполне можно, если учитывать нюансы и при необходимости добавление новых секций руками. Сам all.spawn не страдает. Изменено 25 Сентября 2011 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
KD87 718 Опубликовано 25 Сентября 2011 Автор Поделиться Опубликовано 25 Сентября 2011 Artos, пробуй: http://narod.ru/disk/26215549001/Universal...1-09-25.7z.html. Ссылка на комментарий
Artos 99 Опубликовано 25 Сентября 2011 Поделиться Опубликовано 25 Сентября 2011 (изменено) KD87 Спасибо! Проверил версию от 25-го - вроде как на всех режимах и с различными комбинациями ключей (путей для ключей). На всех основных режимах работает как заявлено, служебные файлы (ini, ltx, log) - наполнены. Примечание: На режиме упаковки с ключем -idx ../../config/spawn_ids.ltx в самом конце в лог была выдана строка: writing ../all.spawn... writing header... writing alife objects... writing artefact spawn places... writing way objects... writing service information... Use of uninitialized value in pack at universal_acdc.pl line 7039. done! Для продолжения нажмите любую клавишу . . . - при этом вся упаковка прошла успешно. Но(!): Попытка создать 'spawn_ids.log', т.е. при не указании ключа -scan и добавленых к отдельным секциям объектов метки :index - скомпилированный all.spаwn оказался не рабочим (!!!) , т.к. в помеченных меткой секциях оказалось по две секции [spawn_id] (продублированы). Секции уже были проставлены в распакованном спавне. Чистка руками всех [spawn_id] в секциях и повторная пометка и упаковка - дала рабочий all.spawn. Т.о. процесс получения 'spawn_ids.log' по сути или однократен или ... после ручной чистки прежних пометок. Предложение: Учитывая, что подобные метки будут востребованы модмейкерами с достаточными навыками по правке спавна - отказаться от метки ':index' и, как ранее предлагал, оставить внесение [spawn_id] самим модмейкерам, а ACDC, найдя такую секцию - актуализирует в ней имя и индекс секции спавна. Т.о. добавление секции контролируется человеком, а актуализация параметра в ней - утилитой. Изменено 25 Сентября 2011 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
KD87 718 Опубликовано 25 Сентября 2011 Автор Поделиться Опубликовано 25 Сентября 2011 Artos, поправил согласно пожеланиям: http://narod.ru/disk/26216260001/Universal...1-09-25.7z.html. Ссылка на комментарий
dark_stalker 2 Опубликовано 25 Сентября 2011 Поделиться Опубликовано 25 Сентября 2011 Здраствуйте у меня при запакрвке спавна new spawn стал весить 23 килобйта!!! из зачего это и как это исправить? Ссылка на комментарий
Artos 99 Опубликовано 25 Сентября 2011 Поделиться Опубликовано 25 Сентября 2011 (изменено) KD87 Проверил "Universal_ACDC_2011-09-25_2, все отлично! И со всеми ключами корректно работает и создает рабочие спавны, служ.файлы и метки 'spawn_id' заполняет/актуализирует. ИМХО, вполне рабочая и достаточно удобная версия. Спасибо! dark_stalker Если ты у себя компидишь-перекомпилишь локации/сетки и пр. до задавать вопрос о странностях компиляции твоего спавна стОит или себе или Кашпировскому. Потрудись привести достаточную информацию что/чем/как делал - тогда возможно кто-то и подскажет как исправить. Изменено 25 Сентября 2011 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Хемуль36рус 1 789 Опубликовано 2 Октября 2011 Поделиться Опубликовано 2 Октября 2011 (изменено) Подскажите неучу, acdc распаковывать только в геймдату нужно или можно в любое место, например я хочу работать с ним на диске Е .Я имею в виду прога не обязательно должна быть в папке с игрой, главное чтобы был файл алспапн и геймграф. Что не так распаковал все как написано запускаю acdc_decompile и получаю Как путь прописать если только запустил батник сразу это вылетает, и все больше ничего не сделаешь. Походу разобрался, только не понял когда запаковывается новый ал спавн должен появится в папке acdc. или как, просто что то ничего не появилось, и при распаковке в папке с acdc появляются два файла , гуид и секция это так и надо. "Походу", ты не разобрался. Cпавн должен быть в папке с acdc, либо на него должен указывать путь после ключа -d. Аналогично с game.graph - или в папке с acdc или указать путь после ключа -g. Тогда все распакуется. Запакованный спавн появляется в папке с acdc, если запаковывается без ключа -o. Если с этим ключом - появится там, какой путь указан в -o. Мне вот только неясно, как же ты что-то запаковывал, если даже не распаковал. KD87 в Да нет я потом по методу от Artosa разобрался, переписал путь в батниках открыв их блокнотом, распаковал ал-спавн, потом попробовал запаковать, все вроде в ком. строке прошло без ошибок, но как написано что перепакованный файл должен появится '\gamedata\spawns\acdc там ничего не было, или я опять что то накосячил. В общем как правильно прописать путь для скомпиленного ал спавна вот в этой строке universal_acdc.pl -c ../unpack -o ../all.spawn, например что бы он появился в папке "pack" Напиши свой текущий батник по запаковке и скажи, где у тебя лежит acdc и распакованный спавн. KD87 В папке геймдата, а папке спавн, создал папку acdc в неё распаковал архив, создал папку unpak, в ней находится распакованный ал-спавн, в батнике по запаковке вот это universal_acdc.pl -c ../unpack -o ../all.spawn pause в батнике по распаковке вот это universal_acdc.pl -d ../all.spawn -o ../unpack -g ../../ -scan ../../config/ pause Распаковывается нормально, в папку unpak, а когда запаковываю нового ал спавна нет , может это из за того что я просто ничего не добавил в распакованный файл, я просто попробовал как все это будет работать, то есть распаковать-запаковать, в итоге распаковка нормально, а запаковка, нью ал спавн нет. Логично, что нет нового спавна. У тебя же запаковывается в ../all.spawn. Новый спавн заменяет собой старый. KD87 Изменено 9 Октября 2011 пользователем KD87 Intrel Core i5 9400F, msi gtx 1660 super ventus, RAM 16g-DDR4, HD 2000g, Win 10x64, SSD 256g, SSD m2 500g. Ссылка на комментарий
ХОВАН 3 Опубликовано 9 Октября 2011 Поделиться Опубликовано 9 Октября 2011 (изменено) Здравствуйте, ACDC вылетает при перегонке Кордона ЧН (04+) в ЗП Батник такой: perl universal_acdc.pl -convert escape -game1 cs4,245 -game2 cop,934 pause Вылет такой: importing alife objects from file alife_escape.ltx... exporting alife objects on level escape... FATAL ERROR! Function: stkutils::ini_file::export_properties Line: 108 Expression: defined $container->{$p->{name}} Description: undefined field was_in_smart_terrain Содержимое файла sections.ini такое: [sections] to_exclude = sim_faction, space_restrictor, esc_driver, m_car, m_trader, smart_cover, smart_terrain, dog_normal, dog_weak, stalker, dog_strong, agr_stalker_base_leader Что не так, что делать? Ты все правильно делаешь, но в текущей версии конвертация не работает. Причина известна, трабла решается, скоро будет новая версия, там все будет работать. KD87 Изменено 9 Октября 2011 пользователем KD87 Ссылка на комментарий
Artos 99 Опубликовано 9 Октября 2011 Поделиться Опубликовано 9 Октября 2011 KD87 В предверии обновленной версии хотелось бы высказать маленькую пожелалку косметитеского характера: Сейчас при каждой компиляции спавна перед секциями [spawn_id] добавляется пустая строка (т.е. накапливаются переносы строк). Так же в некоторых местах исходного спавна имеются "лишние" или отсуктствуют подобные 'разделители' пустыми строками. Может бытьстОит уделить немного времени удалению излишних пустострок и добавлению отсутствующих? "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
KD87 718 Опубликовано 9 Октября 2011 Автор Поделиться Опубликовано 9 Октября 2011 Artos, перевод строки перед [spawn_id] я убрал. А вот остального в спавне я ни разу не видел. Можно пример? Сейчас парсер никак не влияет на кастом дату, только удаляет лишние переводы строк. Именно из-за этого, кстати, оригинальный спавн "худеет" на несколько килобайт при перепаковке. Ссылка на комментарий
Artos 99 Опубликовано 9 Октября 2011 Поделиться Опубликовано 9 Октября 2011 (изменено) KD87 Примеры (из исходника alife_l01_escape.ltx, распаковывал давно и не помню уж какой версией): для 'name = esc_stalker_fanat': custom_data = <<END [smart_terrains] esc_lager = true [spawner] cond = {+esc_fanat_spawn} END для 'name = esc_stalker' custom_data = <<END [spawner] cond = {+tutorial_wounded_start} [smart_terrains] none = true [known_info] esc_tutorial_secret [dont_spawn_character_supplies] [dont_spawn_loot] END Учитывая, что это именно скорее косметические нюансы и для игры не имеют значения, все же ... единообразие порой упрощает поиск и обработку нужных строк. Примечание: Наличие излишеств или отсутствие 'пустострок' на новых версиях ACDC (за последние пол-года) не проверял. Но, учитывая, что кастом-дата 'не трогается' - и отсутствующие возможны, и излишества от самих же модмейкеров вполне реальны. Изменено 9 Октября 2011 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Хемуль36рус 1 789 Опубликовано 9 Октября 2011 Поделиться Опубликовано 9 Октября 2011 (изменено) Ну тогда если я допишу в батнике по запаковке universal_acdc.pl -c ../unpack -o ../all.spawn.new, то тогда будет новый ал спавн появляться в папке acdc? Путь - ../all.spawn.new. Значит, файл запишется на каталог выше текущего каталога. Именно для этого там двоеточие. KD87 Ой я Вас ввел в заблуждение, конечно же all.spawn_new, я вроде понял , буду пробовать . Изменено 9 Октября 2011 пользователем ХЕМУЛЬ36RUS Intrel Core i5 9400F, msi gtx 1660 super ventus, RAM 16g-DDR4, HD 2000g, Win 10x64, SSD 256g, SSD m2 500g. Ссылка на комментарий
Artos 99 Опубликовано 9 Октября 2011 Поделиться Опубликовано 9 Октября 2011 (изменено) ХЕМУЛЬ36RUS Не уверен, что скрипт поймет двойное расширение 'all.spawn.new', KD87 может быть даст разъяснение. Но тебе достаточно задать например имя: 'all.spawn_new' или подобное. И конечно же чтобы с ним работать в игре - необходимо будет задавать 'штатное' имя, т.е. замещать прежний 'all.spawn'. Расширение неважно, в винде ведь в имени файла вполне допускается точка. KD87 Изменено 9 Октября 2011 пользователем KD87 "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
FANAT 117 Опубликовано 12 Октября 2011 Поделиться Опубликовано 12 Октября 2011 (изменено) Все таки не получается у меня два гейм.графа обьединить, вроде все делаю правильно, но ни как.. Положил папку ggrc, на диск С, сделал такой батник ggrc.pl -g1 game.graph,soc -l1 l01_escape,l02_garbage,l03_agroprom,l03u_agr_underground,l04_darkvalley,l04u_lab x18,l05_bar,l06_rostok,l08_yantar,l08u_brainlab,l07_military,l10_radar,l11_pripy a t,l12_stancia,l12u_sarcofag,l12u_control_monolith,l12_stancia_2,l10u_bunker,atp_ f or_test22,peshera,puzir,aver,av_peshera,limansk,hospital,generators,warlab,red_f o rest,lost_village,marsh,dead_city,zaton,jupiter,pripyat,jupiter_underground,labx 8 -g2 dgame.graph,soc -l2 digger_stash pause В папке Левелс есть все локации для обьединения.. Слетает все после локации l12_stancia_2, и появляется ошибка, ну или что, на скрине видно кароче, что делать не знаю.. === Просьба, выложите кто нибудь версию ggrc.pl v.0.7, на какой нибудь файлообменник, попробую ей.. === ПС, Вроде можно спросить здесь, если нельзя, то извиняюсь, только не баньте, надоело три дня сидеть и читать.. Добавлено через 82 мин.: Забыл добавить, оригинальный глобальный гейм.граф из Народной Солянки.. Добавлено через 7 мин.: Да и список лок в батнике составлен по списку.. { gvid0 => 0, name => 'l01_escape' }, { gvid0 => 252, name => 'l02_garbage' }, { gvid0 => 416, name => 'l03_agroprom' }, { gvid0 => 703, name => 'l03u_agr_underground' }, { gvid0 => 811, name => 'l04_darkvalley' }, { gvid0 => 1109, name => 'l04u_labx18' }, { gvid0 => 1168, name => 'l05_bar' }, { gvid0 => 1308, name => 'l06_rostok' }, { gvid0 => 1438, name => 'l08_yantar' }, { gvid0 => 1529, name => 'l08u_brainlab' }, { gvid0 => 1545, name => 'l07_military' }, { gvid0 => 1862, name => 'l10_radar' }, { gvid0 => 2117, name => 'l11_pripyat' }, { gvid0 => 2273, name => 'l12_stancia' }, { gvid0 => 2402, name => 'l12u_sarcofag' }, { gvid0 => 2467, name => 'l12u_control_monolith' }, { gvid0 => 2517, name => 'l12_stancia_2' }, { gvid0 => 2661, name => 'l10u_bunker' }, { gvid0 => 2792, name => 'atp_for_test22' }, { gvid0 => 2862, name => 'peshera' }, { gvid0 => 2881, name => 'puzir' }, { gvid0 => 2886, name => 'aver' }, { gvid0 => 2909, name => 'av_peshera' }, { gvid0 => 2988, name => 'limansk' }, { gvid0 => 3028, name => 'hospital' }, { gvid0 => 3076, name => 'generators' }, { gvid0 => 3153, name => 'warlab' }, { gvid0 => 3224, name => 'red_forest' }, { gvid0 => 3324, name => 'lost_village' }, { gvid0 => 3337, name => 'marsh' }, { gvid0 => 3582, name => 'dead_city' }, { gvid0 => 3660, name => 'zaton' }, { gvid0 => 3700, name => 'jupiter' }, { gvid0 => 3748, name => 'pripyat' }, { gvid0 => 3771, name => 'jupiter_underground' }, { gvid0 => 3830, name => 'labx8' }, Изменено 12 Октября 2011 пользователем FANAT Мой канал на ютабчике... / Недельки из жизни фаната STALKER'a / Клуб 'Фанат Отчуждения' Я нет-нет, а думаю, может я неправильно жил, надо ж брать деньги у богатых и давать их бедным, а таким как ты давать по морде, шоб у мире была красота и гармония.(с)Ликвидация Всё в порядке, всё нормально, я беру тебя с собой, я беру тебя с собой. В тёмный омут головой.(с)Смысловые Галлюцинации Ссылка на комментарий
KD87 718 Опубликовано 12 Октября 2011 Автор Поделиться Опубликовано 12 Октября 2011 (изменено) FANAT, у меня нет чистой 0.7, без правок. Придется тебе качать с репозитория. Впрочем, там для тебя никаких важных функций нет. Что касается 0.6, попробуй закомментировать строчки 1127-1165. Комментирование осуществляется символом #. Лучше бы тебе подождать новую версию, конечно... На этой неделе добью acdc и возьмусь за graph recompiler. Если комментирование не поможет, воткни после строчки package game_graph; строчку use diagnostics; и выкладывай лог. Изменено 12 Октября 2011 пользователем KD87 Ссылка на комментарий
FANAT 117 Опубликовано 12 Октября 2011 Поделиться Опубликовано 12 Октября 2011 (изменено) Попробовал, вставил этот код use diagnostics; и вылетило, вот что написал батник === ПС, Этот код use diagnostics; вставлял в чистый ggrc.pl Изменено 12 Октября 2011 пользователем FANAT Мой канал на ютабчике... / Недельки из жизни фаната STALKER'a / Клуб 'Фанат Отчуждения' Я нет-нет, а думаю, может я неправильно жил, надо ж брать деньги у богатых и давать их бедным, а таким как ты давать по морде, шоб у мире была красота и гармония.(с)Ликвидация Всё в порядке, всё нормально, я беру тебя с собой, я беру тебя с собой. В тёмный омут головой.(с)Смысловые Галлюцинации Ссылка на комментарий
KD87 718 Опубликовано 12 Октября 2011 Автор Поделиться Опубликовано 12 Октября 2011 FANAT, сначала попробуй закомментировать. Ссылка на комментарий
FANAT 117 Опубликовано 13 Октября 2011 Поделиться Опубликовано 13 Октября 2011 Вот, в чистом ggrc.pl , закомментировал нужные строчки.. Мой канал на ютабчике... / Недельки из жизни фаната STALKER'a / Клуб 'Фанат Отчуждения' Я нет-нет, а думаю, может я неправильно жил, надо ж брать деньги у богатых и давать их бедным, а таким как ты давать по морде, шоб у мире была красота и гармония.(с)Ликвидация Всё в порядке, всё нормально, я беру тебя с собой, я беру тебя с собой. В тёмный омут головой.(с)Смысловые Галлюцинации Ссылка на комментарий
KD87 718 Опубликовано 13 Октября 2011 Автор Поделиться Опубликовано 13 Октября 2011 FANAT, я говорил о комментировании строчек 1127-1165, что означает "с 1127 по 1165". Закомментируй все. Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти