Einzelnen Beitrag anzeigen
Alt 23.01.2013, 17:29   #4 (permalink)
Moerderhoschi
Armed-Assault.de Team10 Jahre hx3
500 Beiträge1000 Beiträge2.500 Beiträge
 
Benutzerbild von Moerderhoschi
 
Registriert seit: 01.07.2006
Ort: Kabul
Alter: 38
Beiträge: 2.666
Standard

Zitat von Wolkenbeisser Beitrag anzeigen

Was mich dabei ein wenig unsicher macht, ist die Zeit des Wetterwechsels und die davon abhängige Sleep-Dauer. Gehe ich richtig in der Annahme, dass die Sleep-Dauer gleich gross (oder grösser) sein sollte, als die Zeit, die der Wetterwechsel benötigt? Eine solche Anpassung macht natürlich nur dann Sinn, wenn die 400 Sekunden für alle Clients in etwa gleich funktionieren (das sollte ja mehr oder weniger gegeben sein, da alle Clients in etwa versuchen dasselbe zu machen, oder?).

korrekt, der Denkansatz von Dir ist da schon richtig. Die Sleep dauer muss etwas groeßer sein als der Befehl fuer den Wetterwechsel. Hierbei kann man auch einfach die Abfolge der Befehle aendern und noch eine While Schleife anfuegen um den Regen permanent zu unterdruecken.

Die Abfolge sollte bei allen Clients die selbe sein, denn jeder Client fuehrt ja auch den selben Code aus.

Code:
0=[]spawn{400 setOvercast 0.65;0 setRain 0;sleep 0.1;10800 setRain 0;sleep 402;10800 setOvercast 0.65;while {true} do {0 setrain 0;sleep 1}};
Nun passiert folgendes:

1. Aendere das Wetter in 400 Sekunden auf den Wert 0.65.

2. Setze den Regen in 0 Sekunden auf den Wert 0.

3. Warte 0,1 Sekunden (um sicher zu gehen das die Befehle auch ausgefuehrt werden).

4. Setze den Regen in 10800 Sekunden auf den Wert 0, was den Regen fuer die Zeitspanne der Wetteraenderung Unterdruecken sollte.

5. Warte 402 Sekunden

6. Setze das Wetter in 10800 Sekunden auf den Wert 0.65, was das Wetter fuer den Rest der Spieldauer konstant halten sollte.

7. In einer While Schleife setze jede sekunde den Regen sofort auf 0.

Somit wechselt das Wetter in ~7 Minuten auf den Wert 0.65 und der Regen wird permanent unterdrueckt, quasi jede Sekunde auf den Wert 0 gesetzt.

Zitat von Wolkenbeisser Beitrag anzeigen

Nachtrag: Ich sehe gerade, dass der Regen hier ja auch erst nach dem vorherigen Sleep von 410 Sek. gesetzt wird. Ich möchte den Code aber nicht umkehren, da es sonst (sofern man Regen auf 1 setzt), gleich zu Beginn des Wetterwechsels - also wenn das Wetter noch schön ist - anfängt zu regnen.

Man muss so natürlich in Kauf nehmen, dass es während der 400 Sekunden Wetterwechsel beim einen oder anderen Client evtl. kurz regnet (wobei der Wert setOvercast 0.65 noch keinen Regen bringen sollte, 1 hingegen schon).

Das sehe ich auch so. Waehrend dem Wechsel des Wetters von sagen wir 0 auf 1 kann es natuerlich zu Regenbildung durch die Engine kommen. Man koennte aber auch einfach von Anfang an ein Spawnscript laufen lassen was den Regen permanent unterdrueckt oder nur bis Ereignis x eintritt.

Code:
0=[]spawn{x=true;while (x) do {0 setrain 0; sleep 1}}
Es gibt viele Wege und ArmA bietet da auch viele Moeglichkeiten.


gruß
hoschi
__________________



Geändert von Moerderhoschi (23.01.2013 um 17:38 Uhr).
Moerderhoschi ist offline