Automatisches Wettersystem

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Automatisches Wettersystem

    Guten Tag liebe Easy-Scripter,

    mein erstes Tutorial für euch. Hier geht es um ein kleines Wettersystem das ich euch hier zeige. Wir brauchen für dies kein Include oder sonst was.
    Einzig allein ein wenig Zeit und Verstand.

    Wir wollen ein Wettersystem machen, welches mehrere Sonnige WetterIDs hat, ein paar schlechte WetterIDs, dunkle WetterIDs für die Nacht und eine WetterID für den Sonnenuntergang. Wir wollen es ja so realistisch machen wie möglich.

    Als erstes ein forward für die Methode Wetter.
    [pwn]forward Wetter();[/pwn]

    Dann erstellen wir die Methode Wetter.
    Dazu noch die Werte die wir neu setzen mit den Wetter IDs dazu.

    [pwn]public Wetter() {
    new wetter, wetternacht = 73, wettersu = 46, hour;
    new wetterZufall[] = { 1,2,3,4,5,10,11,17,18 }, unwetterZufall[] = { 8,9,12,15,16,19,20 };
    }[/pwn]

    wetternacht steht für das Nachtwetter welches wir dann immer in der Nacht haben wollen.
    wettersu steht für das Sonnenuntergang-Wetter welches wir halt immer haben wollen wenn bei uns ebenfalls Sonnenuntergang ist
    wetterZufall steht bei uns für die normalen sonnigen WetterIDs manche haben eine weite sicht manche eine kürzere
    unwetterZufall steht für die UnWetterIDs aller Art von Sandsturm, Regensturm bis zu sehr nebelig

    Man kann aber jederzeit andere WetterIDs hinzufügen oder entfernen. Ist eure Entscheidung. Hier noch ein Link wo ihr WetterIDs einsehen könnt
    WetterIDs-Link

    Nun wollen wir wissen welche Stunde wir gerade haben und dazu fragen wir jetzt ab welche Stunde es ist und entscheiden dann welche ID kommen soll. Dazu brauchen wir nur ein paar IF-Bedingungen.

    [pwn]gettime(hour);
    if (hour >= 18 && hour <= 20) {
    wetter = wettersu;
    } else if (hour > 20 && hour <= 6) {
    wetter = wetternacht;
    } else {
    new zufall = random(20);
    if (zufall < 15) {
    wetter = wetterZufall[random(sizeof(wetterZufall))];
    } else {
    wetter = unwetterZufall[random(sizeof(unwetterZufall))];
    }
    }
    SetWeather(wetter);[/pwn]

    Mit gettime(hour) bekommen wir die Stunde die wir gerade haben. Mit der ersten Bedingung prüfen wir ob die Stunde zwischen 18 Uhr und 20 Uhr ist. Dann soll der Sonnenuntergang kommen in SA. Falls nicht soll es weitergehen zur nächsten Bedingung, wenn es nach 20 Uhr bis 6 Uhr in der früh ist dann kommt das Nachtwetter.
    Dann kommt der restliche Bereich ab 6 Uhr in der früh bis 18 Uhr am Abend. Da brauchen wir keine Bedingung mehr da dies der Rest ist und schreiben else.
    Nun benutzen wir noch die random-Methode um eine Zufallszahl zwischen 0 und 19 zu bekommen, damit wir nur eine Chance von 20 % haben das ein Unwetter kommt. Ist realistischer. Kann man natürlich umbauen auf 5% oder 80% wie auch immer.
    Danach wird geprüft ob der Wert zufall weniger als 15 ist dann kommt ein schönes Wetter und falls nicht dann kommt ein schlechtes Wetter. Jedoch wird dann ein Zufallswert noch von dem Array der WetterZufall oder UnWetterZufall wegen WetterIDs in die Variable wetter gespeichert.

    Mit SetWeather(wetter) setzen wir das Wetter.

    Also am Schluss sieht die Methode also so aus.

    [pwn]public Wetter() {
    new wetter, wetternacht = 73, wettersu = 46, hour;
    new wetterZufall[] = { 1,2,3,4,5,10,11,17,18 }, unwetterZufall[] = { 8,16,19 };
    gettime(hour);
    if (hour >= 18 && hour <= 20) {
    wetter = wettersu;
    } else if (hour > 20 && hour <= 6) {
    wetter = wetternacht;
    } else {
    new zufall = random(20);
    if (zufall < 15) {
    wetter = wetterZufall[random(sizeof(wetterZufall))];
    } else {
    wetter = unwetterZufall[random(sizeof(unwetterZufall))];
    }
    }
    SetWeather(wetter);
    }[/pwn]

    Nun wollen wir das sich das Wetter automatisch immer nach einer Zeit ändert. Wir können jetzt einstellen 10 Minuten, eine halbe Stunde oder sogar eine ganze Stunde soll jedes Wetter bleiben.

    Ich habe es bei einer halben Stunde also machen wir es jetzt auch so.

    Wir fügen unter OnGameModeInit() die Methode SetTimer ein.
    Zuerst aber die Methode Wetter aufrufen damit wir nicht erst eine halbe Stunde warten müssen bis sie erneut aufgerufen wird.

    [pwn]Wetter();
    SetTimer("Wetter",1000*60*30, true);[/pwn]

    1000 steht für eine Sekunde also 1000 Millisekunden
    60 steht für eine Minute also 60 Sekunden
    30 steht für eine halbe Stunde also 30 Minuten

    Und schon ist euer automatisches Wettersystem fertig ;)

    Ich hoffe auf euer Feedback und kritisiert mein erstes Tutorial überhaupt ;)

    Mfg,
    Austrianer
    Schulprojekt RealLife Server scripten in Arbeit
    Selfmade garantiert von 0 angefangen

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von Austrianer ()