EventsProfessional  Ein Wetterwechsel
Vorüberlegungen

Eure Hauptcharaktere werden während des gesamten Spielverlaufs wohl durch große Länder reisen, durch Wälder, Städte, Dörfer, Gebirge und sonstige Ortschaften. Oft werden sie im Freiem unterwegs sein und da kann es schon einmal passieren, dass unerwartet das Wetter umschlägt... oftmals mehrmals am Tag, und das mit Regen sowie auch Schnee.

. Um dies anstellen zu können, muss zuerst eine Zufallszahl in eine Variable gespeichert werden, die einen Zeitraum absteckt, während dessen schönes Wetter ist. Die Variable dafür nennen wir "Länge Wetterw.". Die Zufallszahl soll zwischen 1 und 7200 liegen. (Sekunden des Wartens bis zum Unwetter)
 
. Eine weitere Variable, die wir "Timer-Wetterw." nennen, wird auf "0" gesetzt.
 
. Direkt danach wird eine Endlosschleife eröffnet.
 
. Innerhalb der Endlosschleife beginnt alles damit, dass die Variable "Timer-Wetterw." um 1 hochgezählt wird.
 
. Direkt danach soll eine Warten-Funktion das Fortfahren des Ereigniscodes für eine Sekunde stoppen.
 
. Dem Warte-Ereignis folgt eine Bedingung, die prüft, ob der Wert der Variable "Länge Wetterw." mit dem Wert der Variable "Timer-Wetterw." identisch ist. Ein Nein-Fall ist nicht nötig.
 
. Innerhalb des Ja-Falles muss dann der Ausbruch aus der Endlosschleife erfolgen.
 
. Unter dem Ende der Endlosschleife wird nun eine Variable angelegt, der ihr den Namen "Wetter-Dauer" gebt. Sie soll eine Zufallszahl speichern, die zwischen 20 und 2000 liegt (Sekunden, wie lange das Unwetter dauern soll).
 
. Direkt danach soll eine neue Variable folgen, die ihr "Wetter-Timer" nennt, die auf "0" gesetzt werden soll.
 
. Direkt danach folgt eine weitere Endlosschleife
 
. Innerhalb dieser Endlosschleife wird zuerst die Variable "Wetter-Timer" um 1 hochgezählt.
 
. Direkt danach folgt eine Bedingung, die abfragt, ob der Schalter "In Gebäude/Höhle" auf ON/AN steht. Hier brauchen wir einen Nein-Fall in der Bedingung.
 
. Innerhalb des Ja-Falls soll ein Wettereffekt namens "Keiner/None" aufgerufen werden.
 
. Innerhalb des Nein-Falles soll eine Bedingung nun fragen, ob ein Schalter "Es ist Winter" auf AN steht.
 
. Im Ja-Fall dieser Bedingung soll als Wettereffekt "Snow/Schnee" aufgerufen werden.
 
. Im Nein-Fall ist es dann Regen, was als Wettereffekt in Aktion treten soll.
 
. Über dem Ende der Endlosschleife (innerhalb dieser) und außerhalb der Bedingungen soll nun ein Warte-Ereignis dafür sorgen, dass mit dem Fortfahren des Ereigniscodes eine Sekunde gewartet wird.
 
. Direkt danach, noch innerhalb der Endlosschleife, soll eine Bedingung prüfen, ob die Werte der Variablen "Wetter-Dauer" und "Wetter-Timer" identisch sind. Ein Nein-Fall ist hier nicht erforderlich.
 
. Wenn dem so ist, soll zuerst ein Wettereffekt namens "Keiner/None" aufgerufen werden. Direkt danach folgt dann der Schleifenausbruch.
Darstellung der Stichpunkte in MML
 Wetter-Wechsel-Ereignis [Parallel]
[Variable [Länge Wetterw.]] [<-- [setzen] [Zufall zw. [1] und [7200]]
[Variable [Timer Wetterw.]] [<-- [setzen] [0]
[Schleife Beginn]
    [Variable [Timer Wetterw.]] [<-- [+] [1]]
    [Warten [10]]
    [Bedingung][Variable][Timer Wetterw.][gleich][Länge Wetterw.]
 
  [Ja-Fall]
  [Schleife Ausbruch]
[Schleife Ende]
[Variable [Wetter Dauer]] [<-- [setzen] [Zufall zw. [20] und [2000]]
[Variable [Wetter Timer]] [<-- [setzen] [0]
[Schleife Beginn]
    [Variable [Wetter Timer]] [<-- [+] [1]]
    [Bedingung][Schalter][In Gebäude/Höhle][AN]
 
  [Ja-Fall]
  [Wettereffekt][Effektart: [keiner]]
transparent transparent
  [Nein-Fall]
  [Bedingung][Schalter][Es ist Winter][AN]
  [Ja-Fall]
  [Wettereffekt][Effektart: Schnee][Effektart: Stark]
transparent transparent
  [Nein-Fall]
  [Wettereffekt][Effektart: Regen][Effektart: Stark]
[Warten [10]]
[Bedingung][Variable][Wetter Timer][gleich][Wetter Dauer]
  [Ja-Fall]
  [Wettereffekt][Effektart: [keiner]]
[Schleife Ausbruch]
[Schleife Ende]
Anleitung zur Erstellung des Maker-Codes
1. : Den Beginn macht eine neue Variable, die ihr "Länge Wetterw." nennt. Legt sie mit Hilfe des Ereigniskommandos "Change Variable(s)/Variable(n) ändern, das ihr auf der ersten Registerkarte der Ereigniskommandos findet. Wählt unbedingt eine neue, noch nicht benutzte Variable aus, der ihr den oben genannten Namen gebt. Mit "Set/Wert setzen" und "Random/Zufall" veranlasst ihr, dass eine Zufallszahl zwischen 1 und 7200 in die Variable geschrieben wird.
 
2. : Nach dem selbem Schema legt ihr nun eine weitere Variable an, der ihr den Namen "Timer Wetterw." gebt. Hier soll statt einer Zufallszahl fest die Zahl 0 geschrieben werden.
 
3. : Nun folgt die erste Endlosschleife. Das Ereigniskommando dafür "Cycle/Zyklus erstellen" findet ihr auf der dritten Registerkarte der Ereigniskommandos.
 
4. : Innerhalb dieser Endlosschleife bestimmt ihr, ähnlich wie unter Punkt 1, dass dem Wert der Variable "Timer Wetterw." die Zahl 1 dazugezählt wird.
 
5. : Direkt danach soll ein Warten-Ereignis folgen, das die Codefortführung für eine Sekunde unterbricht. Ihr findet das Ereigniskommando dafür auf der zweiten Registerkarte der Ereigniskommandoliste.
 
6. : Direkt danach soll eine Bedingung folgen, die abfragt, ob die Werte der Variable "Länge Wetterw." und "Timer Wetterw." identisch sind. Das Kommando dafür findet ihr auf der dritten Registerkarte der Ereigniskommandos ("Fork Conditions/Bedingung"). Wichtig ist hier, dass ihr die Option "Variable" auswählt und dort die beiden genannten Variablen bestimmt. Wählt im Drop-Down-Menü noch "same". Einen Nein-Fall brauchen wir hier nicht.
 
7. : Innerhalb des Ja-Falles soll dann ein Schleifenausbruch erfolgen, dessen Befehl auf der dritten Registerkarte der Ereigniskommandos sich befindet.
 
8. : Direkt nach dem Ende der Endlosschleife folgt nun nach dem Schema von Punkt 1 und 2, dass ihr eine Variable namens "Wetter Dauer" erstellt, in der eine Zufallszahl zwischen 20 und 2000 gespeichert wird. Erstellt nach dieser eine zweite Variable namens "Wetter Timer", in der die Zahl 0 abgelegt wird.
 
9. : Dann folgt wieder eine Endlosschleife; deren Ereigniskommando "Cycle/Zyklus erstellen" findet ihr auf der dritten Registerkarte der Ereigniskommandos.
 
10. : Innerhalb dieser Endlosschleife bestimmt ihr, ähnlich wie in der Endlosschleife zuvor, dass dem Wert der Variable "Wetter Timer" die Zahl 1 dazugezählt wird.
 
11. : Eine Bedingung soll nun abfragen, ob der Schalter "In Gebäude/Höhle" aktiv ist. Habt ihr diesen Schalter noch nicht angelegt, dann wählt im Dialog zum Anlegen einer Bedingung (zu finden auf der dritten Registerkarte der Ereigniskommandos) einen neuen, freien Schalter aus und gebt ihm diesen Namen. Wichtig ist hier, dass es einen Nein-Fall gibt. Eure Bedingung könnte nun wie Folgt aussehen:
Im englischem Maker
<>If Switch(In Gebäude/Höhle) is ON
 <>
:Else Case
 <>
:End Case
Im deutschem Maker (V1.10c)
<>Bedingung:Schalter[In Gebäude/Höhle]- AN
 <>
:Ansonsten
 <>
:End-Fall
 
12. : Innerhalb des Ja-Falles (Die Heldentruppe befindet sich in einem Gebäude; der Bereich ist dunkelgrün hervorgehoben) soll kein Wettereffekt angezeigt werden. Wählt also auf der zweiten Registerkarte der Ereigniskommandos das entsprechende aus ("Call weather effect/Wettereffekt aufrufen") und bestimmt dort entsprechend, dass keiner angezeigt werden soll.
 
13. : Im Nein-Fall (die Heldentruppe ist außerhalb von Gebäuden und Höhlen unterwegs; der Bereich ist dunkelrot hervorgehoben) folgt sofort eine neue Bedingung, die nun abfragt, ob ein Schalter namens "Es ist Winter" auf ON/AN steht. Verfahrt hierfür wie zuvor schon mit der Bedingung für den Schalter "In Gebäude/Höhle", wobei am Ende folgendes herauskommen sollte:
Im englischem Maker
<>If Switch(Es ist Winter) is ON
 <>
:Else Case
 <>
:End Case
Im deutschem Maker (V1.10c)
<>Bedingung:Schalter[Es ist Winter]- AN
 <>
:Ansonsten
 <>
:End-Fall
 
14. : Im Ja-Fall (Es ist Winter; der Bereich ist dunkelblau hervorgehoben) legt ihr einen Wettereffekt an, der es schneien lässt. Den Befehl dafür findet ihr auf der zweiten Registerkarte ("Call weather effect/Wettereffekt aufrufen") und bestimmt dort entsprechend, dass es schneien soll (Snow/Schnee).
 
15. : Im Nein-Fall (Es ist nicht Winter; der Bereich ist pink hervorgehoben) macht ihr exakt das Selbe, nur dass es statt schneien regnen soll (Rain/Regen).
 
16. : Etwas weiter unten, außerhalb der Bedingungen, direkt über dem Ende der Endlosschleife geht es nun weiter. Hier soll nun ein Warte-Ereignis das Fortfahren mit dem Rest des Maker-Codes für eine Sekunde stoppen. Zu finden ist es auf der zweiten Registerkarte der Ereigniskommandos (Wait/Einen Moment warten)
 
17. : Direkt nach dem Warten-Ereignis soll eine Bedingung folgen, die abfragt, ob die Werte der Variable "Wetter Dauer" und "Wetter Timer" identisch sind. Das Kommando dafür findet ihr auf der dritten Registerkarte der Ereigniskommandos ("Fork Conditions/Bedingung"). Wichtig ist hier, dass ihr die Option "Variable" auswählt und dort die beiden genannten Variablen bestimmt. Wählt im Drop-Down-Menü noch "same". Einen Nein-Fall brauchen wir hier nicht.
 
18. : Innerhalb des Ja-Falles soll dann zuerst ein Wettereffekt namens "None/Keiner" angelegt werden. Somit werden sämtliche aktiven Wettereffekte beendet. Direkt danach folgt ein Schleifenausbruch, dessen Befehl auf der dritten Registerkarte der Ereigniskommandos sich befindet.
 
Der erstellte Maker-Code
Im englischem Maker
<>Change Var: Var[Länge Wetterw.] (Set)-Random(1 to 7200)
<>Change Var: Var[Timer Wetterw.] (Set)- 0
<>Loop
 <>Change Var: Var[Timer Wetterw] (+)- 1
 <>Wait: 1.0sec
 <>If Var(Länge Wetterw.) V[Timer Wetterw.](=)
  <>Break
  <>
 :End Case
 <>
:End Loop
<>Change Var: Var[Wetter Dauer] (Set)-Random(20 to 2000)
<>Change Var: Var[Wetter Timer] (Set)- 0
<>Loop
 <>Change Var: Var[Wetter Timer] (+)- 1
 <>If Switch (In Gebäude/Höhle) is ON
  <>Call Weather Effect: None/Off
  <>
 :Else Case
  <>If Switch (Es ist Winter) is ON
   <>Call Weather Effect: Snow/High
   <>
  :Else Case
   <>Call Weather Effect: Rain/High
   <>
  :End Case
  <>
 :End Case
 <>Wait: 1.0sec
 <>If Var(Wetter Dauer) V[Wetter Timer](=)
  <>Call Weather Effect: None/Off
  <>Break
  <>
 :End Case
 <>
:End Loop
<>
Im deutschem Maker (V1.10c)
<>Var. ändern: [Länge Wetterw.]Wert, Zufll(1*7200)
<>Var. ändern: [Timer Wetterw.]Wert, 0
<>Schleife
 <>Var. ändern: [Timer Wetterw]+, 1
 <>Warten: 1.0S.
 <>Bedingung: Varb(Länge Wetterw.)-V[Timer Wetterw]Gleich
  <>Schleife stoppen
  <>
 :End-Fall
 <>
:Schleifenende
<>Var. ändern: [Wetter Dauer]Wert, Zufll(20*2000)
<>Var. ändern: [Wetter Timer]Wert, 0
<>Schleife
 <>Var. ändern: [Wetter Timer]+, 1
 <>Bedingung:Schalter(In Gebäude/Höhle)- AN
  <>Wettereffekt aufruf: kein
  <>
 :Ansonsten
  <>Bedingung:Schalter(Es ist Winter)- AN
   <>Wettereffekt aufruf: SN/St
   <>
  :Ansonsten
   <>Wettereffekt aufruf: RE/St
   <>
  :End-Fall
  <>
 :End-Fall
 <>Warten: 1.0S
 <>Bedingung: Varb(Wetter Dauer)-V[Wetter Timer]Gleich
  <>Wettereffekt aufruf: kein
  <>Schleife stoppen
  <>
 :End-Fall
 <>
:Schleifenende
<>
Was noch erledigt werden sollte

In oben vorgestelltem Wetterwechsel wird für eine Sekunde ein Wettereffekt dargestellt und dann erst geprüft, ob zum Einen das Ende der Wetter-Dauer erreicht wurde und zum Anderem, ob sich die Hauptcharaktere in einem Gebäude oder einer Höhle befinden. In dieser Sekunde kann sich die Heldengruppe gut einmal in ein Gebäude begeben, wo es auch für einige Bruchteile einer Sekunde dann regnen kann, was eigentlich nicht der Fall sein sollte.

Abhilfe schafft ihr, indem ihr in dem Raum eines Gebäudes oder einer Höhle, in dem die Heldengruppe direkt vom Freiem hineinteleportiert wird, ein Ereignis anlegt. Dieses soll als paralleler Prozess laufen und immer den Wettereffekt "None/Keiner" aufrufen. Damit schaltet ihr generell die Darstellung von Unwettern innerhalb von Gebäuden und Höhlen aus.

Ebenfalls wichtig ist es, dass ihr, wenn sich eure Hauptcharaktere in eisigen Gefilden befinden (Schneelandschaften zum Beispiel) im Freien ein Ereignis anlegt, das als paralleler Prozess läuft und den oben genannten Schalter "Es ist Winter" auf AN stellt. Dann wird es dort auch schneien, statt regnen.
Wichtig ist jedoch, dass dieser Schalter bei Verlassen, der Winterregionen wieder deaktiviert wird.