So hier:
//Ganz oben definieren
#define IsPlayerInLosSantos(%0) IsPlayerInArea(%0, 2919.469, 93.423, -782.4177, -2837.724)
#define IsPlayerInLasVenturas(%0) IsPlayerInArea(%0, 2942.825,794.0955,2884.435,618.9274)
#define IsPlayerInSanFierro(%0) IsPlayerInArea(%0, -1377.989,-2989.536,1599.869,-1004.297)
static sWeatherLS, sWeatherSF, sWeatherLV;
//Unter OnGameModeInit oder OnFilterscriptInit
ChangeWeather();
SetTimer("ChangeWeatherForPlayers", 1000*5, 1); // Alle 5sek
//Dann irgendwo
forward ChangeWeatherForPlayers();
public ChangeWeatherForPlayers()
{
for(new i; i<MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i)) continue;
if(IsPlayerInLosSantos(i)) SetPlayerWeather(i, sWeatherLS);
else if(IsPlayerInSanFierro(i)) SetPlayerWeather(i, sWeatherSF);
else if(IsPlayerInLasVenturas(i)) SetPlayerWeather(i, sWeatherLV);
}
return 1;
}
forward ChangeWeather();
public ChangeWeather()
{
sWeatherLS = random(20);
sWeatherSF = random(20);
sWeatherLV = random(20);
SetTimer("ChangeWeather", 1000*60*10, 0); //Ändert sich alle 10min
return 1;
}
//Unten im Skript (oder in einer utils.inc oder sowas)
stock IsPlayerInArea(playerid, Float:minx, Float:maxx, Float:miny, Float:maxy)
{
new Float:x, Float:y, Float:z;
GetPlayerPos(playerid, x, y, z);
return (x > minx && x < maxx && y > miny && y < maxy);
}
Alles anzeigen
Das Wetter muss natürlich perma gesetzt werden, falls Spieler die Zone verlassen xD
Theoretisch kannst hier auch mit dem StreamerPlugin und dynamischen Areas arbeiten, dann gibt es den Callback OnPlayerEnterDynamicArea. Dann benötigst du keine Loop die perma läuft.
Aber dafür müsst ich nochmal ins Include vom Streamer schauen, da war ich grad zu faul für xD