Missionen (Scenarios) für P3D

Einleitung | Warum | Missionen | Tutorial | FIP

Einführung | FlugErstellen | MissionErstellen | MissionErweitern | MissionVollenden ||||| MissionAusbauen 1 | 2 | 3 | 4 | 5 | 6
Beispiel Flug ausbauen (Teil5)

Nach erfolgreichem Testflug werden als Erstes die Areas unsichtbar gemacht.
Stelle also in der Gruppe POI bei den Areas "WP1", WP2", "WP3" und "Genf" bei DrawStyle von "Outlined" auf "None" um.

Als Nächstes muss das Scenario-Goal angepasst werden, weil man ja ohne Öl Leck in Genf landen wird.
Wechsle also in die Gruppe "Leak" und klicke das Goal "LandSafe" an.
Stelle bei Activated um auf "NO". Ändere den Text ab auf:
"Land safely on an airfield. / Lande sicher auf einem Flugplatz."

Weil das Goal jetzt ausgeschaltet ist, erscheint es auch nicht im "Kneeboard" unter "Scenario". Das Goal soll erst angezeigt werden, wenn ein Öl Leck auftritt.
Der ideale Moment, das Goal einzuschalten ist die ObjectActivationAvtion namens "LeakText on", klicke diese Action an und hole unter ObjectReferenceList das Goal "LandSafe" in das Feld Referenced.

Leider sind der Trigger "Landezone" und die Area "Landezone" nicht geeignet, für die veränderte Mission.

Diese werden ersetzt durch einen "AirportLandingTrigger", zu finden im Catalog, Triggers.
- Ziehe den AirportLandingTrigger in das Visualisations-Fenster
- Gib dem Trigger den Namen "LandSafe".
- schalte bei Activated um auf "NO".
- Bringe unter Actions die GoalResolutionAction namens "LandSafeOK" in das Feld Referenced.

Der AirportLandingTrigger möchte genau wissen, welche Flughäfen bei der Landung gelten, also musst du diese definieren.

Klicke unter AirportIdent auf "ADD", es wird im Fenster unten eine neue Zeile erzeugt, namens Airportident 1".

Unterhalb des Fensters ist ein neuer Reiter entstanden, mit Namen "AirportIdent 1"

Darunter im Eingabefeld "EnterValue" kannst du die AirportIdent (FlughafenIdentifikation) eingeben.

Du musst also alle relevanten Flughäfen mit "ADD" hinzufügen und identifizieren.
- Gib bei AirportIdent 1 "LSGS" ein (für Sion)
- Gib bei AirportIdent 2 "LSGG" ein (für Geneva)
- Gib bei AirportIdent 3 "LSGL" ein (La Blecherette)
(La Blecherette ist auf halbem Weg, also ein potenzieller Notlandeplatz. Es gibt weitere kleine Landestreifen, welche ich in diesem Beispiel Flug aber ausser Acht lasse.)

Um den AreaLandingTrigger durch den AirpotLandingTrigger zu ersetzen, mache folgendes:
- Wähle die ObjectActivationAvtion mit Namen "LeakText on" und bringe den Trigger "LandSave" in das Feld Referenced.
- Wähle also die unnötigen 2 Objekte namens "LandingZone" aus und lösche diese (entweder mit Rechtsklick, "Delete (2)", oder durch simples Klicken auf die Taste "Delete" auf der Tastatur).

Wähle nun den "LeckText" und schreibe diesen um in:
"Der Motor verliert Öl, lande schnellstens auf einem Flughafen.
The engine is losing oil, land at an airport as soon as possible."
(Achte darauf, eine Zeilenschaltung nach dem Deutschen Text zu machen.)

Wähle die GoalResolutionAction "LandSafeOK" und das Goal "LandSafe" aus und dupliziere die 2 Objekte.
- Benenne die duplizierte GoalResolutionAction "LandingInGenfOK".
- Benenne das duplizierte Goal "LandingInGenf". Bei Activated schalte um auf "YES". Bei Text schreibe "Land at Geneva airport. / Lande auf dem Flugplatz Genf."

Das Goal "LandingInGenf" ist aktiv, im Falle eines Öl Leck muss dieses ausgeschaltet werden und dafür das Goal "LandSafe" eingeschaltet werden.
- Dupliziere dazu die ObjectActivationAvtion mit Namen "LeakText off".
- Benenne das Duplikat "LandingInGenf off".
- Bei NewObjectState muss "DEACTIVATE" stehen.
- Bringe unter ObjectReferenceList das Goal "LandingInGenf" in des Feld Referenced.
- Unter OnCompleteAction bringe die ObjectActivationAvtion namens "LeakText on" in das Feld Referenced.

Wähle jetzt die DelayAction namens "10sLeakText on" aus.

Beachte: Das Objekt ist zwar in der Gruppe "Leak" sichtbar, befindet sich aber in der Gruppe "TimerFailure". Das Objekt ist nur sichtbar, weil es verknüpft ist mit der ObjectActivationAvtion namens "LeakText on".

Bringe nun unter OnCompleteAction die ObjectActivationAvtion namens "LandingInGenf off" in das Feld Referenced. (Wenn dieses Objekt nicht in der Liste "Avaiable" zu finden ist, musst du "Filter by Group" umschalten (oranger Rahmen).

Jetzt musst du "LeakText on" aus der Liste Referenced entfernen. Entweder mit Doppelklick, oder mit auswählen (1) und roten Pfeil (2) anklicken.
(Keinesfalls auswählen und "Delete" auf der Tastatur drücken, denn dadurch würde das Objekt gelöscht und nicht nur aus der Liste Referenced entfernt.)

Vermutlich ist die Anzeige in die Gruppe "TimerFailure" gewechselt, weil die DelayAction sich dort befindet.

Wechsle wieder in die Gruppe "Leak", am einfachsten geht das, indem du die ObjectActivationAvtion namens "LandingInGenf off" anklickst und mit Rechtsklick "Find in Visualization" auswählst.

Das Goal "LandingInGenf" muss jetzt noch im richtigen Moment auf "Erfüllt" geschaltet werden.
Dazu wird ein AreaLandingTrigger benötigt, zu finden im Catalog, Triggers.
-Ziehe den Trigger in das Visualisations-Fenster.
- Benenne ihn "LandingInGenfOK".
- Bei Aktivated muss "Yes" stehen.
- Unter Actions bringe die GoalResolutionAction namens "LandingInGenfOK" in das Feld Referenced.
- Unter Areas bringe die Area "Genf" in das Feld Referenced (eventuell "Filter by Group" umschalten).

Die Anzeige ist in die Gruppe "POI" gesprungen, wähle also den AreaLandingTrigger und per Rechtsklick "Find in Visualization" kehrst du in die Gruppe "Leak" zurück.

Wähle die ObjectActivationAvtion namens "LandingInGenf off" und bringe unter ObjectReferenceList den AreaLandingTrigger namens "LandingInGenfOK" in das Feld Referenced.

Was hat dieser Umbau bewirkt:
- Im Kneeboard wird das Goal "LandingInGenf" angezeigt.
- Sobald ein Öl Leck auftritt, wird dieses Goal ausgeblendet und der AreaLandingTrigger "LandingInGenfOK" ausgeschaltet.
Wenn der AreaLandingTrigger nicht ausgeschaltet wird, aktiviert dieser bei Landung in Genf das Goal "LandingInGenf", das Goal wird (obwohl deaktiviert) eingeblendet und als erfüllt gewertet. Das ist nicht gewünscht, denn nur das Goal "LandSafe" soll angezeigt werden.
- Per OnCompleteAction wird danach das Goal "LandSafe" angezeigt.

Wechsle im Visualisations-Fenster in die Gruppe "TimerFailure".

Damit trotz schonender Flugweise ein Öl Leck auftreten kann, wird eine RandomAction benötigt, zu finden im Catalog, Actions.
- Ziehe die RandomAction in das Visualisations-Fenster.
- Benenne die Action "RandomOilLeak WP1".
- Bei ProbabilityPercent gibst du "50" ein.


An dieser Stelle eine kurze Erklärung zu der RandomAction:

- Wenn unter "Actions" mehrere Objekte im Feld Referenced gelistet sind und in jedem Fall eines dieser Objekte aktiviert werden soll, stellst du bei ProbabilityPercent "100" ein.
(Nur eines dieser Objekte wird aktiviert. Sind also z.b. 4 Objekte gelistet, hat jedes Objekt 25% Chance, aktiviert zu werden.)

- Wenn unter "Actions" nur ein Objekt gelistet ist, kannst du bei ProbabilityPercent die Warscheinlichkeit (0 bis 100%) einstellen, mit der die Action ausgelöst wird.
(In diesem ExampleFlight wird nur 1 Objekt verwendet, welches mit 50% Chance aktiviert werden soll).


Wechsle in die Gruppe "Leak".
1) Wähle die 4 Objekte "LeakText" aus und dupliziere sie.
2) Verschiebe die Duplikate in die Gruppe "TimerFailure".

Benenne die 4 Objekte um, indem du "- Copy " entfernst.
Die neuen Namen lauten also:
- "LeakText on 1"
- "10s LeakText off 1"
- "LeakText off 1"
- "LeakText 1"

Beim OnScreenText namens "LeakText1" änderst du den Text ab auf:
"Der Flughafen Sion ist die nächste Landemöglichkeit.
Drehe um und lande in Sion.
Sion Airport is the nearest landing option.
Turn around and land in Sion."
(Achte darauf, nach jedem Satz eine Zeilenschaltung zu setzen.)

Wechsle in die Gruppe "POI", suche die ObjectActivationAction namens "WP2 off" und dupliziere diese.
- Benenne das Duplikat "WP2 Off Emergency".
- Bringe unter ObjectReferenceList den PointOfInterest namens "WP2" in das Feld Referenced.
- Verschiebe jetzt die ObjectActivationAction namens "WP2 Off Emergency" in die Gruppe "TimerFailure".

Wähle die ObjectActivationAvtion namens "LeakText off 1" und bringe unter OnCompleteAction "WP2 Off Emergency" in das Feld Referenced.

Anmerkung:
Der Unterschied zwischen "WP2 off" und "WP2 off Emergency", besteht darin:
-"WP2 off" schaltet zwar den "WP2" aus, gleichzeitig wird aber, per OnCompleteAction "WP3" einschaltet, was in diesem Fall nicht erwünscht ist.
-"WP2 off Emergency" schaltet nur WP2 aus.

Dupliziere die DelayAction namens "20sLeakText off 1" und benenne das Duplikat "20sLeakText on 1".

Bei OnCompleteAction bringe die ObjectActivationAvtion namens "LeakText on 1" in das Feld Referenced.

Als Nächstes wird eine ObjectActivationAvtion benötigt, dupliziere also eine vorhandene.
- Benenne das Duplikat "OilLeakWP1".
- Bei NewObjectState schalte auf "DEACTIVATE".
- Bei ObjectReferenceList müssen 5 Trigger in das Feld Referenced gebracht werden:
"StartTimer"
"<2400RPM"
">2400RPM"
"2min. to Recreation"
"4,5min. to OilLeak"
(Damit wird sichergestellt, dass das Öl Leck nicht ein zweites Mal ausgelöst wird.)

- Bei OnCompleteAction bringe als Erstes die FailureAction namens "OilLeak" in das Feld Referenced. Anschliessend bringe die DelayAction namens "20sLeakText on 1" in das Feld Referenced (die Reihenfolge ist wichtig).

Jetzt wird ein ProximityTrigger benötigt, dupliziere also den vorhandenen, mit Namen "StartTimer".
- Benenne das Duplikat "RandomOilLeak WP1".
- Bei OnEnterAction bringe die RandomAction namens "RandomOilLeak WP1" in das Feld Referenced.
- Bei Activated muss "YES" eingestellt sein.
- Bei Areas bringe die Area "WP1" in das Feld Referenced. (Du wirst in die Gruppe POI verschoben, wechsle also zurück in die Gruppe "TimerFailure".)

Wähle die RandomAction namens "RandomOilLeak WP1".
Bringe unter Actions die ObjectActivationAvtion namens "OilLeakWP1" in das Feld Referenced.

Ein paar Dinge fehlen noch:
1) Zuerst ein PointOfInterest beim Flughafen Sion:
- Wechsle den Hauptbereich auf "Prepar3D" und hole aus dem Catalog, Scenario den PointOfInterest in das Hauptfenster.
- Platziere den PointOfInterest mitten auf der Landebahn des Flughafen Sion.
- Benenne den PointOfInterest "Sion".
- Schalte bei Activated um auf "NO".
- Schreibe bei TargetName "Sion"
- Klicke bei AttachedWorldPosition auf "EDIT".
- AltitudeAGL muss auf "YES" stehen.
- Stelle bei Altitude "0" ein.

2) Damit der PointOfInterest "Sion" kurz vor der Landung ausgeschaltet wird, benötigen wir eine RectangleArea, zu finden im Catalog unter Areas:
- Ziehe die Area in das Prepar3D-Fenster.
- Benenne die Area "Sion".
- Stelle bei Length "200", bei Width 3000 und bei Height 200 ein.
- Bei Pitch und Bank muss jeweils "0" stehen.
- Bei DrawStyle stelle um auf None.
- Kontrolliere, ob bei AttachedWorldPosition, EDIT Altitude auf "0" und AltitudeAGL auf "EIN" steht.
- Mit Rotate richte die Area an der Landebahn aus.

3) Der PointOfInterest "Sion" muss eingeschaltet werden:
- Schalte den Hauptbereich um auf Visualization.
- Dupliziere eine ObjectActivationAvtion und benenne das Duplikat "Sion on".
- NewObjectState stelle auf "ACTIVATE".
- Bei ObjectReferenceList hole den PointOfInterest "Sion" in das Feld Referenced.

4) Der PointOfInterest "Sion" muss vor der Landung ausgeschaltet werden:
- Dupliziere die ObjectActivationAvtion namens "Sion on" und benenne das Duplikat "Sion off".
- NewObjectState stelle auf "DEACTIVATE".
- Bei ObjectReferenceList hole den PointOfInterest "Sion" in das Feld Referenced.

5) Die Area "Sion" benötigt einen Trigger:
- Dupliziere einen ProximityTrigger und benenne das Duplikat "Sion".
- Bei OnEnterAction hole die ObjectActivationAvtion "Sion off" in das Feld Referenced.
- Bei Activated schalte um auf "NO"
- Bei Areas hole die Area "Sion" in das Feld Referenced.

6) Ausschalten des PointOfInterest "Sion" verknüpfen:
- Wähle die ObjectActivationAvtion "LeakText on 1" und hole bei ObjectReferenceList den ProximityTrigger "Sion" in das Feld Referenced.

7) Einschalten des PointOfInterest "Sion" bei Auftreten des Öl Leck verknüpfen:
- Wähle die ObjectActivationAvtion "LeakText off 1" und hole bei OnCompleteAction die ObjectActivationAvtion "Sion on" in das Feld Referenced.

Fertig sieht es so aus, wie im Bild unten. Die Darstellung kann anders sein, durch klick auf den Doppelpfeil oben rechts, wird die Darstellung neu angeordnet.
Bei Validation Output darf kein Fehler gelistet sein.

Jetzt ist es Zeit, den Flug zu testen.
- Damit das Öl Leck garantiert beim WP1 ausgelöst wird, stelle bei der RandomAction "RandomOilLeak WP1" unter ProbabilityPercent "100" ein.
- Speichere die Mission und beende den SimDirector.
- Öffne Prepar3D und teste den Flug.
- Nach erfolgreichem Test öffne den Flug im SimDirector und stelle bei der RandomAction "RandomOilLeak WP1" unter ProbabilityPercent wieder "50" ein.


Hier die aktuelle Mission zum Download (mit 50% Chance auf Öl Leck bei WP1).

ExampleFlightExpand5.zip

Ich hoffe, euch machen diese Flüge Spass, wenn ja, gebt doch bitte eine Rückmeldung an p3d@andi20.ch.
Auch Fehlermeldungen (Schreibfehler, falsche Angaben, usw.) an mich senden, ich freue mich über jede Rückmeldung.
Einführung | FlugErstellen | MissionErstellen | MissionErweitern | MissionVollenden ||||| MissionAusbauen 1 | 2 | 3 | 4 | 5 | 6

Einleitung | Warum | Missionen | Tutorial | FIP