Adding snow to your map is quite simple, in radiant you have to add an outdoor volume covering your whole playable area. ( Make sure to check enabled0-3, else the snow goes through your brushes still )

Make a copy of zm_usermap.gsc and copy that into your map folder. Make sure to include it into your zone.

Open the file and find this line:


level util::set_lighting_state( 1 );

And replace with this:


level util::set_lighting_state( 0 );

Now we have to modify your mapname.csc

Add this above your main() function:


#define SNOW_FX "dlc0/factory/fx_snow_player_os_factory"
#precache( "client_fx", SNOW_FX );

Add this line into the main() function:


callback::on_localplayer_spawned( &on_localplayer_spawned );

And copy and paste the following functions:

function on_localplayer_spawned( localClientNum )
{ 
	if( self == GetLocalPlayer( localClientNum ) )  
		self thread falling_snow(localClientNum);
}

function falling_snow(localClientNum)
{ 
	self endon( "disconnect" ); 
	self endon( "entityshutdown" ); 
	self endon( "death" ); 
	while(1) 
	{ 
		PlayFX( localClientNum, SNOW_FX, self.origin ); 
		wait 0.3; //Change this to increase or decrease the snow intensity (Higher = Slower )
	}
}

Compile and link the map, enjoy the weather!