Это популярное сообщение. 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 Ссылка на комментарий
mdm64 579 Опубликовано 2 Марта 2020 Поделиться Опубликовано 2 Марта 2020 (изменено) @Купер, Да вот и у меня такое ощущение, потому и только попробовал этот вариант по рекомендации... Сам же делал изначально строго по статье в шапке темы. Попробую такой вариант, может быть даст желаемый результат. Благодарю! Изменено 2 Марта 2020 пользователем mdm64 Ссылка на комментарий
WolfHeart 705 Опубликовано 2 Марта 2020 Поделиться Опубликовано 2 Марта 2020 (изменено) 1 час назад, mdm64 сказал: Проще говоря, У меня уже чет "крышу срывает", от этих проще. Просто, берешь папку с ACDC в нее кидаешь: папки stkutils, configs - CoP + SGM 2.2 + твоя приблуда, all.spawn от приблуды и мой батник. И будет тебе счастье. А на всякий... Держи: all_SGM2_2 all_SGM2_2+квесты к СГМ-2.2 Пришлось SGM со всеми допами качать. Изменено 2 Марта 2020 пользователем WolfHeart 2 AMD FX-8370 (8 X 4.35GHz); RAM 16Gb; MSI GTX 1070 (8Gb). Windows -10 PRO (х64) Ссылка на комментарий
mdm64 579 Опубликовано 2 Марта 2020 Поделиться Опубликовано 2 Марта 2020 @WolfHeart, Благодарю! Сейчас сделаю, по результату отпишусь, наверняка будут ещё вопросы, потому как в all.spawn лезу первый раз,опыта нет пока... Ссылка на комментарий
WolfHeart 705 Опубликовано 2 Марта 2020 Поделиться Опубликовано 2 Марта 2020 (изменено) P.S. Толко что заметил ошибку в том батнике что я тебе выкладывал: del sections.ini universal_acdc.pl -d all.spawn -out all_cop all -scan configs/ -sort complex -nofatal pause Лишняя all. Сори. Изменено 2 Марта 2020 пользователем WolfHeart 1 AMD FX-8370 (8 X 4.35GHz); RAM 16Gb; MSI GTX 1070 (8Gb). Windows -10 PRO (х64) Ссылка на комментарий
mdm64 579 Опубликовано 2 Марта 2020 Поделиться Опубликовано 2 Марта 2020 @WolfHeart, Ничего страшного, благодарю за уточнение. @WolfHeart, Просьба - выложи свой батник для компиляции, для сравнения. Ссылка на комментарий
WolfHeart 705 Опубликовано 3 Марта 2020 Поделиться Опубликовано 3 Марта 2020 3 часа назад, mdm64 сказал: Просьба - выложи свой батник для компиляции, для сравнения universal_acdc.pl -compile all_cop -out new.spawn pause 1 AMD FX-8370 (8 X 4.35GHz); RAM 16Gb; MSI GTX 1070 (8Gb). Windows -10 PRO (х64) Ссылка на комментарий
mdm64 579 Опубликовано 3 Марта 2020 Поделиться Опубликовано 3 Марта 2020 (изменено) Как я и предполагал, появились вопросы, как только попытался "для пробы" скомпилировать all.spawn . Суть вопроса такова - при повторяющихся секциях в файлах разобранного all.spawn-а в процессе компиляции выдаётся критическая ошибка с указанием на повторяющиеся секции, это понятно. А может ли быть такое, что автор мода, например, внёс повторяющиеся одинаковые секции в файл с какой-то определённой целью их проявления в игре? Поскольку в файле они расположены таким образом и в таком количестве, что предполагать тривиальную ошибку автора мода как-то неразумно. Ниже под спойлером я проиллюстрировал расположение в файле all.spawn-а повторяющихся секций . Прошу по возможности проконсультировать по этому вопросу. И подвопрос - возможно ли собрать all.spawn с подобной ошибкой, если это не ошибка в действительности? Скрытый текст файл из чистого СГМ файл из СГМ с минимодом (1-8 - номера секций в файлах) 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 6 6 6 7 7 7 8 8 8 Возможно, я ошибаюсь, но мне думается, что совершить 8 одинаковых ошибочных повторов автор мода не мог, да после этого и скомпиллировать такой all.spawn он не смог бы (выдаётся критическая ошибка, лог ниже). Если предположить, что совершено ошибочная общая вставка данных, то скорее всего был бы повтор такого вида - 1-2-3-4-5-6-7-8 - 1-2-3-4-5-6-7-8 . Но в данном случае повтор каждой секции два раза ПОДРЯД - 1-1-2-2-3-3-4-4-5-5-6-6-7-7-8-8 А вот, собственно, часть лога с данной ошибкой: FATAL ERROR! Function: stkutils::ini_file::new Line: 36 Description: duplicate section mil_anomal_zone_4_af_way_1 found while reading way_military.ltx И так по каждой из восьми секций. Описанная выше структура повторов хорошо видна при сравнении двух файлов в Total Commander. И вот ещё что заинтересовало - наткнулся на программу, аналогичную во многом программе Universal ACDC - аналог ACDC . В ней в файле acdccop.pl прописываются (и можно прописать свои) различные предметы, аномальные зоны и тому подобное из игры. При работе со спавном неизвестные предметы и зоны можно дописать в этот файл, и при последующей декомпиляции уже не будет сообщения об ошибке,поскольку данные неизвестных параметров будут присутствовать в файле acdccop.pl. Собственно вопрос - можно ли в Universal ACDC делать аналогичным образом, и если можно, то что и куда прописывать? Посмотрел - структура основного файла .pl у обеих программ примерно одинакова. Скрытый текст banka_kraski_1 => 'cse_alife_object_physic', kanistra_01 => 'cse_alife_object_physic', kanistra_02 => 'cse_alife_object_physic', vedro_01 => 'cse_alife_object_physic', tiski => 'cse_alife_object_physic', bottle_3l => 'cse_alife_object_physic', freezer => 'cse_alife_object_physic', bludo => 'cse_alife_object_physic', kastrula => 'cse_alife_object_physic', kastrula_up => 'cse_alife_object_physic', krujka => 'cse_alife_object_physic', lojka => 'cse_alife_object_physic', miska => 'cse_alife_object_physic', tarelka1 => 'cse_alife_object_physic', tarelka2 => 'cse_alife_object_physic', teapot_1 => 'cse_alife_object_physic', banka_kraski_1 => 'cse_alife_object_physic', kanistra_01 => 'cse_alife_object_physic', kanistra_02 => 'cse_alife_object_physic', vedro_01 => 'cse_alife_object_physic', tiski => 'cse_alife_object_physic', bottle_3l => 'cse_alife_object_physic', freezer => 'cse_alife_object_physic', bludo => 'cse_alife_object_physic', kastrula => 'cse_alife_object_physic', kastrula_up => 'cse_alife_object_physic', krujka => 'cse_alife_object_physic', lojka => 'cse_alife_object_physic', miska => 'cse_alife_object_physic', tarelka1 => 'cse_alife_object_physic', tarelka2 => 'cse_alife_object_physic', teapot_1 => 'cse_alife_object_physic', Изменено 3 Марта 2020 пользователем mdm64 Ссылка на комментарий
UriZzz 1 004 Опубликовано 3 Марта 2020 Поделиться Опубликовано 3 Марта 2020 @mdm64, ну ACDC это не позволил, СДК тоже не позволит, вывод - автор использовал какой-то другой софт для правки спавна. Ну, или (мало вероятно конечно но) возможно all.spawn у тебя декомпилился не корректно, у меня подобное было, но в СДК. 1 Моя нычка, Нычка в арендованном у Опричника холодильнике Мы хорошие ребята, жаль патронов маловато:) Ссылка на комментарий
naxac 2 445 Опубликовано 3 Марта 2020 Поделиться Опубликовано 3 Марта 2020 (изменено) 3 часа назад, mdm64 сказал: наткнулся на программу, аналогичную во многом программе Universal ACDC - аналог ACDC . Это ACDC и есть, только старая версия, не универсальная, а заточенная исключительно под ЗП. Изменено 3 Марта 2020 пользователем naxac 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
mdm64 579 Опубликовано 3 Марта 2020 Поделиться Опубликовано 3 Марта 2020 @UriZzz, Насчёт некорректности декомпиляции я бы согласился, если бы не одно "но" - точно такой же результат был ещё как минимум у одного человека, а именно у @WolfHeart, который выложил вчера декомпилированные им версии спавна. Я повторил декомпиляцию в соответствии с его рекомендациями (изложены выше) и получил такой же результат... @naxac, Меня, собственно, заинтересовала одна её особенность при использовании, которую я изложил выше. Интересно, а в универсальной версии это возможно? Назрел очередной вопрос,вытекающий из моего первого сообщения здесь - требуется подключить новые локации из одного минимода СГМ 2.2 к другому минимоду СГМ 2.2, в котором также имеется новая локация (платформа одна и та же - ЗП и СГМ 2.2). Почитал темы на этом и других форумах, посмотрел инструкции (которые смог найти) и мало что понял, практически везде мануалы по слиянию локаций из ТЧ или ЧН с ЗП, с приличным количеством ненужным в моём случае ритуальных телодвижений (наверное, потому и не понял этих мануалов). В обоих моих минимодах, предназначенных для слияния их локаций, новые локации имеют двухсторонние переходы со стандартными локациями ЗП СГМ 2.2, между локациями самих модов переходов нет (начинаются эти переходы на новые локи на Кордоне в обоих модах). На этом форуме увидел сообщение пользователя, что существует "стандартная инструкция для ЗП по подключению локаций буквально с пол-пинка и без проблем в отличие от других платформ" - сам её не нашёл, если у кого имеется, буду благодарен! Прошу по возможности доходчиво объяснить подключение локаций на одной платформе (ЗП) , тем более уже рабочих и полностью настроенных. Ведь при этом многие параметры локаций изменять не нужно. Или дать ссылки на не сильно заумные инструкции, где расписано толково и доступно. Для примера - переход в спавне одного минимода с Кордона на Свалку. Скрытый текст [5401] ; cse_abstract properties section_name = level_changer name = esc_level_changer_to_garbage position = -161.493927001953, -4.37311172485352, 345.518188476563 direction = 0, 0, 0 id = 65535 version = 128 cse_abstract__unk1_u16 = 0x1 script_version = 12 spawn_id = 1632 ; cse_alife_object properties game_vertex_id = 2091 level_vertex_id = 89305 object_flags = 0xffffff3e ; cse_shape properties shapes = 1 shape_0:type = box shape_0:axis_x = 1.76299810409546,0,0 shape_0:axis_y = 0,2.06199789047241,0 shape_0:axis_z = 0,0,1.76299810409546 shape_0:offset = 0,0,0 ; cse_alife_space_restrictor properties restrictor_type = 3 ; cse_alife_level_changer properties dest_game_vertex_id = 2226 dest_level_vertex_id = 195050 dest_position = 35.4804000854492, 0.469121485948563, -309.028198242188 dest_level_name = garbage silent_mode = 1 ; se_level_changer properties P.S. Увидел в одном из сообщений такую фразу - "Программа для подключения уровней к ЗП". Не подскажете, что это за зверюга и где найти, если она существует? Ссылка на комментарий
WolfHeart 705 Опубликовано 4 Марта 2020 Поделиться Опубликовано 4 Марта 2020 В 03.03.2020 в 12:57, mdm64 сказал: Возможно, я ошибаюсь, но мне думается, что совершить 8 одинаковых ошибочных повторов автор мода не мог, Правильно думаешь. В 03.03.2020 в 16:01, UriZzz сказал: Ну, или (мало вероятно конечно но) возможно all.spawn у тебя декомпилился не корректно, Почему мало вероятно? Очень да-же вероятно. Нечто подобное у меня было, когда K.D. еще не покинул модинг. Не помню точно, как он это объяснил, но что-то с работой скрипта и посоветовал просто удалить эти дубликаты. @mdm64 Просто с помощю того же Total Commander удали все красные строки. Кстати в файле way_labx8.ltx то же есть один дубликат. В 03.03.2020 в 16:06, mdm64 сказал: "Программа для подключения уровней к ЗП". Не подскажете, что это за зверюга и где найти, если она существует? Не знаю что это за программа, но была где-то на форуме "Программа для подключения уровней от комманды АМК", вроде так называлась, поищи на форуме. Но самая лучшая/правильная программа - это SDK. 1 1 AMD FX-8370 (8 X 4.35GHz); RAM 16Gb; MSI GTX 1070 (8Gb). Windows -10 PRO (х64) Ссылка на комментарий
mdm64 579 Опубликовано 4 Марта 2020 Поделиться Опубликовано 4 Марта 2020 @WolfHeart, И эту программу (Программа для подключения уровней от комманды АМК) почему-то тоже не могу найти... Насчёт SDK - смотрел, версий и сборок предлагают много, но как в фильме "меня терзают смутные подозрения"... Если не трудно, можно скинуть нормальную рабочую сборку под ЗП, я читал на форуме, что есть такие ? Ссылка на комментарий
Купер 2 867 Опубликовано 4 Марта 2020 Поделиться Опубликовано 4 Марта 2020 @mdm64, про "волшебную" программу можешь посмотреть здесь (Stalkerin). SDK есть, например, здесь (modfaq). 3 Ссылка на комментарий
mdm64 579 Опубликовано 4 Марта 2020 Поделиться Опубликовано 4 Марта 2020 @Купер, ggeditor? 1 Ссылка на комментарий
mdm64 579 Опубликовано 5 Марта 2020 Поделиться Опубликовано 5 Марта 2020 (изменено) 22 часа назад, WolfHeart сказал: Но самая лучшая/правильная программа - это SDK. С этим спорить не буду. Напрягло другое - посмотрел по ссылкам мануалы и видеоуроки по SDK .К слову, по большей части они в отвратительном качестве и рассчитаны, очевидно на самого автора этих уроков - например, здесь Видео уроки по программе X-Ray SDK 0.7 в пункте "Создание игровой локации за 2 часа" в уроке "экспорт в игру" ничего нет о том,какие файлы готовой локации требуются для вставки в игру и где они должны располагаться и как именно. Да, автор этих уроков знает "что и как", это замечательно! НО... он видимо даже не предполагает, что во многих случаях людям не требуется вообще создавать новую локацию или импортировать её с другой платформы, что очень много случаев, когда требуется всего лишь в рамках одной платформы "перебросить" локацию из одного мода в другой с полным сохранением её содержания и даже без создания или редактирования точек переходов между локациями. Судя по указанному видеокурсу (а это ссылка с сайта, который рекомендовал @Купер,), для простого переноса локации между играми или модами в пределах одной платформы необходимо локацию полностью разобрать, перевести в SDK, после чего снова собрать и только после этого экспортировать в игру. Памятуя анекдот, в котором "наши" врачи вырезают гланды автогеном через задний проход, невольно прихожу к выводу, что в данном случае этот анекдот стал грустной реальностью... Иными словами, чтобы выполнить фактически последнее действие с готовой локацией, необходимо полностью изучить весь курс работы с SDK и пройти по всем пунктам создания новой локации с нуля, что во многих случаях (в моём, в частности) попросту не требуется... Возможно, я ошибаюсь, поскольку опыта в данной области у меня очень мало и то простейшего. Но то, что я вижу, приводит в некоторое недоумение. Буду благодарен, если кто-нибудь предоставит адекватную методику для решения указанной проблемы. Если таковая, конечно, вообще существует в природе. Искренне надеюсь, что никого ничем не обидел... P.S. На случай вопросов - образование у меня потолочное техническое, радиоинженер по разработке особо сложной продукции (космос), так что в вопросах с незнакомым ПО достаточно быстро могу разобраться (всё-таки советское образование даёт знать). Но здесь... устойчивое ощущение, что для того, чтобы сложить 2+2 необходимо полностью изучить курс высшей математики... Что на мой непрофессиональный в этой области взгляд как минимум неразумно... Изменено 5 Марта 2020 пользователем mdm64 Ссылка на комментарий
naxac 2 445 Опубликовано 6 Марта 2020 Поделиться Опубликовано 6 Марта 2020 @mdm64, *.graph recompiler (ggRC) v.0.7 Я думаю, это именно то, что тебе нужно. 1 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
mdm64 579 Опубликовано 6 Марта 2020 Поделиться Опубликовано 6 Марта 2020 То ли я туплю, то ли одно из двух, вопрос - как узнать номер билда ЗП для ggRC (не удаляя и не переустанавливая игру заново, хотя я не припомню, чтобы в процессе установки высвечивался билд)? И вопрос вдогонку - под спойлером часть инструкции по работе с ggRC: Скрытый текст 2) Кладете в корень геймдаты (где лежит game.graph) нужные game.graph и/или section4.bin (тоже геймграф, только от ЧН/ЗП. Запакован в all.spawn, ищите там). Команда: ggrc.pl [-g1 <имя_графа,номер_билда>] [-l1 <список уровней>] [-g2 <имя_графа,номер_билда>] [-l2 <список уровней>] Оба графа требуется положить в одну папку. Если они с разных платформ, то проблем нет, а если с одной (в ЗП граф хранится в section4.bin), то как разместить два файла с одинаковым названием в одной папке? Можно ли просто переименовать один из файлов section4.bin? Или я что-то не понимаю? @naxac, Да, судя по описанию это самое оно... Но сразу появилось пара вопросов, задал выше. Буду благодарен за помощь по ним. Ссылка на комментарий
WolfHeart 705 Опубликовано 6 Марта 2020 Поделиться Опубликовано 6 Марта 2020 2 часа назад, mdm64 сказал: как узнать номер билда ЗП Скрытый текст ТЧ ==> 2947 ЧН ==> 3456 ЗП ==> 3870 1 AMD FX-8370 (8 X 4.35GHz); RAM 16Gb; MSI GTX 1070 (8Gb). Windows -10 PRO (х64) Ссылка на комментарий
mdm64 579 Опубликовано 6 Марта 2020 Поделиться Опубликовано 6 Марта 2020 (изменено) При выполнении батника ggRC получаю такую ошибку: Скрытый текст D:\0\ggrc>perl ggrc.pl -g1 section4.bin,cop -l1 zaton,jupiter,pripyat,labx8,jupi ter_underground,darkvalley,digger_stash,l04u_labx18,military,agroprom,agroprom_u nderground,marsh,escape,red_forest,collector22 -g2 section4nl.bin,cop -l2 garbag e,limansk,yantar Can't locate stkutils/chunked_file.pm in @INC (you may need to install the stkut ils::chunked_file module) (@INC contains: C:/Perl/site/lib C:/Perl/lib) at ggrc. pl line 342. BEGIN failed--compilation aborted at ggrc.pl line 342. D:\0\ggrc>pause Для продолжения нажмите любую клавишу . . . Мой батник: perl ggrc.pl -g1 section4.bin,cop -l1 zaton,jupiter,pripyat,labx8,jupiter_underground,darkvalley,digger_stash,l04u_labx18,military,agroprom,agroprom_underground,marsh,escape,red_forest,collector22 -g2 section4nl.bin,cop -l2 garbage,limansk,yantar pause Пробовал заменить папку stkutils аналогичной папкой из шапки темы - не помогает. Пробовал в соответствии с 342 строкой (use stkutils::chunked;) переименовать chunked_file.pm в chunked.pm - не помогает, начинает ругаться на следующую строку 343: Скрытый текст D:\0\ggrc>perl ggrc.pl -g1 section4.bin,cop -l1 zaton,jupiter,pripyat,labx8,jupi ter_underground,darkvalley,digger_stash,l04u_labx18,military,agroprom,agroprom_u nderground,marsh,escape,red_forest,collector22 -g2 section4nl.bin,cop -l2 garbag e,limansk,yantar Can't locate stkutils/ogf.pm in @INC (you may need to install the stkutils::ogf module) (@INC contains: C:/Perl/site/lib C:/Perl/lib) at ggrc.pl line 343. BEGIN failed--compilation aborted at ggrc.pl line 343. D:\0\ggrc>pause Для продолжения нажмите любую клавишу . . . Посмотрел файл ogf - имеется в наличии,имя совпадает с указанным в строке 343. Скрытый текст 342 use stkutils::chunked; 343 use stkutils::ogf; В C:\Perl\Lib также эти файлы есть, правда, там chunked.pm, а не chunked_file.pm, как в папке самой утилиты (но я выше писал, что переименование в строке 342 не дало результата). Прошу помочь, возможно, я чего-то не замечаю. Изменено 6 Марта 2020 пользователем mdm64 Ссылка на комментарий
WolfHeart 705 Опубликовано 6 Марта 2020 Поделиться Опубликовано 6 Марта 2020 (изменено) 26 минут назад, mdm64 сказал: получаю такую ошибку: 26 минут назад, mdm64 сказал: Пробовал заменить папку stkutils аналогичной папкой из шапки темы - не помогает. 26 минут назад, mdm64 сказал: Пробовал в соответствии с 342 строкой () переименовать chunked_file.pm в chunked.pm Не, это все не то. Попробуй папку stkutils из ggRC скопировать в C:\Perl\lib В 16.09.2011 в 22:55, KD87 сказал: Распакованную библиотеку модулей (папка stkutils) нужно положить в папку со скриптом или (советую) в C:\Perl\lib (или аналогичную папку, если вы установили ActivePerl в другую папку). Во втором случае stkutils будет работать для всех скриптов сразу независимо от расположения. Еще возможен такой вариант, что для ggRC не подходит версия Perl. Я правда с ggRC не работал, но с подобным сталкивался при работе с другими скриптами на Perl. Приходилось подбирать версии Perl. Версия которая у меня работает со всеми используемыми мной скритами это: Но для нормальной работы ggRC может понадобится и другая. Найти разные версии Perl можешь вот сдесь: ActivePerl-Old versions Изменено 6 Марта 2020 пользователем WolfHeart 2 AMD FX-8370 (8 X 4.35GHz); RAM 16Gb; MSI GTX 1070 (8Gb). Windows -10 PRO (х64) Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти