Skip to main content

[NodeMod Core]

/ .. / default

Class: default

Defined in: src/core/sound.ts:91

Enhanced sound system providing comprehensive audio functionality for the game server. Handles sound emission, validation, and management with improved defaults and error handling.

Example​

// Play a weapon sound
nodemodCore.sound.emitSound({
entity\: player,
channel\: SoundChannel.weapon,
sound\: 'weapons/ak47/ak47-1.wav',
volume\: 0.8,
pitch\: 110
});

// Broadcast ambient sound to all players
nodemodCore.sound.broadcastSound('ambient/music/track1.wav', {
volume\: 0.5,
attenuation\: 0.5
});

// Play client-side sound command
nodemodCore.sound.emitClientSound(player, 'ui/buttonclick');

Constructors​

Constructor​

new default(utilService): NodemodSound

Defined in: src/core/sound.ts:100

Creates a new NodemodSound instance.

Parameters​

utilService​

default

Utility service for entity operations

Returns​

NodemodSound

Properties​

util​

private util: default

Defined in: src/core/sound.ts:93

Utility service for entity operations

Methods​

emitSound()​

emitSound(options): boolean

Defined in: src/core/sound.ts:130

Emits a sound with enhanced validation and default values. Provides better parameter validation and clamping than the basic engine function.

Parameters​

options​

EmitSoundOptions

Sound emission configuration

Returns​

boolean

True if sound was emitted successfully, false otherwise

Example​

// Basic sound emission
nodemodCore.sound.emitSound({
sound\: 'weapons/ak47/ak47-1.wav'
});

// Advanced sound with all options
nodemodCore.sound.emitSound({
entity\: player,
channel\: SoundChannel.weapon,
sound\: 'weapons/ak47/ak47-1.wav',
volume\: 0.8,
attenuation\: 1.5,
flags\: 0, // Normal playback
pitch\: 110
});

emitClientSound()​

emitClientSound(entity, soundName, extension): boolean

Defined in: src/core/sound.ts:178

Sends a client-side sound command to a specific player. Uses the client's spk command to play sounds locally.

Parameters​

entity​

Target player entity or index

number | Entity

soundName​

string

Name of the sound file (with or without extension)

extension​

string = 'wav'

File extension to append if not present in soundName

Returns​

boolean

True if command was sent successfully, false otherwise

Example​

// Play UI sound to player
nodemodCore.sound.emitClientSound(player, 'ui/buttonclick');

// Play custom sound with specific extension
nodemodCore.sound.emitClientSound(player, 'custom/notification', 'mp3');

emitAmbientSound()​

emitAmbientSound(position, sound, volume, attenuation, flags, pitch): boolean

Defined in: src/core/sound.ts:222

Emits an ambient sound at a specific 3D position. Useful for environmental sounds, explosions, or location-based audio.

Parameters​

position​

number[]

3D coordinates [x, y, z] where the sound originates

sound​

string

Path to the sound file

volume​

number = 1.0

Volume level (0.0 to 1.0)

attenuation​

number = 1.0

How quickly sound fades with distance

flags​

number = 0

Sound transmission flags

pitch​

number = 100

Pitch adjustment (1-255, 100 = normal)

Returns​

boolean

True if sound was emitted successfully, false otherwise

Example​

// Explosion sound at coordinates
nodemodCore.sound.emitAmbientSound(
[100, 200, 50],
'weapons/explode1.wav',
0.9,
2.0
);

// Ambient environmental sound
nodemodCore.sound.emitAmbientSound(
[0, 0, 0],
'ambient/wind/wind1.wav',
0.3,
0.5,
nodemod.SND.SPAWNING
);

broadcastSound()​

broadcastSound(sound, options): boolean

Defined in: src/core/sound.ts:261

Broadcasts a sound to all players on the server. Convenient wrapper for playing sounds that everyone should hear.

Parameters​

sound​

string

Path to the sound file

options​

Partial<EmitSoundOptions> = {}

Optional sound configuration overrides

Returns​

boolean

True if sound was broadcast successfully, false otherwise

Example​

// Simple server announcement sound
nodemodCore.sound.broadcastSound('admin/announcement.wav');

// Round start music with custom settings
nodemodCore.sound.broadcastSound('music/roundstart.wav', {
volume\: 0.7,
channel\: SoundChannel.stream,
attenuation\: 0.1
});

stopSound()​

stopSound(entity, channel, sound): boolean

Defined in: src/core/sound.ts:294

Attempts to stop a sound on a specific entity. Uses a workaround by playing a very quiet sound since direct stop may not be available.

Parameters​

entity​

Target entity or entity index

number | Entity

channel​

number = SoundChannel.auto

Audio channel to stop

sound​

string = ''

Specific sound to stop (empty for all sounds on channel)

Returns​

boolean

True if stop attempt was successful, false otherwise

Example​

// Stop all sounds on entity
nodemodCore.sound.stopSound(player);

// Stop weapon channel sounds
nodemodCore.sound.stopSound(player, SoundChannel.weapon);

isValidSound()​

isValidSound(soundPath): boolean

Defined in: src/core/sound.ts:326

Validates whether a sound file path is valid. Checks for supported file extensions and proper format.

Parameters​

soundPath​

string

Path to the sound file to validate

Returns​

boolean

True if the sound path is valid, false otherwise

Example​

// Valid sound files
console.log(nodemodCore.sound.isValidSound('weapons/ak47-1.wav')); // true
console.log(nodemodCore.sound.isValidSound('music/track.mp3')); // true

// Invalid sound files
console.log(nodemodCore.sound.isValidSound('invalid.txt')); // false
console.log(nodemodCore.sound.isValidSound('')); // false

emitMultipleSounds()​

emitMultipleSounds(soundConfigs): SoundResult[]

Defined in: src/core/sound.ts:360

Emits multiple sounds in batch with individual result tracking. Useful for playing multiple sounds simultaneously or handling bulk operations.

Parameters​

soundConfigs​

SoundConfig[]

Array of sound configurations to emit

Returns​

SoundResult[]

Array of results indicating success/failure for each sound

Example​

const sounds = [
{ sound\: 'weapons/ak47/ak47-1.wav', entity\: player1, volume\: 0.8 },
{ sound\: 'weapons/deagle/deagle-1.wav', entity\: player2, volume\: 0.9 },
{ sound\: 'items/ammopickup2.wav', volume\: 0.5 }
];

const results = nodemodCore.sound.emitMultipleSounds(sounds);
results.forEach((result, i) => {
if (result.success) {
console.log(`Sound ${i} played successfully`);
} else {
console.log(`Sound ${i} failed\: ${result.error}`);
}
});