Сповіщення
Очистити все

SoC. Додавання пси-шторму на Янтар


Ранг:
Майстер
Роль:
Гість
Записи:
752
Приєднався:
2 роки тому
 

У цьому туторі я хочу пояснити, як додати схожий пси-викид на бурштин як у ЧН. Щоправда, є один недолік. Він з'являється завжди на початку, як завантажуєш будь-який сейв на Янтарі, але гадаю, це не сильний недолік. Автор не я, подяка 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 + 300000 -- час між пси-викидами 
effects_off = time_global ( ) + 30000 -- його тривалість 
db.actor.psy_health = -0.45 -- кількість псі-здоров'я 
, яке забирається при ньому ( [ [ characters_voice\scenario\yantar\psy_voices_1 ] ] ) - звук при викиді 
play_sound ( [ [ ambient\blowout ] ] ) - звук при викиді 
level.add_call ( yantar_psy_blowout_timer , якщо часу на зупинку викиду, то зупиняємо його level.add_pp_effector ( " 
psy_antenna.ppe " , 1875 , true ) - викликаємо ефект пси-випромінювання 
level.add_pp_effector ( "yantar_underground_psi.ppe" , 1876 
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 )

Реєстрація в bind_stalker.script

Відкриваємо bind_stalker.script і після

function actor_binder:update(delta)

Пишемо це:

 

yantar_psy_blowout.update()

   
Цитата