Fenrir02 199 Опубликовано 10 Мая 2018 Доброго времени! Подскажите, возможно ли скриптом проверить, идёт ли дождь на локации? Если можно, то каким образом? Заранее спасибо! Важнейшая задача цивилизации - научить человека мыслить. Поделиться этим сообщением Ссылка на сообщение
Fenrir02 199 Опубликовано 11 Октября 2018 Подскажите, есть такая функция: Скрытый текст local item_in_slot_9 = db.actor:item_in_slot(9) if item_in_slot_9 then local t = item_in_slot_9:condition() item_in_slot_9:set_condition(t - 0.0001) if item_in_slot_9:condition() <0.01 then alife():release(alife():object(item_in_slot_9:id())) end end Если повесить её на апдейт, то предмет в соответствующем слоте со временем будет изменять состояние. Проверил, всё работает, только после загрузки сейва состояние сбрасывается. Как сохранить состояние этого предмета после загрузки? Заранее благодарю! Важнейшая задача цивилизации - научить человека мыслить. Поделиться этим сообщением Ссылка на сообщение
Fenrir02 199 Опубликовано 11 Октября 2018 (изменено) @AndreySol, Фонарик ( 9 слот ). Изменено 11 Октября 2018 пользователем Fenrir02 Важнейшая задача цивилизации - научить человека мыслить. Поделиться этим сообщением Ссылка на сообщение
Fenrir02 199 Опубликовано 11 Октября 2018 58 минут назад, AndreySol сказал: для фонарика не предусмотрено сохранение изменения состояния А какие предметы сохраняют состояние? Важнейшая задача цивилизации - научить человека мыслить. Поделиться этим сообщением Ссылка на сообщение
Fenrir02 199 Опубликовано 16 Октября 2018 Имеется такая функция: Скрытый текст local sprint = false local last_active_item_id = 0 function actor_binder:hud_sprint_animation() local active_item = self.object:active_item() if active_item and last_active_item_id ~= active_item:id() then last_active_item_id = active_item:id() sprint = false end if active_item and (active_item:is_knife() or active_item:is_missile()) then if (active_item:get_hud_item_state() == 0 and active_item:is_knife()) or (active_item:get_hud_item_state() == 2 and active_item:is_missile()) then if self.object:is_actor_sprinting() then if not sprint then active_item:play_hud_animation(system_ini():r_string(active_item:section().."_hud", "anim_idle_sprint"), true) sprint = true end elseif sprint then active_item:play_hud_animation(system_ini():r_string(active_item:section().."_hud", "anim_idle"), true) sprint = false end elseif sprint then sprint = false end end end Она должна включать анимации спринта для ножа, бинокля, гранат, болта. Но без правок движка в скриптах нет такого метода "is_knife()" или "is_missile()". Можно ли как-нибудь переделать функцию для работы без правки движка? Важнейшая задача цивилизации - научить человека мыслить. Поделиться этим сообщением Ссылка на сообщение
Fenrir02 199 Опубликовано 3 Ноября 2018 Здравствуйте! Подскажите, какой функцией можно включать/выключать фонарик в X-Ray extensions? И как подключить коллбэк на изменение состояния фонарика? Важнейшая задача цивилизации - научить человека мыслить. Поделиться этим сообщением Ссылка на сообщение
Fenrir02 199 Опубликовано 3 Ноября 2018 @Graff46, уже три раза перечитал эту статью. Не могу понять, как использовать эти функции: switch_torch(bool<switch_on>) -- переключает фонарь bool<is_on> is_torch_enabled() -- возвратит true, если фонарь включён Важнейшая задача цивилизации - научить человека мыслить. Поделиться этим сообщением Ссылка на сообщение
Fenrir02 199 Опубликовано 17 Ноября 2018 (изменено) @Romann Здравствуйте! Как вариант, можно однократно вызвать сообщение с помощью инфопоршня: Скрытый текст local current_outfit = db.actor:item_in_slot(7) if current_outfit then if not has_alife_info("check_outfit") then db.actor:give_info_portion("check_outfit") -- Здесь одноразовое срабатывание при надевании костюма end local outfit_section = current_outfit:section() if outfit_properties[outfit_section] then outfit_protection = outfit_properties[outfit_section] end else if has_alife_info("check_outfit") then db.actor:disable_info_portion("check_outfit") news_manager.send_tip(db.actor, "%c[250, 0, 255, 0]".."Б-р-р-р, прохладно.", nil, nil, nil) -- Здесь одноразовое срабатывание при снятии костюма end end Изменено 17 Ноября 2018 пользователем Fenrir02 1 1 Важнейшая задача цивилизации - научить человека мыслить. Поделиться этим сообщением Ссылка на сообщение
Fenrir02 199 Опубликовано 18 Ноября 2018 Из X-Ray extensions: send_event_key_press(int<DIK_keys>) - имитация события нажатия кнопки Как именно применить это на практике? Допустим, при нажатии клавиши F3 нужно вызвать какое-то действие. Как это сделать? Важнейшая задача цивилизации - научить человека мыслить. Поделиться этим сообщением Ссылка на сообщение
Fenrir02 199 Опубликовано 22 Ноября 2018 И снова здравствуйте! Подскажите, как с помощью скрипта разжечь костёр, к которому подходит ГГ на определённое расстояние? Важнейшая задача цивилизации - научить человека мыслить. Поделиться этим сообщением Ссылка на сообщение
Fenrir02 199 Опубликовано 22 Ноября 2018 @Overfirst Нет, не в ЗП. Мне нужно для ТЧ, а там биндера костров нет. 1 Важнейшая задача цивилизации - научить человека мыслить. Поделиться этим сообщением Ссылка на сообщение
Fenrir02 199 Опубликовано 22 Ноября 2018 Да, этот мод у меня как раз и стоит. Функция, которая разжигает костёр при присутствии хотя бы одного НПС такая: Скрытый текст function CKampManager:increasePops(npc) self.population = self.population + 1 local camp_name = camp_tbl[self.kamp_name] if self.population == 1 and camp_name then local flame_name = camp_name.flame local light_name = camp_name.light kamps_info[self.kamp_name] = nil if not kamps_info[self.kamp_name] then kamps_info[self.kamp_name] = {} kamps_info[self.kamp_name].time = time_global() kamps_info[self.kamp_name].prtcl = nil kamps_info[self.kamp_name].state = nil end for i,o in pairs(level_objs) do local obj = o if obj and obj:name() == flame_name then kamps_info[self.kamp_name].obj_fire = obj obj:enable_anomaly() end if obj and obj:name() == light_name then kamps_info[self.kamp_name].obj_light = obj end end end end (файл xr_kamp.script) А вот как сделать проверку на приближение ГГ к костру ума не приложу... Важнейшая задача цивилизации - научить человека мыслить. Поделиться этим сообщением Ссылка на сообщение
Fenrir02 199 Опубликовано 22 Ноября 2018 @Romann Я думал об этом, тем более это даже более логично. Но возможно ли реализовать данную фичу на ТЧ? Важнейшая задача цивилизации - научить человека мыслить. Поделиться этим сообщением Ссылка на сообщение
Fenrir02 199 Опубликовано 25 Ноября 2018 Как можно заставить этот статик мигать - Скрытый текст hud = get_hud() act = db.actor if act.health < 0.8 and act.health > 0.4 then hud:AddCustomStatic("hud_health_static", true):wnd():SetColor(GetARGB(255,0,255,0)) else hud:RemoveCustomStatic("hud_health_static") end Важнейшая задача цивилизации - научить человека мыслить. Поделиться этим сообщением Ссылка на сообщение
Fenrir02 199 Опубликовано 28 Ноября 2018 Имеется такая функция рандомного удаления предметов из инвентаря: function release_random_item(num) local actor = db.actor local cnt = actor:object_count() if cnt < num then return end for i=1,num do local item = actor:object(math.random(0, cnt-1)) local sobj = alife():object(item:id()) if sobj then alife():release(sobj,true) cnt = actor:object_count() end end end Помогите сделать таблицу предметов, которые нельзя удалять. Важнейшая задача цивилизации - научить человека мыслить. Поделиться этим сообщением Ссылка на сообщение
Fenrir02 199 Опубликовано 28 Ноября 2018 5 минут назад, Graff46 сказал: Как предметы указывать будите? (ид, имя секции, .... ?) Имя секции. Важнейшая задача цивилизации - научить человека мыслить. Поделиться этим сообщением Ссылка на сообщение
Fenrir02 199 Опубликовано 11 Декабря 2018 @Stalex Если этот биндер составлен правильно, нужно его подключать не в скриптах, а в конфиге самого предмета. К примеру, в секции [bread] необходимо прописать строку: script_binding = bind_item.init Таким способом можно на что угодно делать биндеры. Важнейшая задача цивилизации - научить человека мыслить. Поделиться этим сообщением Ссылка на сообщение
Fenrir02 199 Опубликовано 16 Декабря 2018 @Gorlomi Не нужно править таймеры выброса. Он будет работать и при таймфакторе 500. Эта строка запускает таймер выброса в игровом времени. amk.g_start_timer("blowout",0,0,3,2) g_start_timer(name,delay_d,delay_h,delay_m,action) name - имя таймера delay_d - задержка в днях delay_h - задержка в часах delay_m - задержка в минутах Важнейшая задача цивилизации - научить человека мыслить. Поделиться этим сообщением Ссылка на сообщение
Fenrir02 199 Опубликовано 19 Апреля 2019 Добрый день! Подскажите, по каким причинам НПС могут самостоятельно переходить в оффлайн, находясь при этом в радиусе switch_distance актора? Пробовал принудительно выталкивать непися в онлайн таким способом: for a = 1, 65535 do local obj = alife():object( a ) if obj then local obj_name = obj:name() if string.find( obj_name, "esc_vagon_wounded" ) then log3( "~ [%s]: found [%s]", script_name(), obj_name ) alife():set_switch_online( obj.id, true ) alife():set_switch_offline( obj.id, false ) end end end Но ничего не выходит. Важнейшая задача цивилизации - научить человека мыслить. Поделиться этим сообщением Ссылка на сообщение
Fenrir02 199 Опубликовано 19 Апреля 2019 1 час назад, aromatizer сказал: граничной дистанции Я имел ввиду, что подхожу к НПС вплотную, а его нет в онлайне вообще, но знаю, что он существует, так как метку на него можно поставить. Важнейшая задача цивилизации - научить человека мыслить. Поделиться этим сообщением Ссылка на сообщение