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

[CS] Ковыряемся в файлах


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

Люди, спасайте. Решил я перепройти ЧН, Вики меня просветила про часть особого оружия, которое выглядит интересным, но в игре не использутся(а не как раньше - только увеличили магазин, увеличили скорострельность и т.д.). LR-301 "Левша", SPAS-12 АВТ, Винторез-ВАЛ(оружие-гибрид), ну может еще что-то. Поставил мод OGSM 1.8.2. Захотел восстановить это оружие, но для начала посмотреть на его конфиги. Не могу конфиги найти! В папке weapons конфигов уникального оружия нет, попробовал гуглить - файла unique_items.ltx в папке misc тоже нет, о котором гугл упоминает. Как теперь найти или восстановить собственно конфиги оружия? Думаю, что прописать его персонажам или в качестве награды за квесты - достаточно просто, в первую очередь интересуют конфиги.

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

@MegaStalker не слышал про то, что ты написал...

Есть в конфигах такого плана записи:

; Уникальные
;-----------------------------------------------------------------------------

[wpn_ak74_minigame]:wpn_ak74    ;new weapon for minigame "Shooting"

это внизу в конфе АК прописано. В других конфах тоже есть по мелочи дописки, но это не то пальто думаю. 

Винторез-ВАЛ - что это? Должна быть модель специфичная... не встречал.

1 час назад, warwer сказал:

@MegaStalker не слышал про то, что ты написал...

Есть в конфигах такого плана записи:

; Уникальные
;-----------------------------------------------------------------------------

[wpn_ak74_minigame]:wpn_ak74    ;new weapon for minigame "Shooting"

это внизу в конфе АК прописано. В других конфах тоже есть по мелочи дописки, но это не то пальто думаю. 

Винторез-ВАЛ - что это? Должна быть модель специфичная... не встречал.


Это вырезанный контент, насколько я понял. Кину ниже ссылки на пару статей.

 

https://stalker.fandom.com/ru/wiki/ТПс_«Левша»

 

https://stalker.fandom.com/ru/wiki/Винтарь-ЛАВИНА

 

https://stalker.fandom.com/ru/wiki/СВ-Ам

Здравствуйте.
В общем дело такое: в ЧН почему-то отключёны звуки раненых НПС, то есть все они лежат ранеными молча. Я решил это исправить, для этого отредактировать файл xr.wounded.script,  а конкретно эту часть: 
   

Скрытый текст

 

 wound_manager_state = xr_logic.pstor_retrieve(self.object, "wounded_state")
     wound_manager_sound = xr_logic.pstor_retrieve(self.object, "wounded_sound")
    local synsound = nil
    if wound_manager_state == "true" then
        local h = hit()
        h.power = 0
        h.direction = self.object:direction()
        h.bone = "bip01_spine"
        h.draftsman = db.actor
        h.impulse = 0
        h.type = hit.wound
        self.object:hit(h)
    else
        -- является ли текущий звук синхронным для текущего стейта
        for k,v in pairs(self.a.syndata) do
            if v.state == wound_manager_state and
               v.sound == wound_manager_sound
            then
                synsound = wound_manager_sound
            end
        end
        --' жрание аптечек и прочей срани.
        --' Использовать можно только если нам можно сейчас есть аптечку.
        if self.a.use_medkit == true then
            wound_manager:eat_medkit()
        end

        local emerg = nil
        if wound_manager_state == "psy_shoot" then
            emerg = {animation_nout = true}
        end
        state_mgr.set_state(self.object, wound_manager_state, nil, nil, {look_object = victim}, emerg, synsound)
    end

    if synsound == nil then
        -- нужно отыграть фоновый
        if self.sound ~= wound_manager_sound then
            self.sound = wound_manager_sound
            if self.sound == "nil" then
--                xr_sound.set_sound(self.object, nil)
            else
--                xr_sound.set_sound(self.object, wound_manager_sound)
            end
        end
    else
        -- нужно зарубить фоновый
        if self.sound ~= nil then
            self.sound = "nil"
--            xr_sound.set_sound(self.object, nil)
        end
    end
end

 

Сначала я попытался просто раскомментировать строки (чтобы стало как SoC), затем поставил local перед wound_manager_sound, затем заменил xr_sound.set_sound(self.object  на xr_sound.set_sound_play(self.object:id()(), но постоянно сталкиваюсь с следующей ошибкой 

Скрытый текст

FATAL ERROR
 
[error]Expression    : fatal error
[error]Function      : CScriptEngine::lua_error
[error]File          : E:\priquel\sources\engine\xrServerEntities\script_engine.cpp
[error]Line          : 180
[error]Description   : <no expression>
[error]Arguments     : LUA error: ....t.a.l.k.e.r. - clear sky\gamedata\scripts\_g.script:975: bad argument #2 to 'format' (string expected, got nil)
 При том в логе пишется перед вылетом: ! [LUA][ERROR] ERROR: INCORRECT LOAD [_sound_actor_save].[0][138229].


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

15 часов назад, Lieutenant Novikov сказал:

Здравствуйте.
В общем дело такое: в ЧН почему-то отключёны звуки раненых НПС, то есть все они лежат ранеными молча. Я решил это исправить, для этого отредактировать файл xr.wounded.script,  а конкретно эту часть: 
   

  xr.wounded.script (Скрыть)

 

 wound_manager_state = xr_logic.pstor_retrieve(self.object, "wounded_state")
     wound_manager_sound = xr_logic.pstor_retrieve(self.object, "wounded_sound")
    local synsound = nil
    if wound_manager_state == "true" then
        local h = hit()
        h.power = 0
        h.direction = self.object:direction()
        h.bone = "bip01_spine"
        h.draftsman = db.actor
        h.impulse = 0
        h.type = hit.wound
        self.object:hit(h)
    else
        -- является ли текущий звук синхронным для текущего стейта
        for k,v in pairs(self.a.syndata) do
            if v.state == wound_manager_state and
               v.sound == wound_manager_sound
            then
                synsound = wound_manager_sound
            end
        end
        --' жрание аптечек и прочей срани.
        --' Использовать можно только если нам можно сейчас есть аптечку.
        if self.a.use_medkit == true then
            wound_manager:eat_medkit()
        end

        local emerg = nil
        if wound_manager_state == "psy_shoot" then
            emerg = {animation_nout = true}
        end
        state_mgr.set_state(self.object, wound_manager_state, nil, nil, {look_object = victim}, emerg, synsound)
    end

    if synsound == nil then
        -- нужно отыграть фоновый
        if self.sound ~= wound_manager_sound then
            self.sound = wound_manager_sound
            if self.sound == "nil" then
--                xr_sound.set_sound(self.object, nil)
            else
--                xr_sound.set_sound(self.object, wound_manager_sound)
            end
        end
    else
        -- нужно зарубить фоновый
        if self.sound ~= nil then
            self.sound = "nil"
--            xr_sound.set_sound(self.object, nil)
        end
    end
end

 

Сначала я попытался просто раскомментировать строки (чтобы стало как SoC), затем поставил local перед wound_manager_sound, затем заменил xr_sound.set_sound(self.object  на xr_sound.set_sound_play(self.object:id()(), но постоянно сталкиваюсь с следующей ошибкой 

  Error (Скрыть)

FATAL ERROR
 
[error]Expression    : fatal error
[error]Function      : CScriptEngine::lua_error
[error]File          : E:\priquel\sources\engine\xrServerEntities\script_engine.cpp
[error]Line          : 180
[error]Description   : <no expression>
[error]Arguments     : LUA error: ....t.a.l.k.e.r. - clear sky\gamedata\scripts\_g.script:975: bad argument #2 to 'format' (string expected, got nil)
 При том в логе пишется перед вылетом: ! [LUA][ERROR] ERROR: INCORRECT LOAD [_sound_actor_save].[0][138229].


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


Ну вот тебе же пишут: _g.script, что-то не так с форматом. Попробуй сравнить фрагменты из SoC и CS, вдруг там найдется решение. И кстати, если заработает - скинешь мне? Хочу посмотреть, опробовать.

45 минут назад, MegaStalker сказал:


Ну вот тебе же пишут: _g.script, что-то не так с форматом. Попробуй сравнить фрагменты из SoC и CS, вдруг там найдется решение. И кстати, если заработает - скинешь мне? Хочу посмотреть, опробовать.

Да уж сравнивал, и SoC файлом, и c COP файлом, даже копировал эти фрагменты, не помогает. Последняя надежда, на то что проблема в script_sound, там какое-то странное несовпадение с аналогичным в COP, но пока понять не могу почему. А лог на _g.script — самый бесполезный, ибо он вообще информации не даёт, как я понял. Этот лог у меня вообще выскакивал даже когда я просто в профиле бандита, в строчке:<snd_config>characters_voice\human_01\bandit\</snd_config> пробел лишний поставил. Вот и вся информационная "польза" этого лога, который ссылался на _g.script, вообще не имевшего к ошибке отношения. Тут единственная зацепка это:! [LUA][ERROR] ERROR: INCORRECT LOAD [_sound_actor_save].[0][138229], но что это значит не могу понять. Я скину конечно, если смогу от ошибки избавиться

1 час назад, Lieutenant Novikov сказал:

Да уж сравнивал, и SoC файлом, и c COP файлом, даже копировал эти фрагменты, не помогает. Последняя надежда, на то что проблема в script_sound, там какое-то странное несовпадение с аналогичным в COP, но пока понять не могу почему. А лог на _g.script — самый бесполезный, ибо он вообще информации не даёт, как я понял. Этот лог у меня вообще выскакивал даже когда я просто в профиле бандита, в строчке:<snd_config>characters_voice\human_01\bandit\</snd_config> пробел лишний поставил. Вот и вся информационная "польза" этого лога, который ссылался на _g.script, вообще не имевшего к ошибке отношения. Тут единственная зацепка это:! [LUA][ERROR] ERROR: INCORRECT LOAD [_sound_actor_save].[0][138229], но что это значит не могу понять. Я скину конечно, если смогу от ошибки избавиться

Трудно сказать, т.к. я сам не очень разбираюсь в этом. Могу лишь подозревать, что какая-то беда со звуком - как-то он неправильно загружается(incorrect load).

Добавлено warwer,

Зачем цитировать весь предыдущий пост?! Нет смысла и запрещено правилами форума.

Точнее не самим звуком, добавляя / удаляя секции звуков в script_sound_карта.ltx нужна новая игра. Так сделано в xr_sound.script (actor_save / actor_load), что список звук.тем сохраняется в сейв и потом читается (а нужно динамически). Поэтому, после патчей для модов чн/зп с такими правками, всегда нужна новая игра.

  • Спасибо 1
  • Полезно 1

 h0N0r 

Спасибо большое, это помогло!
Так вообщем выкладываю результат:
В файле xr_wounded.script 

Скрытый текст

 

wound_manager_state = xr_logic.pstor_retrieve(self.object, "wounded_state")
    wound_manager_sound = xr_logic.pstor_retrieve(self.object, "wounded_sound")
    local synsound = nil
    if wound_manager_state == "true" then
        local h = hit()
        h.power = 0
        h.direction = self.object:direction()
        h.bone = "bip01_spine"
        h.draftsman = db.actor
        h.impulse = 0
        h.type = hit.wound
        self.object:hit(h)
    else
        -- является ли текущий звук синхронным для текущего стейта
        for k,v in pairs(self.a.syndata) do
            if v.state == wound_manager_state and
               v.sound == wound_manager_sound
            then
                synsound = wound_manager_sound
            end
        end
        --' жрание аптечек и прочей срани.
        --' Использовать можно только если нам можно сейчас есть аптечку.
        if self.a.use_medkit == true then
            wound_manager:eat_medkit()
        end

        local emerg = nil
        if wound_manager_state == "psy_shoot" then
            emerg = {animation_nout = true}
        end
        state_mgr.set_state(self.object, wound_manager_state, nil, nil, {look_object = victim}, emerg, synsound)
    end

    if synsound == nil then
        -- нужно отыграть фоновый
        if self.sound ~= wound_manager_sound then
            self.sound = wound_manager_sound
            if self.sound == "nil" then
--                xr_sound.set_sound(self.object, nil)
            else
--                xr_sound.set_sound(self.object, wound_manager_sound)
            end
        end
    else
        -- нужно зарубить фоновый
        if self.sound ~= nil then
            self.sound = "nil"
--            xr_sound.set_sound(self.object, nil)
        end
    end
end

 

Скрытый текст

 

wound_manager_state = xr_logic.pstor_retrieve(self.object, "wounded_state")
    wound_manager_sound = xr_logic.pstor_retrieve(self.object, "wounded_sound")
    if wound_manager_state == "true" then
        local h = hit()
        h.power = 0
        h.direction = self.object:direction()
        h.bone = "bip01_spine"
        h.draftsman = db.actor
        h.impulse = 0
        h.type = hit.wound
        self.object:hit(h)
    else
        --' жрание аптечек и прочей срани.
        --' Использовать можно только если нам можно сейчас есть аптечку.
        if self.a.use_medkit == true then
            wound_manager:eat_medkit()
        end

        if tostring(wound_manager_state) == "nil" then
            print_table(self.a.hp_state)
            print_table(self.a.hp_state_see)
            abort("wrong wounded animation %s", self.object:name())
        end
        state_mgr.set_state(self.object, wound_manager_state, nil, nil, {look_object = victim}, nil)
    end

    -- нужно отыграть фоновый
    if wound_manager_sound == "nil" then
        xr_sound.set_sound_play(self.object:id(), nil)
    else
        xr_sound.set_sound_play(self.object:id(), wound_manager_sound)
    end
end

 

дальше в файле script_sound.ltx добавляем в начале в список

help_heavy

далее 

[help_heavy]
type = npc
npc_prefix = true
avail_communities = (группировки которые будут озвучиваться )
path = help\wounded_heavy\help_
shuffle = rnd
idle = 4,8,100

 

Начинайте новую игру

 

Ещё я восстановил звуки спящим НПС (может кому понадобиться):

Скрытый текст

 

В файле xr_sleeper.script заменяем строчки 

--        xr_sound.set_sound(self.object, "sleep")

--  xr_sound.set_sound(self.object, nil)

на строчки:

xr_sound.set_sound_play(self.object:id(), "sleep")

xr_sound.set_sound_play(self.object:id(), nil)

дальше в файле script_sound.ltx добавляем в начале в список

sleep

далее 

[sleep]
type = npc
npc_prefix = true
avail_communities = (группировки которые будут озвучиваться )
path = states\sleep\sleep_
shuffle = rnd
idle = 7,13,100

 

  • Полезно 2

Нужна помощь. Взялся восстанавливать уникальное оружие, которое из ЧН отменили - информация о нем на Вики есть. За базу взял OGSM. Вот взял я один ствол, Большой Бэн. Описание - есть. Конфиги - есть(сделано как часть файла w_desert_eagle.ltx). В игру оружие тоже прописал(пораскидывал по тайникам и НПС). В тайнике нашел - работает. Но не улучшается! Ни один техник его не хочет апгрейдить - у него не появляются апгрейды, только чинить могу.

 

Скрытый текст
[wpn_eagle_m1]:wpn_desert_eagle	;Большой Бэн
$spawn             				= "weapons\uniq\wpn_eagle_m1"	

upgrades                			= up_gr_ab_desert_eagle, up_gr_cd_desert_eagle, up_gr_e_desert_eagle, up_gr_f_desert_eagle
installed_upgrades      			=
upgrade_scheme          			= upgrade_scheme_u10a_ogsm

description						= st_wpn_eagle_m1_descr
inv_name						= st_wpn_eagle_m1
inv_name_short					= st_wpn_eagle_m1

ammo_class						= ammo_9x39_sp5, ammo_9x39_ap, ammo_9x39_pab9
hit_power               		= 0.77
condition_shot_dec				= 0.0004

 

 

Подскажите, где я ошибся, что не так делаю? Почему обычное оружие механики улучшают, а созданные мной "уникумы" не хотят?

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

@MegaStalker, потому что их надо добавить в скрипт.

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

Смотри в скриптах.

wpn вбей в поиск по файлам в скриптах чистой игры, и найдёшь.

@MegaStalker

Списки для каждого механика: [configs\misc\stalkers_upgrade_info.ltx].

Схемы прокачки: [configs\ui\inventory_upgrade.xml] + то же для 16:9.

 

  • Полезно 1

@Norman Eisenherz, а в скрипте наверное тогда чтоб исключать определённый ствол из ремонта.

Чтоб нельзя его было ремонтировать.

Ну да, точно, добавлял туда все уники. Правда у меня уники наоборот были. Типа изношенные стволы, и не подлежат ремонту.

 

Позабывал уже всё, надо будет всё снова вспоминать :)

@MegaStalker , букварь. Смотри, что упустил. В CS практически аналогично.

  • Полезно 1

Чекал насчет схем прокачки и списков для механиков. Схемы прокачки мне точно не нужны, т.к. я использую уже готовые, прописанные для ванильного оружия, они должны работать(т.к. они уже есть в inventory_upgrade). Добавил ствол в списки механиков, но это не помогло пока что.

P.S. Всем спасибо за помощь, разобрался. Не хватало ссылки в файле inventory_upgrades, теперь все работает.

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

Кто нибудь знает за что отвечает строчка:
distanse = значение в цифрах (например 100) в типовых квестах ЧН "принеси что нибудь"? Это дистанция отряда НПС до квестового предмета в которой возможна выдача квеста?

c70a64cb3541c2c.jpg
Еще вопрос: кто нибудь делал, например в ОГСМ и т.д., фикс исчезновения предметов на станции переработки аномальной дряни на болотах ЧН? Помню были такие фиксы для "фантомных" гаражей в Припяти в ТЧ.

И еще вопрос: Как прописать новые ID в game_story_ids? Простое присвоение новых номеров ведет к вылетам с отсылкой, что ID не найден.

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

@ZeeK distanse =  не используется.

Про исчезновения - не понял...

Стори ай ди присваивается в аллспавне, допрописывается в конфигах.

  • Полезно 1
Цитата

Про исчезновения - не понял...

 

@warwer, судя по всему, имелась ввиду проблема с отображением части геометрии уровня при нахождении в определёной точке. Пример с аналогичной проблемой из ЗП.

 

Изменено пользователем Painter
1 час назад, warwer сказал:

Стори ай ди присваивается в аллспавне, допрописывается в конфигах.

1) Можно поподробнее?

2) Да,  Painter верно отметил про исчезающую геометрию.

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

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

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

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

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

Войти

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

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

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