All pastes #614039 Raw Edit

Betamasters [FS]weather

public text v1 · immutable
·published 2007-07-11 09:45 UTC
rendered paste body
// Beta Masters Weather Script
// converted to filter script
// by c-middia
#include <a_samp>

forward Timer_DayHeartbeat();

public OnFilterScriptInit()
{
	SetTimer("Timer_DayHeartbeat", 60000, 1);
	return 1;
}

GetRandomWeather(weather, ...) {
	new random_weather = weather, count = 0, len = numargs() - 1;
	if(len > 0) {
		do {
			random_weather = getarg(random(len*1000)/1000);
			count++;
		} while(random_weather == weather && count < 10);  // try up to 10 times to get a random weather
	}
	return random_weather;
}

GetSequencedWeather(hour) {
	static weather = 10;
	switch(weather) {  // only normal weather changes are possible, eg clouds before rain and no sandstorm after rain
		case 0 .. 7, 10: {      // blue skies/clouds
			switch(hour) {
				case 11 .. 14: weather = GetRandomWeather(weather,0,1,2,3,4,5,6,7,9,10,11,17,18,20,27,28,29,35,36,37,38,39);
				case 17 .. 23: weather = GetRandomWeather(weather,0,1,2,3,4,5,6,7,9,10,20);
				default: weather = GetRandomWeather(weather,0,1,2,3,4,5,6,7,9,10,12,13,14,15,20,27,28,29);
			}
		}
		case 8: {               // stormy
			weather = GetRandomWeather(weather,8,9,16,20,21,22,30,31,32,33);
		}
		case 9: {               // cloudy and foggy
			switch(hour) {
				case 17 .. 23: weather = GetRandomWeather(weather,0,1,2,3,4,5,6,7,9,20);
				default: weather = GetRandomWeather(weather,0,1,2,3,4,5,6,7,9,20,27,28,29,30,31,32,33);
			}
		}
		case 11, 17, 18: {      // scorching hot/bright
			switch(hour) {
				case 11 .. 14: weather = GetRandomWeather(weather,0,1,2,3,4,5,6,7,9,10,11,17,18,20,27,28,29,35,26,37,38,39);
				default: weather = GetRandomWeather(weather,0,1,2,3,4,5,6,7,9,10,20);
			}
		}
		case 12 .. 15: {        // very dull, colorless, hazy
			switch(hour) {
				case 16 .. 19: weather = GetRandomWeather(weather,0,1,2,3,4,5,6,7,9,12,13,14,15,16,20,21,22,33,35);
				default: weather = GetRandomWeather(weather,0,1,2,3,4,5,6,7,9,12,13,14,15,16,20);
			}
		}
		case 16: {              // dull, cloudy, rainy
			weather = GetRandomWeather(weather,0,1,2,3,4,5,6,7,9,12,13,14,15,16,20,33,35);
		}
		case 19: {              // sandstorm
			weather = GetRandomWeather(weather,8,16);
		}
		case 20: {              // foggy/greenish
			weather = GetRandomWeather(weather,9,16,20,21,22);
		}
		case 21, 22: {          // very dark, gradiented skyline, purple/green
			weather = GetRandomWeather(weather,8,16,20,21,22);
		}
		case 23 .. 26: {        // variations of pale orange
			switch(hour) {
				case 7 .. 11, 16 .. 20: GetRandomWeather(weather,0,1,2,3,4,5,6,7,9,12,13,14,15,20,23,24,25,26,27,28,29,35,36,37,38);
				default: weather = GetRandomWeather(weather,0,1,2,3,4,5,6,7,9,12,13,14,15,20);
			}
		}
		case 27 .. 29: {        // variations of fresh blue
			switch(hour) {
				case 11 .. 14: weather = GetRandomWeather(weather,0,1,2,3,4,5,6,7,9,10,11,17,18,20,27,28,29,35,36,37,38,39);
				case 17 .. 23: weather = GetRandomWeather(weather,0,1,2,3,4,5,6,7,9,10,20);
				default: weather = GetRandomWeather(weather,0,1,2,3,4,5,6,7,9,10,12,13,14,15,20);
			}
		}
		case 30 .. 32: {        // variations of dark, cloudy, teal 
			weather = GetRandomWeather(weather,8,9,16,20,21,22);
		}
		case 33: {              // dark, cloudy, brown
			switch(hour) {
				case 17 .. 23: weather = GetRandomWeather(weather,0,1,2,3,4,5,6,7,16,20);
				default: weather = GetRandomWeather(weather,0,1,2,3,4,5,6,7,16,20);
			}
		}
		case 34: {              // blue/purple, regular
			weather = GetRandomWeather(weather,16,20,21,22);
		}
		case 35: {              // dull brown
			switch(hour) {
				case 11 .. 14: weather = GetRandomWeather(weather,0,1,2,3,4,5,6,7,9,11,17,18,35,36,37,38);
				case 17 .. 23: weather = GetRandomWeather(weather,0,1,2,3,4,5,6,7,9,23,24);
				default: weather = GetRandomWeather(weather,0,1,2,3,4,5,6,7,9,12,13,14,15);
			}
		}
		case 36 .. 38: {        // bright, foggy, orange
			switch(hour) {
				case 11 .. 14: weather = GetRandomWeather(weather,0,1,2,3,4,5,6,7,9,11,17,18);
				case 17 .. 23: weather = GetRandomWeather(weather,0,1,2,3,4,5,6,7,9,23,24);
				default: weather = GetRandomWeather(weather,0,1,2,3,4,5,6,7,9);
			}
		}
		case 39: {              // extremely bright
			switch(hour) {
				case 11 .. 14: weather = GetRandomWeather(weather,0,1,2,3,4,5,6,7,10,11,17,18,27,28,29,39);
				case 17 .. 23: weather = GetRandomWeather(weather,0,1,2,3,4,5,6,7,10);
				default: weather = GetRandomWeather(weather,0,1,2,3,4,5,6,7,10);
			}
		}
		case 40 .. 42: {        // blue/purple cloudy
			weather = GetRandomWeather(weather,0,1,2,3,4,5,6,7,16,20);
		}
		case 43: {              // dark toxic clouds
			weather = GetRandomWeather(weather,0,1,2,3,4,5,6,7);
		}
		case 44: {              // black/white sky
			weather = GetRandomWeather(weather,0,1,2,3,4,5,6,7,9,10,12,13,14,15);
		}
		case 45: {              // black/purple sky
			weather = GetRandomWeather(weather,0,1,2,3,4,5,6,7,9,10,12,13,14,15);
		}
		default: {
			weather = GetRandomWeather(weather,0,1,2,3,4,5,6,7,9,10,12,13,14,15);
		}
	}
	return weather;
}

public Timer_DayHeartbeat() {
	static hour = 0;
	SetWorldTime(hour);
	if(!(hour % 3)) SetWeather(GetSequencedWeather(hour));
	hour++, hour %= 24;
}

public OnFilterScriptExit()
{
	return 1;
}