Перейти к контенту

Universal ACDC и другие perl-скрипты


KD87

Рекомендуемые сообщения

KD87 и FANAT. У меня тоже такое было пока не показал путь до гейм.графа. тч(1.0004)

 

[6546]:flag1 Будем знать :good2: . Очень нужная особенность.

 

Меток может быть несколько, в принципе. В таком случае их нужно задавать через запятую, без пробелов: -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

Изменено пользователем amik

Мой архив

Сталкером не занимаюсь.

Ссылка на комментарий

Перл установил, вот такой батник

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 Спасибо огромное!

Изменено пользователем KD87

FANAT.gif

Мой канал на ютабчике... / Недельки из жизни фаната STALKER'a / Клуб 'Фанат Отчуждения'

Я нет-нет, а думаю, может я неправильно жил, надо ж брать деньги у богатых и давать их бедным, а таким как ты давать по морде, шоб у мире была красота и гармония.(с)Ликвидация

Всё в порядке, всё нормально, я беру тебя с собой, я беру тебя с собой. В тёмный омут головой.(с)Смысловые Галлюцинации

Ссылка на комментарий
FANAT, спавн Народной Солянки веселый - помимо всего прочего в нем продублированы некоторые пути (way-объекты), а acdс при запаковке такие не пропускает. Так что перед запаковкой проверь все way_... файлы на дублирующиеся секции.
  • Нравится 1
Ссылка на комментарий

KD87-что-то у меня не выходит с правильным созданием батника. Мод на котором учусь AMK+NLC+WAWKA. Закинул папку конфиг создал батник по примеру как чуть выше написал FANAT,так при запуске батника в окошке пишет такой фатал эрор что я буду до утра его переписывать. Помогите плиз как правильно создать команду в батнике так как из редми мне некоторые слова не понятны.

 

Найди в скрипте строчку use diagnostics; и поставь перед ней значок #. Потом запускай и клади сюда скрин. KD87

 

Добавлено через 59 мин.:

Прошу прощения незнание чего-либо это не проявление глупости. А в каком простите скрипте искать эту строчку?

 

universal_acdc.pl. Это perl-скрипт. Там есть эта строчка, ближе к концу файла. KD87

Изменено пользователем KD87
smeh..gif
Ссылка на комментарий

Если интересно, пару слов из серии "Знаете ли вы...":

 

Для того, чтобы 'скопипастить' все сообщение из консольного (DOS) окна нужно:

 

1. Не нажимая никаких клавишь на клавиатуре, кликнуть правой кнопкой мыши (ПКМ) по рамке DOS-окна.

2. В появившемся меню выбрать: Изменить -> Выделить все. В результате весь текст в окне подсветится ...

3. Нажать на клавиатуре клавишу: <Ввод> (Enter) или, опять же по ПКМ, в появившемся меню выбрать: Изменить -> Копировать.

В результате выделенный текст окажется в буфере обмена и может быть вставлен (Insert) в какой-либо редактор, например в "Блокнот" (Notepad), и сохранен как текстовый файл.

 

KD87, текущий (19.09.2011) вариант проверил. Работает как заявлено.

Появились некоторые мысли ... например по использованию того же 'guids.ltx'. Сформулирую немного познее, погоняв утилиту ...

Изменено пользователем Artos

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий

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

Изменено пользователем KD87
smeh..gif
Ссылка на комментарий

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) по гейм-вертексам прописанным в путях.

Если гейм-вертекс в пути НЕ принадлежит ни одной локации (т.е. бОльший чем на локациях) - этот путь кладется в файл, имеющий максимальный гейм-вертекс.

Т.о. секция пути и не теряется и не приводит к фатальным ошибкам игры/скриптов из-за ненахождения пути.

Условно, такие пути с некорректными вертексами - заглушки. Хотя ... в некоторых ситуациях могут и приводить к вылетам в схемах движения.

Изменено пользователем KD87

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий

KD87, здравия желаю! Наконец распаковал спавн Солянки, и как-то удивился что пути, которые должны находится на чаэс-2 находятся в файле labx8. Это асдс так пути путает, или же это в Соли намудрили?

 

ACDC разбирает пути по гейм-вертексам. Как было, так и разобрал. KD87

Изменено пользователем KD87

Legend of Stalker

Ссылка на комментарий

Прошу прощения я понимаю, что я уже всех достал.(Ну не судите строго новичка) У меня 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

Изменено пользователем KD87
smeh..gif
Ссылка на комментарий

Новая версия: http://narod.ru/disk/25690244001/Universal%20ACDC.7z.html.

Что нового:

[+] добавлена функция разбивки all.spawn на level.spawn и level.game (аналог split_spawns в аивраппере)

исправлена распаковка/запаковка level.spawn, поломанная в какой-то из версий.

  • Нравится 1
Ссылка на комментарий

KD87- Этот файл находится в игре сталкер гейм дата спавн-для спавна нпс и многого другого. Может мне не нужно закидывать ал спавн в acdc, а нужно просто указать путь где он находится в игре,или кроме ал спавна и папки куда распаковывать нужно указать еще что-то? Ребята выручайте,правку конфигов освоил практически,хочется сделать что-то серезней-заспавнить своего непися. Зараннее спасибо!

smeh..gif
Ссылка на комментарий

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

Успехов в модмейкерстве! :-)

 

Изменено пользователем Artos

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий

Вопрос-предложение.

Вчера хотел заспавнить новую секцию, не вышло пока не добавил ее в scan.pm.

Как происходит сканирование папки конфиг? Если там будет секция не прописанная в scan.pm то будет ли произведена распаковка алл спавна?

К чему я?

Если будет произведена распаковка алл спавна при неизвестных/непрописанных в scan.pm секций то можно ли добавить эту фишку и при сборке иного?

То есть 1. Распаковал с таким ключом -scan 2. Провел кучу изменений + добавил кучу новых секций

И собрал его без редактирования scan.pm, допустим с тем же ключом -scan.

Хотя, если что. и так не тяжело все добавить в scan.pm :)

---

Спасибо. Проверил, все работает.

Секция уже была в конфигах, просто запаковывал без ключа скан так как про него не написано в реадми в заголовке ===[Запаковка спавна]===.

Изменено пользователем amik

Мой архив

Сталкером не занимаюсь.

Ссылка на комментарий

amik, в целом логика такая. acdc распаковывает/запаковывает примерно по логике движка. Движок после прочтения section_name лезет в конфиги, смотрит, какое поле class у соответствующей секции, и по этому полю знает, какой нет-пакет у объекта. Распаковка мод-спавнов работает по такому же принципу: неизвестный section_name -> лезем в прочитанные конфиги (которые суть файл sections.ini) -> узнаем формат спавна для этой секции. Таблица section_to_class в модуле - исключительно для удобства (ну вдруг кому стандартный спавн распаковать, а конфигов нет).

Из вышесказанного ясно, что при добавлении неизвестной секции в спавн - ее же надо добавить и в конфиги (иначе и движок не поймет). Если же ты добавил секцию и в конфиги - надо просто обновить файл sections.ini. Это делается или вручную, или путем его удаления. При запуске компиляции с ключом -scan, сгенерится новый, обновленный файл. Править scan.pm нежелательно, можно потерять правки при очередном обновлении.

Ссылка на комментарий

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' (неполное решение, т.к. имя может задаваться модмейкером);

- ставить в него метку, по наличию которой файл иссключался бы из процесса сканирования.

Изменено пользователем Artos

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий

Новая версия 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 :)

Ссылка на комментарий

KD87, возможно ли реализовать показ строки дублирующейся секции? Очень удобно будет при работе со спавном Солянки например :) , т.к. там довольно много дублирующихся путей

KD87, спасибо!

Изменено пользователем ziStam

Legend of Stalker

Ссылка на комментарий
ziStam, ты имеешь ввиду показ в консольном окошке или запись в лог? В любом случае, не думаю, что в этом есть необходимость. Обычно в спавнах нет повторяющихся секций. В спавне солянки много повторяющихся путей, да, но все они в одном файле. А тут все просто - открываешь в каком-нибудь Notepad++, выбираешь стиль MS INI, сворачиваешь все секции и удаляешь секцию одним нажатием Del.
Ссылка на комментарий

ziStam,

возможно ли реализовать показ строки дублирующейся секции?

В Notepad++ я для этой цели использую сортировку. Это меню TextFX -> TextFX Tools и там сверху группа команд "sorting". Одинаковые строки собираются в группы и сразу видно, что их не одна а больше.

 

Если надо сделать такое во множестве файлов, то сначала файлы склеиваю. Обычно делаю это в Total Commander в два приёма. Сначала копирую файлы в отдельный каталог, переименовываю, заменяя имена на автонумерацию. Затем собираю в один инструментом скливания файлов из частей. Ну а дальше работаю с получившимся большим файлом в Notepad++.

 

Может отдельные шаги можно сделать и проще, но думаю идею ты понял.

 

Подобный подход удобен для массовой обработки, когда надо просмотреть очень много информации. В целом можно и проще. К примеру, просто ищешь в том-же Total Commander нужную секцию (если ты её знаешь), включив поиск "целого слова".

Изменено пользователем malandrinus
 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий

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".

Изменено пользователем Artos

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
  • Куратор(ы) темы:

×
×
  • Создать...