如何从Garry的mod文件夹中选择随机的.wav / .mp3文件?

时间:2015-04-19 09:43:40

标签: audio lua garrys-mod

我最近开始编写一个程序来替换默认目录中的声音效果,在 Source-Engine Game ,Garry的Mod。

这是当前的代码:

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

我希望发出多个.wav音效,不会重叠,并随机选择。

我没有在互联网上找到任何有用的帮助,所以我采用了Stack Overflow。 我很感激对该主题的帮助。

1 个答案:

答案 0 :(得分:0)

您想要查看file.Find功能。

我建议您使用自定义文件夹,例如sound/customsteps/,您可以在其中放置所有自定义声音。我还建议对声音文件使用.wav格式,但如果我没记错的话,其他一些可以正常工作(.mp3.ogg

在您的代码中,只需拨打local snds=file.Find( "sound/customsteps/*", "GAME" )即可为您提供表格,然后您只需使用local snd=snds[math.random(1,#snds)]从列表中选择一个随机的,然后按照您在上面的代码中进行播放 - {{ 1}}。

确保在ply:EmitSound(snd)函数之外创建声音表,以便它只运行一次。我还建议预先清除所有声音。您可以通过遍历表并在其上调用GM:PlayerFootstep来完成此操作,如下所示:

util.PrecacheSound(path)

所以,考虑到所有这些 - 你的最终代码应该是这样的:

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

来源:personal experience