Звук при использовании предмета — различия между версиями
Материал из S.T.A.L.K.E.R. Inside Wiki
(не показаны 9 промежуточные версии 6 участников) | |||
Строка 1: | Строка 1: | ||
− | + | Создаете скрипт '''имя_файла.script''', туда пишете: | |
− | + | ||
+ | <lua> | ||
function use_snd(obj) | function use_snd(obj) | ||
+ | |||
local obj_sect = obj:section() | local obj_sect = obj:section() | ||
+ | |||
local snd | local snd | ||
+ | |||
if obj_sect == 'ваш предмет' then snd = [[Путь_до_звука_относительно_папки_sounds]] | if obj_sect == 'ваш предмет' then snd = [[Путь_до_звука_относительно_папки_sounds]] | ||
+ | |||
elseif obj_sect == 'ваш предмет' then snd = [[Путь_до_звука_относительно_папки_sounds]] | elseif obj_sect == 'ваш предмет' then snd = [[Путь_до_звука_относительно_папки_sounds]] | ||
+ | |||
elseif obj_sect == 'ваш предмет' then snd = [[Путь_до_звука_относительно_папки_sounds]] | elseif obj_sect == 'ваш предмет' then snd = [[Путь_до_звука_относительно_папки_sounds]] | ||
+ | |||
elseif obj_sect == 'ваш предмет' then snd = [[Путь_до_звука_относительно_папки_sounds]] | elseif obj_sect == 'ваш предмет' then snd = [[Путь_до_звука_относительно_папки_sounds]] | ||
+ | |||
end | end | ||
+ | |||
if snd then | if snd then | ||
+ | |||
local snd_obj = xr_sound.get_safe_sound_object(snd) | local snd_obj = xr_sound.get_safe_sound_object(snd) | ||
+ | |||
snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0) | snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0) | ||
+ | |||
end | end | ||
+ | |||
end | end | ||
+ | </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" | ||
+ | } | ||
+ | (вместо указанных в таблице предметов и звуков разумеется можно указать свои) | ||
− | и в этом | + | 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> | ||
+ | |||
+ | |||
+ | Сохраняем. | ||
+ | |||
+ | Открываем '''bind_stalker.script''' и в функцию ''function actor_binder:net_destroy()'' пишем: | ||
+ | |||
+ | <lua> | ||
+ | self.object:set_callback(callback.use_object, nil) | ||
+ | </lua> | ||
+ | |||
+ | и в функцию ''actor_binder:reinit()'' пишем: | ||
+ | |||
+ | <lua> | ||
+ | self.object:set_callback(callback.use_object, self.use_object, self) | ||
+ | </lua> | ||
+ | |||
+ | и в этом же файле создаем функцию: | ||
+ | |||
+ | <lua> | ||
function actor_binder:use_object(obj) | function actor_binder:use_object(obj) | ||
− | имя_вашего_скрипта.use_snd(obj) | + | имя_вашего_скрипта.use_snd(obj) |
end | end | ||
+ | </lua> | ||
+ | |||
+ | Все, теперь при использовании предмета будет проигрыватся звук. | ||
+ | |||
+ | Автор статьи: batment | ||
+ | |||
+ | Автор скрипта: Nazgool | ||
− | + | Переправка оформления: 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