Garry's Mod Wiki

Revision Difference

GM:EntityEmitSound#528847

<function name="EntityEmitSound" parent="GM" type="hook"> <ishook>yes</ishook> <description> Called whenever a sound has been played. This will not be called clientside if the server played the sound without the client also calling <page>Entity:EmitSound</page>. <bug issue="1021">This is not called for scripted sequences.</bug> </description> <realm>Shared</realm> <predicted>No</predicted> <args> <arg name="data" type="table">Information about the played sound. Changes done to this table can be applied by returning true from this hook. <arg name="data" type="table">Information about the played sound. Changes done to this table can be applied by returning `true` from this hook. See <page>Structures/EmitSoundInfo</page>.</arg> </args> <rets> <ret name="" type="boolean">Return true to apply all changes done to the data table. Return false to prevent the sound from playing. Return nil or nothing to play the sound without altering it.</ret> <ret name="" type="boolean"> * Return `true` to apply all changes done to the data table. * Return `false` to prevent the sound from playing. * Return `nil` or nothing to play the sound without altering it. </ret> </rets> </function> <example> <description>Slows down all sounds to reflect <page>game.SetTimeScale</page>.</description> <code> hook.Add( "EntityEmitSound", "TimeWarpSounds", function( t ) local cheats = GetConVar( "sv_cheats" ) local timeScale = GetConVar( "host_timescale" ) hook.Add( "EntityEmitSound", "TimeWarpSounds", function( t ) local p = t.Pitch if ( game.GetTimeScale() ~= 1 ) then p = p * game.GetTimeScale() end if ( GetConVarNumber( "host_timescale" ) ~= 1 && GetConVarNumber( "sv_cheats" ) >= 1 ) then p = p * GetConVarNumber( "host_timescale" ) if ( timeScale:GetInt() ~= 1 and cheats >= 1 ) then p = p * timeScale:GetInt() end if ( p ~= t.Pitch ) then t.Pitch = math.Clamp( p, 0, 255 ) return true end if ( CLIENT and engine.GetDemoPlaybackTimeScale() ~= 1 ) then t.Pitch = math.Clamp( t.Pitch * engine.GetDemoPlaybackTimeScale(), 0, 255 ) return true end end ) </code> </example> </example>