Overf1rst 1 429 Опубликовано 1 июля, 2020 Тема посвящена моддингу на платформе Тень Чернобыля. Правила темы: Здесь задают вопросы и получают на них ответы. Прежде чем задать вопрос, воспользуйтесь поиском, ответ на него, вероятно, уже есть. Если у вас произошёл вылет, проверьте лог и поищите информацию об ошибке в справочнике. Также будет полезно посмотреть справочник ошибок. Если у Вас вылетает какой-то мод, то следует написать в тему этого мода. Грамотно оформляйте свой пост, чётко доносите суть своего вопроса (ответа). Благодарность выражаем в личке или же ставим реакцию. Посты с благодарностями в теме будут удаляться. 6 4 1 3 1 3 6 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
N42 587 Опубликовано 1 июля, 2023 (изменено) Stalkervernite привет, имя какой-то переменной, а какой - надо в коде смотреть, гадать не буду Изменено 1 июля, 2023 пользователем N42 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Stalkervernite 263 Опубликовано 1 июля, 2023 Привет всем,знаете как после выдачи инфопоршня нас перебрасывала в титры Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
frankenshtayn 17 Опубликовано 1 июля, 2023 21 час назад, N42 сказал: frankenshtayn я правильно понял, есть 6 равнозначных нпс, и если осталось 2 любых - они удаляются? Есть 6 нпс, двое из них с увеличенным иммунитетом. По сюжету гг с этими нпс проходит определенный маршрут с несколькими боёвками, затем переходят на другую локацию, затем после дохождения до нужной точки все телепортируются. Соответственно в зависимости от прохождения, на локацию где все телепортируются могут дойти как все шесть, так и пять, и четыре и три и два (двое доходят обязательно). Далее, после диалога со всеми дошедшими они идут в телепорт и удаляются. После того, как все нпс удалены необходимо, запустить функцию. Т.е. отследить, есть ли на локации эти нпс, и если их нет, то запускаем нужную функцию. В принципе всё это реализовано и работает, но как я уже говорил, хотелось бы сделать проверку отсутствия этих нпс на локации одной функцией. Дополнено 10 минуты спустя 38 минут назад, Stalkervernite сказал: Привет всем,знаете как после выдачи инфопоршня нас перебрасывала в титры Нужно вызвать функцию game_credits из xr_effects.script и запустятся титры 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Stalkervernite 263 Опубликовано 1 июля, 2023 frankenshtayn В том то и дело,как саму функцию вызвать,можешь скрипт написать Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
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 587 Опубликовано 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 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
РСФСР 87 Опубликовано 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 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
РСФСР 87 Опубликовано 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 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Купер 37 Опубликовано 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 = "" } Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
РСФСР 87 Опубликовано 5 июля, 2023 18 часов назад, Купер сказал: РСФСР , И? Это секция для оффлайновой работы же Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Stalkervernite 263 Опубликовано 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 73 Опубликовано 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 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
РСФСР 87 Опубликовано 5 июля, 2023 2 часа назад, Yara сказал: Так-то всё правильно, четыре независимых от друг друга условий, как только будут получены три флага, нпс выйдет в онлайн, при последнем обратно. почему выйдет "если все три условия"? "or" - это ведь "или". Должен выйти при получении любого из первых трех. Разве нет? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Veter2.0 0 Опубликовано 6 июля, 2023 Подскажите, как сделать постепенное лечение аптечек как в зп? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
imcrazyhoudini 925 Опубликовано 6 июля, 2023 Veter2.0 http://stalkerin.gameru.net/wiki/index.php?title=SoC._Система_постепенной_регенерации_жизни_из_Lurk_mod_и_ABC Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Yara 73 Опубликовано 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 925 Опубликовано 6 июля, 2023 Veter2.0 а что на счёт колбасы да консерв? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
РСФСР 87 Опубликовано 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 73 Опубликовано 6 июля, 2023 РСФСР Наверное, лучше с привязкой. Как-то тестил нпс без неё, по одному смарту на 2 уровнях, и он попёрся (не всегда) в другой, при прочих равных условиях. https://sites.google.com/view/xray-sdk-0-4-smg Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Stalkervernite 263 Опубликовано 7 июля, 2023 Всем привет,я создал лагерь,а как для нпс прописать логику?они не уникальные Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
imcrazyhoudini 925 Опубликовано 7 июля, 2023 Stalkervernite универсальный смарт террейн? поищи на сталкерине статью уникальную логику прописать не выйдет Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты