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

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


KD87

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

KD87, а можно добавить ещё в АСДС такой ключик, чтобы если его указать, то в spawn_ids надпись story_id = -1 писаться не будет? Чтобы писались только существующие story_id?

Спасибо, разъяснил :)

Изменено пользователем Disord
Ссылка на комментарий
Disord, нет, отдельный ключ все-таки делать не стоит. Могу сделать, чтобы по дефолту не выводились. Но только смысл? Этот файл генерируется для использования из скриптов во время игры, так там тебе придется тогда проверять существование параметра story_id. А в нынешней ситуации ты проверяешь, не равен ли он -1. Какая разница? :)
Ссылка на комментарий

KD87, проверил достаточно большое кол-во модов на ТЧ. Большинство либо не имеет своего спавна (используют оригинальный), либо не привносят своих классов.

В качестве заслуживающих упоминания в шапке ИМХО стОит упомянуть:

- вся линейка NLC2...6;

- Oblivion_Lost;

- SRP;

- TT2 (Тайные тропы 2)

 

Также, рекомендовал бы включить в clsids.ini запись:

; Arena Extension mod

AEM_LAMP = cse_alife_object_hanging_lamp

т.к. нередко этот мод включен в другие и, хотя аренные лампы не присутствуют в спавне, ничего не мешает их включить в него в каком-то моде.

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

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

Версия 1.23b: http://narod.ru/disk/31484618001/un_acdc_1...11_2011.7z.html

Что нового:

[+] убрано предупреждение "state data left" при распаковке спавнов ЗП, запакованных

ранее с помощью acdccop.

исправлены ошибки split, из-за которых могли получаться кривые level.spawn

переделана логика чтения/записи пакетов se_stalker/se_monster

мелкие изменения

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

KD87, попробовал распаковать свой запакованный спавн предыдущей версией АСДС, вылет:

image_4ec3a10c3b3fa_small.jpg

И запаковать не удается...

Забыл сказать, спавн - ЗП.

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

Can't use an undefined value as an ARRAY reference at F:\Games\S.T.A.L.K.E.R. Shadow of Chernobyl\gamedata\spawns\acdc\universal_acdc.pl line 1079 (#1)

Что означает данная ошибка при записи объектов в спавн?

Причем старая версия нормально собирает спавн такой.

Изменено пользователем Real Wolf
Ссылка на комментарий
Real Wolf, ты удалил guids.ltx из папки с ACDC. Этот файл автоматически генерируется при распаковке и используется при запаковке с ключом -idx. В следующей версии сделаю для этой ситуации FATAL ERROR, спасибо. Изменено пользователем KD87
Ссылка на комментарий

KD87,

У меня при распаковке он не создается. Параметры распавкощика:

universal_acdc.pl -d ../all.spawn -out ../unpack -g ../../ -scan ../../config/

И при распаковке выводит некритическую ошибку:

Use of uninitialized value in numeric eq (==) at stkutils/entity.pm line 5383,
        <GEN0> line 1409 (#1)

Изменено пользователем Real Wolf
Ссылка на комментарий
Real Wolf, да, моя ошибка. Не хочу пока обновлять все, положи этот модуль в stkutils: http://narod.ru/disk/31697071001/graph.pm.html. Ошибка при распаковке действительно некритичная, ни на что не влияет.
Ссылка на комментарий

Что-то не выходит у меня распаковать all.spawn от мода R.M.A. v.1.1.5вр, выскакивает такая ошибка:

C:\ACDC>del sections.ini

C:\ACDC>universal_acdc.pl -d all.spawn -out all -scan config/
scanning your gamedata folder...done!
checking version of all.spawn...
        This is a spawn of S.T.A.L.K.E.R. Shadow Of Chernobyl (1.0001 or higher)

opening all.spawn...
reading header...
reading alife objects...
Use of uninitialized value in numeric eq (==) at stkutils/entity.pm line 5383,
        <GEN205> line 504 (#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 will try to tell you the
    name of the variable (if any) that was undefined. In some cases it cannot
    do this, so it also 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.

Uncaught exception from user code:

FATAL ERROR!
Function: stkutils::entity::_read_m_update
Line: 118
Expression: $packet->resid() == 0
Description: update data left [1] in entity war_wpn_knife
at stkutils/debug.pm line 1
        stkutils::debug::fail('stkutils::entity::_read_m_update', 118, '$packet-
>resid() == 0', 'update data left [1] in entity war_wpn_knife') called at stkuti
ls/entity.pm line 260
        stkutils::entity::error('stkutils::entity=HASH(0x6810114)', 'stkutils::e
ntity::_read_m_update', 118, '$packet->resid() == 0', 'update data left [1] in e
ntity war_wpn_knife') called at stkutils/entity.pm line 118
        stkutils::entity::_read_m_update('stkutils::entity=HASH(0x6810114)', 'st
kutils::data_packet=HASH(0x6810d24)') called at stkutils/entity.pm line 78
        stkutils::entity::read_new('stkutils::entity=HASH(0x6810114)', 'stkutils
::chunked=HASH(0x32d941c)') called at stkutils/entity.pm line 51
        stkutils::entity::read('stkutils::entity=HASH(0x6810114)', 'stkutils::ch
unked=HASH(0x32d941c)', 118) called at C:\ACDC\universal_acdc.pl line 261
        all_spawn::read_alife('all_spawn=HASH(0x159a8e4)', 'stkutils::chunked=HA
SH(0x32d941c)') called at C:\ACDC\universal_acdc.pl line 191
        all_spawn::read('all_spawn=HASH(0x159a8e4)') called at C:\ACDC\universal
_acdc.pl line 1205
        main::decompile() called at C:\ACDC\universal_acdc.pl line 1183

C:\ACDC>pause
Для продолжения нажмите любую клавишу . . .

 

userbar368.png

Ссылка на комментарий
Callisto, у автора 1.1.5 ошибка в acdc, отсюда кривой спавн. Как раз для таких случаев сделан ключ -nofatal. Изменено пользователем KD87
Ссылка на комментарий

Сейчас задам наверное совсем тупой вопрос, но все-таки, как исправить этот "кривой" спавн.

 

Еще возник небольшой вопро по сообщению #170

Если руками задать для секции 'wpn_ak74_m1' = cse_alife_item_weapon_magazined_w_gl (это в ACDC)
Где конкретно в ACDC это правиться?

userbar368.png

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

Callisto,

1. Если "кривой спавн" - это про RMA 1.1.5, то ничего не надо исправлять. Распакуй спавн с ключом -nofatal и потом запакуй - спавн станет нормальным. Если интересно, ошибка состоит в том, что в acdc для RMA 1.1.5 (он поставляется с модом) для ножа (mar_wpn_knife) назначен класс 'cse_alife_item_weapon_magazined', в то время как должен быть 'cse_alife_item_weapon'. Из-за этого при запаковке автором пакет mar_wpn_knife стал на байт длиннее, чем должен быть.

2. Спавн народной солянки (благодаря наличию перехватчика ошибок) легко распаковывается с тем же ключом -nofatal. Править опять же ничего не надо. После запаковки спавн опять же станет нормальным.

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

Callisto, при распаковке в папке ACDC создается файл sections.ini - вот в нем и присутствуют секуии и соответствующие им классы.

В случае отдельного вида ошибок можно попробовать выправить "ошибки". Т.е. если внести свое исправление - распаковщик указанную секцию будет пытаться распаковать в соответствии с указанным классом.

Наличие ключа -nofatal позволяет теперь и без подобных вмешетельств распаковывать спавны с подобными ошибками.

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

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

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

Постараюсь немножко пояснить ситуацию с ключом -nofatal. Разработчики модов чаще всего пользуются обычными бардаковскими acdc. В этих acdc есть специальная хэш-таблица section_to_class, в которой должны содержаться все соответствия секций и серверных классов. Эти соответствия берутся, естественно, не с потолка, а исходя из значения параметра class в конфиге данной секции, а также наличия соответствующей пары клиентский/серверный класс в class_registrator.script. Нередки случаи, когда мод-разработчики не вполне себе представляют назначение параметра class, из-за чего ошибаются при указании соответствия секции и серверного класса в acdc, что приводит к "кривым спавнам". Движок такие спавны жрет без особых проблем (в этом плане там нет практически никаких проверок), а universal acdc генерирует FATAL ERROR. Обычно ошибки разработчиков невелики - ну, указали se_zone_anom вместо cse_allife_anomalous_zone или cse_alife_item_weapon_magazined_w_gl вместо cse_alife_item_weapon_magazined. Для распаковки таких спавнов и введен ключ -nofatal. Он отключает генерацию FATAL ERROR, заменяя ее на вывод предупреждения, что позволяет распаковать спавн. Запаковка осуществляется по правилам universal acdc, так что спавн получается нормальным.

FATAL ERROR при распаковке "кривого спавна" выглядит так: update data left [некое_число] in некая_секция. Если число в скобках равно 1, можно смело применять ключ -nofatal. Если больше 1 - лучше сообщить мне.

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

KD87

Возник вопрос-просьба:

В игре имеются пути (path-walk) по которым ходят (иль стоят в точках) неписи. Эти путям соответствуют вертексы (гейм- и левел-).

В модах нередко спавнят аномалии (динамические иль статические). В случае с динамическими аномалиями возникает дилемма - или просчитывать все пути и исключать "занятые путями" точки или очищать пути после спавна. И то и другое несовсем удобно и недостаточно гибко.

ACDC просчитывет пути и по локациям и способен вытаскивать идентификаторы левел-вертексов.

Возможно ли формирование списков левел-вертексов (level_vertex_id) занятых путями (path-walk) по локациям доступных из скриптов игры?

Что-то типа:

[id_level]

level_vertex_id,level_vertex_id,level_vertex_id, ...

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

Ссылка на комментарий
Artos, возможно, но не в рамках acdc все-таки. Вопрос можно поставить шире - кроме путей, неплохо бы еще исключать статическую геометрию, сейф-зоны, гулаги, после чего выводить или координаты, доступные для спавна, или же недоступные. Думал над таким скриптом, но пока не до него.
Ссылка на комментарий

KD87, ладно забудем .. Но имел ввиду именно в рамках ACDC.

Причина: До(у)бавляя пути в спавн, можно забыть внести корректировки в конфиги/скрипты мода. Гулаги отслеживаются скриптами из игры, статика и сэйф-зоны (hideouts) - задаются самим модмейкром (и врядли стОит доверять компу это).

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

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

KD87, обнаружил небольшой нюанс ...

Если в распакованном спавне не удалять некий параметр, а вставить новый, закомментировав прежний, происходит следующее:

1. Имеем:

visual_name = weapons\ak74\wpn_ak74

2. Вносим правку:

visual_name = weapons\ak74\wpn_ak74_new ;--weapons\ak74\wpn_ak74

3. После запаковки и распаковки спавна:

visual_name = weapons\ak74\wpn_ak74_new <-- в конце пробел

т.е. после удаления коммента парсером ACDC - в конце остается пробел(ы).

4. В игре происходит вылет с жалобой на недоступность модели: wpn_ak74_new .ogf

 

Предложение: Дополнить (по мере появления времени и желания) парсер тримом заключительных пробелов.

Хотя этот тип возможных ошибок на совести самого ковырялкина спавна, но не помешает ...

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

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

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

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

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

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

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

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

Войти

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

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

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

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