Это популярное сообщение. 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 Ссылка на комментарий
amik 253 Опубликовано 19 Сентября 2011 Поделиться Опубликовано 19 Сентября 2011 (изменено) KD87 и FANAT. У меня тоже такое было пока не показал путь до гейм.графа. тч(1.0004) [6546]:flag1 Будем знать . Очень нужная особенность. Меток может быть несколько, в принципе. В таком случае их нужно задавать через запятую, без пробелов: -f flag1,flag2.KD87 Кстати. Этот вариант батника universal_acdc.pl -d all.spawn -g ..\..\ -o all_spawn -scan ..\..\config\ pause Можно так, при этом не нужно нечего кидать в папку с Universal ACDC: universal_acdc.pl -d ..\all.spawn -g ..\..\ -o all_spawn -scan ..\..\config\ Самый удобный наверное. Просто поместите все что касается Universal ACDC в любую папку, и эту папку положите в папку spawns. Все уже настроено Сборка: universal_acdc.pl -c all_spawn pause Изменено 19 Сентября 2011 пользователем amik Мой архив Сталкером не занимаюсь. Ссылка на комментарий
FANAT 117 Опубликовано 19 Сентября 2011 Поделиться Опубликовано 19 Сентября 2011 (изменено) Перл установил, вот такой батник universal_acdc.pl -d all.spawn -o spavn_NS -scan config\ -g C:\Proshs\Universal ACDC\game.graph pause В черном окне недолго пробегает несколько строк и все, но ничего распакованого нету.. Распаковываю спаун от народной солянки.. Повторяю еще раз - все пути должны быть без пробелов и кириллицы. Если game.graph лежит в папке с acdc, ключ -g не нужен. KD87 Добавлено через 113 мин.: Убрал -g и все, распаковал, супер, наконец то есть чем распаковать НС, а то столько уже ищю АСДС к нему, и вот свершилось.. KD87 Спасибо огромное! Изменено 19 Сентября 2011 пользователем KD87 Мой канал на ютабчике... / Недельки из жизни фаната STALKER'a / Клуб 'Фанат Отчуждения' Я нет-нет, а думаю, может я неправильно жил, надо ж брать деньги у богатых и давать их бедным, а таким как ты давать по морде, шоб у мире была красота и гармония.(с)Ликвидация Всё в порядке, всё нормально, я беру тебя с собой, я беру тебя с собой. В тёмный омут головой.(с)Смысловые Галлюцинации Ссылка на комментарий
KD87 718 Опубликовано 19 Сентября 2011 Автор Поделиться Опубликовано 19 Сентября 2011 FANAT, спавн Народной Солянки веселый - помимо всего прочего в нем продублированы некоторые пути (way-объекты), а acdс при запаковке такие не пропускает. Так что перед запаковкой проверь все way_... файлы на дублирующиеся секции. 1 Ссылка на комментарий
smeh 1 Опубликовано 19 Сентября 2011 Поделиться Опубликовано 19 Сентября 2011 (изменено) KD87-что-то у меня не выходит с правильным созданием батника. Мод на котором учусь AMK+NLC+WAWKA. Закинул папку конфиг создал батник по примеру как чуть выше написал FANAT,так при запуске батника в окошке пишет такой фатал эрор что я буду до утра его переписывать. Помогите плиз как правильно создать команду в батнике так как из редми мне некоторые слова не понятны. Найди в скрипте строчку use diagnostics; и поставь перед ней значок #. Потом запускай и клади сюда скрин. KD87 Добавлено через 59 мин.: Прошу прощения незнание чего-либо это не проявление глупости. А в каком простите скрипте искать эту строчку? universal_acdc.pl. Это perl-скрипт. Там есть эта строчка, ближе к концу файла. KD87 Изменено 19 Сентября 2011 пользователем KD87 Ссылка на комментарий
Artos 99 Опубликовано 19 Сентября 2011 Поделиться Опубликовано 19 Сентября 2011 (изменено) Если интересно, пару слов из серии "Знаете ли вы...": Для того, чтобы 'скопипастить' все сообщение из консольного (DOS) окна нужно: 1. Не нажимая никаких клавишь на клавиатуре, кликнуть правой кнопкой мыши (ПКМ) по рамке DOS-окна. 2. В появившемся меню выбрать: Изменить -> Выделить все. В результате весь текст в окне подсветится ... 3. Нажать на клавиатуре клавишу: <Ввод> (Enter) или, опять же по ПКМ, в появившемся меню выбрать: Изменить -> Копировать. В результате выделенный текст окажется в буфере обмена и может быть вставлен (Insert) в какой-либо редактор, например в "Блокнот" (Notepad), и сохранен как текстовый файл. KD87, текущий (19.09.2011) вариант проверил. Работает как заявлено. Появились некоторые мысли ... например по использованию того же 'guids.ltx'. Сформулирую немного познее, погоняв утилиту ... Изменено 19 Сентября 2011 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
smeh 1 Опубликовано 19 Сентября 2011 Поделиться Опубликовано 19 Сентября 2011 (изменено) KD87-Если я правильно понял, то я его сейчас кликал он появляется и сразу ичезает. Ну конечно, надо открывать через блокнот - или что у тебя вместо него - и править там. KD87 Добавлено через 13 мин.: C:\usr\bin\Universal ACDC>universal acdc.pl -d all.spawn\ -o amk "universal" не является внутренней или внешней командой, исполняемой программой или пакетным файлом. C:\usr\bin\Universal ACDC>pause Для продолжения нажмите любую клавишу . . . universal acdc - дак через нижнее подчеркивание должно быть же файл-то как называется? KD87 Изменено 19 Сентября 2011 пользователем KD87 Ссылка на комментарий
Artos 99 Опубликовано 19 Сентября 2011 Поделиться Опубликовано 19 Сентября 2011 (изменено) smeh Если у тебя Windows7 - в батники перед 'universal_acdc' добавь 'perl' (прямой вызов интерпретатора языка). Т.е.: perl universal acdc.pl -d all.spawn\ -o amk KD87, про особенность батников для Windows7 вероятно стОит и в шапку вынести и в readme добавить. Вопросы такие постоянно идут и только будут расти повторы. Эм, это необязательно. У меня семерка, никогда не ставлю perl. KD87 P.S. ziStam, а ты попробуй оригинаьный спавн распаковать ... Тоже удивишься. :-) ACDC сортирует пути по файлам локаций (way_ИМЯ_ЛОКАЦИИ.ltx) по гейм-вертексам прописанным в путях. Если гейм-вертекс в пути НЕ принадлежит ни одной локации (т.е. бОльший чем на локациях) - этот путь кладется в файл, имеющий максимальный гейм-вертекс. Т.о. секция пути и не теряется и не приводит к фатальным ошибкам игры/скриптов из-за ненахождения пути. Условно, такие пути с некорректными вертексами - заглушки. Хотя ... в некоторых ситуациях могут и приводить к вылетам в схемах движения. Изменено 19 Сентября 2011 пользователем KD87 "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
ziStam 1 Опубликовано 19 Сентября 2011 Поделиться Опубликовано 19 Сентября 2011 (изменено) KD87, здравия желаю! Наконец распаковал спавн Солянки, и как-то удивился что пути, которые должны находится на чаэс-2 находятся в файле labx8. Это асдс так пути путает, или же это в Соли намудрили? ACDC разбирает пути по гейм-вертексам. Как было, так и разобрал. KD87 Изменено 19 Сентября 2011 пользователем KD87 Legend of Stalker Ссылка на комментарий
smeh 1 Опубликовано 19 Сентября 2011 Поделиться Опубликовано 19 Сентября 2011 (изменено) Прошу прощения я понимаю, что я уже всех достал.(Ну не судите строго новичка) У меня XP, в общем подчеркнул и вот,что вышло C:\usr\bin\Universal ACDC>universal_acdc.pl -d all. spawn\ -o amk checking version of all.... FATAL ERROR! Function: main Line: 6946 Expression: Description: cannot open all. C:\usr\bin\Universal ACDC>pause Для продолжения нажмите любую клавишу . . . all. spawn\ - это что за файл такой? Пиши в батнике внимательней. KD87 Изменено 19 Сентября 2011 пользователем KD87 Ссылка на комментарий
KD87 718 Опубликовано 19 Сентября 2011 Автор Поделиться Опубликовано 19 Сентября 2011 Новая версия: http://narod.ru/disk/25690244001/Universal%20ACDC.7z.html. Что нового: [+] добавлена функция разбивки all.spawn на level.spawn и level.game (аналог split_spawns в аивраппере) исправлена распаковка/запаковка level.spawn, поломанная в какой-то из версий. 1 Ссылка на комментарий
smeh 1 Опубликовано 20 Сентября 2011 Поделиться Опубликовано 20 Сентября 2011 KD87- Этот файл находится в игре сталкер гейм дата спавн-для спавна нпс и многого другого. Может мне не нужно закидывать ал спавн в acdc, а нужно просто указать путь где он находится в игре,или кроме ал спавна и папки куда распаковывать нужно указать еще что-то? Ребята выручайте,правку конфигов освоил практически,хочется сделать что-то серезней-заспавнить своего непися. Зараннее спасибо! Ссылка на комментарий
Artos 99 Опубликовано 20 Сентября 2011 Поделиться Опубликовано 20 Сентября 2011 (изменено) smeh Краткая инструкция по установке универсального ACDC для работы 'на лету': Чтобы не плодить сторонних папок и все было под рукой для работы и игры - будем работать прямо в рабочей папке с игрой/модом. Устанавливаем и настраиваем комплект 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 Успехов в модмейкерстве! :-) Изменено 20 Сентября 2011 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
amik 253 Опубликовано 20 Сентября 2011 Поделиться Опубликовано 20 Сентября 2011 (изменено) Вопрос-предложение. Вчера хотел заспавнить новую секцию, не вышло пока не добавил ее в scan.pm. Как происходит сканирование папки конфиг? Если там будет секция не прописанная в scan.pm то будет ли произведена распаковка алл спавна? К чему я? Если будет произведена распаковка алл спавна при неизвестных/непрописанных в scan.pm секций то можно ли добавить эту фишку и при сборке иного? То есть 1. Распаковал с таким ключом -scan 2. Провел кучу изменений + добавил кучу новых секций И собрал его без редактирования scan.pm, допустим с тем же ключом -scan. Хотя, если что. и так не тяжело все добавить в scan.pm --- Спасибо. Проверил, все работает. Секция уже была в конфигах, просто запаковывал без ключа скан так как про него не написано в реадми в заголовке ===[Запаковка спавна]===. Изменено 20 Сентября 2011 пользователем amik Мой архив Сталкером не занимаюсь. Ссылка на комментарий
KD87 718 Опубликовано 20 Сентября 2011 Автор Поделиться Опубликовано 20 Сентября 2011 amik, в целом логика такая. acdc распаковывает/запаковывает примерно по логике движка. Движок после прочтения section_name лезет в конфиги, смотрит, какое поле class у соответствующей секции, и по этому полю знает, какой нет-пакет у объекта. Распаковка мод-спавнов работает по такому же принципу: неизвестный section_name -> лезем в прочитанные конфиги (которые суть файл sections.ini) -> узнаем формат спавна для этой секции. Таблица section_to_class в модуле - исключительно для удобства (ну вдруг кому стандартный спавн распаковать, а конфигов нет). Из вышесказанного ясно, что при добавлении неизвестной секции в спавн - ее же надо добавить и в конфиги (иначе и движок не поймет). Если же ты добавил секцию и в конфиги - надо просто обновить файл sections.ini. Это делается или вручную, или путем его удаления. При запуске компиляции с ключом -scan, сгенерится новый, обновленный файл. Править scan.pm нежелательно, можно потерять правки при очередном обновлении. Ссылка на комментарий
Artos 99 Опубликовано 21 Сентября 2011 Поделиться Опубликовано 21 Сентября 2011 (изменено) KD87 О некоторых неудобствах использования универсального ACDC: 1. Если в процессе запаковки или распаковки с использованием ключа -scan по какой-либо причине прерывается создание списка секций sections.ini' - этот файл создается нулевой доины и дальнейшее использование утилиты невозмодно без ручного удаленя пустого файла. Возможные варианты решения: - удалять пустой файл при прерванном процессе сканирования; - при наличии этого файла в папке утилиты - проверять его длину и при 'нулевой' - пересканировать секции. 2. Наличие файла 'spawn_ids.ltx', а точнее любого ltx-файла, содержимое которого аналогично 'spawn_ids.ltx' приводит к прерыванию в процессе сканирования и созданию пустого файла секций 'sections.ini'. Uncaught exception from user code: FATAL ERROR! Function: stkutils::scan::read_ini Line: 1112 Expression: defined $self->{sections_hash}->{$section} Description: duplicate section found while reading ../../config/\~spawn_ids_old.ltx at stkutils/debug.pm line 1 stkutils::debug::fail('stkutils::scan::read_ini', 1112, 'defined $self->{sections_hash}->{$section}', 'duplicate section found while reading ../../config/\spawn_ids...') called at stkutils/scan.pm line 1110 stkutils::scan::read_ini('../../config/\spawn_ids.ltx') called at stkutils/scan.pm line 1074 stkutils::scan::scan_system('../../config/', '\system.ltx', 'HASH(0x21521cc)') called at stkutils/scan.pm line 1009 stkutils::scan::launch('stkutils::scan', '../../config/') called at universal_acdc.pl line 7092 scanning your gamedata folder... Только удаление файла или переименование его расширения 'ltx' в иное позволяет проводить сканирование секций. Возможные варианты решения: - внести в список исключений файл 'spawn_ids.ltx' (неполное решение, т.к. имя может задаваться модмейкером); - ставить в него метку, по наличию которой файл иссключался бы из процесса сканирования. Изменено 21 Сентября 2011 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
KD87 718 Опубликовано 23 Сентября 2011 Автор Поделиться Опубликовано 23 Сентября 2011 Новая версия Universal ACDC: http://narod.ru/disk/26105366001/Universal...1-09-23.7z.html Что нового: -исправлено предупреждение при запаковке спавна без ключа -idx. Спавн собирался, как надо, просто предупреждение нервировало (нашел RedPython) -теперь sections.ini нулевой длины (из-за прерывания процесса сканирования) удаляется при повторном сканировании (Artos) -генерируемый файл с секциями теперь пропускается при сканировании (Artos) -переделана data_packet::unpack, так что теперь чтение будет работать быстрей. В acdc наиболее заметно на стадии "reading vertices...". - переделан модуль graph для будушей универсализации perl-скриптов. В распаковке графа незаметно, просто предупреждаю, что со старым модулем acdc работать откажется. Прошу проверить в игре спавны, запакованные этим acdc. Из-за реализации третьего пункта изменений пришлось шаманить со спавном. В теории все должно быть нормально, но кто его знает, этот x-ray Ссылка на комментарий
ziStam 1 Опубликовано 23 Сентября 2011 Поделиться Опубликовано 23 Сентября 2011 (изменено) KD87, возможно ли реализовать показ строки дублирующейся секции? Очень удобно будет при работе со спавном Солянки например , т.к. там довольно много дублирующихся путей KD87, спасибо! Изменено 23 Сентября 2011 пользователем ziStam Legend of Stalker Ссылка на комментарий
KD87 718 Опубликовано 23 Сентября 2011 Автор Поделиться Опубликовано 23 Сентября 2011 ziStam, ты имеешь ввиду показ в консольном окошке или запись в лог? В любом случае, не думаю, что в этом есть необходимость. Обычно в спавнах нет повторяющихся секций. В спавне солянки много повторяющихся путей, да, но все они в одном файле. А тут все просто - открываешь в каком-нибудь Notepad++, выбираешь стиль MS INI, сворачиваешь все секции и удаляешь секцию одним нажатием Del. Ссылка на комментарий
Malandrinus 615 Опубликовано 23 Сентября 2011 Поделиться Опубликовано 23 Сентября 2011 (изменено) ziStam, возможно ли реализовать показ строки дублирующейся секции? В Notepad++ я для этой цели использую сортировку. Это меню TextFX -> TextFX Tools и там сверху группа команд "sorting". Одинаковые строки собираются в группы и сразу видно, что их не одна а больше. Если надо сделать такое во множестве файлов, то сначала файлы склеиваю. Обычно делаю это в Total Commander в два приёма. Сначала копирую файлы в отдельный каталог, переименовываю, заменяя имена на автонумерацию. Затем собираю в один инструментом скливания файлов из частей. Ну а дальше работаю с получившимся большим файлом в Notepad++. Может отдельные шаги можно сделать и проще, но думаю идею ты понял. Подобный подход удобен для массовой обработки, когда надо просмотреть очень много информации. В целом можно и проще. К примеру, просто ищешь в том-же Total Commander нужную секцию (если ты её знаешь), включив поиск "целого слова". Изменено 23 Сентября 2011 пользователем malandrinus Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
Artos 99 Опубликовано 24 Сентября 2011 Поделиться Опубликовано 24 Сентября 2011 (изменено) KD87 Что-то в версии 2011-09-23 не так ... 1. При отсутствии файла 'sections.ini' утилита отказывается как распаковывать, так и запаковывать спавн. При наличии этого файоа - распаковывает и запаковывает. Похоже отказывается сканировать конфиги. ============================================================================== 110924 Undefined subroutine &main::read_service called at universal_acdc.pl line 7133 (#1) (F) The subroutine indicated hasn't been defined, or if it was, it has since been undefined. Uncaught exception from user code: Undefined subroutine &main::read_service called at universal_acdc.pl line 7133. at universal_acdc.pl line 7133 Для продолжения нажмите любую клавишу . . . ============================================================================== 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 7131 (#1) Uncaught exception from user code: FATAL ERROR! Function: main Line: 7131 Expression: Description: cannot open at stkutils/debug.pm line 1 stkutils::debug::fail('main', 7131, '', 'cannot open ') called at universal_acdc.pl line 7131 Для продолжения нажмите любую клавишу . . . ============================================================================== 2. При неуказании имени с ключем -idx - в корне папки утилиты возникает файл без имени (.ltx), ранее был "spawn_ids.ltx". Изменено 24 Сентября 2011 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти