2015-04-19 27 views
0

我最近開始編碼一個程序,將取代默認目錄中的聲音效果,在Garry's Mod中的Source-Engine Game如何從Garry的mod文件夾中選擇隨機的.wav/.mp3文件?

這是當前的代碼:

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

相關問題