Teraz jest Wt 16 kwi, 2024 08:36


Zmiany pogody w MP

Dział poświęcony edytorowi ArmA II i Operation Arrowhead, czyli tworzeniu misji.
  • Autor
  • Wiadomość
Offline

archiee

Chorąży

Chorąży

  • Posty: 100
  • Dołączył(a): Cz 16 mar, 2006 15:23
  • Lokalizacja: Łódź

Zmiany pogody w MP

PostWt 27 paź, 2009 02:43

Zmęczyła mnie przewidywalność czarnoruskiej pogody, więc popełniłem sobie taki oto skrypcik dodający jej losowe zmiany, mający dodatkowo mniej-więcej uwzględniać ustawione w menu intel prognozy; uruchamiany [200, 600] execVM "weather.sqf":
Kod: Zaznacz cały
_interval = _this select 0;
_cycle = _this select 1;

while {true} do
{

   if (isServer) then
   {
      _rand1 = random 100;
      _rand2 = random 100;
      _rand3 = random 100;
      _rand4 = random 100;
      
      if (_rand1 <= 50) then { random_fog = 0; } else
      {
         if (_rand2 <= 80) then { random_fog = 0.1; } else { random_fog = 0.2; };
      };
      
      if (_rand2 <= 50) then { random_rain = 0.3; } else
      {
         if (_rand2 <= 80) then { random_rain = 0.4; } else { random_rain = 0.8; };
      };
      
      if (_rand3 <= 40) then { random_overcast = 0.2; } else
      {
         if (_rand3 <= 70) then { random_overcast = 0.5; } else { random_overcast = 0.7; };
      };
      
      _abs_over = abs (overcastForecast - overcast);
      _abs_fog = abs (fogForecast - fog);
      
      if (overcastForecast > overcast) then { random_overcast = random_overcast + _abs_over; };
      if (overcastForecast < overcast) then { random_overcast = random_overcast - _abs_over; };
      
      if (fogForecast > fog) then { random_fog = random_fog + _abs_fog; };
      if (fogForecast < fog) then { random_fog = random_fog - _abs_fog; };


      publicvariable "random_fog";
      publicvariable "random_rain";
      publicvariable "random_overcast";
      
   };

   sleep 1;
   
   if (random_overcast < 0.2) then { random_fog = random_fog -0.3; };
   if (random_overcast < 0.4) then { random_fog = random_fog -0.2; };
   if (random_overcast < 0.7) then { random_fog = random_fog -0.1; };

   sleep 1;
   
   if (random_overcast >= 0.7) then { _interval setRain random_rain; };
   
   _interval setFog random_fog;
   _interval setOvercast random_overcast;

   sleep _cycle;
};

_interval to czas, w jakim zmiany pogody mają zachodzić.
_cycle to czas pomiędzy dwoma kolejnymi zmianami.

W SP działa cacy, tak samo u mnie gdy zhostuję grę. Wszystko się jednak paprze u innych graczy. Podczas gdy u hosta zmiany pogody są płynne, u graczy (i nie mówię tu o JIP) są mocno opóźnione i następują natychmiastowo (np. w czasie jednej sekundy niebo z zasnutego chmurami staje się całkowicie bezchmurne). Nie mam bladego pojęcia gdzie leży problem. :co: Dodam, że z bardziej skomplikowanymi skryptami do MP nie miałem do tej pory wiele do czynienia (wiem tyle co o upublicznianiu zmiennych i tego typu prostych sprawach).
Pomoc mile widziana. Pozdrawiam. :)

Powrót do [ArmA II] Edytor

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 6 gości

cron