В этот туторе я хочу объяснить, как добавить похожий пси-выброс на Янтарь как в ЧН. Правда есть один недостаток. Он появляется всегда в начале, как загружаешь любой сейв на Янтаре, но думаю, это не сильный недостаток. Автор не я, благодарность Валерию Доброву. Автор: Valeras(Добряк)
Ну что ж, начнём.
Создаём функцию пси-выброса
Для этого создаём новый скрипт. Пускай yantar_psy_blowout.script и пишем туда:
function update() yantar_psy_blowout() end
local next_blowout = 0 local effects_off = 0 function yantar_psy_blowout() if level.name()=="l08_yantar" then ; имя локации, на которой будет пси-выброс if not has_alife_info("yan_labx16_switcher_3_end") and next_blowout < time_global() then next_blowout = time_global() + 300000 ; время между пси-выбросами effects_off = time_global() + 30000 ; его длительность db.actor.psy_health = -0.45 ; количество здоровья, которое отнимается при нём play_sound([[characters_voice\scenario\yantar\psy_voices_1]]) ; ссылка на звук во время пси-выброса play_sound([[ambient\blowout]]) ; звук начала выброса level.add_call(yantar_psy_blowout_timer, yantar_psy_blowout_off) level.add_pp_effector("psy_antenna.ppe", 1875, true) level.add_pp_effector("yantar_underground_psi.ppe", 1876, false) level.add_cam_effector("camera_effects\\shell_shock.anm", 396, false, "") level.add_cam_effector("camera_effects\\earthquake.anm", 397, false, "") end end end
function yantar_psy_blowout_timer() return time_global() > effects_off end
function yantar_psy_blowout_off() level.remove_pp_effector(1875) end
function play_sound(sound,obj) if obj == nil then obj = db.actor end snd = xr_sound.get_safe_sound_object(sound) snd:play_no_feedback(obj,sound_object.s2d,0,vector(),1.0) end
Регистрация в bind_stalker.script
Открываем bind_stalker.script и пишем после этого:
--' Вывод сообщения о большой радиации if self.object.radiation >= 0.7 then local hud = get_hud() local custom_static = hud:GetCustomStatic("cs_radiation_danger") if custom_static == nil then hud:AddCustomStatic("cs_radiation_danger", true) hud:GetCustomStatic("cs_radiation_danger"):wnd():SetTextST("st_radiation_danger") end else local hud = get_hud() local custom_static = hud:GetCustomStatic("cs_radiation_danger") if custom_static ~= nil then hud:RemoveCustomStatic("cs_radiation_danger") end end
Это:
yantar_psy_blowout.update()
Всё, готово. Правда вам необходимо добавить звук blowout.ogg
Качаем его отсюда http://rusfolder.com/33743634 и добавляем в sounds/ambient Всё, готово. Идите и проверяйте!) Удачи.
Сообщение отредактировал LaRento - Четверг, 22.11.2012, 18:53
Добавлено (15.12.2012, 20:56) --------------------------------------------- Expression : fatal error Function : CScriptEngine::lua_error File : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp Line : 73 Description : <no expression> Arguments : LUA error: ...:\s.t.a.l.k.e.r\gamedata\scripts\bind_stalker.script:430: attempt to index global 'yantar_psy_blowout' (a nil value)
Добавлено (15.12.2012, 21:06) --------------------------------------------- а все, сунул после "Загружаем настройки дропа" и все заработало, есть 1 минус, выброс отнимет чуть пси хп, при начале и всё, дальше оно пси здоровье восстанавливается во время выброса(