0

私は最近、Source-Engine Gameの Garry's Mod で、デフォルト ディレクトリから効果音を置き換えるプログラムのコーディングを開始しました。

これは現在のコードです:

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

.wav複数のサウンド効果を、重複せずにランダムに選択せずに放出したい。

インターネット上で支援するのに十分なソースが見つからなかったので、Stack Overflow に頼りました。このトピックに関する支援をいただければ幸いです。

4

1 に答える 1

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

出典:個人的な経験

于 2015-04-20T10:09:20.377 に答える