Здесь задают вопросы и получают на них ответы. Прежде чем задать вопрос, воспользуйтесь поиском по разделу, ответ на него, вероятно, уже есть.
Если у вас произошёл вылет, проверьте лог и поищите информацию об ошибке в справочнике. Также будет полезно посмотреть справочник ошибок. Если у Вас вылетает какой-то мод, то следует написать в тему этого мода.
Грамотно оформляйте свой пост, чётко доносите суть своего вопроса (ответа).
Благодарность выражаем в личке или же ставим плюсик в историю репутации. Подобные посты будут удаляться.
Я это давно реализовал в двух модах: Время Альянса - защита Кордона от мутантов и Связь Времен - атака в Припяти О-сознания, засевшего в Юбилейном. Там посмотрите как это сделано.
Ясно, посмотрю.
Попробовал использовать параметр combat_ignore_cond = true, но нпс все равно атакует с любого расстояния. Может я что-то упустил?
Цитатаmakdm ()
решение есть в модах
Вы сказали, что сделали это в модах Связь Времен и Время Альянса, я видел, добротно сделано. Но я не понимаю, как у вас это реализовано. Вы можете объяснить? Основную функцию я нашел в stalker_generic.script, мод Время Альянса. В Связи Времен лежит в update_callbacks.script. Вызывается, как я понял, в логике через npc_health = true. Функцию обновления полоски нашел в xr.motivator.script, но остальные зависимости, которых нет в оригинальном ЗП найти не смог.
Код
------------------------------Выводим полоску жизни NPC на худ--------------------------------- ---------------------Одновременно можно вывести девять полосок жизни--------------------------- ---------------------------------------NPC_HEALTH---------------------------------------------- -------------------------------makdm, 2013 for gladiator Addon---------------------------------
local npc_st = db.storage[npc:id()] local npc_heal = utils.cfg_get_string( npc_st.ini, npc_st.active_section, "npc_health", npc, false, "", nil) local number = utils.cfg_get_string( npc_st.ini, npc_st.active_section, "number_health", npc, false, "", nil)
if npc_heal == nil or number == nil then return end
if tonumber( number ) > 9 then return end
local npc_name_text = "npc_name_text_"..tostring( number ) local cs_heli_health = "cs_heli_health_"..tostring( number ) local npc_healt = xr_logic.parse_condlist(npc, "npc_health", "npc_health", npc_heal) local npc_health = xr_logic.pick_section_from_condlist(db.actor, npc, npc_healt) == "true" local npc_name = npc:character_name()
if npc_health == true and table_health[tonumber( number )] == "true" then local hud = get_hud() local custom_static = hud:GetCustomStatic(cs_heli_health) if custom_static == nil then local xml = CScriptXmlInit() xml:ParseFile("heli_progress.xml") hud:AddCustomStatic(cs_heli_health, true) local st = hud:GetCustomStatic(cs_heli_health) local w = st:wnd() table_heli_progress[tonumber( number )] = xml:InitProgressBar ("heli_health", w )
hud:AddCustomStatic(npc_name_text, true) local name_text = hud:GetCustomStatic(npc_name_text):wnd() name_text:TextControl():SetTextST(npc_name)
else local _progr = npc.health*100 if _progr > 0 then table_heli_progress[tonumber( number )]:Show(true) table_heli_progress[tonumber( number )]:SetProgressPos(_progr) else table_heli_progress[tonumber( number )]:Show(false) hud:RemoveCustomStatic(cs_heli_health) hud:RemoveCustomStatic(npc_name_text) table_health[tonumber( number )] = "false" end end end
if npc_health == false and table_health[tonumber( number )] == "true" then local hud = get_hud() local custom_static = hud:GetCustomStatic(cs_heli_health) if custom_static ~= nil then hud:RemoveCustomStatic(cs_heli_health) hud:RemoveCustomStatic(npc_name_text) end end
end ---------------------------------------------------------------------------------------------------- ------------------------------------------makdm_end------------------------------------------------- ----------------------------------------------------------------------------------------------------
Сообщение отредактировал alexx556 - Среда, 04.03.2020, 02:53
Добро. Можно ли сделать проверку, проигрывается ли в данный момент конкретный звук? И проверка должна быть не через логику рестриктора, а внутри скрипта.
Вечер добрый! Не подскажите, есть ли возможность изменить материал объекта на локации без вмешательства в СДК, точнее без компиляции? Позаимствовал подземную локацию из "Doomed to Eternal Torment", но там есть решетка с материалом воды, при чем в таком месте, что не заметить очень трудно. Не хотелось бы перекомпилировать всю локацию из-за такой мелочи, компьютер будет долго на максимальном качестве компилировать, тем более, не могу найти некоторые текстуры, нужные для компиляции.
Если нельзя, то посоветуйте какую-нибудь лабораторию коридорного типа для перестрелок. Заранее спасибо!
Сообщение отредактировал AziatkaVictor - Суббота, 07.03.2020, 22:31
AziatkaVictor, насколько знаю, это без перекомпила не лечится. А насчёт уровня - я кажется знаю о какой локации идёт речь. Или ошибаюсь? UPD: а хотя стоп - это локация сама такая с "водяной решёткой", а не только в том моде. В любом случае, в том же разделе куча локаций на любую хотелку.
Сообщение отредактировал Prostomod - Суббота, 07.03.2020, 23:13
AziatkaVictor, это то место, где игрок проваливается в решетку? посмотрел я в 3д редакторе, там нормали полигонов решетки повернуты не в ту сторону, в связи с чем мы и проваливаемся. Проблема не в материале.
Красный цвет = камера смотрит на обратную сторону нормали
Добавлено (07.03.2020, 23:27) --------------------------------------------- Я бы на вашем месте поставил туда какой-то динамический объект, по которому игрок пройдет это место
Сообщение отредактировал molodoy_chelovek - Суббота, 07.03.2020, 23:25
molodoy_chelovek, она активирована, но все равно, там ведь материал вода. Вообщем, положу доски и буду надеяться, что не будет умных людей, которые захотят пролезть туда, куда не надо.