Dynamisches Wettersystem

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Code
    //--------------------------------------------------------------------[ Wetter System ]
    new Weather[3];
    new WetterRandomLS[] = {2,7,10,12,13,14,15};
    new WetterRandomSF[] = {2,7,10,12,13,14,15};
    new WetterRandomLV[] = {2,7,10,12,13,14,15};




    Code
    forward SaveWeather();


    Ini Datei nicht vergessen




    Code
    forward ChangeWeather();
    public ChangeWeather()
    {
    	Weather[0] = WetterRandomLS[random(sizeof(WetterRandomLS))];
    	Weather[1] = WetterRandomSF[random(sizeof(WetterRandomSF))];
    	Weather[2] = WetterRandomLV[random(sizeof(WetterRandomLV))];
    	SCMTA(COLOR_YELLOW," Bot: Es liegt eine Wetteränderung in ganz San Andreas vor.");
        SaveWeather();
        return 1;
    }
  • Versuch mal dieses:

    new WeatherLS[] = { 1,2,3,15 };
    new WeatherSF[] = { 5,6,16 };
    new WeatherLV[] = { 1,2,3,4,5,18 };
    new second,minute,hour;


    forward Second();
    forward Minute();
    forward Hour();
    forward WeatherSystem();
    forward SetWeatherSystem();


    public Second()
    {
    second++;
    if(second==60){Minute();second=0;}
    SetWeatherSystem(); //Wetterupdate, damit für alle Spieler gleich und wenn der Admin das Wetter ändert dies sofort umgesetzt wird
    return 1;
    }



    public Minute()
    {
    minute++;
    if(minute==60){Hour();minute=0;}
    return 1;
    }



    public Hour()
    {
    hour++;
    if(hour==24){hour=0;}
    switch(hour)
    {
    case 0,6,12,18:
    {
    WeatherSystem(); //Hier wird das Wetter alle 6 Stunden geändert
    }
    }
    return 1;
    }


    public WeatherSystem()
    {
    //Wetter 0 = LS , Wetter 1 = SF , Wetter 2 = LV
    Weather[0] = WeatherLS[random(sizeof(WeatherLS))];
    Weather[1] = WeatherSF[random(sizeof(WeatherSF))];
    Weather[2] = WeatherLV[random(sizeof(WeatherLV))];
    }



    public SetWeatherSystem()
    {
    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;
    }


    public OnGameModeInit()
    {
    SetTimer("Second",1000,true); // Timer für alles(kann auch für PaydaySysteme genutzt werden, da dieser genau bleibt)
    WeatherSystem(); //Random Wetter beim Start des Servers
    return 1;
    }


    ocmd:weather(playerid,params[])
    {
    if(!PlayerAdmin(playerid,3))return SendClientMessage(playerid,COLOR_ORANGE,"((Info)) Du hast nicht die nötigen Rechte, dies zu tun!"); //Abfrage wegen Adminrechten
    WeatherSystem();
    SendClientMessage(playerid,COLOR_YELLOW,"((Info)) Wetter verändert!");
    return 1;
    }



    Dieses System funktioniert ohne Probleme

    Code
    #define GeprüfterTastaturZerhacker Positiv

    Kopf trifft Tisch kritisch! -- Der ging nicht durch!
    ----
    Whisky löst keine Probleme! Das tut Milch aber auch nicht.