DibokDibokin 1 Опубликовано 29 Января 2021 Поделиться Опубликовано 29 Января 2021 Здравствуйте. Есть ли способ держать принудительно в онлайне нпс с указанными story_id и нпс, которые находятся в указанном смарт_террейне? Ссылка на комментарий
AndreySol 215 Опубликовано 29 Января 2021 Поделиться Опубликовано 29 Января 2021 (изменено) @DibokDibokin Конечно есть. Выставить флаг flSwitchOffline в false, что запретит объекту переход в оффлайн. Для одиночного непися способов два: - в all.spawn выставить для object_flags соответствующее значение(в СДК просто, в разобранном ACDC спавне - сложнее); - скриптово, с помощью ф-ции set_switch_offline(int id, bool v) класса alife_simulator, вторым параметром false. Для гулагов, в настройках работ есть такой параметр, который вроде может запрещать офф\он лайн. Но там точно не помню, давно там не ковырялся. Изменено 29 Января 2021 пользователем AndreySol 1 2 3 Ссылка на комментарий
Colder 12 Опубликовано 30 Января 2021 Поделиться Опубликовано 30 Января 2021 @AndreySol Сделал так : Скрытый текст function radiation_anomaly_binder:update(delta) object_binder.update(self, delta) local actor = db.actor if actor then local dist = actor:position():distance_to(self.object:position()) if dist <= 10 then local hud = get_hud() hud:AddCustomStatic("radiation_hud_static", true) else local hud = get_hud() hud:RemoveCustomStatic("radiation_hud_static", false) end end end Но она почему то не горит а маргает Скрытый текст local actor = db.actor if actor then local dist = actor:position():distance_to(self.object:position()) if dist <= 15 then local hud = get_hud() hud:AddCustomStatic("radiation_hud_static", true) elseif dist <= 25 then local hud = get_hud() hud:RemoveCustomStatic("radiation_hud_static", false) Вот так нормально, можно даже наверно попроще! Ссылка на комментарий
naxac 2 447 Опубликовано 30 Января 2021 Поделиться Опубликовано 30 Января 2021 @Colder Скрытый текст function radiation_anomaly_binder:update(delta) object_binder.update(self, delta) local actor = db.actor if actor then local dist = actor:position():distance_to(self.object:position()) local st = get_hud():GetCustomStatic("radiation_hud_static") if dist <= 10 then if not st then get_hud():AddCustomStatic("radiation_hud_static"), true) end else if st then get_hud():RemoveCustomStatic("radiation_hud_static") end end end end 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
Colder 12 Опубликовано 30 Января 2021 Поделиться Опубликовано 30 Января 2021 @naxac не работает И не вылетает Ссылка на комментарий
Zander_driver 10 334 Опубликовано 30 Января 2021 Поделиться Опубликовано 30 Января 2021 2 часа назад, Colder сказал(а): она почему то не горит а маргает Наверное, потому что аномалий на локации много? Одни ближе 10 метров, другие дальше. Одни статик включают, а другие выключают. По несколько раз за апдейт. 1 Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Ссылка на комментарий
AndreySol 215 Опубликовано 31 Января 2021 Поделиться Опубликовано 31 Января 2021 Спрошу тута: в мультиплеере ЗП, скриптовая подсистема не работает совсем, или работает, но ограниченно? К примеру рестриктор можно поставить и прописать ему логику? Или дверь, соответственно, то же с логикой? И есть ли где нибудь, на репозиториях, сборки движка с попытками оживить скрипты в мультике? Ссылка на комментарий
Colder 12 Опубликовано 1 Февраля 2021 Поделиться Опубликовано 1 Февраля 2021 Скрытый текст function treasure_take_item() local veroyatnos_podriva = 0.2 --// вероятность подрыва по умолчанию local location = level.name() local sila_podriva = 0.3 --// сила подрыва по умолчанию local be_or_not_to_be --// не трогать if location == "l01_escape" then veroyatnos_podriva = 0.1 sila_podriva = 0.4 end if location == "l02_garbage" then veroyatnos_podriva = 0.15 sila_podriva = 0.4 end if location == "l03_agroprom" then veroyatnos_podriva = 0.15 sila_podriva = 0.4 end if location == "l03u_agr_underground" then veroyatnos_podriva = 0.35 sila_podriva = 0.6 end if location == "l04_darkvalley" then veroyatnos_podriva = 0.25 sila_podriva = 0.4 end if location == "l04u_LabX18" then veroyatnos_podriva = 0.25 sila_podriva = 0.6 end if location == "05_bar" then veroyatnos_podriva = 0.25 sila_podriva = 0.4 end if location == "l06_rostok" then veroyatnos_podriva = 0.35 sila_podriva = 0.4 end if location == "l08_yantar" then veroyatnos_podriva = 0.35 sila_podriva = 0.4 end if location == "l08u_brainlab" then veroyatnos_podriva = 0.3 sila_podriva = 0.5 end if location == "l07_military" then veroyatnos_podriva = 0.35 sila_podriva = 0.4 end if location == "l10_radar" then veroyatnos_podriva = 0.3 sila_podriva = 0.4 end if location == "l11_pripyat" then veroyatnos_podriva = 0.35 sila_podriva = 0.4 end if location == "l12_stancia" then veroyatnos_podriva = 0.1 sila_podriva = 0.4 end if location == "l12_stancia_2" then veroyatnos_podriva = 0.1 sila_podriva = 0.4 end if location == "l12u_control_monolith" then veroyatnos_podriva = 0.1 sila_podriva = 0.4 end if location == "l12u_sarcofag" then veroyatnos_podriva = 0.1 sila_podriva = 0.4 end --// Снижаем шанс подрыва если есть кусачки if db.actor:object("kysazki") ~= nil then veroyatnos_podriva = veroyatnos_podriva - 0.1 end be_or_not_to_be = math.random(0,100) if be_or_not_to_be < veroyatnos_podriva * 100 then local lv,gv local a = vector() local radius = math.random(0,4) a = db.actor:position() a.x = a.x + radius a.z = a.z + radius a.y = a.y + math.random(0,1) lv = db.actor:level_vertex_id() gv = db.actor:game_vertex_id() local h2 = hit() h2.power = sila_podriva h2.direction = vector():set(0,0,0) h2.type = hit.explosion h2.impulse = 1 h2.draftsman = db.actor db.actor:hit(h2) sound_object("weapons\\mine_1"):play_at_pos(db.actor,vector():set(0,0,0),0,sound_object.s2d) particles_object("explosions\\explosion_mine"):play_at_pos(vector():set(a.x,a.y,a.z),lv,gv,65535) end end Всем привет! Есть функция на заминирование тайников! Проблема в том что, минируються не только тайники но и РЮКЗАК ДЛЯ ЗАКЛАДКИ СВОЕГО ТАЙНИКА! Можно ли как то заблочить функцию что бы она работала только с уже имеющими тайниками а не которые делает гг сам! Заранее спасибо! Ссылка на комментарий
AndreySol 215 Опубликовано 1 Февраля 2021 Поделиться Опубликовано 1 Февраля 2021 @Colder Смотреть, естественно, надо там, откуда эта ф-ция вызывается, а сама она только хит формирует. Ссылка на комментарий
gam 117 Опубликовано 1 Февраля 2021 Поделиться Опубликовано 1 Февраля 2021 1 час назад, AndreySol сказал(а): там, откуда эта ф-ция вызывается Имхо это хит-саллбек. А как сделанно не ведаю. Если есть возможность в виде любой модификации - либо отдельно, дайте ссылку на рабочий файл. К сожалению, на данный момент я могу использовать для скачивания майл и ограниченно народ Ссылка на комментарий
Colder 12 Опубликовано 1 Февраля 2021 Поделиться Опубликовано 1 Февраля 2021 (изменено) @AndreySol Вызываеться из treasure_manager function take_item_from_box(box, box_story_id) printf("!!! take item from box %s", tostring(box:is_inv_box_empty())) if box:is_inv_box_empty() == true then get_treasure_manager():treasure_empty(box, box_story_id) end axr_treasure.treasure_take_item() --// сама функция end Скрытый текст function take_item_from_box(box, box_story_id) printf("!!! take item from box %s", tostring(box:is_inv_box_empty())) if box:is_inv_box_empty() == true then get_treasure_manager():treasure_empty(box, box_story_id) local box_name = box:name() printf("-"..box_name) if (math.random() < 0.75) then axr_sounds.play_sound([[weapons\generic_checkout]]) mine_box = box mine_timer = time_global()+3000 end end end function actor_on_update() if (mine_timer) and (mine_timer < time_global()) then local blow_particle = particles_object("explosions\\explosion_mine") blow_particle:play_at_pos(mine_box:position()) local h = hit() h.type = hit.explosion h:bone("bip01_spine") h.power = 1 h.impulse = 2 h.direction = vector():set(0,0,1) h.draftsman = db.actor if db.actor:position():distance_to(mine_box:position()) < 3 then db.actor:hit(h) end mine_timer = nil mine_box = nil end end Сделал проще! Все это влежит в treasure_manager. Но эффект тот же. Закладываю свой тайник И ОН ТОЖЕ БАХАЕТ! Изменено 1 Февраля 2021 пользователем Colder Ссылка на комментарий
gam 117 Опубликовано 1 Февраля 2021 Поделиться Опубликовано 1 Февраля 2021 40 минут назад, Colder сказал(а): function take_item_from_box(box, box_story_id) printf("!!! take item from box %s", tostring(box:is_inv_box_empty())) if box:is_inv_box_empty() == true then get_treasure_manager():treasure_empty(box, box_story_id) local box_name = box:name() printf("-"..box_name) if (math.random() < 0.75) then axr_sounds.play_sound([[weapons\generic_checkout]]) mine_box = box mine_timer = time_global()+3000 end end end function actor_on_update() if (mine_timer) and (mine_timer < time_global()) then local blow_particle = particles_object("explosions\\explosion_mine") blow_particle:play_at_pos(mine_box:position()) local h = hit() h.type = hit.explosion h:bone("bip01_spine") h.power = 1 h.impulse = 2 h.direction = vector():set(0,0,1) h.draftsman = db.actor if db.actor:position():distance_to(mine_box:position()) < 3 then db.actor:hit(h) end mine_timer = nil mine_box = nil end end Жалкий кусок кода. Как нить Вашу конверсию плиз. Ссылка на комментарий
Colder 12 Опубликовано 1 Февраля 2021 Поделиться Опубликовано 1 Февраля 2021 Можно ещё раз? Ссылка на комментарий
gam 117 Опубликовано 1 Февраля 2021 Поделиться Опубликовано 1 Февраля 2021 Только что, gam сказал(а): axr_sounds.play_sound([[weapons\generic_checkout]]) хоть отселя. Ссылка на комментарий
Colder 12 Опубликовано 1 Февраля 2021 Поделиться Опубликовано 1 Февраля 2021 Я не понимаю что ты пишешь. Ссылка на комментарий
gam 117 Опубликовано 1 Февраля 2021 Поделиться Опубликовано 1 Февраля 2021 @Colder Я попробовал сказать выше. Нет возможности полноценно использовать интернет. Поделитесь тем, что Вы использовали в своих наработках. Ссылка на комментарий
Colder 12 Опубликовано 1 Февраля 2021 Поделиться Опубликовано 1 Февраля 2021 (изменено) сейчас https://yadi.sk/d/KSdvyhfZwD7I7Q Изменено 1 Февраля 2021 пользователем Colder Ссылка на комментарий
ARTLantist 14 Опубликовано 1 Февраля 2021 Поделиться Опубликовано 1 Февраля 2021 Не знаю, в ту ли тему я обращаюсь, поэтому заранее извините. Как сделать черный экран вначале игры и постепенно убрать его (типо гг открывает глаза). Всю катсцену сделал, всё работает идеально, но на счёт затемнения нигде не могу найти инфу Ссылка на комментарий
gam 117 Опубликовано 1 Февраля 2021 Поделиться Опубликовано 1 Февраля 2021 @ColderЖелательно скрипт\ конфиг папки с которыми Вы работаете. @Colder function CTreasure:__init() local community = parse_names(utils.cfg_get_string(self.ini, id, "community", nil, false, "", "stalker, bandit, dolg, freedom")) К сожалению нечем оперировать, но возможно некой фракции не хватает? Ссылка на комментарий
Colder 12 Опубликовано 1 Февраля 2021 Поделиться Опубликовано 1 Февраля 2021 Это оригинальный файл! Там только функция добавлена и все! Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти