Как добавить предмету звук при использовании

Материал из Modders-wiki - Библиотека знаний модмейкеров S.T.A.L.K.E.R.
Перейти к: навигация, поиск
Unpack.pngТребуется распакованная gamedata
Перед тем, как приступить, предварительно распакуйте игровые архивы.
Без наличия оригинальных файлов, внести в них изменения не получится!


Как добавить предмету звук при использовании
How add item use sound.png
Описание
АвторыNazgool, Erlik
Соавторbatment
Тип статьируководство
АктуальностьТЧ, ЧН, ЗП
Необходимый софтТекстовый редактор
Необходимые файлыbind_stalker.script

Чтобы добавить предмету звук при его использовании, нужно подключить к файлу bind_stalker.script специальный скрипт, и настроить его соответственно[1].

Путь: gamedata\scripts\
Создайте в нем с помощью любого текстового редактора скрипт имя_файла.script, и вставьте в него один из представленных ниже вариантов кода скрипта.

Основной

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

Наиболее предпочтителен, т.к. более удобен и прост.

Альтернативный

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

Менее предпочтительный по обратным от основного причинам.


Сохраните скрипт.

Откройте 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

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

Источник