Звук при использовании предмета — различия между версиями — S.T.A.L.K.E.R. Inside Wiki

Звук при использовании предмета — различия между версиями

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

Перейти к: навигация, поиск
 
(не показаны 7 промежуточные версии 4 участников)
Строка 1: Строка 1:
Создаете скрипт: имя_файла.script туда пишете
+
Создаете скрипт '''имя_файла.script''', туда пишете:
  
Код:
+
<lua>
 
+
<ini>
+
 
function use_snd(obj)
 
function use_snd(obj)
  
Строка 29: Строка 27:
  
 
end
 
end
</ini>
+
</lua>
  
Сохраняем.
+
Более компактный вариант: (да простит меня '''Nazgool''', но я уверен, что он и сам бы сделал  именно так:
 +
<lua>
 +
local tSound ={
 +
medkit      = "interface\\inv_medkit",
 +
kolbasa      = "interface\\inv_food",
 +
vodka        = "interface\\inv_vodka",
 +
energy_drink = "interface\\inv_softdrink",
 +
bandage      = "interface\\inv_bandage",
 +
antirad      = "interface\\inv_pills"
 +
}
 +
(вместо указанных в таблице предметов и звуков разумеется можно указать свои)
  
Открываем bind_stalker.script и в функцию function actor_binder:net_destroy() пишем
+
function use_snd(obj)
 +
  if obj and tSound[obj:section()]  then
 +
      local snd = xr_sound.get_safe_sound_object(tSound[obj:section()])
 +
      if snd then
 +
      snd:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 2.0)
 +
      end
 +
  end
 +
end   
 +
</lua>
  
Код:
 
  
<ini>
+
Сохраняем.
self.object:set_callback(callback.use_object, nil)
+
 
</ini>
+
Открываем '''bind_stalker.script''' и в функцию ''function actor_binder:net_destroy()'' пишем:
  
и в функцию actor_binder:reinit() пишем
+
<lua>
 +
    self.object:set_callback(callback.use_object, nil)
 +
</lua>
  
Код:
+
и в функцию ''actor_binder:reinit()'' пишем:
  
<ini>
+
<lua>
self.object:set_callback(callback.use_object, self.use_object, self)
+
    self.object:set_callback(callback.use_object, self.use_object, self)
</ini>
+
</lua>
  
 
и в этом же файле создаем функцию:
 
и в этом же файле создаем функцию:
  
Код:
+
<lua>
<ini>
+
 
function actor_binder:use_object(obj)
 
function actor_binder:use_object(obj)
 
+
    имя_вашего_скрипта.use_snd(obj)
имя_вашего_скрипта.use_snd(obj)
+
 
+
 
end
 
end
</ini>
+
</lua>
  
Все теперь при использовании предмета будет проигрыватся звук.
+
Все, теперь при использовании предмета будет проигрыватся звук.
  
 
Автор статьи: batment
 
Автор статьи: batment
  
Автор скрипта: Gun12
+
Автор скрипта: Nazgool
  
 
Переправка оформления: VIKman
 
Переправка оформления: VIKman
  
 
Слегка подправил ошибки: гопыч
 
Слегка подправил ошибки: гопыч
 +
 +
Второй вариант скрипта:
 +
Erlik
 +
[[Категория:Скрипты]]

Текущая версия на 06:26, 19 августа 2014

Создаете скрипт имя_файла.script, туда пишете:

 
function use_snd(obj)
 
local obj_sect = obj:section()
 
local snd
 
if obj_sect == 'ваш предмет' then snd = [[Путь_до_звука_относительно_папки_sounds]]
 
elseif obj_sect == 'ваш предмет' then snd = [[Путь_до_звука_относительно_папки_sounds]]
 
elseif obj_sect == 'ваш предмет' then snd = [[Путь_до_звука_относительно_папки_sounds]]
 
elseif obj_sect == 'ваш предмет' then snd = [[Путь_до_звука_относительно_папки_sounds]]
 
end
 
if snd then
 
local snd_obj = xr_sound.get_safe_sound_object(snd)
 
snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0)
 
end
 
end
 

Более компактный вариант: (да простит меня Nazgool, но я уверен, что он и сам бы сделал именно так:

 
local tSound ={
medkit       = "interface\\inv_medkit",
kolbasa      = "interface\\inv_food",
vodka        = "interface\\inv_vodka",
energy_drink = "interface\\inv_softdrink",
bandage      = "interface\\inv_bandage",
antirad      = "interface\\inv_pills"
}
(вместо указанных в таблице предметов и звуков разумеется можно указать свои)
 
function use_snd(obj)
   if obj and tSound[obj:section()]  then 
      local snd = xr_sound.get_safe_sound_object(tSound[obj:section()])
      if snd then 
      snd:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 2.0)
      end
   end
end    
 


Сохраняем.

Открываем bind_stalker.script и в функцию function actor_binder:net_destroy() пишем:

 
    self.object:set_callback(callback.use_object, nil)
 

и в функцию actor_binder:reinit() пишем:

 
    self.object:set_callback(callback.use_object, self.use_object, self)
 

и в этом же файле создаем функцию:

 
function actor_binder:use_object(obj)
    имя_вашего_скрипта.use_snd(obj)
end
 

Все, теперь при использовании предмета будет проигрыватся звук.

Автор статьи: batment

Автор скрипта: Nazgool

Переправка оформления: VIKman

Слегка подправил ошибки: гопыч

Второй вариант скрипта: Erlik

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