Overf1rst 1 490 Опубликовано 1 июля, 2020 Тема посвящена моддингу на платформе Тень Чернобыля. Правила темы: Здесь задают вопросы и получают на них ответы. Прежде чем задать вопрос, воспользуйтесь поиском, ответ на него, вероятно, уже есть. Если у вас произошёл вылет, проверьте лог и поищите информацию об ошибке в справочнике. Также будет полезно посмотреть справочник ошибок. Если у Вас вылетает какой-то мод, то следует написать в тему этого мода. Грамотно оформляйте свой пост, чётко доносите суть своего вопроса (ответа). Благодарность выражаем в личке или же ставим реакцию. Посты с благодарностями в теме будут удаляться. 6 4 1 3 1 3 6 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
frankenshtayn 17 Опубликовано 1 июля, 2023 21 минуту назад, Stalkervernite сказал: frankenshtayn В том то и дело,как саму функцию вызвать,можешь скрипт написать Любым удобным способом. Можно из рестриктора, из другой функции, при выдаче инфопоршня и т.д... из рестриктора, при попадании в него гг: [logic] active = sr_idle [sr_idle] on_actor_inside = %=game_credits% из инфопрошня (выдать инфо любым удобным способом): <info_portion id="game_over"> <action>xr_effects.game_credits</action> </info_portion> из другой функции: local pos_rem = vector():set(913.599975585938,-0.100000001490116,-353.950012207031) local particle_rem = particles_object([[anomaly2\teleport_out_00]]) function par_aes_remont() particle_rem:play_at_pos(pos_rem) xr_effects.game_credits() end 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
N42 687 Опубликовано 2 июля, 2023 (изменено) frankenshtayn Спойлер function est_npc() local tbl_npc_sid = { 441, 442, 443, 444, 445, 446 } local est_npc = false for i,v in ipairs(tbl_npc_sid) do local npc = alife():story_object(v) if npc then est_npc = true break end end return est_npc end Вернет true если есть нпс с сидом из таблички Изменено 2 июля, 2023 пользователем N42 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
РСФСР 91 Опубликовано 3 июля, 2023 (изменено) В ТЧ создал гулаг с одним сталкером, который появляется после одного из нескольких инфо, ходит по путям днем, уходит спать ночью и гулаг исчезает после появления еще одного инфо. Сталкер не появляется. Если убрать оффлайновую работу и оставить лишь состояния день и ночь - то работает. Где неправильно? [logic@esc_stalker_poisk1] active = walker@esc_stalker_poisk1 [walker@esc_stalker_poisk1] path_walk = walker_1_walk path_look = walker_1_look danger = danger_condition@esc_stalker_poisk1 [logic@esc_stalker_poisk1_sleeper] active = sleeper@esc_stalker_poisk1 [sleeper@esc_stalker_poisk1] path_main = sleep1 wakeable = true [danger_condition@esc_stalker_poisk1] ignore_distance_sound = 30 if type == "esc_stalker_poisk1" then t = { section = "logic@esc_stalker_poisk1", idle = 0, prior = 8, state = {0}, online = false, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@esc_stalker_poisk1", idle = 0, prior = 8, state = {1}, online = true, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@esc_stalker_poisk1_sleeper", idle = 0, prior = 8, state = {2}, online = true, in_rest = "", out_rest = "" } table.insert(sj, t) end if type == "esc_stalker_poisk1" then return function(gulag) if not has_alife_info("tutorial_wounded_end") or not has_alife_info("tutorial_wounded_die") or not has_alife_info("tutorial_wounded_death") or has_alife_info("agroprom_military_case_have") then return 0 -- offline elseif level.get_time_hours() >= 5 and level.get_time_hours() <= 21 then return 1 -- день else return 2 -- ночь end end end if gulag_type == "esc_stalker_poisk1" then return npc_community == "stalker" end Изменено 3 июля, 2023 пользователем РСФСР Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
frankenshtayn 17 Опубликовано 3 июля, 2023 В 02.07.2023 в 14:56, N42 сказал: frankenshtayn Показать контент function est_npc() local tbl_npc_sid = { 441, 442, 443, 444, 445, 446 } local est_npc = false for i,v in ipairs(tbl_npc_sid) do local npc = alife():story_object(v) if npc then est_npc = true break end end return est_npc end Вернет true если есть нпс с сидом из таблички Спасибо, попробую) 3 часа назад, РСФСР сказал: В ТЧ создал гулаг с одним сталкером, Я уже точно не помню, но вроде return 0 - переключает на день, return 1 - на ночь, а return 2 в оффлайн. Во всяком случае у меня гулаг работает нормально вот с таким кодом: if type == "voin_tochka_n" then return function(gulag) local actor = db.actor if not actor then return gulag.state end if not has_alife_info("start_gl_voin") then return 2 -- offline else if ( level.get_time_hours() >= 6 and level.get_time_hours() <= 22 ) then return 0 -- день else return 1 -- ночь end return gulag.state end end end Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
РСФСР 91 Опубликовано 4 июля, 2023 18 часов назад, frankenshtayn сказал: Спасибо, попробую) Я уже точно не помню, но вроде return 0 - переключает на день, return 1 - на ночь, а return 2 в оффлайн. Во всяком случае у меня гулаг работает нормально вот с таким кодом: if type == "voin_tochka_n" then return function(gulag) local actor = db.actor if not actor then return gulag.state end if not has_alife_info("start_gl_voin") then return 2 -- offline else if ( level.get_time_hours() >= 6 and level.get_time_hours() <= 22 ) then return 0 -- день else return 1 -- ночь end return gulag.state end end end не, не работает - сталкер не появляется онлайн. У тебя работы как выглядят? Оффлайн работа есть? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
frankenshtayn 17 Опубликовано 4 июля, 2023 (изменено) 34 минуты назад, РСФСР сказал: не, не работает - сталкер не появляется онлайн. У тебя работы как выглядят? Оффлайн работа есть? Да, есть и все нормально работают. Спойлер --' Вояки -------------------ходуны------------------------- if type == "voin_tochka_n" then t = { section = "logic@pri_voin_avto_walker_3", idle = 0, prior = 5, state = {0,1}, online = true, in_rest = "voin_baza_stop", out_rest = "" } table.insert(sj, t) t = { section = "logic@pri_voin_avto_walker_4", idle = 0, prior = 5, state = {0,1}, online = true, in_rest = "voin_baza_stop", out_rest = "" } table.insert(sj, t) t = { section = "logic@pri_voin_avto_walker_5", idle = 0, prior = 5, state = {0,1}, online = true, in_rest = "voin_baza_stop", out_rest = "" } table.insert(sj, t) t = { section = "logic@pri_voin_avto_walker_6", idle = 0, prior = 5, state = {0,1}, online = true, in_rest = "voin_baza_stop", out_rest = "" } table.insert(sj, t) -------------------------сидячие------------------------------ t = { section = "logic@pri_voin_avto_kamp_sidim", idle = 0, prior = 5, state = {0,1}, online = true, in_rest = "voin_baza_stop", out_rest = "" } table.insert(sj, t) t = { section = "logic@pri_voin_avto_kamp_sidim", idle = 0, prior = 5, state = {0,1}, online = true, in_rest = "voin_baza_stop", out_rest = "" } table.insert(sj, t) t = { section = "logic@pri_voin_avto_kamp_sidim", idle = 0, prior = 5, state = {0,1}, online = true, in_rest = "voin_baza_stop", out_rest = "" } table.insert(sj, t) --------------патруль------------------ t = { section = "logic@pri_voin_avto_raid1", idle = 0, prior = 10, state = {0,1}, online = true, in_rest = "voin_baza_stop", out_rest = "" } table.insert(sj, t) t = { section = "logic@pri_voin_avto_raid11", idle = 0, prior = 10, state = {0,1}, online = true, in_rest = "voin_baza_stop", out_rest = "" } table.insert(sj, t) t = { section = "logic@pri_voin_avto_raid12", idle = 0, prior = 10, state = {0,1}, online = true, in_rest = "voin_baza_stop", out_rest = "" } table.insert(sj, t) t = { section = "logic@pri_voin_avto_raid2", idle = 0, prior = 10, state = {0,1}, online = true, in_rest = "voin_baza_stop", out_rest = "" } table.insert(sj, t) t = { section = "logic@pri_voin_avto_raid21", idle = 0, prior = 10, state = {0,1}, online = true, in_rest = "voin_baza_stop", out_rest = "" } table.insert(sj, t) t = { section = "logic@pri_voin_avto_raid22", idle = 0, prior = 10, state = {0,1}, online = true, in_rest = "voin_baza_stop", out_rest = "" } table.insert(sj, t) t = { section = "logic@pri_voin_avto_raid13", idle = 0, prior = 10, state = {1}, online = true, in_rest = "voin_baza_stop", out_rest = "" } table.insert(sj, t) t = { section = "logic@pri_voin_avto_raid23", idle = 0, prior = 10, state = {1}, online = true, in_rest = "voin_baza_stop", out_rest = "" } table.insert(sj, t) t = { section = "logic@pri_voin_avto_sonja1", idle = 0, prior = 7, state = {0,1}, online = true, in_rest = "voin_baza_stop", out_rest = "" } table.insert(sj, t) t = { section = "logic@pri_voin_avto_sonja2", idle = 0, prior = 10, state = {0}, online = true, in_rest = "voin_baza_stop", out_rest = "" } table.insert(sj, t) t = { section = "logic@pri_voin_avto_sonja3", idle = 0, prior = 10, state = {0}, online = true, in_rest = "voin_baza_stop", out_rest = "" } table.insert(sj, t) --------------оффлайн----------------------- t = { section = "logic@pri_voin_avto_walker_3", idle = 0, prior = 5, state = {2}, online = false, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@pri_voin_avto_walker_4", idle = 0, prior = 5, state = {2}, online = false, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@pri_voin_avto_walker_5", idle = 0, prior = 5, state = {2}, online = false, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@pri_voin_avto_walker_6", idle = 0, prior = 5, state = {2}, online = false, in_rest = "", out_rest = "" } table.insert(sj, t) -------------------------сидячие------------------------------ t = { section = "logic@pri_voin_avto_kamp_sidim", idle = 0, prior = 5, state = {2}, online = false, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@pri_voin_avto_kamp_sidim", idle = 0, prior = 5, state = {2}, online = false, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@pri_voin_avto_kamp_sidim", idle = 0, prior = 5, state = {2}, online = false, in_rest = "", out_rest = "" } table.insert(sj, t) --------------патруль------------------ t = { section = "logic@pri_voin_avto_raid1", idle = 0, prior = 10, state = {2}, online = false, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@pri_voin_avto_raid11", idle = 0, prior = 10, state = {2}, online = false, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@pri_voin_avto_raid12", idle = 0, prior = 10, state = {2}, online = false, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@pri_voin_avto_raid2", idle = 0, prior = 10, state = {2}, online = false, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@pri_voin_avto_raid21", idle = 0, prior = 10, state = {2}, online = false, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@pri_voin_avto_raid22", idle = 0, prior = 10, state = {2}, online = false, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@pri_voin_avto_raid13", idle = 0, prior = 10, state = {2}, online = false, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@pri_voin_avto_raid23", idle = 0, prior = 10, state = {2}, online = false, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@pri_voin_avto_sonja1", idle = 0, prior = 7, state = {2}, online = false, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@pri_voin_avto_sonja2", idle = 0, prior = 10, state = {2}, online = false, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@pri_voin_avto_sonja3", idle = 0, prior = 10, state = {2}, online = false, in_rest = "", out_rest = "" } table.insert(sj, t) end Попробуй для начала оставить здеь один инфопоршень и проверить сам гулаг, может что-то тут не сходится: if not has_alife_info("tutorial_wounded_end") or not has_alife_info("tutorial_wounded_die") or not has_alife_info("tutorial_wounded_death") or has_alife_info("agroprom_military_case_have") then Изменено 4 июля, 2023 пользователем frankenshtayn Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Купер 58 Опубликовано 4 июля, 2023 РСФСР , В 03.07.2023 в 19:44, РСФСР сказал: if type == "esc_stalker_poisk1" then t = { section = "logic@esc_stalker_poisk1", idle = 0, prior = 8, state = {0}, --* доступные работы для NPC online = false, --* состояние NPC in_rest = "", out_rest = "" } Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
РСФСР 91 Опубликовано 5 июля, 2023 18 часов назад, Купер сказал: РСФСР , И? Это секция для оффлайновой работы же Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Stalkervernite 347 Опубликовано 5 июля, 2023 Привет всем.Кто знает как после диалога нпс нас вел куда-то?отгрывал инфопоршень и нпс шел куда-то. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
frankenshtayn 17 Опубликовано 5 июля, 2023 40 минут назад, Stalkervernite сказал: Привет всем.Кто знает как после диалога нпс нас вел куда-то?отгрывал инфопоршень и нпс шел куда-то. Так отправить его куда нужно, делов-то... Как пример: [logic] active = walker@ts0 [walker@ts0] path_walk = ts0_walk ;;; -изначально непись находится в схеме walker@ts0 и стоит (лежит, сидит, поёт и т.д.) на своем месте в точке ts0_walk path_look = ts0_look on_info = {+dead_ser} walker@ts1 ;;;; - после получения инфопоршня dead_ser переходит в схему walker@ts1 [walker@ts1] ;;; - после перехода в эту схему непись топает в точку ts1_walk path_walk = ts1_walk path_look = ts1_look а вообще можно сходить на вики http://stalkerin.gameru.net/wiki/index.php?title=Настройка_логики._Часть_0 и почитать, там много интересного, а если что непонятно то и спросить можно) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Yara 117 Опубликовано 5 июля, 2023 В 03.07.2023 в 22:44, РСФСР сказал: if not has_alife_info("tutorial_wounded_end") or not has_alife_info("tutorial_wounded_die") or not has_alife_info("tutorial_wounded_death") or has_alife_info("agroprom_military_case_have") then return 0 -- offline Так-то всё правильно, четыре независимых от друг друга условий, как только будут получены три флага, нпс выйдет в онлайн, при последнем обратно. https://sites.google.com/view/xray-sdk-0-4-smg Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
РСФСР 91 Опубликовано 5 июля, 2023 2 часа назад, Yara сказал: Так-то всё правильно, четыре независимых от друг друга условий, как только будут получены три флага, нпс выйдет в онлайн, при последнем обратно. почему выйдет "если все три условия"? "or" - это ведь "или". Должен выйти при получении любого из первых трех. Разве нет? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Veter2.0 0 Опубликовано 6 июля, 2023 Подскажите, как сделать постепенное лечение аптечек как в зп? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
imcrazyhoudini 1 088 Опубликовано 6 июля, 2023 Veter2.0 http://stalkerin.gameru.net/wiki/index.php?title=SoC._Система_постепенной_регенерации_жизни_из_Lurk_mod_и_ABC Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Yara 117 Опубликовано 6 июля, 2023 11 часов назад, РСФСР сказал: Должен выйти при получении любого из первых трех. Тогда нужно так: if not has_alife_info("test1_info") and not has_alife_info("test2_info") and not has_alife_info("test3_info") or has_alife_info("test4_info") then https://sites.google.com/view/xray-sdk-0-4-smg Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Veter2.0 0 Опубликовано 6 июля, 2023 imcrazyhoudini Я пытался так сделать и функция работала, но после применении армейской или научной аптечек, скрипты переставали работать и в итоге гг не лечился. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
imcrazyhoudini 1 088 Опубликовано 6 июля, 2023 Veter2.0 а что на счёт колбасы да консерв? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
РСФСР 91 Опубликовано 6 июля, 2023 3 часа назад, Yara сказал: Тогда нужно так: if not has_alife_info("test1_info") and not has_alife_info("test2_info") and not has_alife_info("test3_info") or has_alife_info("test4_info") then получается, что "or" - это "и", а "and" - "или"? Это совсем контринтуитивно! Еще такой вопрос - в гулагах, если сначала идут оффлайновые работы и только по инфо переключаются на онлайновые - неписи уже должны быть заспавненными с прописанной в кастум-дате привязкой к этому гулагу или они сами захватятся из заспавненных, как в обычном лагере? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Yara 117 Опубликовано 6 июля, 2023 РСФСР Наверное, лучше с привязкой. Как-то тестил нпс без неё, по одному смарту на 2 уровнях, и он попёрся (не всегда) в другой, при прочих равных условиях. https://sites.google.com/view/xray-sdk-0-4-smg Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Stalkervernite 347 Опубликовано 7 июля, 2023 Всем привет,я создал лагерь,а как для нпс прописать логику?они не уникальные Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
imcrazyhoudini 1 088 Опубликовано 7 июля, 2023 Stalkervernite универсальный смарт террейн? поищи на сталкерине статью уникальную логику прописать не выйдет Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Stalkervernite 347 Опубликовано 7 июля, 2023 (изменено) del Изменено 20 марта пользователем Stalkervernite Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
frankenshtayn 17 Опубликовано 7 июля, 2023 Я давал ссылочку на вики, там можно найти всё, что угодно. Но как пример..... Аллспавн алайф_локация: Спойлер [14] ; cse_abstract properties section_name = smart_terrain name = sv_st_smart_terrain position = 217.50959777832,-1.94939196109772,176.110565185547 direction = 0,0,0 ; cse_alife_object properties game_vertex_id = 378 distance = 24.5 level_vertex_id = 354113 object_flags = 0xffffff3e custom_data = <<END [smart_terrain] type = sv_st_smart_terrain capacity = 3 END ; cse_shape properties shapes = shape0 shape0:type = sphere shape0:offset = 0,0,0 shape0:radius = 3.71439838409424 ; cse_alife_space_restrictor properties restrictor_type = 3 ; se_smart_terrain properties [15] ; cse_abstract properties section_name = stalker name = sv_st_smart_terrain00 position = 218.50959777832,-1.94939196109772,177.110565185547 direction = -0.327957004308701,0,0.944693028926849 ; cse_alife_trader_abstract properties money = 5000 character_profile = esc_stalker_novice ; cse_alife_object properties game_vertex_id = 378 distance = 4.19999980926514 level_vertex_id = 354113 object_flags = 0xffffffbf custom_data = <<END [smart_terrains] sv_st_smart_terrain = true END ; cse_visual properties visual_name = actors\novice\green_stalker_2 ; cse_alife_creature_abstract properties g_team = 0 g_squad = 0 g_group = 0 health = 1 dynamic_out_restrictions = dynamic_in_restrictions = upd:health = 1 upd:timestamp = 0 upd:creature_flags = 0 upd:position = 218.50959777832,-1.94939196109772,177.110565185547 upd:o_model = 0 upd:o_torso = 0.533530831336975,-0.000744261255022138,0 upd:g_team = 0 upd:g_squad = 0 upd:g_group = 0 ; cse_alife_monster_abstract properties upd:next_game_vertex_id = 65535 upd:prev_game_vertex_id = 65535 upd:distance_from_point = 0 upd:distance_to_point = 0 ; cse_alife_human_abstract properties predicate5 = 1,0,0,2,1 predicate4 = 1,1,0,1 ; cse_ph_skeleton properties upd:start_dialog = ; se_stalker properties [16] ; cse_abstract properties section_name = stalker name = sv_st_smart_terrain01 position = 219.50959777832,-1.94939196109772,178.110565185547 direction = -0.327957004308701,0,0.944693028926849 ; cse_alife_trader_abstract properties money = 5000 character_profile = esc_stalker_novice ; cse_alife_object properties game_vertex_id = 378 distance = 4.19999980926514 level_vertex_id = 354113 object_flags = 0xffffffbf custom_data = <<END [smart_terrains] sv_st_smart_terrain = true END ; cse_visual properties visual_name = actors\novice\green_stalker_2 ; cse_alife_creature_abstract properties g_team = 0 g_squad = 0 g_group = 0 health = 1 dynamic_out_restrictions = dynamic_in_restrictions = upd:health = 1 upd:timestamp = 0 upd:creature_flags = 0 upd:position = 219.50959777832,-1.94939196109772,178.110565185547 upd:o_model = 0 upd:o_torso = 0.533530831336975,-0.000744261255022138,0 upd:g_team = 0 upd:g_squad = 0 upd:g_group = 0 ; cse_alife_monster_abstract properties upd:next_game_vertex_id = 65535 upd:prev_game_vertex_id = 65535 upd:distance_from_point = 0 upd:distance_to_point = 0 ; cse_alife_human_abstract properties predicate5 = 1,0,0,2,1 predicate4 = 1,1,0,1 ; cse_ph_skeleton properties upd:start_dialog = ; se_stalker properties [17] ; cse_abstract properties section_name = stalker name = sv_st_smart_terrain02 position = 220.50959777832,-1.94939196109772,179.110565185547 direction = -0.327957004308701,0,0.944693028926849 ; cse_alife_trader_abstract properties money = 5000 character_profile = esc_stalker_novice ; cse_alife_object properties game_vertex_id = 378 distance = 4.19999980926514 level_vertex_id = 354113 object_flags = 0xffffffbf custom_data = <<END [smart_terrains] sv_st_smart_terrain = true END ; cse_visual properties visual_name = actors\novice\green_stalker_2 ; cse_alife_creature_abstract properties g_team = 0 g_squad = 0 g_group = 0 health = 1 dynamic_out_restrictions = dynamic_in_restrictions = upd:health = 1 upd:timestamp = 0 upd:creature_flags = 0 upd:position = 220.50959777832,-1.94939196109772,179.110565185547 upd:o_model = 0 upd:o_torso = 0.533530831336975,-0.000744261255022138,0 upd:g_team = 0 upd:g_squad = 0 upd:g_group = 0 ; cse_alife_monster_abstract properties upd:next_game_vertex_id = 65535 upd:prev_game_vertex_id = 65535 upd:distance_from_point = 0 upd:distance_to_point = 0 ; cse_alife_human_abstract properties predicate5 = 1,0,0,2,1 predicate4 = 1,1,0,1 ; cse_ph_skeleton properties upd:start_dialog = ; se_stalker properties Аллспавн вай_локация: Спойлер [sv_st_smart_terrain_dva_walk] points = p0,p1 p0:name = wp00 p0:position = 220.283889770508,-2.02869510650635,175.384140014648 p0:game_vertex_id = 378 p0:level_vertex_id = 355513 p0:links = p1(1) p1:name = wp01 p1:position = 232.254119873047,-1.04941594600677,167.089828491211 p1:game_vertex_id = 381 p1:level_vertex_id = 368817 p1:links = p0(1) [sv_st_smart_terrain_moy_sleep] points = p0,p1 p0:name = wp00 p0:position = 214.50959777832,-1.94939196109772,173.110565185547 p0:game_vertex_id = 378 p0:level_vertex_id = 354113 p1:name = wp01 p1:position = 214.50959777832,-1.94939196109772,172.110565185547 p1:game_vertex_id = 378 p1:level_vertex_id = 354113 p1:links = p0(1) [sv_st_smart_terrain_odin_walk] points = p0,p1,p2 p0:name = wp00 p0:position = 216.906387329102,-1.92757797241211,175.720275878906 p0:game_vertex_id = 378 p0:level_vertex_id = 353756 p0:links = p1(1) p1:name = wp01 p1:position = 203.708618164063,-1.05473899841309,171.603408813477 p1:game_vertex_id = 378 p1:level_vertex_id = 345806 p1:links = p2(1) p2:name = wp02 p2:position = 204.927429199219,-2.01750707626343,180.354019165039 p2:game_vertex_id = 378 p2:level_vertex_id = 346710 p2:links = p0(1) [sv_st_smart_terrain_pole_kamp] points = p0 p0:name = wp00|s=state p0:position = 216.50959777832,-1.94939196109772,175.110565185547 p0:game_vertex_id = 378 p0:level_vertex_id = 354113 gulag_локация.script: Спойлер local t = {} function load_job(sj, gname, type, squad, groups) --'-------------------------------------------------------------------------- --' GARBAGE --'-------------------------------------------------------------------------- -----первый--------- if type == "sv_st_smart_terrain" then t = { section = "logic@sv_st_smart_terrain_walker1", idle = 0, prior = 5, state = {0}, ---работа днем первого нпс-------- online = true, in_rest = "", out_rest = "", } table.insert(sj, t) end if type == "sv_st_smart_terrain" then t = { section = "logic@sv_st_smart_terrain_kamp1", idle = 0, prior = 5, state = {1}, ---работа ночью первого нпс--- online = true, in_rest = "", out_rest = "", } table.insert(sj, t) end ----------второй----------- if type == "sv_st_smart_terrain" then t = { section = "logic@sv_st_smart_terrain_walker2", idle = 0, prior = 5, state = {0}, ----работа днем второго нпс---- online = true, in_rest = "", out_rest = "", } table.insert(sj, t) end if type == "sv_st_smart_terrain" then t = { section = "logic@sv_st_smart_terrain_kamp2", idle = 0, prior = 5, state = {1}, ----работа ночью второго нпс ----- online = true, in_rest = "", out_rest = "", } table.insert(sj, t) end ------третий------------- if type == "sv_st_smart_terrain" then t = { section = "logic@sv_st_smart_terrain_walker3", idle = 0, prior = 5, state = {0}, --- работа днем третьего нпс---- online = true, in_rest = "", out_rest = "", } table.insert(sj, t) end if type == "sv_st_smart_terrain" then t = { section = "logic@sv_st_smart_terrain_sleeper", idle = 0, prior = 5, state = {1}, ---работа ночью третьего нпс--- online = true, in_rest = "", out_rest = "", } table.insert(sj, t) end end function load_states(gname, type) ----- if type == "sv_st_smart_terrain" 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) ------------ if gulag_type == "sv_st_smart_terrain" then return npc_community == "stalker" end return false end gulag_локация.ltx в config/misc Спойлер ;-- сталкер1 walker первый -> состояние 0, днем) [logic@sv_st_smart_terrain_walker1] active = walker@odin_hodit on_hit = hit_w [hit_w] on_info = %=zasada_spawn% [walker@odin_hodit] path_walk = odin_walk danger = danger_condition def_state_moving1 = patrol def_state_moving2 = patrol def_state_moving3 = patrol meet = meet ;-- сталкер1 kamp первый -> состояние 1, ночью) [logic@sv_st_smart_terrain_kamp1] active = kamp@odin_sidit on_hit = hit_k [hit_k] on_info = %=zasada_spawn% [kamp@odin_sidit] center_point = pole_kamp meet = no_meet ---------------------------------------------------------------- ;-- сталкер2 walker второй -> состояние 0, днем) [logic@sv_st_smart_terrain_walker2] active = walker@dva_hodit [walker@dva_hodit] path_walk = dva_walk danger = danger_condition def_state_moving1 = patrol def_state_moving2 = patrol def_state_moving3 = patrol meet = meet ;-- сталкер2 kamp второй -> состояние 1, ночью) [logic@sv_st_smart_terrain_kamp2] active = kamp@dva_sidit [kamp@dva_sidit] center_point = pole_kamp meet = no_meet ---------------------------------------------------------------------------- ;-- сталкер3 walker третий -> состояние 0, днем) [logic@sv_st_smart_terrain_walker3] active = kamp@tri_sidit [kamp@tri_sidit] center_point = pole_kamp meet = meet ;-- сталкер3 sleeper третий -> состояние 1, ночью) [logic@sv_st_smart_terrain_sleeper] active = sleeper@tri_slip [sleeper@tri_slip] path_main = moy_sleep wakeable = false meet = no_meet В принципе всё. Соответственно либо создать своих новых нпс, либо использовать имеющихся. Настойчиво повторяю просьбу - изучить материалы на сталкер-вики, там всё достаточно подробно расписано, а вот если что-то не получается, то можно и спросить, а не требовать всё готовое) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Stalkervernite 347 Опубликовано 7 июля, 2023 Спасибо,та хочу быстро,поэтому,прошу) 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
РСФСР 91 Опубликовано 8 июля, 2023 Зависание биндера (Shaduler try to update object) при попытке добавить зомбям строчки on_actor_dist_ge = 60 | [mob_fake_death@esc_zombie_ХХ Затем заставить их встать а потом отбежать на расстояние. Добавил чтобы они ложились опять при уходе игрока. Где ошибка? В остальном нормально работает [logic@esc_zombie_1_fd] active = mob_fake_death@esc_zombie_1_fd on_hit = hit@zombie [mob_fake_death@esc_zombie_1_fd] on_info = {+esc_zombie_rise2} mob_home@esc_zombie_1_fd path_home = home_point_1 [mob_home@esc_zombie_1_fd] path_home = home_point home_min_radius = 20 home_max_radius = 35 on_actor_dist_ge = 60 | [mob_fake_death@esc_zombie_1_fd [hit@zombie] on_info = %+esc_zombie_rise2% [logic@esc_zombie_2_fd] active = mob_fake_death@esc_zombie_2_fd on_hit = hit@zombie [mob_fake_death@esc_zombie_2_fd] on_info = {+esc_zombie_rise2} mob_home@esc_zombie_2_fd path_home = home_point_2 [mob_home@esc_zombie_2_fd] path_home = home_point home_min_radius = 20 home_max_radius = 35 on_actor_dist_ge = 60 | [mob_fake_death@esc_zombie_2_fd [logic@esc_zombie_3_fd] active = mob_fake_death@esc_zombie_3_fd on_hit = hit@zombie [mob_fake_death@esc_zombie_3_fd] on_info = {+esc_zombie_rise2} mob_home@esc_zombie_3_fd path_home = home_point_3 [mob_home@esc_zombie_3_fd] path_home = home_point home_min_radius = 20 home_max_radius = 35 on_actor_dist_ge = 60 | [mob_fake_death@esc_zombie_3_fd [logic@esc_zombie_4_fd] active = mob_fake_death@esc_zombie_4_fd on_hit = hit@zombie [mob_fake_death@esc_zombie_4_fd] on_info = {+esc_zombie_rise2} mob_home@esc_zombie_4_fd path_home = home_point_4 [mob_home@esc_zombie_4_fd] path_home = home_point home_min_radius = 20 home_max_radius = 35 on_actor_dist_ge = 60 | [mob_fake_death@esc_zombie_4_fd [logic@esc_zombie_5_fd] active = mob_fake_death@esc_zombie_5_fd on_hit = hit@zombie [mob_fake_death@esc_zombie_5_fd] on_info = {+esc_zombie_rise2} mob_home@esc_zombie_5_fd path_home = home_point_5 [mob_home@esc_zombie_5_fd] path_home = home_point home_min_radius = 20 home_max_radius = 35 on_actor_dist_ge = 60 | [mob_fake_death@esc_zombie_5_fd [logic@esc_zombie_6_fd] active = mob_fake_death@esc_zombie_6_fd on_hit = hit@zombie [mob_fake_death@esc_zombie_6_fd] on_info = {+esc_zombie_rise2} mob_home@esc_zombie_6_fd path_home = home_point_6 [mob_home@esc_zombie_6_fd] path_home = home_point home_min_radius = 20 home_max_radius = 35 on_actor_dist_ge = 60 | [mob_fake_death@esc_zombie_6_fd if type == "esc_zombie_1" then t = { section = "logic@esc_zombie_1_fd", idle = 0, prior = 5, state = {1}, online = true, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@esc_zombie_2_fd", idle = 0, prior = 5, state = {1}, online = true, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@esc_zombie_3_fd", idle = 0, prior = 5, state = {1}, online = true, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@esc_zombie_4_fd", idle = 0, prior = 5, state = {1}, online = true, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@esc_zombie_5_fd", idle = 0, prior = 5, state = {1}, online = true, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@esc_zombie_6_fd", idle = 0, prior = 5, state = {1}, online = true, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@esc_zombie_1_fd", idle = 0, prior = 5, state = {0}, online = false, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@esc_zombie_2_fd", idle = 0, prior = 5, state = {0}, online = false, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@esc_zombie_3_fd", idle = 0, prior = 5, state = {0}, online = false, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@esc_zombie_4_fd", idle = 0, prior = 5, state = {0}, online = false, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@esc_zombie_5_fd", idle = 0, prior = 5, state = {0}, online = false, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@esc_zombie_6_fd", idle = 0, prior = 5, state = {0}, online = false, in_rest = "", out_rest = "" } table.insert(sj, t) end if type == "esc_zombie_1" then return function(gulag) if has_alife_info("agroprom_military_case_have") then return 0 else return 1 end end end Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты