Звук при использовании предмета — различия между версиями
Материал из S.T.A.L.K.E.R. Inside Wiki
Vikman (обсуждение | вклад) |
|||
(не показаны 8 промежуточные версии 5 участников) | |||
Строка 1: | Строка 1: | ||
− | + | Создаете скрипт '''имя_файла.script''', туда пишете: | |
− | + | <lua> | |
− | + | ||
− | < | + | |
function use_snd(obj) | function use_snd(obj) | ||
Строка 29: | Строка 27: | ||
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> | ||
− | |||
− | + | Сохраняем. | |
− | + | ||
− | + | ||
− | и в функцию actor_binder: | + | Открываем '''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) | ||
+ | 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