This is a follow up on the weather types, it will change the intensity of the weather.
Open your mapname.csc and add this in the main function.
level.weather_intensity = 0.3; clientfield::register( "world", "weather_intensity", VERSION_SHIP, 2, "int", &weather_intensity, !CF_HOST_ONLY, !CF_CALLBACK_ZERO_ON_NEW_ENT );
Replace the old while function where the fx got played with this.
while(1)
{
if(level.weather_intensity == 0)
{
wait .1;
continue;
}
PlayFX( localClientNum, SNOW_FX, self.origin );
wait level.weather_intensity;
}
Now add this function as well.
function weather_intensity( localClientNum, oldVal, newVal, bNewEnt, bInitialSnap, fieldName, bWasTimeJump )
{
// If value = 0 that will stop the weather
// Lower the numbers to increase intensity ( Cannot go below 0 )
switch(newVal)
{
case 0:
level.weather_intensity = 0;
break;
case 1:
level.weather_intensity = 0.3;
break;
case 2:
level.weather_intensity = 0.15;
break;
case 3:
level.weather_intensity = 0.05;
break;
}
}
Now we move onto mapname.gsc, add this in the main function.
clientfield::register( "world", "weather_intensity", VERSION_SHIP, 2, "int" ); thread weather_intensity();
And add this function as well.
function weather_intensity()
{
weather_intensity = 1; // Starting weather type
while(1)
{
wait RandomIntRange(120, 360);
intensity = RandomInt(4); // Generates a number from 0 - 3
while(intensity == weather_intensity) // Don't want repeating intensity
{
intensity = RandomInt(4);
WAIT_SERVER_FRAME;
}
level clientfield::set("weather_intensity", intensity);
weather_intensity = intensity;
}
}