2015-04-19 3 views
0

Я недавно начал кодирование программы, которая заменит звуковые эффекты из каталога по умолчанию, в Source-Engine Game, Garry's Mod.Как выбрать случайный файл .wav/.mp3 из папки с модным Garry?

Это текущий код:

function GM:PlayerFootstep(ply, pos, foot, sound, volume, rf) 
    ply:EmitSound("gear1") 
    return true 
end 

Я хочу, чтобы излучать несколько .wav звуковых эффектов, без них перекрываются, и выбирается случайным образом.

Я не нашел источник, достаточно полезный в Интернете, чтобы помочь, поэтому я прибегал к переполнению стека. Буду признателен за помощь в этой теме.

ответ

0

Для этого вам нужно посмотреть функцию file.Find.

Я бы рекомендовал создать пользовательскую папку, такую ​​как sound/customsteps/, где вы можете поместить все свои собственные звуки. Я бы также рекомендовал использовать формат .wav для звуковых файлов, но некоторые другие работают (.mp3 и .ogg, если я правильно помню).

В своем коде, просто вызовите local snds=file.Find("sound/customsteps/*", "GAME"), который дает вам таблицу, то вы можете просто выбрать случайный из списка, используя local snd=snds[math.random(1,#snds)] и играть, как вы делаете в коде выше - ply:EmitSound(snd).

Убедитесь, что вы создали таблицу звуков вне функции GM:PlayerFootstep, так что она запускается только один раз. Я также рекомендовал бы пресечь все звуки. Вы можете сделать это с помощью цикла через стол и вызова util.PrecacheSound(path) на них, например, так:

for k,v in pairs(snds) do 
    util.PrecacheSound(v) 
end 

Таким образом, со всем, что в виду - ваш окончательный код должен выглядеть следующим образом:

local snds=file.Find("sound/customsteps/*", "GAME") 
for k,v in pairs(snds) do 
    util.PrecacheSound(v) 
end 

function GM:PlayerFootstep(ply, pos, foot, sound, volume, rf) 
    ply:EmitSound(snds[math.random(1,#snds)]) 
    return true 
end 

Источник : personal experience

 Смежные вопросы

  • Нет связанных вопросов^_^