Garry's Mod Wiki


  CSoundPatch CreateSound( Entity targetEnt, string soundName, CRecipientFilter filter = nil )


Returns a sound parented to the specified entity.

You can only create one CSoundPatch per audio file, per entity at the same time.


1 Entity targetEnt
The target entity.
2 string soundName
The sound to play.
3 CRecipientFilter filter = nil
A CRecipientFilter of the players that will have this sound networked to them.

If not set, the default is a CPASAttenuationFilter.

This argument only works serverside.


1 CSoundPatch
The sound object


Play a sound everywhere, similar to surface.PlaySound but available clientside and serverside.

local LoadedSounds if CLIENT then LoadedSounds = {} -- this table caches existing CSoundPatches end local function ReadSound( FileName ) local sound local filter if SERVER then filter = RecipientFilter() filter:AddAllPlayers() end if SERVER or !LoadedSounds[FileName] then -- The sound is always re-created serverside because of the RecipientFilter. sound = CreateSound( game.GetWorld(), FileName, filter ) -- create the new sound, parented to the worldspawn (which always exists) if sound then sound:SetSoundLevel( 0 ) -- play everywhere if CLIENT then LoadedSounds[FileName] = { sound, filter } -- cache the CSoundPatch end end else sound = LoadedSounds[FileName][1] filter = LoadedSounds[FileName][2] end if sound then if CLIENT then sound:Stop() -- it won't play again otherwise end sound:Play() end return sound -- useful if you want to stop the sound yourself end -- When we are ready, we play the sound: ReadSound( "phx/hmetal1.wav" )