So you want that extra layer of awesomeness in your map, well keep on reading!
NOTE: This does not work properly in splitscreen, so if you care about that i’m sorry!
First you have to download the script below.
Download
Once you’ve done that you can place the script in the following folder:
mapname\scripts\zm
Now we need to add the line below in your “mapname.csc”
#using scripts\zm\_ambient_room;
Next we need to copy “_zm_audio.csc” into the same folder as before ( this file can be found in your share\raw folder )
We will replace the function sndZmbLaststand with the code below:
function sndZmbLaststand(localClientNum, oldVal, newVal, bNewEnt, bInitialSnap, fieldName, bWasTimeJump) { if( newVal ) { PlaySound( localClientNum, "chr_health_laststand_enter", (0,0,0) ); self.inLastStand = true; setsoundcontext ("laststand", "active"); if( !IsSplitScreen() ) { forceambientroom( "sndHealth_LastStand" ); } } else { if( IS_TRUE( self.inLastStand ) ) { playsound( localClientNum, "chr_health_laststand_exit", (0,0,0) ); self.inLastStand = false; if( !IsSplitScreen() ) { if( isdefined( level.active_ambient_room ) ) forceambientroom( level.active_ambient_room ); else forceambientroom( "" ); } } setsoundcontext ("laststand", ""); } }
And we have to add the lines below in your zone
scriptparsetree,scripts/zm/_ambient_room.csc scriptparsetree,scripts/zm/_zm_audio.csc stringtable,sound/ambients/ambient_mod.csv //this is whatever csv u are using for the ambient rooms
Now that this part is out of the way we can start doing the fun stuff, so ambient rooms are defined in “ambient_mod.csv” (this is setup by default u can just create a new csv and change it in your .szc file )
This file is located in:
Black Ops 3 Root\share\raw\sound\ambients
By default it contains this:
Name,Loadspec,DefaultRoom,Reverb,ReverbDryLevel,ReverbWetLevel,EntityContextType0,EntityContextValue0,EntityContextType1,EntityContextValue1,EntityContextType2,EntityContextValue2,GlobalContextType,GlobalContextValue,Loop,Duck mp_mod_outdoor,mpl_mod,yes,global_urban_outdoor,1,1,ringoff_plr,outdoor,water,over,,,ringoff_plr,outdoor,,
I had to make a small change on this to prevent the setsoundcontext function not working all the time ( this is used in the script to set certain conditions for aliases )
Removing outdoor on the EntityContextValue0 column made it work for me, this is only needed for the default room.
In the script u can change the default room u want in ur map, if you are not in a trigger it will fallback to the room u have defined in there.
My advice is just to have all area’s covered in triggers so you won’t really have to worry it.
Below u can see the small change i did:
mp_mod_outdoor,mpl_mod,yes,global_urban_outdoor,1,1,ringoff_plr,,water,over,,,ringoff_plr,outdoor,,
Here are some of the columns explained:
- Name: Ambient Room name ( this is the name u will use in radiant later )
- Loadspec: This is used to group “aliases” together ( default it’s mpl_mod specified in the .szc file )
- DefaultRoom: The default Ambient Room where the map starts with
- Reverb: Type of reverb u want in the room ( Located in: “Black Ops 3 Root\share\raw\sound\reverb\common_reverb.csv” )
- ReverbDryLevel: Amount of original sound you want to hear ( value is between 0 – 1 )
- ReverbWetLevel: Amount of reverb effect you want on the sound ( could turn the dry level to zero and have only the reverb effect playing or mix it together )
- EntityContextType0-2: This is used for having certain aliases play ( you can find the types in the sound\context folder )
- EntityContextValue0-2: Here you set the value of the context type ( more detailed explanation below )
- Loop: Here you can specify a looping sound alias to play ( some wind for outside or underwater effect )
- Duck: Here you can specify a duck file ( can be found in sound\duck folder, this can control DuckGroups and mute certain groups or adds a LowPassFilter on them so they sound “muffled” like when you have the Moon helmet on )
List of stock reverbs u can use:
cinematic cp_lotus_main_room default default_new_paches doa_fps_mode factory_evt_boiler factory_evt_chainroom factory_evt_dome factory_evt_hangar factory_evt_tallroom factory_evt_tele_a factory_evt_tele_b factory_hallway factory_largeroom factory_largeroom_2 factory_mediumroom factory_partialroom factory_sewerpipe factory_smallroom factory_urban_outdoor factory_urban_outdoor_2 global_hallway global_hangar global_hugeroom global_largeroom global_mediumroom global_partialroom global_sewerpipe global_smallroom global_splitscreen global_traincar global_tunnel global_underwater global_urban_outdoor hub_monsters_outdoor mp_final_killcam shock_flashbang singapore_outdoor sndHealth_LastStand sndHealth_LowHealth sndHealth_Melee test underwater
Radiant Setup:
To setup ambient rooms we need some “trigger_multiple” to make it all work together!
The trigger will activate the Ambient Room defined in the properties, below are some of the kvp’s explained that are required for this.
targetname: ambient_room ( all triggers need this targetname or it will not work ) script_ambientroom: <the ambient room name specified in the csv> script_ambientpriority: <integer> ( this is for when you have overlapping triggers, higher number is more priority )
Also make sure that you have CLIENTSIDE_TRIGGER checked!
The size of the trigger is the size of the Ambient Room so make sure u cover everything properly!
Sound Context:
This is used in sound aliases to play or prevent certain sounds this is setup in column names like below:
- ContextType
- ContextValue
- ContextType1
- ContextValue1
- ContextType2
- ContextValue2
- ContextType3
- ContextValue3
The most common contexts that are used are “ringoff_plr” and “water”, they both have specific values. ( can be found in sound\context folder )
ringoff_plr
- indoor
- outdoor
- underwater
water
- under
- over
So all stock weapons have setup decay and underwater sounds, since they are setup correct. In this way you get a nice long decay when you are outdoor, but a short one if you are indoor. Same goes for the underwater part.
ReverbSend:
This is also used by sound aliases to control how much reverb can be given to that particular sound, higher number means more reverb on the sound. This can create really nice effect in certain rooms like a sewer.
If you have any questions or i fucked up something please send me a dm or message on Twitter