CreateSound

From Garry's Mod
Jump to: navigation, search
 CreateSound( )

Contents

Description

Returns a sound parented to the specified entity.

NOTE

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

Arguments

Entity targetEnt

The target entity.

Arguments

string soundName

The sound to play.

Arguments

CRecipientFilter filter=CPASAttenuationFilter

A CRecipientFilter of the players that will have this sound networked to them.

NOTE

This argument only works serverside.

Returns

CSoundPatch

The sound object

Examples

Example

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" )


Personal tools
Navigation