Overf1rst 1 570 Опубликовано 1 июля, 2020 Тема посвящена моддингу на платформе Тень Чернобыля. Правила темы: Здесь задают вопросы и получают на них ответы. Прежде чем задать вопрос, воспользуйтесь поиском, ответ на него, вероятно, уже есть. Если у вас произошёл вылет, проверьте лог и поищите информацию об ошибке в справочнике. Также будет полезно посмотреть справочник ошибок. Если у Вас вылетает какой-то мод, то следует написать в тему этого мода. Грамотно оформляйте свой пост, чётко доносите суть своего вопроса (ответа). Благодарность выражаем в личке или же ставим реакцию. Посты с благодарностями в теме будут удаляться. 7 5 1 3 1 4 6 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
soQuiet 1 Опубликовано 19 октября (изменено) 1 час назад, imcrazyhoudini сказал: soQuiet попробуй убрать строку: check_outfit.update() Тот скрипт скорее всего за что-то другое отвечает, наверное с Борова скрипт брал, он там другую функцию несёт в себе. Строчку убрал, появилась другая проблема. Спойлер [error]Expression : FATAL ERROR [error]Function : CScriptEngine::lua_pcall_failed [error]File : D:\a\OGSR-Engine\OGSR-Engine\ogsr_engine\COMMON_AI\script_engine.cpp [error]Line : 75 [error]Description : [CScriptEngine::lua_pcall_failed]: ....l.k.e.r. shadow of chernobyl\gamedata\scripts\_g.script:188: bump# for texture [%s] not found Глянул в скрипте ogsr - на момент вызова в онлайне, нет ни одного ствола с нужными текстурами рук, и тут я запыхтел что-то. Изменено 19 октября пользователем soQuiet Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
imcrazyhoudini 1 230 Опубликовано 19 октября soQuiet что-то помню такое, бампы есть к перчаткам? Их нужно ещё в textures.ltx зарегистрировать. На динамике мод запускаешь? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
soQuiet 1 Опубликовано 19 октября (изменено) 19 минут назад, imcrazyhoudini сказал: soQuiet что-то помню такое, бампы есть к перчаткам? Их нужно ещё в textures.ltx зарегистрировать. На динамике мод запускаешь? Бампы то есть, вытащил для проверки из Точки невозврата, а вот насчёт динамики, я насколько помню в последним билде ОГСР-а на Гитхабе убрали возможность выбора динамики и статики, он вроде автоматом R3 запускает. Изменено 19 октября пользователем soQuiet Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
imcrazyhoudini 1 230 Опубликовано 19 октября soQuiet если ласт билд то да, R4 только, ну ты в textures.ltx зарегистрируй бампы. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
soQuiet 1 Опубликовано 19 октября (изменено) 15 минут назад, imcrazyhoudini сказал: soQuiet если ласт билд то да, R4 только, ну ты в textures.ltx зарегистрируй бампы. а по textures.ltx такие дела, тоже код из Точки брал, чтоб вообще проверить на работоспособность. в последних билдах полезный bat-файл появился - convert_textures_ltx. Дополнено 4 минуты спустя текстуры не подменяются на разных костюмах, а пытаешься полностью снять броню и ловишь вылет. Дополнено 14 минуты спустя Странная тема, либо скрипт не работает, либо я косякнул где-то. Изменено 19 октября пользователем soQuiet Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
imcrazyhoudini 1 230 Опубликовано 20 октября soQuiet а у тебя оружие какое вообще? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
soQuiet 1 Опубликовано 20 октября 34 минуты назад, imcrazyhoudini сказал: soQuiet а у тебя оружие какое вообще? Оружейка Gunslinger WP (И classic-версию пробовал, и полноценную) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
imcrazyhoudini 1 230 Опубликовано 23 октября soQuiet надо посмотреть какие текстуры указаны, в classic версии вроде одна версия текстур. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
РСФСР 108 Опубликовано 25 октября (изменено) Проблема такая - не работают гулаги монстров на локации, что бы я ни делал. Локация - мертвый город из билдов, но использующий файлы gulag_deadcity.ltx и gulag_deadcity.script которые остались в финалке. Тамошние гулаги работают, но так как они записаны малопонятными мне скриптовыми методами, без использования gulag_deadcity.ltx(он полностью пустой) то я просто создал gulag_deadcity2.ltx и gulag_deadcity2.script и вписал монстров привычным образом. На другой локации где точно такая же ситуация - это все работает. лтх и скрипт в gulag_tasks.ltx и xr_gulag.script зарегестрированы Спойлер [logic@cit_bloodsucker_domik_day] active = mob_home@cit_bloodsucker_domik_day [mob_home@cit_bloodsucker_domik_day] path_home = home_1 home_min_radius = 10 home_max_radius = 20 [logic@cit_bloodsucker_domik_night] active = mob_home@cit_bloodsucker_domik_night [mob_home@cit_bloodsucker_domik_night] path_home = home_2 home_min_radius = 20 home_max_radius = 40 [logic@cit_burers_okraina_day] active = mob_home@cit_burers_okraina_day [mob_home@cit_burers_okraina_day] path_home = home_1 home_min_radius = 10 home_max_radius = 20 [logic@cit_burers_okraina_night] active = mob_home@cit_burers_okraina_night [mob_home@cit_burers_okraina_night] path_home = home_2 home_min_radius = 20 home_max_radius = 40 [logic@cit_poltergeist_skotoblok1] active = mob_home@cit_poltergeist_skotoblok1 [mob_home@cit_poltergeist_skotoblok1] path_home = home_1 home_min_radius = 20 home_max_radius = 40 [logic@cit_poltergeist_skotoblok2] active = mob_home@cit_poltergeist_skotoblok2 [mob_home@cit_poltergeist_skotoblok2] path_home = home_1 home_min_radius = 20 home_max_radius = 40 [logic@cit_poltergeist_gorkom] active = mob_home@cit_poltergeist_gorkom [mob_home@cit_poltergeist_gorkom] path_home = home_1 home_min_radius = 20 home_max_radius = 40 [logic@cit_rat_kanaliz1_day] active = mob_home@cit_rat_kanaliz1_day [mob_home@cit_rat_kanaliz1_day] path_home = home_1 home_min_radius = 10 home_max_radius = 20 [logic@cit_rat_kanaliz1_night] active = mob_home@cit_rat_kanaliz1_night [mob_home@cit_rat_kanaliz1_night] path_home = home_2 home_min_radius = 20 home_max_radius = 40 [logic@cit_rat_kanaliz2_day] active = mob_home@cit_rat_kanaliz2_day [mob_home@cit_rat_kanaliz2_day] path_home = home_1 home_min_radius = 10 home_max_radius = 20 [logic@cit_rat_kanaliz2_night] active = mob_home@cit_rat_kanaliz2_night [mob_home@cit_rat_kanaliz2_night] path_home = home_2 home_min_radius = 20 home_max_radius = 40 Спойлер local t = {} function load_job(sj, gname, type, squad, groups) if type == "cit_bloodsucker_domik" then t = { section = "logic@cit_bloodsucker_domik_day", idle = 0, prior = 5, state = {2}, online = false, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@cit_bloodsucker_domik_day", idle = 0, prior = 5, state = {0}, online = true, in_rest = "", out_rest = "cit_bloodsucker_domik_out" } table.insert(sj, t) t = { section = "logic@cit_bloodsucker_domik_night", idle = 0, prior = 5, state = {1}, online = true, in_rest = "", out_rest = "" } table.insert(sj, t) end if type == "cit_burers_okraina" then t = { section = "logic@cit_burers_okraina_day", idle = 0, prior = 5, state = {2}, online = false, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@cit_burers_okraina_day", idle = 0, prior = 5, state = {2}, online = false, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@cit_burers_okraina_day", idle = 0, prior = 5, state = {0}, online = true, in_rest = "", out_rest = "cit_burers_okraina_out" } table.insert(sj, t) t = { section = "logic@cit_burers_okraina_day", idle = 0, prior = 5, state = {0}, online = true, in_rest = "", out_rest = "cit_burers_okraina_out" } table.insert(sj, t) t = { section = "logic@cit_burers_okraina_night", idle = 0, prior = 5, state = {1}, online = true, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@cit_burers_okraina_night", idle = 0, prior = 5, state = {1}, online = true, in_rest = "", out_rest = "" } table.insert(sj, t) end if type == "cit_poltergeist_skotoblok1" then t = { section = "logic@cit_poltergeist_skotoblok1", idle = 0, prior = 5, state = {0}, online = false, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@cit_poltergeist_skotoblok1", idle = 0, prior = 5, state = {1}, online = true, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@cit_poltergeist_skotoblok1", idle = 0, prior = 5, state = {2}, online = false, in_rest = "", out_rest = "" } table.insert(sj, t) end if type == "cit_poltergeist_skotoblok2" then t = { section = "logic@cit_poltergeist_skotoblok2", idle = 0, prior = 5, state = {0}, online = false, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@cit_poltergeist_skotoblok2", idle = 0, prior = 5, state = {1}, online = true, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@cit_poltergeist_skotoblok2", idle = 0, prior = 5, state = {2}, online = false, in_rest = "", out_rest = "" } table.insert(sj, t) end if type == "cit_poltergeist_gorkom" then t = { section = "logic@cit_poltergeist_gorkom", idle = 0, prior = 5, state = {0}, online = false, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@cit_poltergeist_gorkom", idle = 0, prior = 5, state = {1}, online = true, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@cit_poltergeist_gorkom", idle = 0, prior = 5, state = {2}, online = false, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@cit_poltergeist_gorkom", idle = 0, prior = 5, state = {0}, online = false, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@cit_poltergeist_gorkom", idle = 0, prior = 5, state = {1}, online = true, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@cit_poltergeist_gorkom", idle = 0, prior = 5, state = {2}, online = false, in_rest = "", out_rest = "" } table.insert(sj, t) end if type == "cit_rat_kanaliz1" then t = { section = "logic@cit_rat_kanaliz1_day", idle = 0, prior = 5, state = {0}, in_rest = "", out_rest = "cit_rat_kanaliz1_out" } table.insert(sj, t) t = { section = "logic@cit_rat_kanaliz1_night", idle = 0, prior = 5, state = {1}, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@cit_rat_kanaliz1_day", idle = 0, prior = 5, state = {0}, in_rest = "", out_rest = "cit_rat_kanaliz1_out" } table.insert(sj, t) t = { section = "logic@cit_rat_kanaliz1_night", idle = 0, prior = 5, state = {1}, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@cit_rat_kanaliz1_day", idle = 0, prior = 5, state = {0}, in_rest = "", out_rest = "cit_rat_kanaliz1_out" } table.insert(sj, t) t = { section = "logic@cit_rat_kanaliz1_night", idle = 0, prior = 5, state = {1}, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@cit_rat_kanaliz1_day", idle = 0, prior = 5, state = {0}, in_rest = "", out_rest = "cit_rat_kanaliz1_out" } table.insert(sj, t) t = { section = "logic@cit_rat_kanaliz1_night", idle = 0, prior = 5, state = {1}, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@cit_rat_kanaliz1_day", idle = 0, prior = 5, state = {0}, in_rest = "", out_rest = "cit_rat_kanaliz1_out" } table.insert(sj, t) t = { section = "logic@cit_rat_kanaliz1_night", idle = 0, prior = 5, state = {1}, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@cit_rat_kanaliz1_day", idle = 0, prior = 5, state = {0}, in_rest = "", out_rest = "cit_rat_kanaliz1_out" } table.insert(sj, t) t = { section = "logic@cit_rat_kanaliz1_night", idle = 0, prior = 5, state = {1}, in_rest = "", out_rest = "" } table.insert(sj, t) end if type == "cit_rat_kanaliz2" then t = { section = "logic@cit_rat_kanaliz2_day", idle = 0, prior = 5, state = {0}, in_rest = "", out_rest = "cit_rat_kanaliz2_out" } table.insert(sj, t) t = { section = "logic@cit_rat_kanaliz2_night", idle = 0, prior = 5, state = {1}, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@cit_rat_kanaliz2_day", idle = 0, prior = 5, state = {0}, in_rest = "", out_rest = "cit_rat_kanaliz2_out" } table.insert(sj, t) t = { section = "logic@cit_rat_kanaliz2_night", idle = 0, prior = 5, state = {1}, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@cit_rat_kanaliz2_day", idle = 0, prior = 5, state = {0}, in_rest = "", out_rest = "cit_rat_kanaliz2_out" } table.insert(sj, t) t = { section = "logic@cit_rat_kanaliz2_night", idle = 0, prior = 5, state = {1}, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@cit_rat_kanaliz2_day", idle = 0, prior = 5, state = {0}, in_rest = "", out_rest = "cit_rat_kanaliz2_out" } table.insert(sj, t) t = { section = "logic@cit_rat_kanaliz2_night", idle = 0, prior = 5, state = {1}, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@cit_rat_kanaliz2_day", idle = 0, prior = 5, state = {0}, in_rest = "", out_rest = "cit_rat_kanaliz2_out" } table.insert(sj, t) t = { section = "logic@cit_rat_kanaliz2_night", idle = 0, prior = 5, state = {1}, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@cit_rat_kanaliz2_day", idle = 0, prior = 5, state = {0}, in_rest = "", out_rest = "cit_rat_kanaliz2_out" } table.insert(sj, t) t = { section = "logic@cit_rat_kanaliz2_night", idle = 0, prior = 5, state = {1}, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@cit_rat_kanaliz2_day", idle = 0, prior = 5, state = {0}, in_rest = "", out_rest = "cit_rat_kanaliz2_out" } table.insert(sj, t) t = { section = "logic@cit_rat_kanaliz2_night", idle = 0, prior = 5, state = {1}, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@cit_rat_kanaliz2_day", idle = 0, prior = 5, state = {0}, in_rest = "", out_rest = "cit_rat_kanaliz2_out" } table.insert(sj, t) t = { section = "logic@cit_rat_kanaliz2_night", idle = 0, prior = 5, state = {1}, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@cit_rat_kanaliz2_day", idle = 0, prior = 5, state = {0}, in_rest = "", out_rest = "cit_rat_kanaliz2_out" } table.insert(sj, t) t = { section = "logic@cit_rat_kanaliz2_night", idle = 0, prior = 5, state = {1}, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@cit_rat_kanaliz2_day", idle = 0, prior = 5, state = {0}, in_rest = "", out_rest = "cit_rat_kanaliz2_out" } table.insert(sj, t) t = { section = "logic@cit_rat_kanaliz2_night", idle = 0, prior = 5, state = {1}, in_rest = "", out_rest = "" } table.insert(sj, t) end end function load_states(gname, type) if type == "cit_bloodsucker_domik" then return function(gulag) local actor = db.actor if not actor then return gulag.state end if not has_alife_info("cit_map_give") then return 2 -- offline elseif level.get_time_hours() >= 5 and level.get_time_hours() <= 21 then return 0 -- день else return 1 -- ночь end end end if type == "cit_burers_okraina" then return function(gulag) local actor = db.actor if not actor then return gulag.state end if not has_alife_info("cit_map_give") then return 2 -- offline elseif level.get_time_hours() >= 5 and level.get_time_hours() <= 21 then return 0 -- день else return 1 -- ночь end end end if type == "cit_poltergeist_skotoblok1" then return function(gulag) local actor = db.actor if not actor then return gulag.state end if not has_alife_info("cit_map_give") then return 2 -- offline elseif level.get_time_hours() >= 5 and level.get_time_hours() <= 21 then return 0 -- день offline else return 1 -- ночь end end end if type == "cit_poltergeist_skotoblok2" then return function(gulag) local actor = db.actor if not actor then return gulag.state end if not has_alife_info("cit_map_give") then return 2 -- offline elseif level.get_time_hours() >= 5 and level.get_time_hours() <= 21 then return 0 -- день offline else return 1 -- ночь end end end if type == "cit_poltergeist_gorkom" then return function(gulag) local actor = db.actor if not actor then return gulag.state end if not has_alife_info("cit_map_give") then return 2 -- offline elseif level.get_time_hours() >= 5 and level.get_time_hours() <= 21 then return 0 -- день offline else return 1 -- ночь end end end if type == "cit_rat_kanaliz1" 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 == "cit_rat_kanaliz2" 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 -------------------------------------------------------------------------- -- Dynamic ltx -------------------------------------------------------------------------- function load_ltx(gname, type) return nil end function checkStalker(npc_community, gulag_type, npc_rank, se_obj) end return false end function checkMonster(npc_community, gulag_type) if gulag_type == "cit_bloodsucker_domik" then return npc_community == "bloodsucker" end if gulag_type == "cit_burers_okraina" then return npc_community == "burer" end if gulag_type == "cit_poltergeist_skotoblok1" then return npc_community == "poltergeist" end if gulag_type == "cit_poltergeist_skotoblok2" then return npc_community == "poltergeist" end if gulag_type == "cit_poltergeist_gorkom" then return npc_community == "poltergeist" end if gulag_type == "cit_rat_kanaliz1" then return npc_community == "rat" end if gulag_type == "cit_rat_kanaliz2" then return npc_community == "rat" end return false end Спойлер [l09_deadcity] stalker = experienced, veteran, master csky = experienced, veteran, master monolith = experienced, veteran, master killer = experienced, veteran, master ecolog = experienced, veteran dolg = experienced, veteran, master freedom = experienced, veteran, master bandit = experienced, veteran, master zombied = novice, experienced, veteran, master boar = normal, strong bloodsucker = normal, strong flesh = normal, strong dog = normal, strong pseudodog = normal, strong zombie = normal, strong controller = normal, strong chimera = normal, strong fracture = normal, strong tushkano = weak, normal, strong rat = weak, normal, strong snork = weak, normal poltergeist = weak, normal, strong burer = weak, normal giant = weak, normal pseudo_gigant = weak, normal fracture = weak, normal в general_lair.ltx и general_lager.ltx примерно тоже самое, генеральные лагеря с монстрами на локации работают нормально, а вот с людьми - так себе, тоже проблемы есть Изменено 25 октября пользователем РСФСР криво вставил Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
imcrazyhoudini 1 230 Опубликовано 25 октября РСФСР вэйпоинты нормально подписаны? Вообще ещё была утилита от лашников вроде которая позволяла отслеживать работает смарт или нет. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
РСФСР 108 Опубликовано 25 октября 33 минуты назад, imcrazyhoudini сказал: РСФСР вэйпоинты нормально подписаны? Вообще ещё была утилита от лашников вроде которая позволяла отслеживать работает смарт или нет. да - имя смарта_home_1 - имя смарта_home_2 Дополнено 24 минуты спустя Пытался еще в это жуткое скриптовое месиво вписывать или же переделывать по образцу - ничего не выходило, только эти смарты переставали дополнительно работать и все Спойлер -------------------------------------------------------------------------- -- Stuff -------------------------------------------------------------------------- function printf() end -------------------------------------------------------------------------- -- Member counts -------------------------------------------------------------------------- local bandits_kamp_count = 6 -------------------------------------------------------------------------- -- States -------------------------------------------------------------------------- -------------------------------------------------------------------------- -- General -------------------------------------------------------------------------- local t = {} local gulags = {cit_bandits = {comm = {"bandit"}}, cit_killers = {comm = {"killer"}}, cit_beasts = {comm = false}} -- Job ------------------------------------------------------------------- function load_job(sj, gname, type, squad, groups) local g = gulags[type] if g then g.job(sj, gname, type, squad, groups) end end -- State ----------------------------------------------------------------- function check_state_stub(gulag) return 0 end function load_states(gname, type) local g = gulags[type] if g then return g.state or check_state_stub end return nil end -- Dynamic ltx ----------------------------------------------------------- function load_ltx(gname, type) local g = gulags[type] if g then return g.ltx end return nil end -- Check communities ----------------------------------------------------- local function checkCommon(npc_community, gulag_type, npc_rank, se_obj, stalker) local g = gulags[gulag_type] if g then if g.comm then if type(g.comm) == "function" then return g.comm(npc_community, gulag_type, npc_rank, se_obj, stalker) end if type(g.comm) == "boolean" then return g.comm == stalker end local i, v = 0, 0 for i, v in pairs(g.comm) do if npc_community == v then return true end end if i > 0 then return false end end return true end return false end function checkStalker(npc_community, gulag_type, npc_rank, se_obj) return checkCommon(npc_community, gulag_type, npc_rank, se_obj, true) end function checkMonster(npc_community, gulag_type, npc_rank, se_obj) return checkCommon(npc_community, gulag_type, npc_rank, se_obj, false) end -------------------------------------------------------------------------- -- Gulags -------------------------------------------------------------------------- local combat_ignore = "combat_ignore_cond = {=cit_combat_ignore(cit_actor_is_free)}\n" --=fighting_actor -cit_actor_is_free}, {=check_fighting(1200)}, {=enemy_gulag(cit_kanaliz1:cit_kanaliz2:cit_kanaliz3:cit_rat_kanaliz1:cit_rat_kanaliz2)}\n" local combat_ignore2 = "combat_ignore_cond = {=cit_combat_ignore(cit_actor_out_killers_base)}\n" --=fighting_actor -cit_actor_out_killers_base}, {=check_fighting(1200)}, {=enemy_gulag(cit_kanaliz1:cit_kanaliz2:cit_kanaliz3:cit_rat_kanaliz1:cit_rat_kanaliz2)}\n" -------------------------------------------------------------------------- -- Killers -------------------------------------------------------------------------- -- Predicates ------------------------------------------------------------ function k_predicate_l(data) return data.profile_name == "cit_killer_leader" end function k_predicate_e(data) return data.profile_name == "cit_killer_exo" end function k_predicate_es(data) return data.profile_name == "cit_killer_exo_sniper" end function k_predicate_v(data) return data.profile_name == "cit_killer_veteran" end function k_predicate_g(data) return data.profile_name == "cit_killer_general" end -- Jobs ------------------------------------------------------------------ gulags.cit_killers.job = function(sj, gname, type, squad, groups) local i, v, j = 0, 0, 0 local prior, pred, gr = 0, 0, 0 local ltx = "" ltx = ltx.."[danger_killers]\n" .. "ignore_distance = 50\n" .. "danger_inertion_time = 60000\n" .. "danger_expiration_time = 40000\n" -- leader t = { section = "logic@" .. gname .. "_leader", idle = 0, prior = 16, state = {0}, squad = squad, group = groups[6], in_rest = "cit_jail_restr,cit_kanaliz_sr_in", out_rest = "", predicate = k_predicate_l } table.insert(sj, t) ltx = ltx.."[logic@" .. gname .. "_leader]\n" .. "active = patrol@" .. gname .. "_leader_attack\n" .. "combat_ignore = combat_ignore\n" .. "[patrol@" .. gname .. "_leader_attack]\n" .. "path_walk = leader_attack_walk\n" .. "path_look = leader_attack_look\n" .. "commander = true\n" .. "show_spot = false\n" .. "on_info = {+cit_heli_end} patrol@" .. gname .. "_leader\n" .. "soundgroup = cit_killers_leader_sg\n" .. --"danger = danger_killers\n" .. combat_ignore .. --"combat_ignore_cond = {=fighting_actor -cit_actor_is_free}, {=check_fighting(1200)}\n" .. "[patrol@" .. gname .. "_leader]\n" .. "path_walk = leader_walk\n" .. "path_look = leader_look\n" .. "commander = true\n" .. "show_spot = false\n" .. --"on_info = {+cit_jail_guard2_talk_to_guard1 -cit_heli_end} patrol@" .. gname .. "_leader_attack\n" .. "soundgroup = cit_killers_leader_sg\n" .. --"danger = danger_killers\n" .. combat_ignore --"combat_ignore_cond = {=fighting_actor -cit_actor_is_free}, {=check_fighting(1200)}\n" -- leader guards for i = 1, 2 do t = { section = "logic@" .. gname .. "_leader_guard" .. i, idle = 0, prior = 15, state = {0}, squad = squad, group = groups[6], in_rest = "cit_jail_restr,cit_kanaliz_sr_in", out_rest = "", predicate = k_predicate_e } table.insert(sj, t) ltx = ltx.."[logic@" .. gname .. "_leader_guard" .. i .. "]\n" .. "active = patrol@" .. gname .. "_base_patrol" .. i .. "_attack\n" .. "combat_ignore = combat_ignore\n" .. "[patrol@" .. gname .. "_base_patrol" .. i .. "_attack]\n" .. "path_walk = leader_attack_walk\n" .. "path_look = leader_attack_look\n" .. "formation = line\n" .. "show_spot = false\n" .. "on_info = {+cit_heli_end} patrol@" .. gname .. "_base_patrol" .. i .. "\n" .. "soundgroup = " .. gname .. "_leader_sg\n" .. --"danger = danger_killers\n" .. combat_ignore .. --"combat_ignore_cond = {=fighting_actor -cit_actor_is_free}, {=check_fighting(1200)}\n" .. "[patrol@" .. gname .. "_base_patrol" .. i .. "]\n" .. "path_walk = leader_walk\n" .. "path_look = leader_look\n" .. "formation = line\n" .. "show_spot = false\n" .. "soundgroup = " .. gname .. "_leader_sg\n" .. --"danger = danger_killers\n" .. combat_ignore --"combat_ignore_cond = {=fighting_actor -cit_actor_is_free}, {=check_fighting(1200)}\n" end -- jail guard t = { section = "logic@" .. gname .. "_jail_guard", idle = 0, prior = 2, state = {0}, -- 13 squad = squad, group = groups[5], in_rest = "cit_jail_restr,cit_kanaliz_sr_in", out_rest = "", online = "{-cit_map_give}", predicate = k_predicate_v } table.insert(sj, t) ltx = ltx.."#include \"scripts\\cit\\cit_jail_guard1.ltx\"\n" -- base guard t = { section = "logic@" .. gname .. "_base_guard", idle = 0, prior = 12, state = {0}, -- 12 squad = squad, group = groups[6], in_rest = "cit_jail_restr,cit_kanaliz_sr_in", out_rest = "", online = "{-cit_map_give}", predicate = k_predicate_v } table.insert(sj, t) ltx = ltx.."#include \"scripts\\cit\\cit_jail_guard2.ltx\"\n" -- base patrol t = { section = "logic@" .. gname .. "_base_patrol", idle = 0, prior = 11, state = {0}, squad = squad, group = groups[6], in_rest = "cit_selmag_up_floor_restr,cit_kanaliz_sr_in", out_rest = "", online = "{-cit_map_give}", predicate = k_predicate_v } table.insert(sj, t) ltx = ltx.."[logic@" .. gname .. "_base_patrol]\n" .. "active = camper@" .. gname .. "_base_patrol\n" .. "combat_ignore = combat_ignore\n" .. "[camper@" .. gname .. "_base_patrol]\n" .. "path_walk = base_patrol_walk\n" .. "path_look = base_patrol_look\n" .. "radius = 12\n" .. "no_retreat = true\n" .. "heli_hunter = {+cit_heli_start -cit_heli_end}\n" .. --"danger = danger_killers\n" .. --"combat_ignore_cond = {=fighting_actor -cit_actor_out_killers_base}, {=check_fighting(1200)}\n" combat_ignore --"combat_ignore_cond = {=fighting_actor -cit_actor_is_free}, {=check_fighting(1200)}\n" -- snipers for i = 1, 4 do t = { section = "logic@" .. gname .. "_sniper" .. i, idle = 0, prior = 11, state = {0}, squad = squad, group = groups[8], in_rest = "cit_selmag_restr,cit_kanaliz_sr_in", out_rest = "", online = "{-cit_map_give}", predicate = k_predicate_es } table.insert(sj, t) ltx = ltx.."[logic@" .. gname .. "_sniper" .. i .. "]\n" .. "active = camper@" .. gname .. "_sniper" .. i .. "\n" .. "combat_ignore = combat_ignore\n" .. "[camper@" .. gname .. "_sniper" .. i .. "]\n" .. "path_walk = sniper" .. i .. "_walk\n" .. "path_look = sniper" .. i .. "_look\n" .. "sniper = true\n" .. "def_state_campering = threat\n" .. "def_state_campering_fire = threat_sniper_fire\n" .. --"danger = danger_bandits\n" .. combat_ignore --"combat_ignore_cond = {=fighting_actor -cit_actor_is_free}, {=check_fighting(1200)}\n" end -- walkers between kamps local start_kamp = {1, 2} local kamp_change = {{2, 3, 1}, {4, 3, 2}} local delays = {{18, 30, 20}, {25, 40, 20}} local d, kc = 0, 0 for i = 1, 2 do t = { section = "logic@" .. gname .. "_free" .. i .. "_in_kamp", idle = 0, prior = 100 + i, state = {0}, -- 9 squad = squad, group = groups[9], in_rest = "cit_selmag_restr,cit_kanaliz_sr_in", out_rest = "", online = "{-cit_map_give}", predicate = k_predicate_e } table.insert(sj, t) d = delays kc = kamp_change ltx = ltx.."[logic@" .. gname .. "_free" .. i .. "_in_kamp]\n" .. "active = walker@" .. gname .. "_free" .. i .. "_to_kamp" .. start_kamp .. "\n" .. "combat_ignore = combat_ignore\n" for j, v in pairs(kc) do ltx = ltx.."[walker@" .. gname .. "_free" .. i .. "_to_kamp" .. j .. "]\n" .. "path_walk = near_kamp" .. j .. "_walk\n" .. "path_look = kamp" .. j .. "\n" .. "def_state_moving1 = patrol\n" .. "def_state_moving2 = patrol\n" .. "def_state_moving3 = patrol\n" .. "on_signal = arrived | kamp@" .. gname .. "_free" .. i .. "_in_kamp" .. j .. "\n" .. "danger = danger_killers\n" .. combat_ignore .. --"combat_ignore_cond = {=fighting_actor -cit_actor_is_free}, {=check_fighting(1200)}\n" .. "[kamp@" .. gname .. "_free" .. i .. "_in_kamp" .. j .. "]\n" .. "center_point = kamp" .. j .. "\n" .. "def_state_moving = patrol\n" .. "on_timer = " .. d[j] .. "000 | walker@" .. gname .. "_free" .. i .. "_to_kamp" .. v .. "\n" .. "soundgroup = " .. gname .. "_kamp" .. j .. "_sg\n" .. combat_ignore2 --"combat_ignore_cond = {=fighting_actor -cit_actor_is_free}, {=check_fighting(1200)}\n" end end -- patrols in kamp prior = {3, 5, 7} delays = {25, 30, 60} local kamps, k = {3, 2, 4}, 0 for i, v in pairs({2, 1, 1}) do k = kamps for j = 1, v do t = { section = "logic@" .. gname .. "_kamp" .. k .. "_patrol", idle = 0, prior = prior, state = {0}, squad = squad, group = groups[k], in_rest = "cit_selmag_restr,cit_kanaliz_sr_in", out_rest = "", online = "{-cit_map_give}", predicate = k_predicate_g } table.insert(sj, t) end ltx = ltx.."[logic@" .. gname .. "_kamp" .. k .. "_patrol]\n" .. "active = patrol@" .. gname .. "_kamp" .. k .. "_patrol\n" .. "combat_ignore = combat_ignore\n" .. "[patrol@" .. gname .. "_kamp" .. k .. "_patrol]\n" .. "path_walk = kamp" .. k .. "_patrol_walk\n" .. --"path_look = kamp" .. k .. "\n" .. "formation = line\n" .. "on_signal = arrived | kamp@" .. gname .. "_kamp" .. k .. "_patrol\n" .. combat_ignore2 .. --"combat_ignore_cond = {=fighting_actor -cit_actor_out_killers_base}, {=check_fighting(1200)}\n" .. --"combat_ignore_cond = {=fighting_actor -cit_actor_is_free}, {=check_fighting(1200)}\n" .. "[kamp@" .. gname .. "_kamp" .. k .. "_patrol]\n" .. "center_point = kamp" .. k .. "\n" .. "on_timer = " .. delays .. "000 | patrol@" .. gname .. "_kamp" .. k .. "_patrol\n" .. "soundgroup = " .. gname .. "_kamp" .. k .. "_sg\n" .. combat_ignore2 --"combat_ignore_cond = {=fighting_actor -cit_actor_out_killers_base}, {=check_fighting(1200)}\n" --"combat_ignore_cond = {=fighting_actor -cit_actor_is_free}, {=check_fighting(1200)}\n" end -- free stalkers delays = {{90, 120}, {120, 100}, {75, 90}} for i = 1, 3 do t = { section = "logic@" .. gname .. "_free_stalker" .. i, idle = 0, prior = 1, state = {0}, --14 squad = squad, group = groups[5], in_rest = "cit_jail_restr,cit_kanaliz_sr_in", out_rest = "", online = "{-cit_map_give}", predicate = k_predicate_v } table.insert(sj, t) d = delays ltx = ltx.."[logic@" .. gname .. "_free_stalker" .. i .. "]\n" .. "active = kamp@" .. gname .. "_free_stalker" .. i .. "_kamp5_begin\n" .. "combat_ignore = combat_ignore\n" .. "[kamp@" .. gname .. "_free_stalker" .. i .. "_kamp5_begin]\n" .. "center_point = kamp5\n" .. "on_info = {+cit_heli_scene_start} camper@" .. gname .. "_free_stalker" .. i .. "_attack %=hit_npc(1201:bip01_spine:0:0.1)%\n" .. "soundgroup = " .. gname .. "_kamp5_sg\n" .. "combat_ignore_cond = {=fighting_actor -cit_actor_is_free}, {=check_fighting(1200)}\n" .. "[camper@" .. gname .. "_free_stalker" .. i .. "_attack]\n" .. "path_walk = free_stalker" .. i .. "_attack_walk\n" .. "path_look = free_stalker" .. i .. "_attack_look\n" .. --"no_retreat = true\n" .. "radius = 8\n" .. "def_state_moving = assault\n" .. "def_state_campering = hide\n" .. "heli_hunter = true\n" .. --{+cit_heli_start} true, false\n" .. "on_info = {+cit_heli_end} walker@" .. gname .. "_free_stalker" .. i .. "\n" .. combat_ignore .. --"combat_ignore_cond = {=fighting_actor -cit_actor_is_free}, {=check_fighting(1200)}\n" .. "[walker@" .. gname .. "_free_stalker" .. i .. "]\n" .. "path_walk = free_stalker" .. i .. "_walk\n" .. "path_look = free_stalker" .. i .. "_look\n" .. "def_state_moving1 = patrol\n" .. "def_state_moving2 = patrol\n" .. "def_state_moving3 = patrol\n" .. "on_timer = " .. d[2] .. "000 | kamp@" .. gname .. "_free_stalker" .. i .. "_kamp5\n" .. --"on_info = {+cit_jail_guard1_close_door -cit_button_broken} kamp@" .. gname .. "_free_stalker" .. i .. "_kamp5\n" .. --"on_info2 = {+cit_heli_start -cit_heli_end} walker@" .. gname .. "_free_stalker" .. i .. "_attack\n" .. combat_ignore .. --"combat_ignore_cond = {=fighting_actor -cit_actor_is_free}, {=check_fighting(1200)}\n" .. "[kamp@" .. gname .. "_free_stalker" .. i .. "_kamp5]\n" .. "center_point = kamp5\n" .. "on_timer = " .. d[1] .. "000 | walker@" .. gname .. "_free_stalker" .. i .. "\n" .. --"on_info = {+cit_heli_start -cit_heli_end} walker@" .. gname .. "_free_stalker" .. i .. "_attack\n" .. --"on_info2 = {+cit_jail_doctor_leave -cit_heli_end} walker@" .. gname .. "_free_stalker" .. i .. "_attack\n" .. "soundgroup = " .. gname .. "_kamp5_sg\n" .. combat_ignore --"combat_ignore_cond = {=fighting_actor -cit_actor_is_free}, {=check_fighting(1200)}\n" end -- kamps prior = {2, 4, 1, 6} pred = {k_predicate_v, k_predicate_v, k_predicate_g, k_predicate_v} for i, v in pairs({2, 2, 2, 1}) do for j = 1, v do t = { section = "logic@" .. gname .. "_kamp" .. i, idle = 0, prior = prior, state = {0}, squad = squad, group = groups, in_rest = "cit_selmag_restr,cit_kanaliz_sr_in", out_rest = "", online = "{-cit_map_give}", predicate = pred } table.insert(sj, t) end ltx = ltx.."[logic@" .. gname .. "_kamp" .. i .. "]\n" .. "active = kamp@" .. gname .. "_kamp" .. i .. "\n" .. "combat_ignore = combat_ignore\n" .. "[kamp@" .. gname .. "_kamp" .. i .. "]\n" .. "center_point = kamp" .. i .. "\n" .. "def_state_moving = run\n" .. "soundgroup = " .. gname .. "_kamp" .. i .. "_sg\n" .. --"danger = danger_killers\n" .. combat_ignore2 --"combat_ignore_cond = {=fighting_actor -cit_actor_out_killers_base}, {=check_fighting(1200)}\n" --"combat_ignore_cond = {=fighting_actor -cit_actor_is_free}, {=check_fighting(1200)}\n" end -- gate guards pred = {k_predicate_e, k_predicate_v} for i = 1, 2 do t = { section = "logic@" .. gname .. "_gate2_guard" .. i, idle = 0, prior = 8, state = {0}, squad = squad, group = groups[9 + i], in_rest = "cit_selmag_restr,cit_kanaliz_sr_in", out_rest = "", online = "{-cit_map_give}", predicate = pred } table.insert(sj, t) ltx = ltx.."[logic@" .. gname .. "_gate2_guard" .. i .. "]\n" .. "active = walker@" .. gname .. "_gate2_guard" .. i .. "\n" .. "combat_ignore = combat_ignore\n" .. "[walker@" .. gname .. "_gate2_guard" .. i .. "]\n" .. "path_walk = gate2_guard" .. i .. "_walk\n" .. "path_look = gate2_guard" .. i .. "_look\n" .. "soundgroup = cit_gate2_sg\n" .. combat_ignore2 --"combat_ignore_cond = {=fighting_actor -cit_actor_out_killers_base}, {=check_fighting(1200)}\n" --"combat_ignore_cond = {=fighting_actor -cit_actor_is_free}, {=check_fighting(1200)}\n" end -- road patrols for i = 1, 3 do t = { section = "logic@" .. gname .. "_road_patrol" .. i, idle = 0, prior = 10, state = {0}, squad = squad, group = groups[7], in_rest = "cit_selmag_up_floor_restr,cit_kanaliz_sr_in", out_rest = "", online = "{-cit_map_give}", predicate = k_predicate_v } table.insert(sj, t) ltx = ltx.."[logic@" .. gname .. "_road_patrol" .. i .. "]\n" .. "active = walker@" .. gname .. "_road_patrol" .. i .. "\n" .. "combat_ignore = combat_ignore\n" .. --[[ "[camper@" .. gname .. "_road_patrol" .. i .. "]\n" .. "path_walk = road_patrol" .. i .. "_walk\n" .. "path_look = road_patrol" .. i .. "_look\n" .. "no_retreat = true\n" .. "radius = 25\n" .. --]] "[walker@" .. gname .. "_road_patrol" .. i .. "]\n" .. "path_walk = road_patrol" .. i .. "_walk\n" .. "path_look = road_patrol" .. i .. "_look\n" .. "def_state_moving1 = patrol\n" .. "def_state_moving2 = patrol\n" .. "def_state_moving3 = patrol\n" .. "heli_hunter = {+cit_heli_start -cit_heli_end}\n" .. --"danger = danger_killers\n" .. combat_ignore --"combat_ignore_cond = {=fighting_actor -cit_actor_is_free}, {=check_fighting(1200)}\n" end gulags.cit_killers.ltx = ltx end -------------------------------------------------------------------------- -- Bandits -------------------------------------------------------------------------- -- Predicates ------------------------------------------------------------ function b_predicate_vb(data) return data.profile_name == "cit_bandit_veteran_best" end function b_predicate_v(data) return data.profile_name == "cit_bandit_veteran" end function b_predicate_g(data) return data.profile_name == "cit_bandit_general" end function b_predicate_d(data) return data.profile_name == "cit_bandit_drunk" end -- Jobs ------------------------------------------------------------------ gulags.cit_bandits.job = function(sj, gname, type, squad, groups) local i, v, j = 0, 0, 0 local prior, pred, gr = 0, 0, 0 local ltx = "" ltx = ltx.."[danger_bandits]\n" .. "ignore_distance = 30\n" -- leader t = { section = "logic@" .. gname .. "_leader", idle = 0, prior = 17, state = {0}, squad = squad, group = groups[6], in_rest = "cit_selmag_restr,cit_kanaliz_sr_in", out_rest = "", predicate = b_predicate_vb } table.insert(sj, t) ltx = ltx.."[logic@" .. gname .. "_leader]\n" .. "active = walker@" .. gname .. "_leader\n" .. "combat_ignore = combat_ignore\n" .. "[walker@" .. gname .. "_leader]\n" .. "path_walk = leader_walk\n" .. "path_look = leader_look\n" .. --"danger = danger_bandits\n" .. combat_ignore2 --"combat_ignore_cond = {=fighting_actor -cit_actor_out_killers_base}, {=check_fighting(1200)}\n" --"combat_ignore_cond = {=fighting_actor -cit_actor_is_free}, {=check_fighting(1200)}\n" -- leader guards for i, v in pairs({16, 15}) do t = { section = "logic@" .. gname .. "_leader_guard" .. i, idle = 0, prior = v, state = {0}, squad = squad, group = groups[6], in_rest = "cit_selmag_restr,cit_kanaliz_sr_in", out_rest = "", online = "{-cit_map_give}", predicate = b_predicate_vb } table.insert(sj, t) ltx = ltx.."[logic@" .. gname .. "_leader_guard" .. i .. "]\n" .. "active = walker@" .. gname .. "_leader_guard" .. i .. "\n" .. "combat_ignore = combat_ignore\n" .. "[walker@" .. gname .. "_leader_guard" .. i .. "]\n" .. "path_walk = leader_guard" .. i .. "_walk\n" .. "path_look = leader_guard" .. i .. "_look\n" .. --"danger = danger_bandits\n" .. combat_ignore2 --"combat_ignore_cond = {=fighting_actor -cit_actor_out_killers_base}, {=check_fighting(1200)}\n" --"combat_ignore_cond = {=fighting_actor -cit_actor_is_free}, {=check_fighting(1200)}\n" end -- walkers between kamps local start_kamp = {1, 3, 4} local kamp_change = {{3, 2, 4, 1}, {1, 4, 2, 3}, {3, 4, 1, 2}} local delays = {{20, 30, 22, 28}, { 25, 10, 14, 12}, {11, 17, 19, 24}} local d, kc = 0, 0 for i = 1, 3 do t = { section = "logic@" .. gname .. "_free" .. i .. "_in_kamp", idle = 0, prior = 9, state = {0}, squad = squad, group = groups[11], in_rest = "cit_selmag_restr,cit_kanaliz_sr_in", out_rest = "", online = "{-cit_map_give}", predicate = b_predicate_v } table.insert(sj, t) d = delays kc = kamp_change ltx = ltx.."[logic@" .. gname .. "_free" .. i .. "_in_kamp]\n" .. "active = walker@" .. gname .. "_free" .. i .. "_to_kamp" .. start_kamp .. "\n" .. "combat_ignore = combat_ignore\n" for j, v in pairs(kc) do ltx = ltx.."[walker@" .. gname .. "_free" .. i .. "_to_kamp" .. j .. "]\n" .. "path_walk = near_kamp" .. j .. "_walk\n" .. "path_look = kamp" .. j .. "\n" .. "def_state_moving1 = patrol\n" .. "def_state_moving2 = patrol\n" .. "def_state_moving3 = patrol\n" .. "on_signal = arrived | kamp@" .. gname .. "_free" .. i .. "_in_kamp" .. j .. "\n" .. --"danger = danger_bandits\n" .. combat_ignore .. --"combat_ignore_cond = {=fighting_actor -cit_actor_out_killers_base}, {=check_fighting(1200)}\n" .. --"combat_ignore_cond = {=fighting_actor -cit_actor_is_free}, {=check_fighting(1200)}\n" .. "[kamp@" .. gname .. "_free" .. i .. "_in_kamp" .. j .. "]\n" .. "center_point = kamp" .. j .. "\n" .. "def_state_moving = patrol\n" .. "on_timer = " .. d[j] .. "000 | walker@" .. gname .. "_free" .. i .. "_to_kamp" .. v .. "\n" .. "soundgroup = " .. gname .. "_kamp" .. j .. "_sg\n" .. --"danger = danger_bandits\n" .. combat_ignore2 --"combat_ignore_cond = {=fighting_actor -cit_actor_out_killers_base}, {=check_fighting(1200)}\n" --"combat_ignore_cond = {=fighting_actor -cit_actor_is_free}, {=check_fighting(1200)}\n" end end -- patrols in kamp prior = {9, 2, 6} local kamps, k = {1, 2, 4}, 0 delays = {40, 120, 60} for i, v in pairs({2, 1, 1}) do k = kamps for j = 1, v do t = { section = "logic@" .. gname .. "_kamp" .. k .. "_patrol", idle = 0, prior = prior, state = {0}, squad = squad, group = groups[k], in_rest = "cit_selmag_restr,cit_kanaliz_sr_in", out_rest = "", online = "{-cit_map_give}", predicate = b_predicate_v } table.insert(sj, t) end ltx = ltx.."[logic@" .. gname .. "_kamp" .. k .. "_patrol]\n" .. "active = patrol@" .. gname .. "_kamp" .. k .. "_patrol\n" .. "combat_ignore = combat_ignore\n" .. "[patrol@" .. gname .. "_kamp" .. k .. "_patrol]\n" .. "path_walk = kamp" .. k .. "_patrol_walk\n" .. --"path_look = kamp" .. k .. "\n" .. "formation = line\n" .. "on_signal = arrived | kamp@" .. gname .. "_kamp" .. k .. "_patrol\n" .. --"danger = danger_bandits\n" .. combat_ignore2 .. --"combat_ignore_cond = {=fighting_actor -cit_actor_out_killers_base}, {=check_fighting(1200)}\n" .. --"combat_ignore_cond = {=fighting_actor -cit_actor_is_free}, {=check_fighting(1200)}\n" .. "[kamp@" .. gname .. "_kamp" .. k .. "_patrol]\n" .. "center_point = kamp" .. k .. "\n" .. "on_timer = " .. delays .. "000 | patrol@" .. gname .. "_kamp" .. k .. "_patrol\n" .. "soundgroup = " .. gname .. "_kamp" .. k .. "_sg\n" .. --"danger = danger_bandits\n" .. combat_ignore2 --"combat_ignore_cond = {=fighting_actor -cit_actor_out_killers_base}, {=check_fighting(1200)}\n" --"combat_ignore_cond = {=fighting_actor -cit_actor_is_free}, {=check_fighting(1200)}\n" end -- kamps prior = {8, 2, 4, 5} for i, v in pairs({2, 1, 1, 2}) do for j = 1, v do t = { section = "logic@" .. gname .. "_kamp" .. i, idle = 0, prior = prior, state = {0}, squad = squad, group = groups, in_rest = "cit_selmag_restr,cit_kanaliz_sr_in", out_rest = "", online = "{-cit_map_give}", predicate = b_predicate_g } table.insert(sj, t) end ltx = ltx.."[logic@" .. gname .. "_kamp" .. i .. "]\n" .. "active = kamp@" .. gname .. "_kamp" .. i .. "\n" .. "combat_ignore = combat_ignore\n" .. "[kamp@" .. gname .. "_kamp" .. i .. "]\n" .. "center_point = kamp" .. i .. "\n" .. "def_state_moving = run\n" .. "soundgroup = " .. gname .. "_kamp" .. i .. "_sg\n" .. --"danger = danger_bandits\n" .. combat_ignore2 --"combat_ignore_cond = {=fighting_actor -cit_actor_out_killers_base}, {=check_fighting(1200)}\n" --"combat_ignore_cond = {=fighting_actor -cit_actor_is_free}, {=check_fighting(1200)}\n" end -- base guards pred = {b_predicate_vb, b_predicate_v} for i, v in pairs({13, 14}) do t = { section = "logic@" .. gname .. "_base_guard" .. i, idle = 0, prior = v, state = {0}, squad = squad, group = groups[7], in_rest = "cit_selmag_restr,cit_kanaliz_sr_in", out_rest = "", online = "{-cit_map_give}", predicate = pred } table.insert(sj, t) ltx = ltx.."[logic@" .. gname .. "_base_guard" .. i .. "]\n" .. "active = walker@" .. gname .. "_base_guard" .. i .. "\n" .. "combat_ignore = combat_ignore\n" .. "[walker@" .. gname .. "_base_guard" .. i .. "]\n" .. "path_walk = base_guard" .. i .. "_walk\n" .. --"path_look = base_guard" .. i .. "_look\n" .. --"danger = danger_bandits\n" .. combat_ignore2 --"combat_ignore_cond = {=fighting_actor -cit_actor_out_killers_base}, {=check_fighting(1200)}\n" --"combat_ignore_cond = {=fighting_actor -cit_actor_is_free}, {=check_fighting(1200)}\n" end -- patrol in center for i = 1, 2 do t = { section = "logic@" .. gname .. "_center_patrol", idle = 0, prior = 10, state = {0}, squad = squad, group = groups[8], in_rest = "cit_selmag_restr,cit_kanaliz_sr_in", out_rest = "", online = "{-cit_map_give}", predicate = b_predicate_v } table.insert(sj, t) end ltx = ltx.."[logic@" .. gname .. "_center_patrol]\n" .. "active = patrol@" .. gname .. "_center_patrol\n" .. "combat_ignore = combat_ignore\n" .. "[patrol@" .. gname .. "_center_patrol]\n" .. "path_walk = center_patrol_walk\n" .. --"path_look = center_patrol_look\n" .. "formation = line\n" .. "soundgroup = " .. gname .. "_center_patrol_sg\n" .. --"danger = danger_bandits\n" .. combat_ignore --"combat_ignore_cond = {=fighting_actor -cit_actor_out_killers_base}, {=check_fighting(1200)}\n" --"combat_ignore_cond = {=fighting_actor -cit_actor_is_free}, {=check_fighting(1200)}\n" -- gate guards prior = {12, 7} pred = {b_predicate_vb, b_predicate_v} gr = {10, 9} for i, v in pairs({3, 2}) do for j = 1, v do t = { section = "logic@" .. gname .. "_gate" .. i .. "_guard" .. j, idle = 0, prior = prior, state = {0}, squad = squad, group = groups[gr], in_rest = "cit_selmag_restr,cit_kanaliz_sr_in", out_rest = "", online = "{-cit_map_give}", predicate = pred } table.insert(sj, t) ltx = ltx.."[logic@" .. gname .. "_gate" .. i .. "_guard" .. j .. "]\n" .. "active = walker@" .. gname .. "_gate" .. i .. "_guard" .. j .. "\n" .. "combat_ignore = combat_ignore\n" .. "[walker@" .. gname .. "_gate" .. i .. "_guard" .. j .. "]\n" .. "path_walk = gate" .. i .. "_guard" .. j .. "_walk\n" .. "path_look = gate" .. i .. "_guard" .. j .. "_look\n" .. "soundgroup = cit_gate" .. i .. "_sg\n" .. combat_ignore2 --"combat_ignore_cond = {=fighting_actor -cit_actor_out_killers_base}, {=check_fighting(1200)}\n" --"combat_ignore_cond = {=fighting_actor -cit_actor_is_free}, {=check_fighting(1200)}\n" end end -- drunken for i = 1, 2 do t = { section = "logic@" .. gname .. "_drunken" .. i, idle = 0, prior = 1, state = {0}, squad = squad, group = groups[12], in_rest = "cit_selmag_restr,cit_kanaliz_sr_in", out_rest = "", online = "{-cit_map_give}", predicate = b_predicate_d } table.insert(sj, t) ltx = ltx.."[logic@" .. gname .. "_drunken" .. i .. "]\n" .. "active = walker@" .. gname .. "_drunken" .. i .. "\n" .. "combat_ignore = combat_ignore\n" .. "[walker@" .. gname .. "_drunken" .. i .. "]\n" .. "path_walk = drunken" .. i .. "_walk\n" .. --"path_look = drunken" .. i .. "_look\n".. "def_state_moving1 = walk\n" .. "def_state_moving2 = walk\n" .. "def_state_moving3 = walk\n" .. "combat_ignore_cond = always\n" end gulags.cit_bandits.ltx = ltx end -------------------------------------------------------------------------- -- Beasts -------------------------------------------------------------------------- -- Predicates ------------------------------------------------------------ -- Jobs ------------------------------------------------------------------ gulags.cit_beasts.job = function(sj, gname, type, squad, groups) local ltx = "" -- Проверяем наличие моб_хом. local i = 1 while level.patrol_path_exists(gname .. "_home_" .. i) do -- Необходимо вычитать количество работ из названия точки пути. local way_name = gname .. "_home_" .. i local ptr = patrol(way_name) local wp_prop = utils.parse_waypoint_data(way_name, ptr:flags(0), ptr:name(0)) local job_count = 10 if wp_prop.count ~= nil then job_count = wp_prop.count end for i = 1, job_count do -- добавляем должность t = { section = "logic@" .. way_name, idle = 0, prior = 1, state = {0}, squad = squad, group = groups[1], position_threshold = 20, in_rest = "", out_rest = gname .. "_restr" } table.insert(sj, t) end -- добавляем описание должности в лтх. local job_ltx = "[logic@" .. way_name .. "]\n" .. "active = mob_home@" .. way_name .. "\n" .. "[mob_home@" .. way_name .. "]\n" .. "path_home = home_" .. i .. "\n" ltx = ltx..job_ltx i = i + 1 end gulags.cit_beasts.ltx = ltx end Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
imcrazyhoudini 1 230 Опубликовано 25 октября РСФСР Интереса ради можно было бы отключить скрипт оригинальный и оставить лишь твой, изменится ли что. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Yara 180 Опубликовано 25 октября РСФСР Добавить уровень в level_groups (smart_terrain.script). https://sites.google.com/view/xray-sdk-0-4-smg Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
РСФСР 108 Опубликовано 25 октября 24 минуты назад, Yara сказал: РСФСР Добавить уровень в level_groups (smart_terrain.script). давно добавлен.. l09_deadcity = "group1", и в level_groups в xr_gulag.script Дополнено 3 минуты спустя 1 час назад, imcrazyhoudini сказал: РСФСР Интереса ради можно было бы отключить скрипт оригинальный и оставить лишь твой, изменится ли что. пробовал, удалял оригинальное население, скрипты с логикой и оставлял лишь один максимально простой смарт с кровососом - все бестолку. Даже на новом с нуля уровне таких проблем небыло... Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Yara 180 Опубликовано 25 октября 5 часов назад, РСФСР сказал: function checkStalker(npc_community, gulag_type, npc_rank, se_obj) end return false end Лишний end всё поломал. 1 1 https://sites.google.com/view/xray-sdk-0-4-smg Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
РСФСР 108 Опубликовано 25 октября 2 часа назад, Yara сказал: Лишний end всё поломал. да, так и есть А не подскажешь еще с проблемой - не работают генеральные лагеря на этой же локации если в них прописаны свобода или наемники. Они даже не спавнятся если их поставить в редакторе с припиской к смарту. Если поменять на долг или сталкеров - то все работает.. Спойлер [l09_deadcity] stalker = experienced, veteran, master csky = experienced, veteran, master monolith = experienced, veteran killer = experienced, veteran, master ecolog = experienced, veteran dolg = experienced, veteran, master freedom = experienced, veteran, master bandit = experienced, veteran, master zombied = novice, experienced, veteran, master Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Yara 180 Опубликовано 25 октября РСФСР Если не менялся smart_terrain_params.script, то используется smart_terrain_presets.ltx, а эти general_ устаревшие хвосты с билдов. https://sites.google.com/view/xray-sdk-0-4-smg Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
РСФСР 108 Опубликовано 25 октября 1 час назад, Yara сказал: РСФСР Если не менялся smart_terrain_params.script, то используется smart_terrain_presets.ltx, а эти general_ устаревшие хвосты с билдов. везде killer = experienced, veteran, master freedom = experienced, veteran, master Да и гулаги с наемниками нормально работают а вот в генеральные не хотят Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Yara 180 Опубликовано 26 октября РСФСР Если нпс привязан к смарту, у которого нет работ или его communities отличается от группировки нпс, то он будет бродить по уровню. Те, что расставлены через сдк заспавнятся в любом случае, а вот через зонки [respawn] - только, если есть свободные места в смарте и подходит communities. https://sites.google.com/view/xray-sdk-0-4-smg Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
РСФСР 108 Опубликовано 26 октября 34 минуты назад, Yara сказал: РСФСР Если нпс привязан к смарту, у которого нет работ или его communities отличается от группировки нпс, то он будет бродить по уровню. Те, что расставлены через сдк заспавнятся в любом случае, а вот через зонки [respawn] - только, если есть свободные места в смарте и подходит communities. привязанные к смарту нпс тоже должны спавнятся по тому же инфо, которое включает смарт. С одними группировками работает а с другими - нет почему-то. Смарт и без заспавненных рядом привязанных нпс не заполняется со временем.. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
imcrazyhoudini 1 230 Опубликовано 26 октября Есть простая логика: Спойлер [remark] target = nil anim = look_side meet = no_meet on_signal = anim_end | walker Проблема - он не отыгрывает всю анимацию, просто секунду-две постоит и пойдёт в walker, почему? Спойлер look_side = { prop = { maxidle = 1, sumidle = 1, rnd = 100 }, into = nil, out = nil, idle = { [0] = "chasovoy_2" }, rnd = nil}, Спойлер look_side = {weapon = "unstrapped", movement = move.stand, mental = anim.free, bodystate = move.standing, animstate = "stand", animation = "look_side" }, Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Yara 180 Опубликовано 26 октября 5 часов назад, РСФСР сказал: нпс тоже должны спавнятся по тому же инфо, которое включает смарт Они его займут, но через некоторое время - связано с обновлениями в скриптах. Можно поискать в скриптах имя нужной группировки, может есть какие-то проверки - а может опять лишний end / нужная зпт / незакрытые кавычки и т.п. 5 часов назад, РСФСР сказал: Смарт и без заспавненных рядом привязанных нпс не заполняется со временем. Для проверки - создать рядом респавнер с нужными нпс. Я так понимаю, у тебя работает gulag_deadcity.script и ещё подключен gulag_deadcity2.script? Если да, то может функции в них перебивают друг друга - load_states / checkStalker / checkMonster. https://sites.google.com/view/xray-sdk-0-4-smg Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
РСФСР 108 Опубликовано 26 октября 5 минут назад, Yara сказал: Я так понимаю, у тебя работает gulag_deadcity.script и ещё подключен gulag_deadcity2.script? Если да, то может функции в них перебивают друг друга - load_states / checkStalker / checkMonster. Так про лагеря упрощенные речь, они же используют скрипт gulag_general.script а не эти, разве нет? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Yara 180 Опубликовано 26 октября РСФСР Всё так, желательно сравнить папку scripts мода с оригинальной, посмотреть изменения. https://sites.google.com/view/xray-sdk-0-4-smg Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
soQuiet 1 Опубликовано 27 октября В 23.10.2025 в 11:31, imcrazyhoudini сказал: soQuiet надо посмотреть какие текстуры указаны, в classic версии вроде одна версия текстур. в плане? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты