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;
}