Armed-Assault.de Twitter
 
 
Themen-Optionen Ansicht
Alt 22.01.2013, 10:44   #1 (permalink)
50 Beiträge100 Beiträge250 Beiträge
 
Benutzerbild von Wolkenbeisser
 
Registriert seit: 05.11.2010
Ort: Schweiz
Beiträge: 297
Standard Einfacher Wetterwechsel (Bewölkung) im MP?

Hallo zusammen

Ich schon wieder (mit einer neuen Frage zu meinem Lieblingsthema Lokalität), sorry.

Ich möchte einen ganz einfachen Wetterwechsel (Bewölkung) in meiner gehosteten MP-Mission bewirken. Hat jemand Erfahrung damit? Es gibt da ein paar Fragen, zu denen ich via Suche nichts genaues (häufig ist alles schwammig formuliert) gefunden habe.

1. Startwetter
Zu Beginn meiner Mission soll das Wetter perfekt sein (klare Vollmondnacht) und sich auch nicht ändern. Deshalb habe ich beide Schiebregler (Akutell/Vorhersage) im Editor komplett an den rechten Rand geschoben. Da auch der Forecast-Regler keine Änderung zulässt, bleibt das Wetter für Host und Clients immer schön > richtig oder falsch?

2. SetOvercast
An einem bestimmten Punkt in meiner Mission löst ein Auslöser (auf Grund einer wahrgewordenen PublicVariable) diverse Dinge aus. Neu möchte ich in diesem Auslöser auch eine Bewölkung (Ausschluss Mondlicht!) für Host und Clients einbauen. Den Befehl dazu habe ich im Arma-Wiki gefunden:
Code:
300 setOvercast 0.8
Wie muss nun dieser Befehl 'eingepackt' werden, damit er sowohl auf dem Host, als auch auf allen Clients durchgeführt wird (es soll einfach bei allen passieren). Evtl. so?
Code:
If (!isServer) then {300 setOvercast 0.8};
3. Bleibt die Veränderung?
Gesetzt der Fall, Punkt 2 konnte erledigt werden und innerhalb von ca. 5 Minuten ändert das Wetter bei allen Spielern auf bewölkt. Bleibt das nun bei allen so (oder hat hier der Forecast-Schiebregler noch irgend einen Einfluss)?

Es tut mir leid, dass ich euch immer wieder mit solchen Lokalitätsfragen belästige. Das scheint einfach mein "Buch mit 7 Siegeln" zu sein (und man kann es alleine kaum testen, sonst würde ich es via trial und error versuchen).

Danke für eure Hilfe
Wolkenbeisser ist offline  
Alt 22.01.2013, 18:55   #2 (permalink)
Armed-Assault.de Team10 Jahre hx3
500 Beiträge1000 Beiträge2.500 Beiträge
 
Benutzerbild von Moerderhoschi
 
Registriert seit: 02.07.2006
Ort: Kabul
Alter: 38
Beiträge: 2.666
Standard

Zitat von Wolkenbeisser Beitrag anzeigen

Hallo zusammen

Ich schon wieder (mit einer neuen Frage zu meinem Lieblingsthema Lokalität), sorry.

Kein Problem, dafuer ist das Forum doch da

Zitat von Wolkenbeisser Beitrag anzeigen

Ich möchte einen ganz einfachen Wetterwechsel (Bewölkung) in meiner gehosteten MP-Mission bewirken. Hat jemand Erfahrung damit? Es gibt da ein paar Fragen, zu denen ich via Suche nichts genaues (häufig ist alles schwammig formuliert) gefunden habe.

Das Problem mit ArmA und dem Wetter ist das es lokal geregelt wird und somit eigentlich auf jedem Client etwas, oder auch voellig, anders ist.

Ich habe dazu auch mal ein Script gebastelt, Day & Weather Script, um das Wetter simuliert auf jeden client synchron zu halten. Das Script setzt jedoch ein Wetter zu beginn und behaelt dieses die gesamte Mission ueber.

Zitat von Wolkenbeisser Beitrag anzeigen

1. Startwetter
Zu Beginn meiner Mission soll das Wetter perfekt sein (klare Vollmondnacht) und sich auch nicht ändern. Deshalb habe ich beide Schiebregler (Akutell/Vorhersage) im Editor komplett an den rechten Rand geschoben. Da auch der Forecast-Regler keine Änderung zulässt, bleibt das Wetter für Host und Clients immer schön > richtig oder falsch?

Das ist richtig so, Der erste Wert mit dem aktuellen Wetter mach eigentlich nichts anderes als der Befehl 0 setOverCast x und der zwote Regler fuer die Vorhersage 3600 setOverCast x. Wobei ich jetzt nicht die genaue Zeit fuer den Wetterwechsel weiß, koennten auch 7200 sekunden oder weniger als 3600 sein.

Zitat von Wolkenbeisser Beitrag anzeigen

2. SetOvercast
An einem bestimmten Punkt in meiner Mission löst ein Auslöser (auf Grund einer wahrgewordenen PublicVariable) diverse Dinge aus. Neu möchte ich in diesem Auslöser auch eine Bewölkung (Ausschluss Mondlicht!) für Host und Clients einbauen. Den Befehl dazu habe ich im Arma-Wiki gefunden:

Code:
300 setOvercast 0.8
Wie muss nun dieser Befehl 'eingepackt' werden, damit er sowohl auf dem Host, als auch auf allen Clients durchgeführt wird (es soll einfach bei allen passieren). Evtl. so? [code]If (!isServer) then {300 setOvercast 0.8};
Um einen Wetterwechsel mitten im Spiel auf allen Clients zu vollziehen wuerde ich folgendermaßen vorgehen:

1. Im Editor wie du es schon gemacht hast dein Startwetter vorgeben, bei Vorhersage die selben Werte einstellen wie beim Startwetter, sollte im Normalfall dann auf allen Clients auch so eingestellt sein beim Missionsbeginn.

2. Einen Ausloeser mit bei aktivierung:
Code:
WetterSyncen=true;publicvariable "WetterSyncen";
3. Einen zwoten Ausloeser mit der Bedingung WetterSyncen und bei aktivierung:
Code:
0=[]spawn{0 setOvercast 1;sleep 0.1;3600 setOvercast 1;0 setRain 1;sleep 0.1;3600 setRain 1};
Somit wird das Wetter in 0 sekunden auf den Wert 1 gestellt, was das schlecht moeglichste Wetter ist, dann 0.1 sekunden gewartet und in 3600 sekunden ebefalls auf 1 gesetzt, das ist die Zeitspanne die es benoetigt dass das Wetter von aktuellen Wert auf den neuen Wert benoetigt um sich zu aendern. Damit bewirkst du das es fuer eine Stunde so bleibt wie es ist. Das selbe mit dem Regen wenn denn so gewollt.

Zitat von Wolkenbeisser Beitrag anzeigen

3. Bleibt die Veränderung?
Gesetzt der Fall, Punkt 2 konnte erledigt werden und innerhalb von ca. 5 Minuten ändert das Wetter bei allen Spielern auf bewölkt. Bleibt das nun bei allen so (oder hat hier der Forecast-Schiebregler noch irgend einen Einfluss)?

Wenn du das Beispiel von mir anwendest sollte das Wetter fuer ein Stunde lang so bleiben. Der Regeler im Missionseditor hat dann keinen Einfluss mehr auf das Wetter.

Mit dieser Methode aenderst du das allgemeine Wetter und den Regen, der Wind wird jedoch in diesem Beispiel nicht gesynct, sollte fuer deine Zwecke ja aber auch keine Rolle spielen.

gruß
hoschi
__________________


Moerderhoschi ist offline  
Alt 23.01.2013, 09:12   #3 (permalink)
50 Beiträge100 Beiträge250 Beiträge
 
Benutzerbild von Wolkenbeisser
 
Registriert seit: 05.11.2010
Ort: Schweiz
Beiträge: 297
Standard

Hey Hoschi. Danke, das tönt ja vielversprechend.

Noch eine Frage zu Deinem Code aus Punkt 3:

Ich würde gerne den Wetterwechsel langsam vollziehen (400 Sekunden = ca. 7 Minuten) und dann das Wetter bis zum Missionsende behalten (sagen wir sicherheitshalber ca. 3 Std.). Regen bräuchte ich nicht, könnte ich aber dank Deinem Code auch gleich für alle verhindern. Ich müsste also die Werte ein wenig anpassen, jedoch ohne den Codeaufbau zu verändern (siehe rote Markierungen im Code unten).

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?).

Code:
0=[]spawn{400 setOvercast 0.65;sleep 410;10800 setOvercast 0.65;0 setRain 0;sleep 0.1;10800 setRain 0};
-------

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).

Geändert von Wolkenbeisser (23.01.2013 um 10:05 Uhr). Grund: Zusätzliche Bemerkungen
Wolkenbeisser ist offline  
Alt 23.01.2013, 18:29   #4 (permalink)
Armed-Assault.de Team10 Jahre hx3
500 Beiträge1000 Beiträge2.500 Beiträge
 
Benutzerbild von Moerderhoschi
 
Registriert seit: 02.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 18:38 Uhr).
Moerderhoschi ist offline  
Alt 23.01.2013, 23:14   #5 (permalink)
50 Beiträge100 Beiträge250 Beiträge
 
Benutzerbild von Wolkenbeisser
 
Registriert seit: 05.11.2010
Ort: Schweiz
Beiträge: 297
Standard

Danke für Deine ausführlichen Infos, Hoschi

Ich habe das von Dir genannte Beispiel genommen (das mit dem eingeschobenen setRain) und es funktioniert tadellos. Zumindest schon mal in einem Test mit mir als Host und einzigem Client.

Wenn alles nach Plan läuft, werde ich die Mission mit dem Wetterwechsel Morgen Abend mit meinen Kumpels testen können. Die werden sich wundern, wieso ich mich ständig nach dem Wetter erkundige.

Sofern ich hier nichts weiteres poste hat alles erwartungsgemäss geklappt.

Danke nochmals allen Beteiligten und Grüsse aus der Schweiz (wo der Befehl '2 setOvercast 1' sehr häufig dann ausgeführt wird, wenn ich das Haus verlasse)
Wolkenbeisser ist offline  
Alt 24.01.2013, 11:57   #6 (permalink)
SQF Zauberer 10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von Vienna
 
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
Standard

Es ist anzunehmen, dass sleep Zeiten bei den Clients unterschiedlich lang sein können. So würde ich für MP den Wetter-Takt beim Server/Host regeln und den jeweiligen Wetterbefehl mit publicVariable senden. Das hat auch den Vorteil, dass so zufälliges Wetter erstellt werden kann.

Beim Server/Host den "Wetterbefehl" als Text in in die globle Variable WetterNeu verfassen, und mit publicVariable an den Auslöser senden. z.B:
Code:
WetterNeu = "400 setOvercast 0.65;0 setRain 0";
publicVariable "WetterNeu";
Der (mehrfach!) Auslöser dient bei jedem Spieler als Empfänger für die Wetterbefehle:
Code:
Auslöser:
Achse A und B: 0
Aktivierung  : Keiner | Mehrfach
Bedingung    : not isNil "WetterNeu"
Bei Akt.     : call compile WetterNeu; WetterNeu = NIL
In der Bei Akt. Befehlszeile des Auslösern wandelt compile den Text auf Code um und führt den Code mit call aus. WetterNeu = NIL entfernt die Variable samt Befehlstext und der Auslöser ist für einen neuen Befehl bereit.

Hier noch ein Beispiel für begrenztes zufälliges Wetter:
Code:
 
_wolken   = format["%1 setOvercast %2;", floor((random 300)+200), floor((random 50)+50)/100];
_regen    = format["%1 setRain %2;",     floor((random 400)+300), floor((random 40)+10)/100];
WetterNeu = _wolken + _regen;
publicVariable "WetterNeu";

Wolken: Zeitraum 200-500, Stärke 0,5 - 1,0
Regen : Zeitraum 300-700, Stärke 0,1 - 0,5
Es ist natürlich auch möglich zuerst nur die Wolken zu senden und nach einiger Zeit dann den Regen.

Geändert von Vienna (24.01.2013 um 13:46 Uhr).
Vienna ist offline  
Alt 24.01.2013, 16:00   #7 (permalink)
50 Beiträge100 Beiträge250 Beiträge
 
Benutzerbild von Wolkenbeisser
 
Registriert seit: 05.11.2010
Ort: Schweiz
Beiträge: 297
Standard

Zitat von Vienna Beitrag anzeigen

Es ist anzunehmen, dass sleep Zeiten bei den Clients unterschiedlich lang sein können. So würde ich für MP den Wetter-Takt beim Server/Host regeln und den jeweiligen Wetterbefehl mit publicVariable senden.....

Hi Vienna. Danke für Deine Infos.

Betreffend unterschiedlicher Sleepzeiten:

Ich gehe mal davon aus, dass wir hier von einer Abweichung von max. ein paar Sekunden reden, oder? Das Runterzählen der Sekunden - wenn dann einmal gestartet - sollte ja dann auf jeder Maschine ziemlich exakt die 400 Sekunden dauern (ich vermute hier wird die Systemuhr der jeweiligen Maschine verwendet).

Ich denke, dass es hier also höchstens vor Zählbeginn (aus übermittlungstechnischen Gründen wie Lags und so), oder evtl. nachher zu leichten Verzögerungen kommen kann.

Da es hier aber nur um einen Wetterwechsel geht, kann eine solche "Sleepungleichheit" evtl. in Kauf genommen werden, es sei denn ich liege komplett falsch mit meiner Annahme über die mögliche Abweichung. Dann bitte melden, danke.

Trotzdem hast Du natürlich recht, dass bei Deiner Variante die Wetterzustände auf den Clients 'gleicher' sind. Je nach Art der zu übermittelnden Befehle kann das schon mal den Unterschied zwischen 'Leben' und 'Tod' eines Spielers ausmachen.
Wolkenbeisser ist offline  
Alt 24.01.2013, 18:29   #8 (permalink)
Armed-Assault.de Team10 Jahre hx3
500 Beiträge1000 Beiträge2.500 Beiträge
 
Benutzerbild von Moerderhoschi
 
Registriert seit: 02.07.2006
Ort: Kabul
Alter: 38
Beiträge: 2.666
Standard

Zitat von Vienna Beitrag anzeigen

Es ist anzunehmen, dass sleep Zeiten bei den Clients unterschiedlich lang sein können.

Bei dieser Anforderung kommt es auf 1 Sekunde nicht an.

Zitat von Vienna Beitrag anzeigen

Code:
WetterNeu = "400 setOvercast 0.65;0 setRain 0";
publicVariable "WetterNeu";
Dieser Code bewirkt nur das innerhalb von 400 Sekunden das Wetter auf den Wert 0.65 gestellt wird. Was nach den 400 Sekunden passiert ist davon nicht mehr abgedeckt. Das Wetter wird sich wieder aendern und zwar auf jedem Client anders.

Das selbe beim Regen, ein einfaches 0 setrain 0 ohne schleife die es permanent bei diesem Wert haelt ist zwar moeglich jedoch wenn das Wetter sich verschlechtert wird es trotzdem anfangen zu regnen.

Zitat von Vienna Beitrag anzeigen

Code:
 
_wolken   = format["%1 setOvercast %2;", floor((random 300)+200), floor((random 50)+50)/100];
_regen    = format["%1 setRain %2;",     floor((random 400)+300), floor((random 40)+10)/100];
WetterNeu = _wolken + _regen;
publicVariable "WetterNeu";

Wolken: Zeitraum 200-500, Stärke 0,5 - 1,0
Regen : Zeitraum 300-700, Stärke 0,1 - 0,5
Diese Variante haelt das Wetter nicht konstant.

Auch hier wird nicht der weitere Verlauf des Wetters beruecksichtigt so das nach der umstellung des Wetters und nach einer Zeit X wieder auf jedem Client wilkuehr herschen wird.

Zitat von Wolkenbeisser Beitrag anzeigen

Ich gehe mal davon aus, dass wir hier von einer Abweichung von max. ein paar Sekunden reden, oder? Das Runterzählen der Sekunden - wenn dann einmal gestartet - sollte ja dann auf jeder Maschine ziemlich exakt die 400 Sekunden dauern (ich vermute hier wird die Systemuhr der jeweiligen Maschine verwendet).

Ich denke, dass es hier also höchstens vor Zählbeginn (aus übermittlungstechnischen Gründen wie Lags und so), oder evtl. nachher zu leichten Verzögerungen kommen kann.

Richtig, der Zeitunterschied ist hierbei so trivial so das es fuer deinen Anwendungszweck vollkommen vernachlaessigt werden kann.


Zitat von Wolkenbeisser Beitrag anzeigen

Trotzdem hast Du natürlich recht, dass bei Deiner Variante die Wetterzustände auf den Clients 'gleicher' sind. Je nach Art der zu übermittelnden Befehle kann das schon mal den Unterschied zwischen 'Leben' und 'Tod' eines Spielers ausmachen.

Das sehe ich anders.

Teste das Beispiel von Vienna mal im Zeitraffer durch, ich hatte nach der kompletten ausfuehrung des Codes den Zeitraffer aktiviert und nach 15 Minuten immer unterschiedliches Wetter bei 3 Testlaeufen.

Sobald die 400 sekunden abgelaufen sind wird das Wetter auf einen random Wert gesetzt (y setOvercast x). Bei 3 Versuchen hatte ich einen Overcast Wert von [0.19 | 0.05 | 0.72].

gruß
hoschi
__________________


Moerderhoschi ist offline  
Alt 24.01.2013, 21:20   #9 (permalink)
Newbie
 
Registriert seit: 16.06.2009
Beiträge: 5
Standard

hi
nutz am besten das hier: Dynamic Weather Effects Script - Scripts - Armaholic

Dynamic Weather Effects Script

Einfach einzubauen, sehr gut zu konfigurieren und funzt einwandfrei im MP
Sollte imho standard sein in allen Missionen
RunForrest ist offline  
Alt 25.01.2013, 02:19   #10 (permalink)
SQF Zauberer 10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von Vienna
 
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
Standard

Das Wetterprogramm von Armaholic ist sicher tadellos, aber es geht ja hier auch ums Programmieren solch einer Routine.

Ich gehe davon aus, dass man das Wetter über eine längere Missionsdauer steuern kann und nicht nur eine einmalige Wetteränderung haben will. Da sollte z.B. ein spät angesetzter Wolkenbruch bei allen Spielern gleichzeitig beginnen.

Um annähernd überall gleiches Wetter im Spiel zu haben, ist es notwendig das Schlechtwetter auch wieder gezielt abklingen zu lassen.

Der Empfänger-Auslöser ist simpel. Die Ereignis-Steuerung von Seiten des Host/Servers ist aufwendiger.

Hier ein genauerer Ansatz für etwas unterschiedliches Wetter, als in meinen obigen Post. Die Spieler sollen sich ja nicht die Uhren nach dem Wetter stellen können.
Code:
//Nur Server/Host!
//Sonnenscheindauer (Schönwetter Voreinstellung im Editor)
sleep ((random 300)+300); 
//Wolken ein
_wolkenZeit = floor((random 300)+200);
WetterNeu   = format["%1 setOvercast %2;", _wolkenZeit, floor((random 50)+50)/100];
publicVariable "WetterNeu";
//Schlechtwetterdauer
sleep (_wolkenZeit + 100 + random 200);
//Wolken aus
WetterNeu = "60 setOvercast 0;";
publicVariable "WetterNeu";
//Sonnenscheindauer
sleep ((random 300)+600);
//Wolken ein
...
Die Steuerung über den Server/Host hat auch den Vorteil, wenn ein Spieler später einsteigt, dann hat er nach dem nächsten Wetterbefehl das gleich Wetter.
Vienna ist offline  
Alt 25.01.2013, 13:00   #11 (permalink)
SQF Zauberer 10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von Vienna
 
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
Standard

Zitat von Moerderhoschi Beitrag anzeigen


Das selbe beim Regen, ein einfaches 0 setrain 0 ohne schleife die es permanent bei diesem Wert haelt ist zwar moeglich jedoch wenn das Wetter sich verschlechtert wird es trotzdem anfangen zu regnen.

Bis 60% Bewölkung gibt es keinen Regen!
Test: 0 setOvercast 0.60; 0 setRain 1;

Wer keinen automatischen Regen will, darf keine Bewölkung über 60% einstellen.
Ein Zufallswert dafür könnte so aussehen: floor((random 20)+40)/100
Das ergibt eine Bewölkungsstärke zwischen 40 und 60%

Die Dauer des Regens ist abhängig von der eingestellten Bewölkungsstärke.
Dauerregen ist möglich mit: 0 setOvercast 1; 0 setRain 1;
Vienna ist offline  
Alt 25.01.2013, 23:51   #12 (permalink)
Armed-Assault.de Team10 Jahre hx3
500 Beiträge1000 Beiträge2.500 Beiträge
 
Benutzerbild von Moerderhoschi
 
Registriert seit: 02.07.2006
Ort: Kabul
Alter: 38
Beiträge: 2.666
Standard

Es besteht dann aber immer noch die Problematik dass das Wetter sich wieder aendern kann, auch auf einen Wert ueber 0.60.

Man muss diesen Wert permanent erzwingen um einer Wetteraenderung vor zu beugen. Ich hatte beim testen immer den Fall das sich das Wetter wieder geaendert hat wenn man den Zusatand nicht permantent erzwingt.

gruß
hoschi
__________________



Geändert von Moerderhoschi (26.01.2013 um 00:03 Uhr).
Moerderhoschi ist offline  
Alt 26.01.2013, 13:14   #13 (permalink)
SQF Zauberer 10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von Vienna
 
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
Standard

Das deckt sich nicht mit meinen Tests. Bei 0 setOvercast 0.60; 0 setRain 1; ist es durchgehend bewölkt ohne Regen, obwohl der Regen auf 100% eingestellt ist.

Eben so ist es bei 0 setOvercast 0; durchgehend sonnig und bei 0 setOvercast 1; 0 setRain 1; regnet es durchgehend.

Sonst ist der Regen etwas "launiger". Er ist abhängig von der Wolkenstärke und tritt mit Zeitabständen auf.

Getestet in Arma2 in der originalen letzten Version, ohne Zusatzprogramme. Laut Wiki dürfte es bei overcast bis 70% nicht regnen. http://community.bistudio.com/wiki/setRain

Insgesamt sollte die Bewölkungsstärke bei den Spielern gleich sein. Regenzeiten werden bei unter 100% unterschiedlich sein.
Vienna ist offline  
Alt 26.01.2013, 14:35   #14 (permalink)
Armed-Assault.de Team10 Jahre hx3
500 Beiträge1000 Beiträge2.500 Beiträge
 
Benutzerbild von Moerderhoschi
 
Registriert seit: 02.07.2006
Ort: Kabul
Alter: 38
Beiträge: 2.666
Standard

Ich habe das ganze nocheinmal getestet mit dem Ergebnis dass das Wetter sich wieder einmal aendert.



Ich habe die Mission mit einem Overcast von 0.65 & Regen von 0 gestartet. Nach den 3 Sekunden wurde der OverCastForeCast von der Engine per random auf 1 gestellt. Dannach wurde mit dem Zeitraffer die Mission laufen gelassen bis die Spielzeit bei 60 Minuten angekommen ist. Es wurde eine Wetteraenderung von +0.07 auf ~0.722 festgestellt. D.h. Nach einer gewissen Zeit x veraendert sich das Wetter so stark das es zu Regen kommen kann!

Je nachdem wie lange eine Mission dauert kann es also schon notwendig sein den Regen mit einer Schleife 1 setRain 0 zu unterdrucken wenn man ihn absolut nicht in der Mission haben will.

Testmission ist im Anhang.

gruß
hoschi
Angehängte Dateien
Dateityp: rar SetOverCastTest.Desert_E.rar (820 Bytes, 75x aufgerufen)
__________________


Moerderhoschi ist offline  
Alt 26.01.2013, 15:51   #15 (permalink)
SQF Zauberer 10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von Vienna
 
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
Standard

Jetzt sehe ich das Problem! Es ist die automatische folgende Wettereinstellung. Dem ist aber leicht entgegen zu wirken. Kopiere in deinen Testauslöser folgende Wettersteurung:

Code:
temp = 0 spawn
{
  3 setOvercast 0.65; 0 setRain 0;
  sleep 4;
  3600 setOvercast 0.64
}
Ergebnis nach 15 Minuten:


Damit ist es erforderlich nach Ende der Wetterwandelzeit gleich einen solchen zweiten Wetter-Befehl nachzusenden.

Geändert von Vienna (26.01.2013 um 16:47 Uhr).
Vienna ist offline  
Alt 26.01.2013, 15:56   #16 (permalink)
Armed-Assault.de Team10 Jahre hx3
500 Beiträge1000 Beiträge2.500 Beiträge
 
Benutzerbild von Moerderhoschi
 
Registriert seit: 02.07.2006
Ort: Kabul
Alter: 38
Beiträge: 2.666
Standard

In meinem ersten Beitrag hatte ich dafuer schon die Loesung gepostet Vienna!

Zitat von Moerderhoschi Beitrag anzeigen

0=[]spawn{0 setOvercast 1;sleep 0.1;3600 setOvercast 1;0 setRain 1;sleep 0.1;3600 setRain 1};

__________________


Moerderhoschi ist offline  
Alt 26.01.2013, 22:43   #17 (permalink)
SQF Zauberer 10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von Vienna
 
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
Standard

Korrekt, darin liegt schon die Lösung. Ich habe dein "diesen Wert permanent erzwingen" als kurzzeitiges Takten missverstanden, weil ich der Meinung war, dass ein eingestelltes Wetter bis zu einem neuen Wetterbefehl erhalten bleibt. Meine Meinung entstand durch den Umstand, weil bei einem im Editor auf 100% eingestelltes Schönwetter über die gesamte Spielzeit erhalten bleibt. Das gilt auch für ein dort 100% eingestelltes Schlechtwetter.

Wer im MP für alle Spieler gleiches Wetter haben will, muss das Wetter über die gesamte Spielzeit synchronisieren. Ausgenommen 100% Schön- oder Schlechtwettereinstellung im Editor.
Vienna ist offline  
 


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Kontakt - HX3.de - Archiv - Nach oben

Angetrieben durch vBulletin, Entwicklung von Philipp Dörner & Tobias



SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119