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

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


KD87

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

KD87, да я собственно про него уже не забываю, как узнал что нужно удалять перед сканом.

Да и пользуюсь стандартным батником:

cd ACDC\

del sections.ini

PERL universal_acdc.pl -d ..\all.spawn -out ..\Unpack -scan ..\..\configs\ -nofatal

 

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

ХОВАН, это не ошибка acdc. Конфиги сканируются корректно, спавн распаковывается согласно конфигам. Но вот в моде wpn_usas12, например, запакован, как шотган, а в конфигах имеет класс WP_AK74. Значит, и движок будет считать оружие автоматом, а не шотганом, со всеми вытекающими (например, в виде формата нет-пакета). Может, автор думает, что класс можно брать наобум, может, еще какие-то причины, но я такие ситуации в скрипте автоматически разрешать не могу. Возможность "ручной" распаковки есть.

За отклик спасибо.

Из того списка, что ты приводил, все записи в sections.ini есть. Но некоторые секции в конфигах имеют неправильный класс (WP_AK74), а именно:

'wpn_usas12' = cse_alife_item_weapon_shotgun
'wpn_g36_tactical' = cse_alife_item_weapon_magazined
'wpn_l85_m1' = cse_alife_item_weapon_magazined
'wpn_l85_m2' = cse_alife_item_weapon_magazined
'wpn_m249' = cse_alife_item_weapon_magazined

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

KD87, судя по последним версиям ACDC идет чистка строк в секциях спавна имеющие дефолтные значения (что в общем то хорошо), но и заметил появление привнесенных параметров ...

Вопрос: А какова причина необходимости внесения неуказанных параметров?

В частности:

1. Добавляются в ; cse_alife_monster_abstract properties значения:

smart_terrain_id = 0 ;<-- зачем? может быть значение = -1 (65535) (?!)

- что приводит к фатальным ошибкам, т.к. свойство obj:smart_terrain_id() (или нет-пакет) возвращает вместо ID смарта - идентификатор актора (!?), что естественно недопустимо.

 

2. Для ; cse_alife_custom_zone properties добавляются:

owner_id = 0 ;<-- зачем? может быть значение = -1 (65535) (?!)

- это приводит к тому, что все аномалии и т.п. становятся как бы порождением актора (установленными актором) и любой хит от аномалии/костра/... автоматически делает актора врагом!

 

 

3. Также нечсно длбавление к ; cse_ph_skeleton properties

source_id = 0 ;<-- зачем?

Также, хотелось бы понять, какова природа формирования значения artefact_position_offset для аномалий/костров/... , т.е. как оно вычисляктся (если не автоматом из SDK)?

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

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

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

Artos, это же в распакованный спавн не идет. Дефолт нужен для инициализации параметра и вывода значения, если оно в спавне такое же, как и дефолтное. По сути, в дефолте можно вообще любые числа писать. А source_id по дефолту 0xFFFF (версия 1.27), почему 0?

Вообще, скоро будет большое обновление entity.pm. Я его перерабатываю для скрипта распаковки сохранений. В сохранениях объекты содержат полный пакет, включая клиентские данные и параметры, сохраняемые в скриптовых серверных классах, так что многое надо переделать.

По artefact_position_offset - попробую объяснить. Для каждой аномалии в спавне прошиты места спавна артефактов (в section2.bin). Обычно их по 32 на аномалию. Так вот, параметр artefact_position_offset показывает смещения по этим местам спавна. Например, значение 256 означает, что для данной аномалии места спавна артефактов начинается с 256го. Каждое место спавна занимает 20 байт, так что, умножив на это число параметр artefact_position_offset, можно получить байтовое смещение по файлу section2.bin.

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

KD87, сейчас как раз довожу читалку/писалку нет-пакетов и подчищаю свой all.spawn.

Так получилось, что ACDC v.1.27 только сейчас пришлось опробовать и ... столкнулся с фатальными вылетами.

Решил убрать для костров 'artefact_spawn_count ~= 0' и перепаковал спавн ... Потерял полчаса, пока дошло, что не читалка нет-пакетов виновата, а именно параметры у неписей.

Указанные параметры и значения (из предыдущего поста) я привел из распакованного после запаковки моего спавна, так что и в игре они о себе дают знать (читалка нет-пакетов указывает на 'акторские аномалии/костры') и вылеты в игре при спавне неписей с пропиской к актору.

Откатился к проверенной версии ACDC - ошибки исчезли.

 

Вопрос по artefact_position_offset обусловлен вот чем: В игре спавнятся аномалии/костры/... , для которых ничего нет(!) в section2.bin, да и и подставляется дефолтное '0'. Если такая аномалия все же решится заспавнить артефакт (например разрешено в конфигах) - куда ж она его заспавнит(?) иль не приведет ли это к спавну в недопустимое место?

Вот и задался вопросом - а как при спавне расчитать/проконтролировать нужные цифирьки, из чего исходить?

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

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

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

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

 

не приведет ли это к спавну в недопустимое место

Приведет, конечно. И даже может быть вылет inivalid vertex for object. Тут контроль такой - или прописывать это параметр, беря значение от "родных" аномалий на уровне, или добавлять новые места спавна руками.

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

KD87, проверил ... При распаковке прежнего спавна и дальнейшей работе с ним в версии 1.27 ошибок вроде как нет.

Но ...

1. Все же неясно, почему отсутствующеие параметры из прежней распаковки новая версия засовывает с некорректными значениями. ИМХО, при чтении - отсутствует параметр -> значит дефолтный, а не некий '0'.

(ну да это ладно ...)

2. Все же зачем в распаковку теперь добавляются некоторые дефолтные параметры?

Например, к чему кострам (да и аномалиям) добавлять owner_id = 0xffffffff. Они могут принадлежать кому-то?

Иль всяческим физ.объектам, разбросанным по локациям source_id = 65535 (?), ведь ясно же, что на сотню/тысячу таких безхозных объектов только несколько может какому модмейкеру взбредет в голову в спавне помечать хозяином. Вот пусть он себе и добавляет!

Ведь случайно "задев" такое значение - потом до-о-олго можно недоумевать по поводу различных коллизий в игре.

 

По artefact_position_offset:

Брать в игре скриптами какую нить ближайшую позицию спавна - можно конечно, но ... извращение. Читаь скриптами section2.bin - врядли возможно.

Если иметь ввиду спавн динамических аномалий - ненапропишешся заранее всех точек спавна для каждой.

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

Прошу уточнить: как заставиь спавниться по месту расположения аномалии, т.е. без смещения? Значение '0' для artefact_position_offset не означает ли именно это? Ведь если аномалия спавнит - значит сама она расположена по валидным координатам/вертексам - вот и использовать как заглушку спавна?!

 

P.S. По "лишним" и их чистке - понятно, а то ... правка спавна с "лишними" - становится сейчас сродни хождению по минному полю, заденешь что-то и ... времени потерять можно много. ;-)

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

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

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

KD87, хотелось бы обратиться с просьбою по ... уточнению и синхронизации с читалками/писалками нет-пакетов (netpk) наименований некоторых свойств/параметров для классов, тем более грядет (возможно) вариант распаковки сэйвов:

ACDC -> предлагаемое (в netpk)

 

1. в классе 'cse_abstract'

unknown_id -> object_id --/ собственно это именно игровой ID объекта, а не некая неизвестность.

 

2. в классе 'cse_ph_skeleton'

bone_count -> bones_count --/ более интуитивно понятно (семантично)

 

3. в классе 'se_respawn'

spawned_obj -> spawned_objects --/ более интуитивно понятно (семантично)

 

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

 

Первые два переименованы в рабочей версии. Что касается spawned_obj - так он именуется в скриптах. Поэтому не думаю, что стоит менять. KD87

 

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

P.S. Согласен ... завязка на уже имеющееся имеется и может не имеет смысла заморачиваться, но все же выскажу аргументы 'за' возможное переименование:

0. Работая со скриптами/параметрами, гораздо удобнее употреблять именно смысловые наименования, чем закостеневшие (но не обязательные!) и данные когда-то кем-то ... Название 'spawned_obj', кроме указания что нечто заспавненное и что-то касательно как объекта, более ничего не несет. Это не объект(ы), а список игровых идентификаторов объектов ... , что гораздо понятнее при работе/использовании.

 

1. То что в скриптах кто-то из разработчиков в скрипте se_respawn.script дал байтам таблички (после 'cse_alife_smart_zone') какое-то название собственно ни к чему не обязывает и не влияет на другие скрипты/игру. Это название так и остается в самом скрипте респавнера и не передается наружу.

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

Более правильным было бы тогда разложить заключительный чанк на две части: байт кол-ва (размер таблицы) и саму табличку со списком идентифокаторов объектов, как это сделано для различных таймерных параметров или

Может так и сделать, несмотря на появление лишней строки для доп.параметра (spawned_count + spawned_ids)? (мысль вслух)

 

2. Схожий по сути параметр для списка индексов партонов в стволе имеет название 'ammo_ids' и, если следовать некоей логике, то подходящее название должно быть типа: 'spawned_ids'.

 

3. Собственно чистка этой таблички даже в самом se_respawn.script сделана через заднее место ... (ИМХО), о чем писал в топике по скриптам, и давал вариант по устранению этой недоработки. Такая правка потребует записи дополнительных байт (время последнего респавна), которые должны быть дополнены к заключительному чанку - а это значит все одно появляются для скриптера новые названия параметров ...

Т.о. если кто-то и захочет работать с этими параметрами (кол-вом и самой табличкой), то названия может применять хоть прежние, хоть 'правленные'.

 

 

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

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

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

Маленькое объявление: для тестирования скрипта распаковки сохранений нужны сохранения ТЧ, чистого или с модами, без разницы. Желательно, где-нибудь в середине или в конце игры. Если есть возможность помочь - выкладывайте в тему. Если играли с модом - указывайте также мод.

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

5 игр, в конце, модов нет, если только пара нестандартных секций, версии ТЧ 3 и 4 где какая именно - уже не помню...

http://narod.ru/disk/38635415001/saves2007.7z.html

 

ЗЫ:

Можно и середины упаковать... если пригодится.

 

Спасибо, этого хватит - для тестов чем толще сейв, тем лучше. KD87

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

всё легко

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

Парни подскажите что означает строка update data left in... при распаковке all.spawn? У меня получилось распаковать all.spawn от народной солянки (местным acdc) и от Сталкер Радиоактивная земля (другим acdc). Теперь пытаюсь другого Сталкера распаковать и у меня выплывает эта строка, в частности update data left in war_wpn_knife

 

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

Всё отлично распаковалось местным acdc все сталкеры что хотел. Использовал команду -d all.spawn -scan config\ -nofatal. Теперь возник другой вопрос наверное не по теме. В Народной солянке от 14.09. стоит 2 алл спавна, распаковал и тот и другой файлы alife большинства локаций повторяются, проверял секции спавна, тоже повторяются, в некоторых просто этих секций больше а в некоторых меньше (например в all.spawn alife generators секций спавна больше чем в all.spawn_bak alife generators). Теперь вопрос: а в чём прикол???

 

Ну это вопрос не ко мне, а к разработчикам солянки. all.spawn_bak - просто старый забекапленный спавн, как мне думается. Ошибка update data left, как правило, свидетельствует о неправильном параметре class в конфиге проблемной секции. KD87

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

Надо дело довести до конца!

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

Скрипт для распаковки/запаковки сохранений: народ.

Что умеет: распаковывать/запаковывать сохранения ТЧ. Пока не распаковывает клиентские данные объектов.

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

 

Кстати, если кто-нибудь имеет сведения о формате клиентских данных объектов - прошу поделиться.

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

Доброго времени суток. Я понимаю что проблема глупая, и я большой нуб но все же:

Нужно что бы ggtool прочитал граф бин (тоесть sectin4.bin) от билда 3120, обычный ЗПшный понятное дело что не подходит. Быть может такая версия уже есть? Если нет то наверное бы такая штукенция пригодилась бы не только мне.

 

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

Проблема то считайте та же что и у тов Кубанца, но только хуже...

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

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

 

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

В прочем есть идея прибегнуть вашему совету и вовсе обойтись без него.

Ссылка на комментарий
kotdaVinci, для проверки я распаковал спавн 3120, взял граф, запустил ggtool от ЗП командой ggtool.pl section4.bin. Скрипт нормально отработал. Если ты что-то не то сделал - это не вина скрипта.
Ссылка на комментарий

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

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

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

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

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

Войти

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

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

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

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