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

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


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

Всем доброго времени суток. Подскажите какие файлы задействованы в патрулировании военными железнодорожной насыпи на кордоне, мод - АМК 1.4.1

Попытался сделать респаун патруля военных на ж.д. насыпи на локации Кордон. Но у меня ничего не получилось. На насыпи появилось 5 патрулирующих вояк, но после их уничтожения респаун патрульных не происходит.

Возможно я что-нибудь неправильно сделал? Подскажите пожалуйста в чём ошибка.

Ниже описано в подробностях как и что я делал.

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

 

1) В all.spawn добавил в файл - alife_l01_escape - Смарт, рестриктор, респаун и 5 вояк. И  пути в файл - way_l01_escape

2) В gamedata\scripts\ добавил - gulag_amk.script и прописал новый гулаг в xr_gulag.script

3) В gamedata\config\misc\ добавил - gulag_amk.ltx и прописал - (#include "gulag_amk.ltx") в - gulag_tasks.ltx

4) В gamedata\config\scripts\ добавил - amk\logic_npc. Хотя я не нашёл где используется данная логика но на всякий случай добавил и её. 

Гулаг на свалке я не добавлял, возможно ошибка в скрипте? В gamedata\scripts\gulag_amk.script. Из скрипта как мне кажется я убрал всё что не имеет  отношения к патрулю на насыпи.

Вот ссылка на редактируемые файлы - https://yadi.sk/d/HXtgOebfU6r7tg

То что убрано закомментировано  вот таким образом  --[[.........]]--

Вот отредактированный gulag_amk.script:

=========================================================================================================================


local t = {}

function load_job(sj, gname, type, squad, groups)    

    -- ГУЛАГ ВОЕННЫХ НА НАСЫПИ
    if type == "amk_embankment" then
        t = { section = "logic@amk_embankment_soldier1",
            idle = 0,
            prior = 10, state = {0},
            in_rest = "", out_rest = "amk_embankment_restrictor"
        }
        table.insert(sj, t)
        t = { section = "logic@amk_embankment_soldier2",
            idle = 0,
            prior = 10, state = {0},
            in_rest = "", out_rest = "amk_embankment_restrictor"
        }
        table.insert(sj, t)
        t = { section = "logic@amk_embankment_soldier3",
            idle = 0,
            prior = 5, state = {0},
            in_rest = "", out_rest = "amk_embankment_restrictor"
        }
        table.insert(sj, t)
        t = { section = "logic@amk_embankment_soldier4",
            idle = 0,
            prior = 5, state = {0},
            in_rest = "", out_rest = "amk_embankment_restrictor"
        }
        table.insert(sj, t)
        t = { section = "logic@amk_embankment_soldier5",
            idle = 0,
            prior = 15, state = {0, 1},
            in_rest = "", out_rest = "amk_embankment_restrictor"
        }
        table.insert(sj, t)
        t = { section = "logic@amk_embankment_sleeper1",
            idle = 0,
            prior = 10, state = {1},
            in_rest = "", out_rest = "escape_bridge_zone"
        }
        table.insert(sj, t)
        t = { section = "logic@amk_embankment_sleeper2",
            idle = 0,
            prior = 10, state = {1},
            in_rest = "", out_rest = "escape_bridge_zone"
        }
        table.insert(sj, t)
        t = { section = "logic@amk_embankment_sleeper3",
            idle = 0,
            prior = 10, state = {1},
            in_rest = "", out_rest = "escape_bridge_zone"
        }
        table.insert(sj, t)
        t = { section = "logic@amk_embankment_sleeper4",
            idle = 0,
            prior = 10, state = {1},
            in_rest = "", out_rest = "escape_bridge_zone"
        }
        table.insert(sj, t)
    end

    --[[
    
    
    -- ГУЛАГ МИНИ-БАРА НА СВАЛКЕ
    if type == "amk_mini_bar" then
        t = { section = "logic@amk_mini_bar_kulinar",
            idle = 0,
            prior = 25, state = {0, 1},
            in_rest = "", out_rest = "amk_mini_bar_restrictor",
            predicate = function(obj_info)
                            return obj_info.profile_name == "amk_artem_kulinar"
                        end
        }
        table.insert(sj, t)
        t = { section = "logic@amk_mini_bar_voron",
            idle = 0,
            prior = 25, state = {0, 1},
            in_rest = "", out_rest = "amk_mini_bar_restrictor",
            predicate = function(obj_info)
                            return obj_info.profile_name == "amk_vitek_voron"
                        end
        }
        table.insert(sj, t)
        t = { section = "logic@amk_mini_bar_stalker1",
            idle = 0,
            prior = 5, state = {0, 1},
            in_rest = "", out_rest = "amk_mini_bar_restrictor"
        }
        table.insert(sj, t)
        t = { section = "logic@amk_mini_bar_stalker2",
            idle = 0,
            prior = 15, state = {0, 1},
            in_rest = "", out_rest = "amk_mini_bar_restrictor"
        }
        table.insert(sj, t)
        t = { section = "logic@amk_mini_bar_stalker3",
            idle = 0,
            prior = 15, state = {0, 1},
            in_rest = "", out_rest = "amk_mini_bar_restrictor"
        }
        table.insert(sj, t)
        t = { section = "logic@amk_mini_bar_stalker4",
            idle = 0,
            prior = 5, state = {0, 1},
            in_rest = "", out_rest = "amk_mini_bar_restrictor"
        }
        table.insert(sj, t)
        t = { section = "logic@amk_mini_bar_stalker5",
            idle = 0,
            prior = 15, state = {0, 1},
            in_rest = "", out_rest = "amk_mini_bar_restrictor"
        }
        table.insert(sj, t)
        t = { section = "logic@amk_mini_bar_stalker6",
            idle = 0,
            prior = 5, state = {0, 1},
            in_rest = "", out_rest = "amk_mini_bar_restrictor"
        }
        table.insert(sj, t)
        t = { section = "logic@amk_mini_bar_stalker7",
            idle = 0,
            prior = 5, state = {0, 1},
            in_rest = "", out_rest = "amk_mini_bar_restrictor"
        }
        table.insert(sj, t)
        t = { section = "logic@amk_mini_bar_stalker8",
            idle = 0,
            prior = 10, state = {0, 1},
            in_rest = "", out_rest = "amk_mini_bar_restrictor"
        }
        table.insert(sj, t)
        t = { section = "logic@amk_mini_bar_stalker9",
            idle = 0,
            prior = 20, state = {0, 1},
            in_rest = "", out_rest = "amk_mini_bar_restrictor"
        }
        table.insert(sj, t)
        t = { section = "logic@amk_mini_bar_stalker10",
            idle = 0,
            prior = 20, state = {0, 1},
            in_rest = "", out_rest = "amk_mini_bar_restrictor"
        }
        table.insert(sj, t)
        t = { section = "logic@amk_mini_bar_stalker11",
            idle = 0,
            prior = 20, state = {0, 1},
            in_rest = "", out_rest = "amk_mini_bar_restrictor"
        }
        table.insert(sj, t)
        t = { section = "logic@amk_mini_bar_stalker1_kamp",
            idle = 0,
            prior = 10, state = {0, 1},
            in_rest = "", out_rest = "amk_mini_bar_restrictor"
        }
        table.insert(sj, t)        
        t = { section = "logic@amk_mini_bar_stalker1_kamp",
            idle = 0,
            prior = 10, state = {0, 1},
            in_rest = "", out_rest = "amk_mini_bar_restrictor"
        }
        table.insert(sj, t)    
        t = { section = "logic@amk_mini_bar_stalker1_kamp",
            idle = 0,
            prior = 10, state = {0, 1},
            in_rest = "", out_rest = "amk_mini_bar_restrictor"
        }
        table.insert(sj, t)    
    end
    ]]--
end


function load_states(gname, type)
    if type == "amk_embankment" then
        return function(gulag)
            if db.actor ~= nil then
                if ( level.get_time_hours() >= 5 and level.get_time_hours() <= 22 ) then
                    return 0  
                else
                    return 1  
                end
            else
                return gulag.state
            end
        end
    end

    --[[
    
    if type == "amk_mini_bar" then
        return function(gulag)
            if db.actor ~= nil then
                if ( level.get_time_hours() >= 5 and level.get_time_hours() <= 22 ) then
                    return 0  
                else
                    return 1  
                end
            else
                return gulag.state
            end
        end
    end
    ]]--
end


function load_ltx(gname, type)
    return nil
end

function checkStalker(npc_community, gulag_type, npc_rank, se_obj)
    if gulag_type == "amk_embankment" then
        return npc_community == "military"
    end
--[[    
    if gulag_type == "amk_mini_bar" then
        return npc_community == "stalker"
    end
]]--
    return false
end

function checkMonster(npc_community, gulag_type)
    return false
end

=============================================================================================

 

 

Всё разобрался. Респаун патруля военных на ж.д. насыпи работает. Если кому нужно вот ссылка https://yadi.sk/d/HXtgOebfU6r7tg

Правда в all.spawn придётся править. 

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

Ребят, кто может объяснить, как поменять видеодорожку в ТЧ? Например сон в Х18 хочу поменять на другое, но как, я вообще не понимаю.

Свобода - лучшие сталкеры в зоне!

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

@ed_rez, не, ты меня чуть неправильно понял. Я имею ввиду саму дорожку поменять (например сон с крысами поменять на что нибудь другое) но как именно это сделать?

Свобода - лучшие сталкеры в зоне!

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

@Svobodovec_Arbuz

им можно любой видеоформат пожать в Ogg Theora, необходимый нам.

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

ed_rez.gif

c1f11b67ff360413e81b4e4dcf21eb41.jpg

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

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

 

Свобода - лучшие сталкеры в зоне!

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

Рабочая, но неиспользуемая в оригинале тч, схема (fx_sound.script) проигрывания звуков:

гг зашёл в рестриктор (или другие условия), запуск схемы, которая начинает постоянно проигрывать звук по пути, пока не дойдёт до точки с флагом |sig=completed (обязательно или вылет), также работает стандартный sound_end. Скорость движения зависит от velocity (больше = быстрее). Сам путь должен быть из 2-х и более точек.

[logic]
active = sr_idle@start

[sr_idle@start]
on_info = {=actor_in_zone(restrictor_name)} fx_sound@1
;on_info2 = {+info} fx_sound@1

[fx_sound@1]
path = fx_sound_way
sound = ambient\random\rnd_chimes
velocity = 15 ; speed sound
on_signal = completed | fx_sound@2
; on_signal2 = sound_end | sr_idle@end

[fx_sound@2]
path = fx_sound_way_2
sound = ambient\random\rnd_doubler
velocity = 25
on_signal = completed | sr_idle@end

[sr_idle@end]

 

  • Нравится 1
  • Полезно 1
Ссылка на комментарий

Всем привет. Нашел модель монстра с костями, перенес все это дело в SDK, сделал пару анимаций (в SDK нормально работают):

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

40f6d1e7f9c7.png



 При прогрузке данной модели в игре вылет с такой ошибкой:

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

Expression    : BI_NONE != bone
Function      : CDamageManager::load_section
File          : E:\stalker\sources\trunk\xr_3da\xrGame\damage_manager.cpp
Line          : 85
Description   : bip01_head

Собственно, понятно, что кости не оригинальные и из-за них проблема. Можно ли как то исправить?

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

@nasar75, Судя по логу, как раз таки на повреждения и ругается. Повреждения прописывал от кабана. Видимо нужно свои прописывать, т.к. кости другие. Есть инфа, как это сделать?

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

Добрый день.

Ловлю вылет при спавне в трупах новых патронов. Добавил патроны 7.62х39, зарегал их в _g.script, прописал их добавленному в игру (и прописанному в mp_ranks) СКСу и зарегистрировал в death_generic.ltx, прописал коэффициенты/количество в death_by_levels.ltx, death_by_communities.ltx, death_by_count.ltx, однако при убийстве НПС вылет с логом:

[error]Expression    : fatal error
[error]Function      : CScriptEngine::lua_error
[error]File          : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp
[error]Line          : 73
[error]Description   : <no expression>
[error]Arguments     : LUA error: ...w of chernobyl\gamedata\scripts\death_manager.script:139: attempt to index field '?' (a nil value)

Искал везде, но ответ не могу найти уже несколько лет. Игра: Сталкер ТЧ 1.0004. 

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

@FinNic, вот настройка от паука из Доппельгангер

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

 

;------ disable params ---------------------------------------------------------

[disable]
linear_factor        = 1.0
angular_factor        = 1.0


;------ particle bones ---------------------------------------------------------

[particle_bones]
bip01_head             = 0,0,0
bip01_spine                 = 0,0,0
;bone                 = bip01_l_forearm,0,0,0
;bone                 = bip01_r_forearm,0,0,0
;bone                 = bip01_l_calf,0,0,0
;bone                 = bip01_r_calf,0,0,0


;------ foot bones -------------------------------------------------------------

[foot_bones]
front_left             = bip01_l_toe05
front_right         = bip01_r_toe05
back_right             = bip01_r_toe07
back_left              = bip01_l_toe07


;------ capture params ---------------------------------------------------------

[capture]
bone                = bip01_spine1             ; bone for capture
distance            = 0.3                ; distance - less this distance between bone and capture taget object is captured
time_limit           = 3                        ; max time for trying to capture object "sec"
pull_force           = 8000                    ; max force used to bring the taget to capture bone
pull_distance       = 1.4                    ; max distance taget can be puled
velocity_scale       = 0.022                    ; velocity scale for pulling 1- normal
capture_force        = 116500                ; max force for holding taget


;------ End params 

 

Кости, ес-но, нада прописывать свои от своей модели...

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

AMD Athlon II X2 250, NVIDIA GTS 450, RAM 8.0 GB, WIN 7/64  правки Золотой Шар

Ссылка на комментарий
4 часа назад, Чешский сказал:

Искал везде, но ответ не могу найти уже несколько лет.

Ищите плагин для проверки синтаксиса Lua в Notepad, от Charsi. Он тут где-то на форуме был.

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

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Ссылка на комментарий
2 часа назад, Zander_driver сказал:

Ищите плагин для проверки синтаксиса Lua в Notepad, от Charsi. Он тут где-то на форуме был.

Я не знаю стоит ли проверять death_manager - он остался неизменным. Я даже не клал его в геймдату, игра берет скрипт из игрового архива. На всякий случай я проверил скрипт с плагином на синтаксис - я не совсем понимаю как он работает. Установил плагин, в нотпаде запустил проверку синтаксиса и... Ничего. Попробовал рандомно вписать кириллицу в скрипт - тоже не реагирует. Да и, повторюсь, мне кажется, что дело не в скрипте, я работал только с конфигами. 

5 минут назад, naxac сказал:

@Чешский, а можно увидеть 139 строку из вашего death_manager.script?

Да, конечно. 

            local number = math.ceil(math.random(count_by_level[k].min, count_by_level[k].max))

Это строка из оригинала, сам скрипт я не трогал. 

Ссылка на комментарий
9 часов назад, Чешский сказал:

зарегал их в _g.script

Это как? Не припомню, чтобы это требовалось при введении новых патронов и вообще предметов. Сам никогда не трогал _г.скрипт в таких случаях и все было хорошо.

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

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

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

 

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

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

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

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

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

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

Войти

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

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

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