Guten Morgen
Ist es möglich mittels random, und timer usw, in alle 3 Städte von San Andreas, unterschiedlich das Wetter ändern zu lassen ?
Beispiel: Wenn man von LS nach LV fährt, es dann Regnet wenn man LV angekommen ist. Sprich Wetterzonen ?
LG
Guten Morgen
Ist es möglich mittels random, und timer usw, in alle 3 Städte von San Andreas, unterschiedlich das Wetter ändern zu lassen ?
Beispiel: Wenn man von LS nach LV fährt, es dann Regnet wenn man LV angekommen ist. Sprich Wetterzonen ?
LG
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
Mega danke dir werde es mal testen
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
Habe hier das zu gefunden
Habe hier das zu gefunden
Ja, was ich meinte war sowas:
//Ganz oben definieren
static sWeatherLS, sWeatherSF, sWeatherLV;
static sZoneLS, sZoneSF, sZoneLV;
//Unter OnGameModeInit oder OnFilterscriptInit
sZoneLS = CreateDynamicRectangle(2919.469, -782.4177, 93.423, -2837.724);
sZoneLV = CreateDynamicRectangle(2942.825, 2884.435, 794.0955, 618.9274);
sZoneSF = CreateDynamicRectangle(-1377.989, 1599.869, -2989.536, -1004.297);
ChangeWeather();
//Dann irgendwo
public OnPlayerEnterDynamicArea(playerid, STREAMER_TAG_AREA:areaid)
{
if(areaid == sZoneLS) SetPlayerWeather(playerid, sWeatherLS);
else if(areaid == sZoneSF) SetPlayerWeather(playerid, sWeatherSF);
else if(areaid == sZoneLV) SetPlayerWeather(playerid, 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;
}
Alles anzeigen
Dann macht das das Streamer Plugin alles für dich automatisch
Nein, in der Funktion ruft sich der Timer immer wieder auf xD
Am Anfang wird die Funktion direkt aufgerufen, damit sich das Wetter sofort setzt
Kannst natürlich auch das auf 1 setzen und die Timer Funktion aus der Funktion löschen.
ja aber dazu muss doch die 0 eine 1 sein das der timer darin auch immer wieder läuft 0 sprich false ist doch nur einmal laufen ?
Lies meinen ersten Satz, der Timer ruft sich immer wieder auf, weil er in der Funktion selbst ist 😅
Er wird einmalig aufgerufen -> Ruft sich einmalig selbst auf -> rufst sich einmalig selbst auf -> ruft sich einmalig selbst auf
Ist eine Endlosschleife
Lies meinen ersten Satz, der Timer ruft sich immer wieder auf, weil er in der Funktion selbst ist 😅
Er wird einmalig aufgerufen -> Ruft sich einmalig selbst auf -> rufst sich einmalig selbst auf -> ruft sich einmalig selbst auf
Ist eine Endlosschleife
Ja hast recht da er jetzt aber in OnGameMode drin ist musste ich jetzt 1 machen aber geht nun