Звук при использовании предмета — различия между версиями
Материал из S.T.A.L.K.E.R. Inside Wiki
| (не показаны 7 промежуточные версии 4 участников) | |||
| Строка 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> | ||
| − | |||
| − | + | Сохраняем. | |
| − | + | ||
| − | + | Открываем '''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) | + | 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 | Автор статьи: batment | ||
| − | Автор скрипта: | + | Автор скрипта: 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