SoC. Добавление пси-выброса на Янтарь — различия между версиями — S.T.A.L.K.E.R. Inside Wiki

SoC. Добавление пси-выброса на Янтарь — различия между версиями

Материал из S.T.A.L.K.E.R. Inside Wiki

Перейти к: навигация, поиск
м (Откат правок 5.228.2.203 (обсуждение) к версии 178.45.129.153)
 
(не показаны 15 промежуточные версии 7 участников)
Строка 1: Строка 1:
[[Категория:Скрипты]]В этот туторе я (Valeras(Добряк)) хочу объяснить, как добавить похожий пси-выброс на Янтарь как в ЧН. Правда есть один недостаток. Он появляется всегда в начале, как загружаешь любой сейв на Янтаре, но думаю,
+
[[Категория:Скрипты]]В этот туторе я хочу объяснить, как добавить похожий пси-выброс на Янтарь как в ЧН. Правда есть один недостаток. Он появляется всегда в начале, как загружаешь любой сейв на Янтаре, но думаю,
 
это не сильный недостаток. Автор не я, благодарность <b>Shadows</b> за скрипт выброса из его <b>"Shadows Addon"</b> aka <b>Phantoms Zone</b>.
 
это не сильный недостаток. Автор не я, благодарность <b>Shadows</b> за скрипт выброса из его <b>"Shadows Addon"</b> aka <b>Phantoms Zone</b>.
 +
<br>Автор статьи: <b>LaRento</b>
 +
<br>Автор скрипта: <b>Shadows</b>
  
 
<br>Ну что ж, начнём.
 
<br>Ну что ж, начнём.
Строка 9: Строка 11:
  
 
<br>Для этого создаём новый скрипт. Пускай <b>yantar_psy_blowout.script</b> и пишем туда:
 
<br>Для этого создаём новый скрипт. Пускай <b>yantar_psy_blowout.script</b> и пишем туда:
<br><pre>function update()
+
<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
Строка 33: Строка 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
  
Строка 44: Строка 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</pre>
+
end</lua>
  
 
== Регистрация в bind_stalker.script ==
 
== Регистрация в bind_stalker.script ==
  
  
<br>Открываем <b>bind_stalker.script</b> и находим <br><pre>--' Вывод сообщения о большой радиации
+
<br>Открываем <b>bind_stalker.script</b> и после <br><pre>function actor_binder:update(delta)</pre>
if self.object.radiation >= 0.7 then
+
<br>Пишем это:
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</pre>
+
<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>
 
<br>Качаем его отсюда http://rusfolder.com/33743634
 
и добавляем в <i>sounds/ambient</i>
 
<br>Всё, готово. Идите и проверяйте!) Удачи.
 

Текущая версия на 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

Другие места
LANGUAGE