diff --git a/Templates/BaseGame/game/core/clientServer/scripts/server/audio.tscript b/Templates/BaseGame/game/core/clientServer/scripts/server/audio.tscript index 67b2fbf5e..627701371 100644 --- a/Templates/BaseGame/game/core/clientServer/scripts/server/audio.tscript +++ b/Templates/BaseGame/game/core/clientServer/scripts/server/audio.tscript @@ -38,3 +38,10 @@ function ServerPlay3D(%profile,%transform) ClientGroup.getObject(%idx).play3D(%profile,%transform); } +function ServerPlaySound(%profile,%pos) +{ + // Play the given sound profile at the given position on every client + // The sound will be transmitted as an event, not attached to any object. + for(%idx = 0; %idx < ClientGroup.getCount(); %idx++) + commandToClient(ClientGroup.getObject(%idx), PlaySound, %pos); +} \ No newline at end of file diff --git a/Templates/BaseGame/game/core/utility/scripts/helperFunctions.tscript b/Templates/BaseGame/game/core/utility/scripts/helperFunctions.tscript index 3143eb410..98d616529 100644 --- a/Templates/BaseGame/game/core/utility/scripts/helperFunctions.tscript +++ b/Templates/BaseGame/game/core/utility/scripts/helperFunctions.tscript @@ -645,11 +645,21 @@ function populateAllFonts(%font) } //------------------------------------------------------------------------------ -function playSoundAsset(%soundAssetId) +function clientCMDPlaySound(%soundAssetId,%pos) +{ + playSoundAsset(%soundAssetId,%pos); +} + +function playSoundAsset(%soundAssetId,%pos) { %assetDef = AssetDatabase.acquireAsset(%soundAssetId); + %handle = 0; if(isObject(%assetDef)) - %assetDef.playSound(); - - AssetDatabase.releaseAsset(%soundAssetId); + { + %handle = %assetDef.playSound(%pos); + if( isObject( ClientMissionCleanup ) ) + ClientMissionCleanup.add(%handle); + } + AssetDatabase.releaseAsset(%soundAssetId); + return %handle; } \ No newline at end of file