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

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


KD87

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

KD87

В версии "Universal_ACDC_2011-09-24" осталась проблема с 'sections.ini', т.е. при отсутствии этого файла процесс распаковкм/упаковки невозможет при указании ключа '-scan'.

 

Проверяю так:

1. Удаляю из папки с модом (Simbion) все следы спавна и ACDC;

2. В папке 'gamedata\spawns' создаю две подпапки - \acdc и \unpack;

3. В папку 'gamedata\spawns\acdc' распаковываю весь комплект "Universal_ACDC_2011-09-24".

По сравнению с релизным вариантом утилиты в папке 'stkutils' не хватает файла 'object.pm' - добавляю его (от 16.06.2011), хотя на работе это и не сказывается.;

4. В папку спавна копирую оригинальный all.spaw (SHoC v1.0006);

5. Запускаю команду распаковки: perl universal_acdc.pl -d ../all.spawn -o ../unpack -g ../../ -scan ../../config/

Ошибка::

Use of uninitialized value in concatenation (.) or string at stkutils/scan.pm

line 1074 (#1)

(W uninitialized) An undefined value was used as if it were already

defined. It was interpreted as a "" or a 0, but maybe it was a mistake.

To suppress this warning assign a defined value to your variables.

 

To help you figure out what was undefined, perl tells you what operation

you used the undefined value in. Note, however, that perl optimizes your

program and the operation displayed in the warning may not necessarily

appear literally in your program. For example, "that $foo" is

usually optimized into "that " . $foo, and the warning will refer to

the concatenation (.) operator, even though there is no . in your

program.

 

Can't use an undefined value as an ARRAY reference at stkutils/scan.pm line

1075 (#2)

(F) A value used as either a hard reference or a symbolic reference must

be a defined value. This helps to delurk some insidious errors.

 

Uncaught exception from user code:

Can't use an undefined value as an ARRAY reference at stkutils/scan.pm line 1075.

at stkutils/scan.pm line 1075

stkutils::scan::scan_system('../../config/', '\system.ltx', 'HASH(0x21b28c8)', undef) called at stkutils/scan.pm line 1009

stkutils::scan::launch('stkutils::scan', '../../config/', undef) called at universal_acdc.pl line 7124

scanning your gamedata folder...Для продолжения нажмите любую клавишу . . .

 

6. Запускаю командой: perl universal_acdc.pl -d ../all.spawn -o ../unpack -g ../../

Оригинальный спавн распаковывается.

7. Запускаю упаковку: perl universal_acdc.pl -c ../unpack -o ../all.spawn_new

Упаковка оригинального спавна завершается успешно.

8. Вторично запускаю упаковку того же распакованного оригинального спавна: perl universal_acdc.pl -c ../unpack -o ../all.spawn_new -scan ../../config/

Ошибка:

Use of uninitialized value in open at D:/Perl/lib/IO/File.pm line 185 (#1)

(W uninitialized) An undefined value was used as if it were already

defined. It was interpreted as a "" or a 0, but maybe it was a mistake.

To suppress this warning assign a defined value to your variables.

 

To help you figure out what was undefined, perl tells you what operation

you used the undefined value in. Note, however, that perl optimizes your

program and the operation displayed in the warning may not necessarily

appear literally in your program. For example, "that $foo" is

usually optimized into "that " . $foo, and the warning will refer to

the concatenation (.) operator, even though there is no . in your

program.

 

Use of uninitialized value in concatenation (.) or string at universal_acdc.pl

line 7122 (#1)

Uncaught exception from user code:

 

FATAL ERROR!

Function: main

Line: 7122

Expression:

Description: cannot open

at stkutils/debug.pm line 1

stkutils::debug::fail('main', 7122, '', 'cannot open ') called at universal_acdc.pl line 7122

Для продолжения нажмите любую клавишу . . .

При этом создается 'sections.ini' нулевой длины.

Следующие попытки запуска заканчиваются аналогичной ошибкой.

9. Заменяю 'sections.ini' на ранее рабочий (заполненный) файл от этого мода.

Запуск на упаковку проходит успешно.

 

Т.о. отсутствие файла 'sections.ini' или его нулевая длина не позволяют работать с измененными конфигами из мода (ни распаковать/ни запаковать даже оригинальный спавн).

Копирование ранее сделанного файла - позволяет работать, однако это предполагает НЕ обновление файла с секциями или его обновление в ручном режиме.

 

По 'spawn_ids.ltx': При неуказании ключа -idx, в корне папки утилиты образовался и с имененм и расширением, но нулевой длины.

 

Ад :lol: Через пару часов поправлю. KD87

 

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

P.S. Не спеши, но если появится - успею проверить. :-) Для работы пока использую рабочие варианты.

Да и последними пользоваться вполне можно, если учитывать нюансы и при необходимости добавление новых секций руками. Сам all.spawn не страдает.

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

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

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

KD87

Спасибо!

Проверил версию от 25-го - вроде как на всех режимах и с различными комбинациями ключей (путей для ключей).

На всех основных режимах работает как заявлено, служебные файлы (ini, ltx, log) - наполнены.

Примечание: На режиме упаковки с ключем -idx ../../config/spawn_ids.ltx в самом конце в лог была выдана строка:

writing ../all.spawn...

writing header...

writing alife objects...

writing artefact spawn places...

writing way objects...

writing service information...

Use of uninitialized value in pack at universal_acdc.pl line 7039.

done!

Для продолжения нажмите любую клавишу . . .

- при этом вся упаковка прошла успешно.

Но(!):

Попытка создать 'spawn_ids.log', т.е. при не указании ключа -scan и добавленых к отдельным секциям объектов метки :index - скомпилированный all.spаwn оказался не рабочим (!!!) , т.к. в помеченных меткой секциях оказалось по две секции [spawn_id] (продублированы). Секции уже были проставлены в распакованном спавне.

Чистка руками всех [spawn_id] в секциях и повторная пометка и упаковка - дала рабочий all.spawn.

Т.о. процесс получения 'spawn_ids.log' по сути или однократен или ... после ручной чистки прежних пометок.

 

Предложение:

Учитывая, что подобные метки будут востребованы модмейкерами с достаточными навыками по правке спавна - отказаться от метки ':index' и, как ранее предлагал, оставить внесение [spawn_id] самим модмейкерам, а ACDC, найдя такую секцию - актуализирует в ней имя и индекс секции спавна. Т.о. добавление секции контролируется человеком, а актуализация параметра в ней - утилитой.

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

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

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

KD87

Проверил "Universal_ACDC_2011-09-25_2, все отлично!

И со всеми ключами корректно работает и создает рабочие спавны, служ.файлы и метки 'spawn_id' заполняет/актуализирует.

ИМХО, вполне рабочая и достаточно удобная версия. Спасибо!

 

dark_stalker

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

Потрудись привести достаточную информацию что/чем/как делал - тогда возможно кто-то и подскажет как исправить.

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

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

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

Подскажите неучу, acdc распаковывать только в геймдату нужно или можно в любое место, например я хочу работать с ним на диске Е .Я имею в виду прога не обязательно должна быть в папке с игрой, главное чтобы был файл алспапн и геймграф.

Что не так распаковал все как написано запускаю acdc_decompile и получаю eda56d9c7bc754b9ba80dd59f2dfdd5a5f20cc100245664.png

Как путь прописать если только запустил батник сразу это вылетает, и все больше ничего не сделаешь.

Походу разобрался, только не понял когда запаковывается новый ал спавн должен появится в папке acdc. или как, просто что то ничего не появилось, и при распаковке в папке с acdc появляются два файла , гуид и секция это так и надо.

 

"Походу", ты не разобрался. Cпавн должен быть в папке с acdc, либо на него должен указывать путь после ключа -d. Аналогично с game.graph - или в папке с acdc или указать путь после ключа -g. Тогда все распакуется. Запакованный спавн появляется в папке с acdc, если запаковывается без ключа -o. Если с этим ключом - появится там, какой путь указан в -o. Мне вот только неясно, как же ты что-то запаковывал, если даже не распаковал. KD87

в

Да нет я потом по методу от Artosa разобрался, переписал путь в батниках открыв их блокнотом, распаковал ал-спавн, потом попробовал запаковать, все вроде в ком. строке прошло без ошибок, но как написано что перепакованный файл должен появится '\gamedata\spawns\acdc там ничего не было, или я опять что то накосячил. В общем как правильно прописать путь для скомпиленного ал спавна вот в этой строке universal_acdc.pl -c ../unpack -o ../all.spawn, например что бы он появился в папке "pack"

 

Напиши свой текущий батник по запаковке и скажи, где у тебя лежит acdc и распакованный спавн. KD87

 

В папке геймдата, а папке спавн, создал папку acdc в неё распаковал архив, создал папку unpak, в ней находится распакованный ал-спавн, в батнике по запаковке вот это universal_acdc.pl -c ../unpack -o ../all.spawn

pause в батнике по распаковке вот это universal_acdc.pl -d ../all.spawn -o ../unpack -g ../../ -scan ../../config/

pause

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

 

Логично, что нет нового спавна. У тебя же запаковывается в ../all.spawn. Новый спавн заменяет собой старый. KD87

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

Intrel Core i5 9400F, msi gtx 1660 super ventus, RAM 16g-DDR4, HD 2000g, Win 10x64, SSD 256g, SSD m2 500g.

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

Здравствуйте, ACDC вылетает при перегонке Кордона ЧН (04+) в ЗП

Батник такой:

perl universal_acdc.pl -convert escape -game1 cs4,245 -game2 cop,934

pause

Вылет такой:

importing alife objects from file alife_escape.ltx...

exporting alife objects on level escape...

 

FATAL ERROR!

Function: stkutils::ini_file::export_properties

Line: 108

Expression: defined $container->{$p->{name}}

Description: undefined field was_in_smart_terrain

 

Содержимое файла sections.ini такое:

[sections]

to_exclude = sim_faction, space_restrictor, esc_driver, m_car, m_trader, smart_cover, smart_terrain, dog_normal, dog_weak, stalker, dog_strong, agr_stalker_base_leader

 

Что не так, что делать?

 

Ты все правильно делаешь, но в текущей версии конвертация не работает. Причина известна, трабла решается, скоро будет новая версия, там все будет работать. KD87

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

KD87

В предверии обновленной версии хотелось бы высказать маленькую пожелалку косметитеского характера:

Сейчас при каждой компиляции спавна перед секциями [spawn_id] добавляется пустая строка (т.е. накапливаются переносы строк). Так же в некоторых местах исходного спавна имеются "лишние" или отсуктствуют подобные 'разделители' пустыми строками.

Может бытьстОит уделить немного времени удалению излишних пустострок и добавлению отсутствующих?

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

Ссылка на комментарий
Artos, перевод строки перед [spawn_id] я убрал. А вот остального в спавне я ни разу не видел. Можно пример? Сейчас парсер никак не влияет на кастом дату, только удаляет лишние переводы строк. Именно из-за этого, кстати, оригинальный спавн "худеет" на несколько килобайт при перепаковке.
Ссылка на комментарий

KD87

Примеры (из исходника alife_l01_escape.ltx, распаковывал давно и не помню уж какой версией):

для 'name = esc_stalker_fanat':

custom_data = <<END
[smart_terrains]
esc_lager = true


[spawner]
cond = {+esc_fanat_spawn}
END

для 'name = esc_stalker'

custom_data = <<END
[spawner]
cond = {+tutorial_wounded_start}

[smart_terrains]
none = true

[known_info]
esc_tutorial_secret

[dont_spawn_character_supplies]
[dont_spawn_loot]
END

Учитывая, что это именно скорее косметические нюансы и для игры не имеют значения, все же ... единообразие порой упрощает поиск и обработку нужных строк.

 

Примечание: Наличие излишеств или отсутствие 'пустострок' на новых версиях ACDC (за последние пол-года) не проверял. Но, учитывая, что кастом-дата 'не трогается' - и отсутствующие возможны, и излишества от самих же модмейкеров вполне реальны.

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

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

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

Ну тогда если я допишу в батнике по запаковке universal_acdc.pl -c ../unpack -o ../all.spawn.new, то тогда будет новый ал спавн появляться в папке acdc?

 

Путь - ../all.spawn.new. Значит, файл запишется на каталог выше текущего каталога. Именно для этого там двоеточие. KD87

 

 

Ой я Вас ввел в заблуждение, конечно же all.spawn_new, я вроде понял , буду пробовать .

Изменено пользователем ХЕМУЛЬ36RUS

Intrel Core i5 9400F, msi gtx 1660 super ventus, RAM 16g-DDR4, HD 2000g, Win 10x64, SSD 256g, SSD m2 500g.

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

ХЕМУЛЬ36RUS

Не уверен, что скрипт поймет двойное расширение 'all.spawn.new', KD87 может быть даст разъяснение.

Но тебе достаточно задать например имя: 'all.spawn_new' или подобное. И конечно же чтобы с ним работать в игре - необходимо будет задавать 'штатное' имя, т.е. замещать прежний 'all.spawn'.

 

Расширение неважно, в винде ведь в имени файла вполне допускается точка. KD87

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

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

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

Все таки не получается у меня два гейм.графа обьединить, вроде все делаю правильно, но ни как.. Положил папку ggrc, на диск С, сделал такой батник

ggrc.pl -g1 game.graph,soc -l1 l01_escape,l02_garbage,l03_agroprom,l03u_agr_underground,l04_darkvalley,l04u_lab
x18,l05_bar,l06_rostok,l08_yantar,l08u_brainlab,l07_military,l10_radar,l11_pripy
a
t,l12_stancia,l12u_sarcofag,l12u_control_monolith,l12_stancia_2,l10u_bunker,atp_
f
or_test22,peshera,puzir,aver,av_peshera,limansk,hospital,generators,warlab,red_f
o
rest,lost_village,marsh,dead_city,zaton,jupiter,pripyat,jupiter_underground,labx
8 -g2 dgame.graph,soc -l2 digger_stash
pause

 

5e9b962abf3595d8700ef18b0fa5d3d5551aea101093887.jpg

 

В папке Левелс есть все локации для обьединения..

Слетает все после локации l12_stancia_2, и появляется ошибка, ну или что, на скрине видно кароче, что делать не знаю..

de7e9c13371947f25dda51ace0a0fe47551aea101093887.jpg

===

Просьба, выложите кто нибудь версию ggrc.pl v.0.7, на какой нибудь файлообменник, попробую ей..

===

ПС, Вроде можно спросить здесь, если нельзя, то извиняюсь, только не баньте, надоело три дня сидеть и читать..

 

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

Забыл добавить, оригинальный глобальный гейм.граф из Народной Солянки..

 

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

Да и список лок в батнике составлен по списку..

{ gvid0 => 0,        name => 'l01_escape' },
{ gvid0 => 252,        name => 'l02_garbage' },
{ gvid0 => 416,        name => 'l03_agroprom' },
{ gvid0 => 703,        name => 'l03u_agr_underground' },
{ gvid0 => 811,        name => 'l04_darkvalley' },
{ gvid0 => 1109,        name => 'l04u_labx18' },
{ gvid0 => 1168,        name => 'l05_bar' },
{ gvid0 => 1308,        name => 'l06_rostok' },
{ gvid0 => 1438,        name => 'l08_yantar' },
{ gvid0 => 1529,        name => 'l08u_brainlab' },
{ gvid0 => 1545,        name => 'l07_military' },
{ gvid0 => 1862,        name => 'l10_radar' },
{ gvid0 => 2117,        name => 'l11_pripyat' },
{ gvid0 => 2273,        name => 'l12_stancia' },
{ gvid0 => 2402,        name => 'l12u_sarcofag' },
{ gvid0 => 2467,        name => 'l12u_control_monolith' },
{ gvid0 => 2517,        name => 'l12_stancia_2' },
{ gvid0 => 2661,        name => 'l10u_bunker' },
{ gvid0 => 2792,        name => 'atp_for_test22' },
{ gvid0 => 2862,        name => 'peshera' },
{ gvid0 => 2881,        name => 'puzir' },
{ gvid0 => 2886,        name => 'aver' },
{ gvid0 => 2909,        name => 'av_peshera' },
{ gvid0 => 2988,        name => 'limansk' },
{ gvid0 => 3028,        name => 'hospital' },
{ gvid0 => 3076,        name => 'generators' },
{ gvid0 => 3153,        name => 'warlab' },
{ gvid0 => 3224,        name => 'red_forest' },
{ gvid0 => 3324,        name => 'lost_village' },
{ gvid0 => 3337,        name => 'marsh' },
{ gvid0 => 3582,        name => 'dead_city' },
{ gvid0 => 3660,        name => 'zaton' },
{ gvid0 => 3700,        name => 'jupiter' },
{ gvid0 => 3748,        name => 'pripyat' },
{ gvid0 => 3771,        name => 'jupiter_underground' },
{ gvid0 => 3830,        name => 'labx8' },

 

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

FANAT.gif

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

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

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

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

FANAT, у меня нет чистой 0.7, без правок. Придется тебе качать с репозитория. Впрочем, там для тебя никаких важных функций нет.

Что касается 0.6, попробуй закомментировать строчки 1127-1165. Комментирование осуществляется символом #. Лучше бы тебе подождать новую версию, конечно... На этой неделе добью acdc и возьмусь за graph recompiler.

 

Если комментирование не поможет, воткни после строчки

package game_graph;

строчку

use diagnostics;

и выкладывай лог.

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

Попробовал, вставил этот код use diagnostics; и вылетило, вот что написал батник

a95be0505bb256f950b349807ca9f71c551aeb101104908.jpg

 

===

ПС, Этот код use diagnostics; вставлял в чистый ggrc.pl

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

FANAT.gif

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

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

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

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

Вот, в чистом ggrc.pl , закомментировал нужные строчки..

e4045b9ed19487e9a34e573fdaa899f3551aa4101162862.jpg

FANAT.gif

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

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

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

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

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

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

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

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

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

Войти

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

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

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

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