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

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


KD87

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

Artos, :o

Честно говоря, не знал. Так это что, если я нумерую не прям по порядку, а могу иногда накинуть тысячу-другую, чтобы не путался сам - это сильно грузит игру? Сие правится тогда запаковкой-распаковкой-запаковкой, да?

Изменено пользователем Disord
Ссылка на комментарий
Disord, ничего это не грузит. Все секции считываются в массив, из которой потом записываются в спавн согласно номеру в массиве. Номер секции не влияет ровно ни на что. Сделано так для того, чтобы спавн грузился - при разрывах в id секций движок не прочтет спавн корректно. Изменено пользователем KD87
Ссылка на комментарий

Artos

Просто раньше нужно было вручную переименвывать номера секций чтоб не было одинаковых, например Затон начинается с [0] Болота из ЧН тож с [0], вот я и накидывал нолики. Если сейчас программа сама всё делает, это хорошо.

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

Artmys, эм... Это о чем? На затоне можешь сделать секцию с номером хоть 95678, любой acdc это без проблем переварит. Не должно быть одинаковых номеров секций в одном и том же файле. А так хоть на каждой локации нумерацию с нуля начинай, без разницы. В универсальном acdc парсер ltx я практически не трогал, так что в этом отношении скрипт ведет себя так же, как и барадаковские acdc.

 

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

Версия 1.2b: http://narod.ru/disk/30957654001/un_acdc_08-11-2011.7z.html

Изменения:

небольшие правки по конвертации.

[+] добавленные в модах соответствия clsid -> серверный класс теперь редактируются

в отдельном конфиге (clsids.ini).

[+] ошибка при встрече незнакомого clsid теперь выдается при распаковки секции

спавна с таким clsid, а не при сканировании конфигов, как раньше.

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

KD87

Опробовал новую версию, отлично работает и удобно использовать!

 

По clsids.ini:

1. Вкралась некритичная оЧепятка: II_FAKE = cse_alife_item_document ==> cse_alife_item

2. (чисто косметически) Чтобы соблюсти авторство добавлений классов и хронологию предлагаю такой вариант для включения в основной архив (без комментариев в строках):

[clsids]

; Z.E.N.O.B.I.A.N mod
Z_MINES   = se_zone_anom
TURRETMG  = cse_alife_helicopter;#<-- авторство

; NLC2
ZS_ELECT  = se_zone_anom
ZS_ZHARK  = se_zone_anom
; NLC6
ZS_SBZZ   = se_zone_anom
Z_GRED    = se_zone_anom;#<-- пропущена

; SIMBION mod
II_FAKE   = cse_alife_item;#<-- исправлена опечатка
SM_RAT    = se_monster
ZS_STUDEN = se_zone_anom
ZS_ELECTR = se_zone_anom
ZS_ZHARKA = se_zone_anom
ZS_ICE    = se_zone_anom
Z_MINEF   = cse_alife_anomalous_zone
W_FIST    = cse_alife_item_weapon
W_GGUN    = cse_alife_item_weapon_magazined
WP_ZOOM   = cse_alife_item_weapon_magazined

3. Может быть добавить в парсер файла контроль значений в строках, отсекая комментарии и возможные некорректные наименования? Сейчас комментарии пристыковываются к названию серверного класса, что не даст распаковывать. Т.е. исключить в названиях кроме нижнего подчеркивания все пробелы и пр. небуквенно-цифровые символы.

 

 

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

Disord, Artmys и др.

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

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

 

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

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

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

Artos, так нет Z_GRED в NLC6, специально проверял. Этот clsid там закомментирован и не используется даже в конфигах. Насчет парсинга, да, надо бы прикрутить.

 

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

Новая версия 1.21b: http://narod.ru/disk/30992911001/un_acdc_09-11-2011.7z.html

Что нового:

исправлены небольшие опечатки в коде.

парсер теперь корректно читает значения с комментариями.

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

KD87, и вопрос не принципиален и ... не гоже конечно мне за Sak'а поправлять (тем более могу быть и не правым в конечном счете), но ...

Открываем class_registrator.script из NLC6.008 (т.е. последняя актуальная версия).

Последней строкою в 'register' идет:

  cs_register (object_factory, "CMosquitoBald", "se_zones.se_zone_anom", "Z_GRED", "zone_greedy_s")

- т.е. однозначно при старте игры делается попытка зарегистрировать дополнительный класс 'Z_GRED' и этот класс регистрируется и присутствует в игре.

В тоже время, в секции [greedy_zone] этот класс закомментирован (подменен на 'ZS_MBALD') и по сути в оригинальном моде объектов с этим классом не создается.

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

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

 

Вообще-то вопрос несколько шире. В конфигах модов может быть сколь угодно разных доп.классов, но конечно не все они предназначены для спавна через all.spswn. Те же мины/турельки из Zenobian-mod спавнятся в процессе игры, у меня в моде - кулаки,сепаратор, ... тоже не для all.spawn'а. И т.п.

Т.о. возникает вопрос, а стОит ли при уже дороботанном алгоритме распаковки/запаковке, который пропускает незадействованные классы, вообще включать такие добавки в исходники скрипта?

Решать конечно тебе, но (ИМХО) решение вероятно должно быть 'или/или' (однозначным), а не неким промежуточным, дабы не запутаться в дальнейшем и тебе и модмейкерам.

 

Однозначно нужно оставить аномальные доп.классы (ZS_ICE, ZS_ELECT, ZS_ZHARK), т.к. на их базе уже немало модов выпущено и используются в алл.спавне.

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

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

Ссылка на комментарий
Artos, ты сам говорил о Z_BBL, что это мусор. Только он мусор, потому что не зарегистрирован, а Z_GRED мусор, потому что не используется. С точки зрения acdc разницы никакой. Потому и добавлять его не буду. Для распаковки спавна мода "NLC6. Начало" эти классы не нужны. Если они будут нужны для распаковки спавнов "NLC6. Середина" или "NLC6. Конец" - обязательно добавлю. А насчет напоминания модмейкерам - сомневаюсь, что многие работают с такими вещами, а те, кто работают, уж точно не acdc берут ориентиром.
Ссылка на комментарий

KD87

Не буду далее оффтопить на тему 'сторонних' классов, но информации ради:

Ты, распарсив конфиги, видишь вроде как прописанные чему-то "классы" и отталкиваешься от предпосылки, что модмейкер этот класс создал и задействовал. Но(!), берем ситуации с дополнительными классами:

 

1. ZS_SBZZ - (NLC6) - класс создан и в игре объекты этого класса используются. Более того, объекты спавнятся через all.spawn.

 

2. ZS_BUZZ - (NS) - сделана попытка создать класс, но на базе недоступного клиентского класса 'CBuzz' это невозможно. Т.о. без переработки в моде соотв.кодов этот несуществующий класс является пока 'мусорным' (коды есть - использовать нельзя).

 

3. Z_GRED - (NLC6) - класс в игре создается. Объектами для его использования предполагались по задумке аномалии "Жадинки", но ... по какой-то причине пока этот класс заменен на стандартный (ZS_MBALD). Ни что не мешает задействовать этот класс, и даже при спавне аномалий в all.spawn'е.

 

4. Z_BBL - (NLC6) - конфиг с попыткой использовать класс имеется, и даже биндер написан, но(!) ни класс не реализован, ни естественно нет объектов в игре. Т.о. без создания класса эти коды пока являются 'мусором' (коды есть - использовать нельзя).

 

ИМХО, критерием (не)включения в инструментарий должно вероятно являтся реальное существование класса, который может быть задействован в all.spawn'е (п.1 и п.3), а не некорректные попытки создания класса (п.2) или декларации в конфигах несуществующих классов (п.4).

Иными словами: Есть класс - включается, нет класса - соответственно и в инструментарии нет. Тогда и универсальность применения сохранится и "мусор/рудименты" будут отсутствовать.

 

 

 

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

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

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

Информация по распаковке Народной Солянки:

 

Распаковщик ругается на пару секций: 'zone_ogon' (несколько раз, но без фатала) и с прекращением распаковки - 'wpn_ak74_m1' для имени "kat_wpn_ak74_m1" (это в alife_l03u_agr_underground).

 

Секция 'wpn_ak74_m1' сделана на классе 'WP_LR300' (cse_alife_item_weapon_magazined)

Если руками задать для секции 'wpn_ak74_m1' = cse_alife_item_weapon_magazined_w_gl (это в ACDC) или в конфиге оружия для 'wpn_ak74_m1' исправить 'WP_LR300' -> 'WP_AK74' - то спавн распаковывается.

Предположение о причине ошибки:

Кто-то из разработчиков вероятно ранее запаковал all.spawn, когда секции этого оружия был задан класс 'WP_AK74', и уже позже в конфигах было исправлено на 'WP_LR300'.

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

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

Ссылка на комментарий
:wacko: У меня тут проблема, с ACDC, точнее с распаковкой all.spawn из тч версии 1,003. Везде написано что мол любая версия ACDC сойдет, но у меня ничего не выходит! Тут у меня две версии обе рабочие, с их помощью раз архивировал COP но с ТЧ завал! Я перепробовал кучи батников и даже ACDC-MENU, но ничего не помогает! Что делать :dash3:
Ссылка на комментарий

Artos, да, я это знаю. Для zone_ogon у разрабов тоже стоял не тот класс в acdc. Тут проблема не в универсальном acdc. Значит, надо или делать костыль, перехватчик ошибок, или прикладывать правленые конфиги к acdc. Признаться, еще не решил. Такая же проблема в OGSM ЧН, кстати, с винторезом.

А других модов у тебя нет под рукой? Статистику по распаковке бы собрать.

 

PoG, версию из шапки пробовал?

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

KD87

Ставить ли 'костыль' в инструментарий? Хм, непростой вопрос ... Я бы наверное не стал, дабы не давать повода разрабам/модмейкерам допускать ошибки. Тем более, вариант распаковки при некорректных конфигах существует, ну а далее - пусть перепаковывают с корректными значениями и работают дальше. (ИМХО)

 

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

 

Хотел спросить: В кодах/скриптах игры используются серверные классы 'cse_anomalous_zone', cse_zone_visual и т.п. В кодах ACDC им, как понимаю, соответствуют 'cse_alife_anomalous_zone', cse_alife_zone_visual и т.п.

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

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

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

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

Artos, проверенный список модов я вроде бы писал на прошлой странице.

В ACDC используются движковые названия классов. Это осталось еще от бардака. Тут уж остается только гадать, почему разрабы при экспорте у ряда классов поубирали слово 'alife'.

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

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

Явно проблема имеется на линейке модов "Priboi Story". Причем, не сумев распаковать спавн - клепаются продолжения ... усугубляя ошибки тем, что меняют классы объектам которые имеются и в спавне.

Выкладывать спавн и конфиги иль еще чего? (тут дело посерьезнее)

 

По названиям тоже понятно. Жаль, вроде бы желательно состыковать с реальными кодами игры, т.к. мне в модуле нет-пакетов приходится оперировать с реальными и виртуальными именами одного и того же, но и трогать отлаженное - тоже не гоже ... Посмотрим далее.

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

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

Ссылка на комментарий
Artos, если есть возможность выложить спавны и конфиги - выкладывай. Что-то не хочется мне качать многие сотни мегабайт этих модов :)
Ссылка на комментарий

KD87, тогда буду постепенно постить.

Вот это для давнего "Priboi Story". На его базе уже и продолжение вышло (с первоначальным спавном).

1. В исходном моде есть дублирование некритичных секций (иммунитеты объектов), что прерывает считывание секций и распаковку.

2. Имеются две проблемы в спавне. Логи, на чем натыкалось, я прикладываю. Второй лог получен после "ручной правки" спавна, дабы прочесть хоть как-то секцию ...

3. В архив вложил некое расширение мода (забыл уже к чему это ...), т.к. в нем второй вариант спавна, не имеющий первой ошибки.

Т.к. сам любитель решать головоломки хотелось бы хотя бы кратко получать информацию о причине ошибки и кратком пояснении "как устранено".

Ссылка (1.47 МБ)

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

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

Ссылка на комментарий
Artos, распаковать удалось :) Оба твоих вылета были и у меня. Первый вылет - из-за кривой секции rad_stalker_dead, как-то так. Там object_flags по какой-то причине упакован в трехбайтовый контейнер. А скорее даже, просто старший байт откушен. Пришлось добавлять этот байт и править размеры чанков, куда эта секция была вложена. Второй вылет - секция dar_af_ameba_slug (section_name = af_ameba_slug) встречается в спавне два раза, Первый раз - это простой cse_alife_item_artefact, второй раз - что-то совершенно адское, издали напоминающее cse_alife_object_physic. Тут просто отключил fatal error, заменив на warning. Обойдя это получил еще и третий вылет - секция dar_dar_document3 имеет формат cse_alife_object_physic, в то время, как в конфигах стоит II_ATTCH. Я боюсь представить, чем такой спавн можно было сделать. Изменено пользователем KD87
Ссылка на комментарий

KD87

Если удалось распаковать (хоть как-то) - скинь в личку или тут, плз. Давно хотел посмотреть начинку, но ... именно из-за описанных тобою ошибок вроде как никто не рапаковал до сих пор этот спавн и клепают на том, что есть.

Ну а запаковывался скорее всего 'своим' правленным ACDC, правки которого только у авторов мода и были.

Не думаю, что стОит подстраивать универсальный ACDC под подобные ошибки/правки, все же это исключение, а не правило. Но, учитывая, что игра все же принимает даже такие спавны, наверное попробовать посмотреть что можно сделать с алгоритмом, который бы пропускал иль правил подобные ошибки. Тот же, например, 'документ' в игре ничем не отличается от 'итема' (аттача) - вот игра и принимает подмену класса.

 

P.S. Выкладывать конечно буду продолжать, если будут попадаться те, которые штатно не распаковываются. Но проверяю те, которые (были) популярны и только по 3-4 за день ...

Спасибо за распакованный спавн.

P.P.S. В те давние времена были популярны 'закрывашки' кода, дабы не плагитничали ... так что вполне возможно что это искусственно привнесенные ошибки в спавн (своего рода антираспаковщик).

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

 

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

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

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

Artos, вот: http://narod.ru/disk/31303425001/all.7z.html

Нет, с помощью acdc такого запаковать нельзя. Там физически не назначишь два разных класса одной секции. И нельзя создать секцию с недостающим байтом, причем не где-то в конце, а в куске cse_alife_object. Подстраиваться под такое, конечно, не буду.

Если пробовал еще что-то распаковать - пости сюда, буду в шапке какой-то лог вести - распаковывается/не распаковывается.

 

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

Новая версия: народ

Что нового:

[+] добавлен ключ -nofatal (отключает вылет при фатальной ошибке, заменяя ее предупреждением.)

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

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

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

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

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

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

Войти

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

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

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

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