SoC. Добавление пси-выброса на Янтарь — различия между версиями
Материал из S.T.A.L.K.E.R. Inside Wiki
LaRento (обсуждение | вклад) |
OlegatoR (обсуждение | вклад) м (Откат правок 5.228.2.203 (обсуждение) к версии 178.45.129.153) |
||
(не показаны 14 промежуточные версии 6 участников) | |||
Строка 11: | Строка 11: | ||
<br>Для этого создаём новый скрипт. Пускай <b>yantar_psy_blowout.script</b> и пишем туда: | <br>Для этого создаём новый скрипт. Пускай <b>yantar_psy_blowout.script</b> и пишем туда: | ||
− | <br>< | + | <br><lua>-- Пси-Выброс на Янтаре by Shadows |
+ | function update() | ||
yantar_psy_blowout() | yantar_psy_blowout() | ||
end | end | ||
− | local next_blowout = 0 | + | local next_blowout = 0 -- назначаем локальную переменную для обозначения времени до сл. выброса |
− | local effects_off = 0 | + | local effects_off = 0 -- назначаем локальную переменную для обозначения времени до ост. выброса |
function yantar_psy_blowout() | function yantar_psy_blowout() | ||
− | if level.name()=="l08_yantar" then | + | if level.name()=="l08_yantar" then -- имя локации, на которой будет пси-выброс |
if not has_alife_info("yan_labx16_switcher_3_end") and next_blowout < time_global() then | if not has_alife_info("yan_labx16_switcher_3_end") and next_blowout < time_global() then | ||
− | next_blowout = time_global() + 300000 | + | next_blowout = time_global() + 300000 -- время между пси-выбросами |
− | effects_off = time_global() + 30000 | + | effects_off = time_global() + 30000 -- его длительность |
− | db.actor.psy_health = -0.45 | + | db.actor.psy_health = -0.45 -- количество пси-здоровья, которое отнимается при нём(однако это не работает из-за ошибки автора скрипта) |
− | play_sound([[characters_voice\scenario\yantar\psy_voices_1]]) | + | play_sound([[characters_voice\scenario\yantar\psy_voices_1]]) -- звук при выбросе |
− | play_sound([[ambient\blowout]]) | + | play_sound([[ambient\blowout]]) -- звук при выбросе |
− | level.add_call(yantar_psy_blowout_timer, yantar_psy_blowout_off) | + | level.add_call(yantar_psy_blowout_timer, yantar_psy_blowout_off) -- выполняем проверку, если глобальное время больше времени на остановку выброса, то останавливаем его |
− | level.add_pp_effector("psy_antenna.ppe", 1875, true) | + | level.add_pp_effector("psy_antenna.ppe", 1875, true) -- вызываем эффект пси-излучения |
− | level.add_pp_effector("yantar_underground_psi.ppe", 1876, false) | + | 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\\shell_shock.anm", 396, false, "") -- вызываем эффект камеры |
− | level.add_cam_effector("camera_effects\\earthquake.anm", 397, false, "") | + | level.add_cam_effector("camera_effects\\earthquake.anm", 397, false, "") -- вызываем эффект камеры |
end | end | ||
end | end | ||
Строка 35: | Строка 36: | ||
function yantar_psy_blowout_timer() | function yantar_psy_blowout_timer() | ||
− | return time_global() > effects_off | + | return time_global() > effects_off -- проверяем, что глобальное время больше заданного на остановку пси-выброса |
end | end | ||
function yantar_psy_blowout_off() | function yantar_psy_blowout_off() | ||
− | level.remove_pp_effector(1875) | + | level.remove_pp_effector(1875) -- удаляем эффект |
end | end | ||
Строка 46: | Строка 47: | ||
snd = xr_sound.get_safe_sound_object(sound) | snd = xr_sound.get_safe_sound_object(sound) | ||
snd:play_no_feedback(obj,sound_object.s2d,0,vector(),1.0) | snd:play_no_feedback(obj,sound_object.s2d,0,vector(),1.0) | ||
− | end</ | + | end</lua> |
== Регистрация в bind_stalker.script == | == Регистрация в bind_stalker.script == | ||
− | <br>Открываем <b>bind_stalker.script</b> и | + | <br>Открываем <b>bind_stalker.script</b> и после <br><pre>function actor_binder:update(delta)</pre> |
− | + | <br>Пишем это: | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | <br> | + | |
<br><pre>yantar_psy_blowout.update()</pre> | <br><pre>yantar_psy_blowout.update()</pre> | ||
<br>Всё, готово. Правда вам необходимо добавить звук <b>blowout.ogg</b> | <br>Всё, готово. Правда вам необходимо добавить звук <b>blowout.ogg</b> | ||
− | |||
− | |||
− | |||
− |
Текущая версия на 22:00, 28 декабря 2016
В этот туторе я хочу объяснить, как добавить похожий пси-выброс на Янтарь как в ЧН. Правда есть один недостаток. Он появляется всегда в начале, как загружаешь любой сейв на Янтаре, но думаю,
это не сильный недостаток. Автор не я, благодарность Shadows за скрипт выброса из его "Shadows Addon" aka Phantoms Zone.
Автор статьи: LaRento
Автор скрипта: Shadows
Ну что ж, начнём.
Создаём функцию пси-выброса
Для этого создаём новый скрипт. Пускай yantar_psy_blowout.script и пишем туда:
-- Пси-Выброс на Янтаре by Shadows 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 и после
function actor_binder:update(delta)
Пишем это:
yantar_psy_blowout.update()
Всё, готово. Правда вам необходимо добавить звук blowout.ogg