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

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

KD87 я так и понял,что скрипты из вашей подписи и есть универсальный ACDC ^_^ Но вот что-то не могу разобраться,как ими пользоваться.Не подскажете? :)
Ссылка на комментарий

Disord, на сталкерине acdc от 23 мая, в нем еще такого нет. Свежий надо скачивать из репозитория xray svn. Нужно щелкнуть по ссылке в моей подписи, справа нажать на кнопочку download и скачать архив. В архиве universal_acdc лежит по пути trunk\scripts\unpackers\spawn\.

Miller, попробовал acdc на спавне Народной солянки - есть ошибки. Оказалось, например, что у них zone_ogon имеет другой скриптовый класс, нежели другие аномалии, несмотря на то, что движковый класс у них один. Зачем такое делать, мне не совсем понятно, но это дело разработчиков. Попозже сделаю обработчик такого рода ошибок. Спавны попроще (например, АМК) распаковываются на ура.

 

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

В общем, кому надо было распаковывать спавн народной солянки - берем свежую версию из подписи, вставил необходимый костыль. Только спавн глючный, некоторые пути там дублированы. В текущих скриптах стоит блокировка на упаковку спавнов с повторяющимися секциями - чистите пути от таких секций (вроде все они в way_labx8) или комментируйте 30ю строчку в ini_file.pm (с помощью #). Вместе с acdc использовать только текущую папку stkutils из репозитория.

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

KD87,

имеет другой скриптовый класс, нежели другие аномалии, несмотря на то, что движковый класс у них один. Зачем такое делать, мне не совсем понятно

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

Мне однако интересно, как можно разрулить это автоматически. Получается, надо прочитать из секции имя сета, найти скриптовый серверный класс в class_registrator, потом разделить имя на модуль и имя класса, разпарсить модуль и найти объявление класса вида

class "имя класса" (движковый класс)

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

 

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

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

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

 

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

malandrinus, с аномалиями немножко другая ситуация. zone_ogon сделана на классе Z_SMBALD, для которого зарегистрирован скриптовый класс se_zone_anom. Однако, zone_ogon по какой-то причине имеет класс cse_alife_anomalous_zone, то есть имеет место, наоборот, сокращение объема сохраняемых данных.

По этой же причине мне неясно, как такое провернуть через class_registrator. Я сделал так - отловил ситуацию, когда в массиве данных для распаковки кончаются данные, но скрипту еще есть чего читать. В случае, если читать осталось 1 байт (last_spawn_time_present) и объект имеет класс se_zone_anom, можно сменить класс объекту на cse_alife_anomalous_zone и соответствующим образом изменить запись во внешней таблице section_to_class.

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

KD87,

По этой же причине мне неясно, как такое провернуть через class_registrator.

Мы же всегда читаем имя секции в составе данных cse_abstract. Дальше можно остановиться, прочесть секцию в конфиге и узнать имя сета, прочесть class_registrator и по имени сета найти скриптовый класс, прочитать скрипт, найти объявление класса и узнать базовый движковый, ну и парсить данные дальше уже точно зная имя класса. И не надо заморачиваться на точное знание соответствий секций и классов. Надо конечно закешировать найденное соответствие, не делать же эту процедуру на каждый объект.

 

Правда придётся подсовывать в придачу к папке конфига ещё и папку со скриптами.

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

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

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

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

 

Ссылка на комментарий
malandrinus, я с этого и начинал в свое время. Но, во первых, для каждой секции нужно иметь соответствующий движковый класс (а значит, читаем конфиги), во-вторых, не для всех классов зарегистрированы сеты в class_registrator (как определить остальные классы? особенно учитывая, что acdc должен поддерживать и билды, в которых зачастую нет скриптовых классов). Но это черт с ним. Если брать ситуацию со спавном солянки, имеем, что, zone_ogon имеет движковый класс ZS_MBALD. Скрипт лезет за подходящим сетом в class_registrator и находит там se_zone_anom. Но формат M_SPAWN в спавне-то именно cse_alife_anomalous_zone. Не отрицая того, что через class_registrator можно соотнести часть секций со скриптовыми классами, в данном случае не вижу, чем он может помочь. Изменено пользователем KD87
Ссылка на комментарий

Как отследить, включен ли диалог сна и спит ли гг (в это время исчезает миникарта)? (Сиалкер ЗП)

Изменено пользователем PavelSnork
Жду ли я Сталкер 2? Хм...
Ссылка на комментарий

KD87,

как определить остальные классы?

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

 

Если брать ситуацию со спавном солянки, имеем, что, zone_ogon имеет движковый класс ZS_MBALD. Скрипт лезет за подходящим сетом в class_registrator и находит там se_zone_anom. Но формат M_SPAWN в спавне-то именно cse_alife_anomalous_zone.

 

Признаться, вот это само по себе вызывает вопросы. В аллспавн значит данные есть только до cse_anomalous_zone, между тем как se_zone_anom представляет собой cse_anomalous_zone + флажок 1 байт + время (при флажке == 1). Вот как может быть скриптовый класс se_zone_anom, если в спавне для него нет данных? Он прочитает пакет до конца cse_anomalous_zone и будет читать дальше, но дальше то нет ничего. Он прочитает не понять какое значение флажка, а потом ещё и может попытаться прочитать какое-то время. Вот это и странно. Это вообще работает? Нет ли здесь большого косяка?

 

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

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

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

 

Ссылка на комментарий
malandrinus, это надо спрашивать у авторов солянки. Я брал спавн из версии от 19.04 со всеми дополнениями и патчами. Ни в одном спавне больше такого не видел. Кстати, ни разу не видел, чтобы флажок (в all.spawn, конечно) был не нуль :). В исходном acdc чтение времени даже не было заложено. А насчет недостатка данных - ну, вот, например, секцию M_UPDATE движок очень некритично читает - ему на ее размер вообще наплевать, больше там данных, меньше. Возможно, что-то подобное и тут имеет место быть - надо глянуть, как в движке функции чтения реализованы.
Ссылка на комментарий

Если актор берет какой либо предмет из трупа, проверку на взятие нужно писать в bind_stalker в функцию on_item_take(obj)? Ответ можно в личку.

ТЧ 1.0004. SAP и Trans mod

github

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

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

Ставить частый респавн (тушканов за насыпью /крыс или плотей) не выход из ситуации. Спавн через диалог не подходит - примитивно...

Мои шаловливые ручонки подредактировали большинство файлов в НС "под себя".

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

Если в OGSM с этим проблем не было, там скриптовый спавн завязан на выброс и внести необходимые изменения в соответствующие файлы (указав координаты), заспавнивая на локациях монстров - проблем не возникало.

Здесь же в НС никак не получается. Хочу видеть химеру и контроллера :) на кордоне регулярно и все тут...

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

Кто-нибудь скриптом спавнит дополнительно монстров (для остроты ощущений) на локациях в НС? Или может привязываете к выбросу или заходу на локацию?

Если да - поделитесь кодом и как заставили это работать.

Ссылка на комментарий
Прошу помощи, в разъяснении одного вопроса с логикой НПС в ЗП, не умирают в аномалиях, даже если в них попадают, всем, кто знает в чём причина, отпишите в лс

С ТЧ не работаю. Вообще.

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

Desertir

Функция on_item_take(obj) в bind_stalker запускается при попадании предмета в инвентарь актора любым способом - будь это подбор предмета откуда-либо, патроны из разрядки оружия, прямой спавн в инвентарь либо что-то еще.

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

if db.actor:has_info("ui_car_body") then
...
end

 

Функция take_item_from_box(box, item) работает только при взятии предмета из тайника, работает с тайником и для твоих целей бесполезна...

Мои работы:

Ночные прицелы + смена ножевого слота

AI вертолетов + ПЗРК

Soul Cube

 

Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем.

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

Проблема скриптовая, логикой ее не решить. Идет еще мо времен оригинала

Изменено пользователем _Призрак_

Freedom

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

KD87

А какой pl в твоем acdc нужно использовать?universal_acdc или acdc_soc?Первый выдает ошибку о ненайденной секции stalker_sniper (хотя я папку конфиг сунул..а кстати,куда именно ее пихать?в stkutils?), а второй template is not defined

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

Думаю, вопрос в ту тему. Заранее извиняюсь, если вдруг не так. В общем имеется следующее:

- файл с именами и путями к текстурам такого вида:

act/act_sold
wood/wood1

- вроде всё :)

Можно ли сделать батник (ну или что-то другое), который я запущу, к примеру в папке gamedata/textures, а он мне выдернет вот эти текстуры из списка в папку gamedata2/textures. Естественно, всё должно аккуратно лежать также:

gamedata2/textures/act/sold
gamedata2/textures/wood/wood1

Если кто смастерит такой батник или какую-нибудь консольную программу, с меня подарок :)

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

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

Miller, universal_acdc. Почитай к нему ридми, там все написано. Папку config можно держать где угодно, но для простоты я обычно сую в ту же папку, где лежит pl скрипт.

 

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

Disord, а в каком контексте такое нужно? для чего?

Изменено пользователем KD87
Ссылка на комментарий
KD87, мне это необходимо, чтобы получить файлы текстур, используемые локацией. Есть специальный декомпилятор файла level, он мне его декомпилирует на список всяких интересных вещей, среди которых есть список текстур. Я просто хочу вытащить из общей геймдаты именно вот эти текстуры, а по одной я буду очень долго вытаскивать...
Ссылка на комментарий

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

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

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

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

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

Войти

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

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

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