Willkommen zu meinem ersten Tutorial !
In diesem Tutorial zeige ich euch wie man ein Wetter System erstellen kann das in jeder Stadt unterschiedliches Wetter setzt.
Fangen wir an:
Als erstes fügen wir oben im Script diese beiden Forwards ein:
forward Wetter();
forward SetWetter();
Ein Forward leitet ein Public ein was am Ende des Scripts eingefügt wird.
Jedoch arbeiten wir uns ersteinmal von Oben nach Unten.
Nun wen ihr die beiden forwards eingefügt habt kommt der Nächste Schritt:
Unter den New's schreiben wir nun folgendes hin:
Dafür wir nicht für jede Stadt ein new machen müssen schreiben wir nun folgendes:
new Weather[3];
nun fügen wir drei weitere new's ein:
new WetterRandomLS[] = { 1,2,3,15 };
new WetterRandomSF[] = { 5,6,16 };
new WetterRandomLV[] = { 1,2,3,4,5,18 };
Mit diesen drei New's bestimmt man das Wetter der einzelnen Städte einstellen die später per Zufall gewählt werden.
Die Zahlen sind die Wetter Ids. (Da ich in Wiki keine schöne Wetter id liste gefunden habe ist hier eine andere seite: WetterId's)
Man kann natürlich auch nur
new WetterRandom[] = { 1,2,3,4,5,6 };
machen und somit für jede Stadt das Wetter so übernehmen doch ich erkläre euch nun die dreier Variante auf.
Nun gehen wir unter public OnGameModeInit()
dort fügen wir nun die Timer ein die wir brauchen um das Wetter zu ändern und noch eine kleine Funktion:
Wetter();
Dies schreiben wir unter OnGameModeInit um die Verschiedenen Wetter für jede Stadt beim Serverstart zu setzen.
Wird dies nicht gemacht ist bis zum ersten mal durchlaufen des Timers das Wetter überall gleich.
Nun zu den Timern die wir unter OnGameModeInit einfügen:
SetTimer("Wetter",900000, 1);
SetTimer("SetWetter",1000, 1);
Nun eine kleine erklärung wie SetTimer funktioniert:
Mit SetTimer erstellt ihr den Timer. Wetter und SetWetter ist der public der aufgerufen werden soll.
Die 900000 oder die 1000 sind die Millisekunden indem dieses public aufgerufen werden soll.
bsp: der Public Wetter wird jede 15 Minuten aufgerufen und der public SetWeather jede Sekunde.
Die 1 am ende bedeutet das sich der Timer immer wiederholt würde man dort eine 0 einsetzen würde der public nur 1 mal ausgeführt werden und der Timer sich nicht wiederholen.
Nun gehen wir weiter runter ins Script und schreiben unter den anderen publics nun diese beiden hinzu:
public Wetter()
{
//Wetter 0 = LS , Wetter 1 = SF , Wetter 2 = LV
Weather[0] = WetterRandomLS[random(sizeof(WetterRandomLS))];
Weather[1] = WetterRandomSF[random(sizeof(WetterRandomSF))];
Weather[2] = WetterRandomLV[random(sizeof(WetterRandomLV))];
}
Dort wird für jede Stadt eine Wetterid per Zufall gesetzt. Aber nur von den ids die ihr oben in den new eingetragen habt.
Nun hat jede Stadt sein Wetter doch wir brauchen noch ein public um das Wetter für die Aktuelle Stadt festzulegen.
public SetWetter()
{
new Float:xx, Float:yy, Float:zz;
for(new i=0; i< GetMaxPlayers(); i++)
{
if(IsPlayerConnected(i))
{
GetPlayerPos(i, xx, yy, zz);
if((xx > -992.5172 && xx < 4000.0000) && (yy < 528.0000 && yy > -4000.0000)) //Los Santos
{
SetPlayerWeather(i, Weather[0]);
//Los Santos
}
if((xx > -4000.0000 && xx< -992.5172) && (yy < 4000.0000 && yy > -4000.0000)) //San Fierro
{
SetPlayerWeather(i, Weather[1]);
//San Fierro
}
if((xx > -992.5172 && xx< 4000.0000) && (yy < 4000.0000 && yy > 528.0000)) //Las Venturas
{
SetPlayerWeather(i, Weather[2]);
//Las Venturas
}
}
}
return 1;
}
Mit diesem Public überprüfen wir ob der jenige bsp. in SF ist und dan wird das Wetter für diesen Spieler richtig gesetzt.
Dies geschieht jede Sekunde.
Wenn ihr dies gemacht habt gratuliere ich euch den ihr habt nun ein 3 Städte Wettersystem !
Bei Fragen oder Fehler könnt ihr mir sie gerne per PM schreiben oder auch hier im Thread.
Und bitte nicht vergessen:
Dies war mein erstes Tutorial
Mit freundlichen Grüßen,
Picaso