james2464 177 Posted December 6, 2014 (edited) Hello everyone, I thought I would share a few things that may be unknown to some as I know new terrain developers and perhaps future ones could find this useful to polish off their terrains. Dust Effects You need to assign the dust effects to each mask colour for Man, Car, Tank and Air. For reference here is the layers.cfg which lists each surface I am using: class legend { picture="****\****_kz\source\maplegend.png"; class colors { kz_sanddesert[] = {{255,0,255}}; kz_deepdesert[] = {{0,0,255}}; kz_deepgrass[] = {{0,255,255}}; kz_lightgrass[] = {{0,255,0}}; kz_lightdesert[] = {{255,255,0}}; }; }; Here is the CfgVehicles.hpp that needs to be included into the main terrain config as seen below - you will see here each unique surface is listed next to the most appropriate effect for each type of vehicle and the corresponding dust effect of which there are varying types: #include "cfgVehicles.hpp" class CfgVehicles { class All; class AllVehicles : All {}; class Land : AllVehicles {}; class LandVehicle : Land {}; class car : LandVehicle { rightDustEffects[] = {{"KzLightGrass","RDustEffects"},{ "KzLightGrass","RGrassDryEffects" },{ "KzLightGrass","RDirtEffects" },{ "KzDeepGrass","RDustEffects" },{ "KzDeepGrass","RGrassEffects" },{ "KzDeepGrass","RDirtEffects" },{ "KzLightDesert","RDirtEffects" },{ "KzLightDesert","RDustEffects" },{ "KzLightDesert","RStonesEffects" },{ "KzSandDesert","RDustEffects" },{ "KzSandDesert","RSandEffects" },{ "KzSandDesert","RDirtEffects" },{ "KzSandDesert","RStonesEffects" },{ "KzDeepDesert","RDustEffects" },{ "KzDeepDesert","RSandEffects" },{ "KzDeepDesert","RDirtEffects" },{ "KzDeepDesert","RStonesEffects"},{ "KzDirtRoad","RDustEffects" },{ "KzDirtRoad","RSandEffects" },{ "KzDirtRoad","RDirtEffects" },{ "KzDirtRoad","RStonesEffects"},{ "KzA7MSR","RDustEffects" },{ "KzA7MSR","RSandEffects" },{ "KzA7MSR","RDirtEffects" },{ "KzA7MSR","RStonesEffects"}}; leftDustEffects[] = {{"KzLightGrass","LDustEffects"},{ "KzLightGrass","LGrassDryEffects" },{ "KzLightGrass","LDirtEffects" },{ "KzDeepGrass","LDustEffects" },{ "KzDeepGrass","LGrassEffects" },{ "KzDeepGrass","LDirtEffects" },{ "KzLightDesert","LDirtEffects" },{ "KzLightDesert","LDustEffects" },{ "KzLightDesert","LStonesEffects" },{ "KzSandDesert","LDustEffects" },{ "KzSandDesert","LSandEffects" },{ "KzSandDesert","LDirtEffects" },{ "KzSandDesert","LStonesEffects"},{ "KzDeepDesert","LDustEffects" },{ "KzDeepDesert","LSandEffects" },{ "KzDeepDesert","LDirtEffects" },{ "KzDeepDesert","LStonesEffects"},{ "KzDirtRoad","LDustEffects" },{ "KzDirtRoad","LSandEffects" },{ "KzDirtRoad","LDirtEffects" },{ "KzDirtRoad","LStonesEffects"},{ "KzA7MSR","LDustEffects" },{ "KzA7MSR","LSandEffects" },{ "KzA7MSR","LDirtEffects" },{ "KzA7MSR","LStonesEffects"}}; }; class tank: LandVehicle { rightDustEffects[] = {{ "KzLightGrass","RDustEffects" },{ "KzLightGrass","RDirtEffectsBig" },{ "KzLightGrass","RStonesEffectsBig" },{ "KzLightGrass","RGrassEffectsDryBig" },{ "KzLightDesert","RDustEffects" },{ "KzLightDesert","RDirtEffectsBig" },{ "KzLightDesert","RStonesEffectsBig" },{ "KzDeepGrass","RDustEffects" },{ "KzDeepGrass","RGrassEffectsBig" },{ "KzDeepGrass","RDirtEffectsBig" },{ "KzDeepGrass","RStonesEffectsBig" },{ "KzSandDesert","RDustEffects" },{ "KzSandDesert","RDirtEffectsBig" },{ "KzSandDesert","RStonesEffectsBig" },{ "KzDeepDesert","LDustEffects" },{ "KzDeepDesert","LDirtEffectsBig" },{ "KzDeepDesert","LStonesEffectsBig"},{ "KzDirtRoad","RStonesEffectsBig" },{ "KzDirtRoad","LDustEffects" },{ "KzDirtRoad","LDirtEffectsBig" },{ "KzDirtRoad","LStonesEffectsBig"},{ "KzA7MSR","RStonesEffectsBig" },{ "KzA7MSR","LDustEffects" },{ "KzA7MSR","LDirtEffectsBig" },{ "KzA7MSR","LStonesEffectsBig"}}; leftDustEffects[] = {{ "KzLightGrass","LDustEffects" },{ "KzLightGrass","LDirtEffectsBig" },{ "KzLightGrass","LStonesEffectsBig" },{ "KzLightGrass","LGrassEffectsDryBig" },{ "KzLightDesert","LDustEffects" },{ "KzLightDesert","LDirtEffectsBig" },{ "KzLightDesert","LStonesEffectsBig" },{ "KzDeepGrass","LDustEffects" },{ "KzDeepGrass","LGrassEffectsBig" },{ "KzDeepGrass","LDirtEffectsBig" },{ "KzDeepGrass","LStonesEffectsBig" },{ "KzSandDesert","LDustEffects" },{ "KzSandDesert","LDirtEffectsBig" },{ "KzSandDesert","LStonesEffectsBig" },{ "KzDeepDesert","LDustEffects" },{ "KzDeepDesert","LDirtEffectsBig" },{ "KzDeepDesert","LStonesEffectsBig"},{ "KzDirtRoad","LStonesEffectsBig" },{ "KzDirtRoad","LDustEffects" },{ "KzDirtRoad","LDirtEffectsBig" },{ "KzDirtRoad","LStonesEffectsBig"},{ "KzA7MSR","LStonesEffectsBig" },{ "KzA7MSR","LDustEffects" },{ "KzA7MSR","LDirtEffectsBig" },{ "KzA7MSR","LStonesEffectsBig"}}; }; class Air: AllVehicles { rightDustEffects[] = {{"KzLightGrass","RDustEffectsAir"},{ "KzLightGrass","RGrassDryEffects" },{ "KzLightGrass","RDirtEffects" },{ "KzDeepGrass","RDustEffectsAir" },{ "KzDeepGrass","RGrassEffects" },{ "KzDeepGrass","RDirtEffects" },{ "KzLightDesert","RDirtEffects" },{ "KzLightDesert","RDustEffectsAir" },{ "KzLightDesert","RStonesEffects" },{ "KzSandDesert","RDustEffectsAir" },{ "KzSandDesert","RSandEffects" },{ "KzSandDesert","RDirtEffects" },{ "KzSandDesert","RStonesEffects" },{ "KzDeepDesert","RDustEffectsAir" },{ "KzDeepDesert","RSandEffects" },{ "KzDeepDesert","RDirtEffects" },{ "KzDeepDesert","RStonesEffects"},{ "KzDirtRoad","RDustEffectsAir" },{ "KzDirtRoad","RSandEffects" },{ "KzDirtRoad","RDirtEffects" },{ "KzDirtRoad","RStonesEffects"},{ "KzA7MSR","RDustEffectsAir" },{ "KzA7MSR","RSandEffects" },{ "KzA7MSR","RDirtEffects" },{ "KzA7MSR","RStonesEffects"}}; leftDustEffects[] = {{"KzLightGrass","LDustEffectsAir"},{ "KzLightGrass","LGrassDryEffects" },{ "KzLightGrass","LDirtEffects" },{ "KzDeepGrass","LDustEffectsAir" },{ "KzDeepGrass","LGrassEffects" },{ "KzDeepGrass","LDirtEffects" },{ "KzLightDesert","LDirtEffects" },{ "KzLightDesert","LDustEffectsAir" },{ "KzLightDesert","LStonesEffects" },{ "KzSandDesert","LDustEffectsAir" },{ "KzSandDesert","LSandEffects" },{ "KzSandDesert","LDirtEffects" },{ "KzSandDesert","LStonesEffects"},{ "KzDeepDesert","LDustEffectsAir" },{ "KzDeepDesert","LSandEffects" },{ "KzDeepDesert","LDirtEffects" },{ "KzDeepDesert","LStonesEffects"},{ "KzDirtRoad","LDustEffectsAir" },{ "KzDirtRoad","LSandEffects" },{ "KzDirtRoad","LDirtEffects" },{ "KzDirtRoad","LStonesEffects"},{ "KzA7MSR","LDustEffectsAir" },{ "KzA7MSR","LSandEffects" },{ "KzA7MSR","LDirtEffects" },{ "KzA7MSR","LStonesEffects"}}; }; class Man: Land { rightDustEffects[] = {{ "KzLightGrass","RDustEffectsMan" },{ "KzDeepGrass","RDustEffectsMan" },{ "KzLightDesert","RDustEffectsMan" },{ "KzDeepDesert","RDustEffectsMan" },{ "KzSandDesert","RDustEffectsMan"},{ "KzDirtRoad","RDustEffectsMan" },{ "KzA7MSR","RDustEffectsMan" }}; leftDustEffects[] = {{ "KzLightGrass","LDustEffectsMan" },{ "KzDeepGrass","LDustEffectsMan" },{ "KzLightDesert","LDustEffectsMan" },{ "KzDeepDesert","LDustEffectsMan" },{ "KzSandDesert","LDustEffectsMan" },{ "KzDirtRoad","LDustEffectsMan" },{ "KzA7MSR","LDustEffectsMan" }}; }; }; There is one particular effect that is very cool and I think may be missing from the majority if not the whole of Altis and Stratis (not sure) but here is one of them: http://i.imgur.com/6b4q71d.png http://i.imgur.com/eBzRfav.png Ocean Effects Changing the appearance of the ocean is not as simple as changing an array of RGB values in the main terrain config. You must photoshop 7 textures to change how global light (the sky and sun) reflects colour across the whole surface of ocean. Before that you need to setup new materials. Below is a small section of the main config.cpp and the cfgMaterials.hpp that must be included into the main terrain config - here you define part of the reflection which colour's roughly half the surface of the ocean at only a closer distance otherwise the global light takes over from greater distances. #include "cfgMaterials.hpp" class Sea { seaTexture = "a3\data_f\seatexture_co.paa"; [color="#FF0000"]seaMaterial = "#KZ_water"; shoreMaterial = "#KZ_shore"; shoreFoamMaterial = "#KZ_shorefoam";[/color] shoreWetMaterial = "#shorewet"; WaterMapScale = 20; WaterGrid = 50; MaxTide = 0; MaxWave = 0.10; SeaWaveXScale = "2.0/50"; SeaWaveZScale = "1.0/50"; SeaWaveHScale = 1.0; SeaWaveXDuration = 5000; SeaWaveZDuration = 10000; }; class Underwater { noWaterFog = -0.001; fullWaterFog = 0.001; deepWaterFog = 200; waterFogDistanceNear = 2; waterFogDistance = 8; [color="#FF0000"][color="#FF0000"]waterColor[] = {0.419,0.341,0.172}; deepWaterColor[] = {0.0,0.001,0.009}; surfaceColor[] = {0.643,0.557,0.369}; deepSurfaceColor[] = {0.0,0.001,0.009};[/color][/color] }; The material inheritance below defines the intensity of the colours you've chosen above - please note this only changes part of the ocean colour but needs to blend with your Photoshop'd textures. class CfgMaterials { class Water; class Shore; class ShoreFoam; class KZ_water : Water { ambient[] = {0.039,0.027,0.016,0.3}; diffuse[] = {0.411,0.470,0.325,0.3}; }; class KZ_shore : Shore { ambient[] = {0.039,0.027,0.016,0.3}; diffuse[] = {0.643,0.557,0.369,1.0}; }; class KZ_shoreFoam : ShoreFoam { ambient[] = {0.039,0.027,0.016,0.3}; diffuse[] = {0.643,0.557,0.369,1.0}; }; }; Now you need to photoshop the textures below and either have river or ocean as the folder name depending on the geography of your terrain. See the textures in a3\map_stratis\data for reference. As you can tell each texture defines the colour of the ocean at different points of weather, ever wondered how the engine made the ocean grey when it's overcast? This is how. class Overcast: Overcast { class Weather1: Weather1 { skyR = "****\****_kz\data\river\sky_veryclear_lco.paa"; }; class Weather7: Weather1 { skyR = "****\****_kz\data\river\sky_clear_lco.paa"; }; class Weather2: Weather2 { skyR = "****\****_kz\data\river\sky_almostclear_lco.paa"; }; class Weather3: Weather3 { skyR = "****\****_kz\data\river\sky_semicloudy_lco.paa"; }; class Weather4: Weather4 { skyR = "****\****_kz\data\river\sky_cloudy_lco.paa"; }; class Weather5: Weather5 { skyR = "****\****_kz\data\river\sky_mostlycloudy_lco.paa"; }; class Weather6: Weather6 { skyR = "****\****_kz\data\river\sky_overcast_lco.paa"; }; }; Example of settings above: http://i.imgur.com/lL3JAfq.png Sound Effects I won't be covering the whole spectrum of environment sounds but a small sound effect that you may miss initially and think is a bug. Below you will define the roads as surfaces because they are essentially textures layered over the terrain. This will activate infantry and vehicle sounds for road surfaces in the engine. class CfgSurfaces { class Default {}; class GdtDirt; class GdtSoil; class GdtGrassDry; class GdtGrassGreen; class GdtDesert; class GdtConcrete; class KzLightGrass : GdtGrassDry { files = "kz_lightgrass_*"; character = "KzLightGrassClutter"; impact = "hitGroundSoft"; }; class KzDeepGrass : GdtGrassGreen { files = "kz_deepgrass_*"; character = "KzDeepGrassClutter"; }; class KzLightDesert : GdtSoil { files = "kz_lightdesert_*"; character = "KzLightDesertClutter"; impact = "hitGroundSoft"; }; class KzDeepDesert : GdtDirt { files = "kz_deepdesert_*"; character = "KzDeepDesertClutter"; impact = "hitGroundSoft"; }; class KzSandDesert : GdtDesert { files = "kz_sanddesert_*"; impact = "hitGroundSoft"; }; class KzDirtRoad : [color="#FF0000"]GdtDirt[/color] { files = "[color="#FF0000"]surf_roadrough_*[/color]"; }; class KzA7MSR : [color="#FF0000"]GdtConcrete[/color] { files = "[color="#FF0000"]surf_roadA7_*[/color]"; }; }; The roads inherit from Altis surfaces because BIS is likely to keep their parameters up-to-date. The file entries above should correspond to that of the actual file name and RoadsLib.cfg entries below. class RoadTypesLibrary { class Road0001 //A7 MSR Highway { width = 10; mainStrTex = "****\****_roads\Roads\data\[color="#FF0000"]surf_roadA7_[/color]asf3clear_ca.paa"; mainTerTex = "****\****_roads\Roads\data\[color="#FF0000"]surf_roadA7_[/color]asf3clear_end_ca.paa"; mainMat = "****\****_roads\Roads\data\[color="#FF0000"]surf_roadA7_[/color]asf3clear.rvmat"; map = "main road"; AIpathOffset = 3; }; class Road0002 //Village path desert { width = 2.5; mainStrTex = "****\****_roads\Paths\data\[color="#FF0000"]surf_roadrough_[/color]pathtak_ca.paa"; mainTerTex = "****\****_roads\Paths\data\[color="#FF0000"]surf_roadrough_[/color]pathtak_end_ca.paa"; mainMat = "****\****_roads\Paths\data\[color="#FF0000"]surf_roadrough_[/color]pathtak.rvmat"; map = "track"; AIpathOffset = 3; }; ... }; Now the highway will sound like driving or walking on concrete and the dirt tracks respectively. Otherwise without this there is 0 sound and you will be very confused. Cheers. Edited December 7, 2014 by James2464 7 Share this post Link to post Share on other sites
cifordayzserver 119 Posted December 7, 2014 Great info! I was going to try to document the same stuff once I figured out dust everywhere and sounds on roads. Share this post Link to post Share on other sites
hdchristopher 11 Posted December 7, 2014 Awesome work! This will come in handy. Share this post Link to post Share on other sites
Cype_Revenge 651 Posted December 7, 2014 wow great work Thanks! ;) Share this post Link to post Share on other sites
MiauX 10 Posted December 8, 2014 Nice stuff! Someday ill try some of these tips Share this post Link to post Share on other sites
1para{god-father} 105 Posted December 8, 2014 many thanks for the tips !!! Share this post Link to post Share on other sites
badluckburt 78 Posted December 8, 2014 Thank you for sharing, changing the water color is one of the things I was planning to do but I was never sure how to exactly. Share this post Link to post Share on other sites
1para{god-father} 105 Posted December 8, 2014 is there a way to change water colour for selected water ? I.e the ocean would remain as its but the rivers I have I would like to change them , would that be possible do you think ? Share this post Link to post Share on other sites
james2464 177 Posted December 8, 2014 is there a way to change water colour for selected water ?I.e the ocean would remain as its but the rivers I have I would like to change them , would that be possible do you think ? To have the brownish rivers and a blue ocean isn't possible unfortunately but if you're very careful with your mixture of colour you could blend both waterways to find a middle ground. Share this post Link to post Share on other sites
1para{god-father} 105 Posted December 8, 2014 OK thanks did not think so but worth a shout ! ill give your suggestion a little try :) Share this post Link to post Share on other sites
Juhansson 1 Posted December 20, 2014 (edited) Firstly, great stuff thanks for sharing! How do i properly add the Overcast class to my terrains config? My terrain inherits from stratis and I cant just jam the Overcast class under my "terrain Class", I get missing inheritance class(es). Edit: Ok figured it out by looking at the examples better. Edited December 20, 2014 by Juhansson Share this post Link to post Share on other sites
james2464 177 Posted April 3, 2015 (edited) Updated CfgVehicles: class CfgVehicles { class All; class AllVehicles : All {}; class Land : AllVehicles {}; class LandVehicle : Land {}; class Car : LandVehicle { rightDustEffects[] = { {"KzLightDesert","RDustEffects"},{"KzLightDesert","RDirtEffects"},{"KzLightDesert","RStonesEffects"},{"KzLightDesert","RGrassDryEffects"},{"KzLightDesert","RGrassEffects"}, {"KzLightGrass","RDustEffects"},{"KzLightGrass","RDirtEffects"},{"KzLightGrass","RStonesEffects"},{"KzLightGrass","RGrassDryEffects"},{"KzLightGrass","RGrassEffects"}, {"KzDeepDesert","RDustEffects"},{"KzDeepDesert","RDirtEffects"},{"KzDeepDesert","RStonesEffects"},{"KzDeepDesert","RGrassDryEffects"},{"KzDeepDesert","RGrassEffects"}, {"KzSandDesert","RDustEffects"},{"KzSandDesert","RDirtEffects"},{"KzSandDesert","RStonesEffects"},{"KzSandDesert","RGrassDryEffects"}, {"KzDeepGrass","RDustEffects"},{"KzDeepGrass","RDirtEffects"},{"KzDeepGrass","RStonesEffects"},{"KzDeepGrass","RGrassDryEffects"},{"KzDeepGrass","RGrassEffects"}, {"KzDirtRoad","RDustEffects"},{"KzDirtRoad","RDirtEffects"},{"KzDirtRoad","RStonesEffects"},{"KzDirtRoad","RGrassDryEffects"}, {"KzA7MSR","RDustEffects"},{"KzA7MSR","RDirtEffects"},{"KzA7MSR","RStonesEffects"},{"KzA7MSR","RGrassDryEffects"} }; leftDustEffects[] = { {"KzLightDesert","LDustEffects"},{"KzLightDesert","LDirtEffects"},{"KzLightDesert","LStonesEffects"},{"KzLightDesert","LGrassDryEffects"},{"KzLightDesert","LGrassEffects"}, {"KzLightGrass","LDustEffects"},{"KzLightGrass","LDirtEffects"},{"KzLightGrass","LStonesEffects"},{"KzLightGrass","LGrassDryEffects"},{"KzLightGrass","LGrassEffects"}, {"KzDeepDesert","LDustEffects"},{"KzDeepDesert","LDirtEffects"},{"KzDeepDesert","LStonesEffects"},{"KzDeepDesert","LGrassDryEffects"},{"KzDeepDesert","LGrassEffects"}, {"KzSandDesert","LDustEffects"},{"KzSandDesert","LDirtEffects"},{"KzSandDesert","LStonesEffects"},{"KzSandDesert","LGrassDryEffects"}, {"KzDeepGrass","LDustEffects"},{"KzDeepGrass","LDirtEffects"},{"KzDeepGrass","LStonesEffects"},{"KzDeepGrass","LGrassDryEffects"},{"KzDeepGrass","LGrassEffects"}, {"KzDirtRoad","LDustEffects"},{"KzDirtRoad","LDirtEffects"},{"KzDirtRoad","LStonesEffects"},{"KzDirtRoad","LGrassDryEffects"}, {"KzA7MSR","LDustEffects"},{"KzA7MSR","LDirtEffects"},{"KzA7MSR","LStonesEffects"},{"KzA7MSR","LGrassDryEffects"} }; }; class Tank : LandVehicle { rightDustEffects[] = { {"KzLightDesert","RStonesEffectsBig"},{"KzLightDesert","RDirtEffectsBig"},{"KzLightDesert","RGrassEffectsDryBig"},{"KzLightDesert","RGrassEffectsBig"},{"KzLightDesert","RDustEffects"}, {"KzLightGrass","RStonesEffectsBig"},{"KzLightGrass","RDirtEffectsBig"},{"KzLightGrass","RGrassEffectsDryBig"},{"KzLightGrass","RGrassEffectsBig"},{"KzLightGrass","RDustEffects"}, {"KzDeepDesert","RStonesEffectsBig"},{"KzDeepDesert","RDirtEffectsBig"},{"KzDeepDesert","RGrassEffectsDryBig"},{"KzDeepDesert","RGrassEffectsBig"},{"KzDeepDesert","RDustEffects"}, {"KzSandDesert","RStonesEffectsBig"},{"KzSandDesert","RDirtEffectsBig"},{"KzSandDesert","RGrassEffectsDryBig"},{"KzSandDesert","RDustEffects"}, {"KzDeepGrass","RStonesEffectsBig"},{"KzDeepGrass","RDirtEffectsBig"},{"KzDeepGrass","RGrassEffectsDryBig"},{"KzDeepGrass","RGrassEffectsBig"},{"KzDeepGrass","RDustEffects"}, {"KzDirtRoad","RStonesEffectsBig"},{"KzDirtRoad","RDirtEffectsBig"},{"KzDirtRoad","RGrassEffectsDryBig"},{"KzDirtRoad","RDustEffects"}, {"KzA7MSR","RStonesEffectsBig"},{"KzA7MSR","RDirtEffectsBig"},{"KzA7MSR","RGrassEffectsDryBig"},{"KzA7MSR","RDustEffects"} }; leftDustEffects[] = { {"KzLightDesert","LStonesEffectsBig"},{"KzLightDesert","LDirtEffectsBig"},{"KzLightDesert","LGrassEffectsDryBig"},{"KzLightDesert","LGrassEffectsBig"},{"KzLightDesert","LDustEffects"}, {"KzLightGrass","LStonesEffectsBig"},{"KzLightGrass","LDirtEffectsBig"},{"KzLightGrass","LGrassEffectsDryBig"},{"KzLightGrass","LGrassEffectsBig"},{"KzLightGrass","LDustEffects"}, {"KzDeepDesert","LStonesEffectsBig"},{"KzDeepDesert","LDirtEffectsBig"},{"KzDeepDesert","LGrassEffectsDryBig"},{"KzDeepDesert","LGrassEffectsBig"},{"KzDeepDesert","LDustEffects"}, {"KzSandDesert","LStonesEffectsBig"},{"KzSandDesert","LDirtEffectsBig"},{"KzSandDesert","LGrassEffectsDryBig"},{"KzSandDesert","LDustEffects"}, {"KzDeepGrass","LStonesEffectsBig"},{"KzDeepGrass","LDirtEffectsBig"},{"KzDeepGrass","LGrassEffectsDryBig"},{"KzDeepGrass","LGrassEffectsBig"},{"KzDeepGrass","LDustEffects"}, {"KzDirtRoad","LStonesEffectsBig"},{"KzDirtRoad","LDirtEffectsBig"},{"KzDirtRoad","LGrassEffectsDryBig"},{"KzDirtRoad","LDustEffects"}, {"KzA7MSR","LStonesEffectsBig"},{"KzA7MSR","LDirtEffectsBig"},{"KzA7MSR","LGrassEffectsDryBig"},{"KzA7MSR","LDustEffects"} }; }; class Air : AllVehicles { rightDustEffects[] = { {"KzLightDesert","RDustEffectsAir"},{"KzLightDesert","RSandEffects"},{"KzLightDesert","RGrassEffects"},{"KzLightDesert","RDirtEffects"},{"KzLightDesert","RStonesEffects"},{"KzLightDesert","RGrassDryEffects"}, {"KzLightGrass","RDustEffectsAir"},{"KzLightGrass","RSandEffects"},{"KzLightGrass","RGrassEffects"},{"KzLightGrass","RDirtEffects"},{"KzLightGrass","RStonesEffects"},{"KzLightGrass","RGrassDryEffects"}, {"KzDeepDesert","RDustEffectsAir"},{"KzDeepDesert","RSandEffects"},{"KzDeepDesert","RGrassEffects"},{"KzDeepDesert","RDirtEffects"},{"KzDeepDesert","RStonesEffects"},{"KzDeepDesert","RGrassDryEffects"}, {"KzSandDesert","RDustEffectsAir"},{"KzSandDesert","RSandEffects"},{"KzSandDesert","RDirtEffects"},{"KzSandDesert","RStonesEffects"},{"KzSandDesert","RGrassDryEffects"}, {"KzDeepGrass","RDustEffectsAir"},{"KzDeepGrass","RSandEffects"},{"KzDeepGrass","RGrassEffects"},{"KzDeepGrass","RDirtEffects"},{"KzDeepGrass","RStonesEffects"},{"KzDeepGrass","RGrassDryEffects"}, {"KzDirtRoad","RDustEffectsAir"},{"KzDirtRoad","RSandEffects"},{"KzDirtRoad","RDirtEffects"},{"KzDirtRoad","RStonesEffects"},{"KzDirtRoad","RGrassDryEffects"}, {"KzA7MSR","RDustEffectsAir"},{"KzA7MSR","RSandEffects"},{"KzA7MSR","RGrassEffects"},{"KzA7MSR","RDirtEffects"},{"KzA7MSR","RStonesEffects"},{"KzA7MSR","RGrassDryEffects"} }; leftDustEffects[] = { {"KzLightDesert","LDustEffectsAir"},{"KzLightDesert","LSandEffects"},{"KzLightDesert","LGrassEffects"},{"KzLightDesert","LDirtEffects"},{"KzLightDesert","LStonesEffects"},{"KzLightDesert","LGrassDryEffects"}, {"KzLightGrass","LDustEffectsAir"},{"KzLightGrass","LSandEffects"},{"KzLightGrass","LGrassEffects"},{"KzLightGrass","LDirtEffects"},{"KzLightGrass","LStonesEffects"},{"KzLightGrass","LGrassDryEffects"}, {"KzDeepDesert","LDustEffectsAir"},{"KzDeepDesert","LSandEffects"},{"KzDeepDesert","LGrassEffects"},{"KzDeepDesert","LDirtEffects"},{"KzDeepDesert","LStonesEffects"},{"KzDeepDesert","LGrassDryEffects"}, {"KzSandDesert","LDustEffectsAir"},{"KzSandDesert","LSandEffects"},{"KzSandDesert","LDirtEffects"},{"KzSandDesert","LStonesEffects"},{"KzSandDesert","LGrassDryEffects"}, {"KzDeepGrass","LDustEffectsAir"},{"KzDeepGrass","LSandEffects"},{"KzDeepGrass","LGrassEffects"},{"KzDeepGrass","LDirtEffects"},{"KzDeepGrass","LStonesEffects"},{"KzDeepGrass","LGrassDryEffects"}, {"KzDirtRoad","LDustEffectsAir"},{"KzDirtRoad","LSandEffects"},{"KzDirtRoad","LDirtEffects"},{"KzDirtRoad","LStonesEffects"},{"KzDirtRoad","LGrassDryEffects"}, {"KzA7MSR","LDustEffectsAir"},{"KzA7MSR","LSandEffects"},{"KzA7MSR","LGrassEffects"},{"KzA7MSR","LDirtEffects"},{"KzA7MSR","LStonesEffects"},{"KzA7MSR","LGrassDryEffects"} }; }; class Man : Land { rightDustEffects[] = {{"KzLightGrass","RDustEffectsMan"},{"KzLightDesert","RDustEffectsMan"},{"KzDeepDesert","RDustEffectsMan"},{"KzSandDesert","RDustEffectsMan"},{"KzDirtRoad","RDustEffectsMan"},{"KzA7MSR","RDustEffectsMan"}}; leftDustEffects[] = {{"KzLightGrass","LDustEffectsMan"},{"KzLightDesert","LDustEffectsMan"},{"KzDeepDesert","LDustEffectsMan"},{"KzSandDesert","LDustEffectsMan"},{"KzDirtRoad","LDustEffectsMan"},{"KzA7MSR","LDustEffectsMan"}}; }; }; /* KzLightDesert KzLightGrass KzDeepDesert KzSandDesert KzDeepGrass KzDirtRoad KzA7MSR Car : RDustEffects RDirtEffects RStonesEffects RGrassDryEffects RGrassEffects Tank: RStonesEffectsBig RDirtEffectsBig RGrassEffectsDryBig RGrassEffectsBig RDustEffects Air : RGrassDryEffects RDustEffectsAir RDirtEffects RStonesEffects RGrassEffects RSandEffects */ Edited April 3, 2015 by James2464 Share this post Link to post Share on other sites
kaban 11 Posted September 28, 2015 The article is useful. But be careful! Doing this leftDustEffects[]={...}; rightDustEffects[]={...}; you will override global classes and get broken vanilla surfaces dust effects. Thus you will not see dust effects on Altis and Stratis. You must include all vanilla dust effects into your leftDustEffects and rightDustEffects to make your map (island) compatible with vanilla ones. Example (little part): rightDustEffects[] = {{ "GdtStratisConcrete","RDustEffects" },{ "GdtStratisConcrete","RDirtEffects" },{ "GdtStratisBeach","RDustEffects" },{ "GdtStratisBeach","RStonesEffects" },{ "GdtStratisDirt","RDustEffects" },{ "GdtStratisDirt","RDirtEffects" },{ "GdtStratisSeabedCluttered","RDustEffects" },{ "GdtStratisSeabed","RDustEffects" },{ "GdtStratisDryGrass","RDustEffects" },{ "GdtStratisDryGrass","RGrassDryEffects" },{ "GdtStratisDryGrass","RDirtEffects" },{ "GdtStratisGreenGrass","RDustEffects" },{ "GdtStratisGreenGrass","RGrassEffects" },{ "GdtStratisGreenGrass","RDirtEffects" },{ "GdtStratisRocky","RDustEffects" },{ "GdtStratisRocky","RGrassEffects" },{ "GdtStratisRocky","RDirtEffects" },{ "GdtStratisThistles","RDustEffects" },{ "GdtStratisThistles","RGrassEffects" },{ "GdtStratisThistles","RDirtEffects" },{ "GdtConcrete","RDustEffects" },{ "GdtConcrete","RDirtEffects" },{ "GdtAsphalt","RDustEffects" },{ "GdtAsphalt","RDirtEffects" },{ "GdtRubble","RDustEffects" },{ "GdtRubble","RDirtEffects" },{ "GdtSoil","RDustEffects" },{ "GdtSoil","RDirtEffects" },{ "GdtBeach","RDustEffects" },{ "GdtBeach","RStonesEffects" },{ "GdtRock","RDustEffects" },{ "GdtRock","RDirtEffects" },{ "GdtDead","RDustEffects" },{ "GdtDead","RDirtEffects" },{ "Default","RDustEffects" },{ "GdtDesert","RDustEffects" },{ "GdtDesert","RStonesEffects" },{ "GdtDesert1","RDustEffects" },{ "GdtDesert1","RSandEffects" },{ "GdtDesert1","RDirtEffects" },{ "GdtDesert1","RStonesEffects" },{ "GdtDesert2","RDustEffects" },{ "GdtDesert2","RSandEffects" },{ "GdtDesert2","RGrassEffects" },{ "GdtDesert2","RDirtEffects" },{ "GdtDirt","RDustEffects" },{ "GdtDirt","RDirtEffects" },{ "GdtGrassGreen","RDustEffects" },{ "GdtGrassGreen","RGrassEffects" },{ "GdtGrassGreen","RDirtEffects" },{ "GdtGrassDry","RDustEffects" },{ "GdtGrassDry","RGrassDryEffects" },{ "GdtGrassDry","RDirtEffects" },{ "GdtGrassWild","RDustEffects" },{ "GdtGrassWild","RGrassEffects" },{ "GdtGrassWild","RDirtEffects" },{ "GdtWildField","RDustEffects" },{ "GdtWildField","RGrassEffects" },{ "GdtWildField","RDirtEffects" },{ "GdtWeed1","RDustEffects" },{ "GdtWeed1","RGrassEffects" },{ "GdtWeed1","RDirtEffects" },{ "GdtWeed2","RDustEffects" },{ "GdtWeed2","RGrassEffects" },{ "GdtWeed2","RDirtEffects" },{ "GdtThorn","RDustEffects" },{ "GdtThorn","RGrassEffects" },{ "GdtThorn","RDirtEffects" },{ "GdtStony","RDustEffects" },{ "GdtStony","RGrassEffects" },{ "GdtStony","RDirtEffects" },{ "GdtStonyGreen","RDustEffects" },{ "GdtStonyGreen","RGrassEffects" },{ "GdtStonyGreen","RDirtEffects" },{ "GdtStonyThistle","RDustEffects" },{ "GdtStonyThistle","RGrassEffects" },{ "GdtStonyThistle","RDirtEffects" },{ "GdtSeabedDeep","RDustEffects" },{ "GdtSeabed","RDustEffects" },{ "SurfRoadDirt","RDustEffects" },{ "SurfRoadConcrete","RDustEffects" },{ "SurfRoadTarmac","RDustEffects" },{ "SurfWood","RDustEffects" },{ "SurfMetal","RDustEffects" },{ "SurfRoofTin","RDustEffects" },{ "SurfRoofTiles","RDustEffects" },{ "SurfIntWood","RDustEffects" },{ "SurfIntConcrete","RDustEffects" },{ "SurfIntTiles","RDustEffects" },{ "SurfIntMetal","RDustEffects" },{ "dirtrunway","RDustEffects" },{"KzLightDesert","RDustEffects"},{"KzLightDesert","RDirtEffects"},{"KzLightDesert","RStonesEffects"},{"KzLightDesert","RGrassDryEffects"},{"KzLightDesert","RGrassEffects"},{"KzLightGrass","RDustEffects"},{"KzLightGrass","RDirtEffects"},{"KzLightGrass","RStonesEffects"},{"KzLightGrass","RGrassDryEffects"},{"KzLightGrass","RGrassEffects"},{"KzDeepDesert","RDustEffects"},{"KzDeepDesert","RDirtEffects"},{"KzDeepDesert","RStonesEffects"},{"KzDeepDesert","RGrassDryEffects"},{"KzDeepDesert","RGrassEffects"},{"KzSandDesert","RDustEffects"},{"KzSandDesert","RDirtEffects"},{"KzSandDesert","RStonesEffects"},{"KzSandDesert","RGrassDryEffects"},{"KzDeepGrass","RDustEffects"},{"KzDeepGrass","RDirtEffects"},{"KzDeepGrass","RStonesEffects"},{"KzDeepGrass","RGrassDryEffects"},{"KzDeepGrass","RGrassEffects"},{"KzDirtRoad","RDustEffects"},{"KzDirtRoad","RDirtEffects"},{"KzDirtRoad","RStonesEffects"},{"KzDirtRoad","RGrassDryEffects"},{"KzA7MSR","RDustEffects"},{"KzA7MSR","RDirtEffects"},{"KzA7MSR","RStonesEffects"},{"KzA7MSR","RGrassDryEffects"}}; See \a3\data_f\config.cpp for all vanilla dust effects. Moreover, if you want your map to be compatible with AiA maps (for example), you must include all AiA dust effects into your leftDustEffects and rightDustEffects and make dependency on AiA (via requiredAddons[]={...,"AiA_Worlds_DustEffects"};), thus your map config must be last loaded to override AiA settings. Otherwise (if AiA will be last loaded) you will loose all your dust effects, because AiA will override them. So if end user wants to use several islands simultaneously, they must be compatible otherwise user will not see dust effects on some of them (deepening on loading order). This problem could be solved by using operator += instead of = (for appending but not overriding). But currently operator += doesn't work (issue #21443). So you have choice: 1. Make your map compatible (and dependent on) some islands (vanilla, AiA etc.). 2. Make your map incompatible with other maps (you cannot make your map compatible with all possible maps anyway). 3. Ping BI to make working operator +=. 4. Use vanilla surface types with predefined dust effects (I don't know actually if it's possible or not) 5. To not use dust effects at all. What we have currently (some examples): 1. All AiA maps have the only common surfaces config including all vanilla dust effects. So they are compatible with Altis and Stratis. 2. Kunduz has own dust effects, but overrides vanilla ones. So it's not compatible with Altis, Stratis and AiA. 3. Bornholm has no any own dust effects. So it's compatible with all other maps. But has no dust effects at all. 4. SMD Sahrani has own dust effects, but overrides vanilla ones. So it's not compatible with Altis, Stratis and AiA. However end users always can create their own addon to solve compatible issues between several maps (islands) using them simultaneously. This addon must override global vehicle classes with all dust effects used in all maps. 1 Share this post Link to post Share on other sites
Ogrinho 143 Posted September 29, 2015 Hey Buddy thanks a lot for your post, but I have some problems when I tried to make a muddy like river for my Rain Forest map.I've already tried your configuration exactly as you wrote above but I still face a black and white surface instead of my river.Please take a lokk at the images below...http://prnt.sc/8lreel http://prnt.sc/8lrf0u Dou you have any of what could be happening?Cheers from Brazil! ;) Share this post Link to post Share on other sites
Cype_Revenge 651 Posted September 29, 2015 Hey Buddy thanks a lot for your post, but I have some problems when I tried to make a muddy like river for my Rain Forest map. I've already tried your configuration exactly as you wrote above but I still face a black and white surface instead of my river. Please take a lokk at the images below... http://prnt.sc/8lreel http://prnt.sc/8lrf0u Dou you have any of what could be happening? Cheers from Brazil! ;) are you sure that you can see your surface in Buldozer? missing surface, wrong path on your layers.cfg or something like that, and check your rvmat for this surface Share this post Link to post Share on other sites
Ogrinho 143 Posted September 30, 2015 are you sure that you can see your surface in Buldozer? missing surface, wrong path on your layers.cfg or something like that, and check your rvmat for this surface Yes, all my surfaces are ok. I solved the problem. I was watching a video about ponds in Arma 3 and the fog caused a very similar problem, so I decided to change some values for fog parameters and my river is now brown muddy! :) Thanks for the suggestions! Share this post Link to post Share on other sites
Tjockejocke 127 Posted October 2, 2016 Hi,​I have a couple of questions.​ 1. How would I replace the ocean sound with a more calm lake sound and perhaps change the distance the sound travels? ​2. (off topic) Do you know how the "enableTerrainSynth" works except having it on or off? I get very high frequent hills in some areas (in the far distance of the screenshot) and more nice geometry in others. What controls this?3. (off topic) Any idea what causes the white lines (reference screenshot again)? The line gets thinner as you get closer to it. Share this post Link to post Share on other sites
RoF 241 Posted October 3, 2016 Have you got a white border on your sat map image? Never seen that before Share this post Link to post Share on other sites
Tjockejocke 127 Posted October 3, 2016 Have you got a white border on your sat map image? Never seen that before ​No. However I think I know what causes it. I am offsetting satmap and surface mask 1 meter in each direction to match the height data. It still doesn't completely match but it helped a bit. I think the white line is a product of this however. ​Do you know a better way of aligning height with satmap and mask or why they don't match? Height is 4096px and satmap/masks are 8192px. All created with L3DT and Photoshop. They match in L3DT. Share this post Link to post Share on other sites