1
0
Fork 0

Merge branch 'master' of gitorious.org:fg/fgdata

This commit is contained in:
BARANGER Emmanuel 2014-01-13 07:11:01 +01:00
commit 9750e650ec
14 changed files with 1005 additions and 220 deletions

View file

@ -2,14 +2,14 @@
<name>Setting the Altimeter</name>
<description>
The Altimeter on an aircraft works using air pressure. This varies due to weather conditions, so the altimeter must be set regularly to a known value.
Having the correct altimeter setting is important. As well as helping pilots to avoid any high terrain, it means that aircraft can be separated by altitude and not hit each other. This is particular important in busy airspace.
The source of this altimeter setting varies. At high altitudes, a standard pressure is used. At lower levels, and area setting is used, and around airports, the current airport setting is used.
This tutorial will teach you how to set the altimeter based on the ATIS (Automatic Terminal Information Service) for Livermore Municipal airport.
</description>
<audio-dir>Aircraft/c172p/tutorial/radio</audio-dir>
<audio-dir>Aircraft/c172p/Tutorials/altimeter</audio-dir>
<timeofday>morning</timeofday>
<presets>
<airport-id>KLVK</airport-id>
@ -24,7 +24,7 @@ This tutorial will teach you how to set the altimeter based on the ATIS (Automat
<offset-azimuth-deg>0</offset-azimuth-deg>
<offset-distance-nm>0</offset-distance-nm>
</presets>
<init>
<set>
<property>/controls/gear/brake-parking</property>
@ -58,31 +58,33 @@ This tutorial will teach you how to set the altimeter based on the ATIS (Automat
<property>/controls/flight/elevator-trim</property>
<value>0.17</value>
</set>
<set>
<property>/instrumentation/comm[0]/frequencies/selected-mhz</property>
<value>119.650</value>
</set>
</init>
<step>
<message>In this lesson, you'll learn how to set the altimeter to the Livermore ATIS. I've already
set the radio to the correct frequency - 119.65 MHz</message>
set the radio to the correct frequency - 119.65</message>
<wait>10</wait>
</step>
<step>
<message>Listen to the ATIS message. If you cannot hear it, check the Sound Configuration item in the File menu.</message>
<wait>10</wait>
<wait>20</wait>
<set>
<property>/instrumentation/kma20/com1</property>
<value>-1</value>
</set>
</step>
<step>
<message>The ATIS message said the altimeter setting was 29.97.
We can set this using Equipment->Instrument Settings, or we can adjust
the altimeter so that the altimeter matches the altitude of Livermore - 380ft.
<message>The ATIS message said the altimeter setting was 30.13.
We can set this on the altimeter by using the small insert window on the right side.
Alternatively we can adjust the altimeter so that it matches the altitude of Livermore - 380ft.
</message>
<wait>10</wait>
<view>
<heading-offset-deg>353.8</heading-offset-deg>
<pitch-offset-deg>-20.3</pitch-offset-deg>
@ -93,13 +95,12 @@ This tutorial will teach you how to set the altimeter based on the ATIS (Automat
<field-of-view>15.1</field-of-view>
</view>
</step>
<step>
<message>To adjust the altimeter directly, use the knob on the bottom left. Click on the right
to increase the altitude, and left to decrease. Use the left mouse button to make small adjustments, and
the right button to make large adjustments.
side to increase the altitude, and left to decrease. Alternatively, use your mouse scroll wheel.
</message>
<wait>10</wait>
<view>
<heading-offset-deg>353.8</heading-offset-deg>
<pitch-offset-deg>-20.3</pitch-offset-deg>
@ -109,7 +110,7 @@ This tutorial will teach you how to set the altimeter based on the ATIS (Automat
<z-offset-m>0.4</z-offset-m>
<field-of-view>15.1</field-of-view>
</view>
<marker>
<x-m>-0.3525</x-m>
<y-m>-0.1640</y-m>
@ -117,9 +118,10 @@ This tutorial will teach you how to set the altimeter based on the ATIS (Automat
<scale>0.8756</scale>
</marker>
</step>
<step>
<message>Set the altimeter to 380 feet, or the pressure setting to 29.97 inHG.</message>
<message>Set the altimeter to 380 feet, or the pressure setting to 30.13 inHG.</message>
<wait>10</wait>
<view>
<heading-offset-deg>353.8</heading-offset-deg>
<pitch-offset-deg>-20.3</pitch-offset-deg>
@ -129,7 +131,7 @@ This tutorial will teach you how to set the altimeter based on the ATIS (Automat
<z-offset-m>0.4</z-offset-m>
<field-of-view>15.1</field-of-view>
</view>
<marker>
<x-m>-0.3525</x-m>
<y-m>-0.1640</y-m>
@ -142,7 +144,7 @@ This tutorial will teach you how to set the altimeter based on the ATIS (Automat
<condition>
<less-than>
<property>/instrumentation/altimeter/setting-inhg</property>
<value>29.96</value>
<value>30.12</value>
</less-than>
</condition>
</error>
@ -152,31 +154,31 @@ This tutorial will teach you how to set the altimeter based on the ATIS (Automat
<condition>
<greater-than>
<property>/instrumentation/altimeter/setting-inhg</property>
<value>29.98</value>
<value>30.14</value>
</greater-than>
</condition>
</error>
<exit>
<condition>
<and>
<greater-than>
<property>/instrumentation/altimeter/setting-inhg</property>
<value>29.96</value>
<value>30.12</value>
</greater-than>
<less-than>
<property>/instrumentation/altimeter/setting-inhg</property>
<value>29.98</value>
<value>30.14</value>
</less-than>
</and>
</condition>
</exit>
</step>
<end>
<message>If you set the pressure setting directly, you can double-check you've set the correct
value by checking the current altitude.</message>
<message>Tutorial complete. If you set the pressure setting directly,
you can double-check you've set the correct value by checking the current altitude.</message>
</end>
</PropertyList>

View file

@ -1,13 +1,13 @@
<PropertyList>
<name>Straight-in Landing</name>
<description>Landings are not optional...
Land the aircraft from an altitude of 1000ft on runway 30 at KHAF on a calm morning.
Unlike normal flight, when landing you use power alone to control descent rate. The runway should stay in the same position throughout the descent - about a third of the distance above the glare-shield.
KHAF has a VASI to the left of runway 30, a series of lights designed to help you judge your approach. Simply put, the VASI will display red lights if you are descending too fast (indicating that you need to increase power), and white lights if you are too high (indicating that you need to decrease power). If you are descending at the right angle, you will see 3 red lights and 3 white.
You start the tutorial cruising at around 1000ft and 90kts. To begin your descent, you will need to reduce power and drop one notch flaps. You are aiming to approach at 80kts and 300fpm. As you get closer, you will need to reduce power further and drop more flaps, aiming to touch down "on the numbers" at 65kts.
</description>
<timeofday>afternoon</timeofday>
@ -27,7 +27,7 @@ You start the tutorial cruising at around 1000ft and 90kts. To begin your descen
<vor-id>0</vor-id>
<fix>0</fix>
</presets>
<init>
<set>
<property>/controls/flight/flaps</property>
@ -54,7 +54,7 @@ You start the tutorial cruising at around 1000ft and 90kts. To begin your descen
<value>Fair weather</value>
</set>
</init>
<step>
<message>The runway is straight ahead. Reduce throttle to 50% and apply one degree of flaps.
Stay in line with the runway about a hands-width above the glare-shield.
@ -100,7 +100,7 @@ You start the tutorial cruising at around 1000ft and 90kts. To begin your descen
</condition>
</exit>
</step>
<step>
<set>
<property>/controls/engines/engine/starter</property>
@ -128,7 +128,7 @@ You start the tutorial cruising at around 1000ft and 90kts. To begin your descen
</condition>
</exit>
</step>
<step>
<message>Let down your final set of flaps and continue to follow the VASI glideslope.
Stay lined up with the middle of the runway.
@ -142,7 +142,7 @@ You start the tutorial cruising at around 1000ft and 90kts. To begin your descen
</less-than>
</condition>
</error>
<exit>
<condition>
<greater-than>
@ -152,7 +152,7 @@ You start the tutorial cruising at around 1000ft and 90kts. To begin your descen
</condition>
</exit>
</step>
<step>
<message>Reduce power to idle. When you are about 10 feet above the ground,
smoothly bring the nose up so it is level with the horizon.
@ -166,7 +166,7 @@ You start the tutorial cruising at around 1000ft and 90kts. To begin your descen
</condition>
</exit>
</step>
<step>
<message>Keep tracking straight down the runway and let the aircraft land on the main gear.</message>
<exit>
@ -178,20 +178,20 @@ You start the tutorial cruising at around 1000ft and 90kts. To begin your descen
</condition>
</exit>
</step>
<step>
<message>Lower the nose wheel, continue to track down the runway and gently brake to a stop. Use
the mouse with the left button held down to steer.</message>
<exit>
<condition>
<less-than>
<property>/velocities/airspeed-kt</property>
<property>/velocities/groundspeed-kt</property>
<value>5.0</value>
</less-than>
</condition>
</exit>
</step>
<end>
<message>Congratulations on a successful landing.</message>
</end>

View file

@ -2,7 +2,7 @@
<name>Radio Tuning</name>
<description>
Radios are used both for communication, and also for navigation.
This tutorial will teach you how to tune the radio of the aircraft to pick up
the ATIS - Automatic Terminal Information Service. This is broadcast by all
but the smallest airports and provides information on the current ground-level
@ -23,7 +23,7 @@ weather, the altimeter setting and the runway in use.
<offset-azimuth-deg>0</offset-azimuth-deg>
<offset-distance-nm>0</offset-distance-nm>
</presets>
<init>
<set>
<property>/controls/gear/brake-parking</property>
@ -58,13 +58,13 @@ weather, the altimeter setting and the runway in use.
<value>0.17</value>
</set>
</init>
<step>
<message>In this lesson, you'll learn how to tune the radio to the Livermore ATIS.
The radio is in the middle of the center console.</message>
<wait>10</wait>
</step>
<step>
<message>There are 4 radios on this aircraft - two for communication (COMM1, COMM2) and two for navigation (NAV1, NAV2).
Each radio has an active frequency and a standby frequency.
@ -72,7 +72,8 @@ weather, the altimeter setting and the runway in use.
<wait>10</wait>
</step>
<step>
<message>To change the standby frequency, you can click on the left side of the knob to decrease it, and the right side to increase it. </message>
<message>To change the standby frequency, click on the highlighted knob. The outer knob changes the number on the left of the decimal place.
The inner knob changes the number on the right of the decimal place.</message>
<view>
<field-of-view>14.0</field-of-view>
<heading-offset-deg>336</heading-offset-deg>
@ -86,7 +87,7 @@ weather, the altimeter setting and the runway in use.
</marker>
</step>
<step>
<message>Using the middle mouse button changes the number on the left of the decimal place, while the left mouse button changes the number after the decimal place.</message>
<message>The left mouse button increases the value, while the middle button decreases it. Alternatively, you can use your mouse wheel.</message>
<view>
<field-of-view>14.0</field-of-view>
<heading-offset-deg>336</heading-offset-deg>
@ -155,46 +156,78 @@ weather, the altimeter setting and the runway in use.
</condition>
</exit>
</step>
<step>
<message>Listen to the ATIS message. If you cannot hear it,
look at the Sound Configuration dialog on the File menu.
It will tell you the current weather conditions, the runway in use, and the altimeter setting.</message>
</step>
<step>
<message>Once you've heard it, you can switch it off by swapping the frequency back to standby. Do that now.</message>
<message>We need to set the COMM1 output to our headset using the audio panel.
Use your left mouse button to drag the COMM1 switch upwards.</message>
<view>
<field-of-view>14.0</field-of-view>
<heading-offset-deg>336</heading-offset-deg>
<pitch-offset-deg>-20</pitch-offset-deg>
</view>
<marker>
<x-m>-0.3444</x-m>
<y-m>0.0684</y-m>
<z-m>0.0142</z-m>
<x-m>-0.3494</x-m>
<y-m>0.0884</y-m>
<z-m>0.1084</z-m>
<scale>1.0000</scale>
</marker>
<exit>
<condition>
<and>
<greater-than>
<property>/instrumentation/comm[0]/frequencies/standby-mhz</property>
<value>119.64</value>
</greater-than>
<less-than>
<property>/instrumentation/comm[0]/frequencies/standby-mhz</property>
<value>119.66</value>
</less-than>
</and>
<not>
<equals>
<property>/instrumentation/kma20/com1</property>
<value>0</value>
</equals>
</not>
</condition>
</exit>
</step>
<step>
<message>Listen to the ATIS message. If you cannot hear it, look at the Sound Configuration dialog on the File menu.
It will tell you the current weather conditions, the runway in use, and the altimeter setting.</message>
</step>
<step>
<message>Once you've heard it, you can switch it off by swapping the frequency back to standby, or toggling off the audio panel.
Do that now.</message>
<view>
<field-of-view>14.0</field-of-view>
<heading-offset-deg>336</heading-offset-deg>
<pitch-offset-deg>-20</pitch-offset-deg>
</view>
<marker>
<x-m>-0.3494</x-m>
<y-m>0.0884</y-m>
<z-m>0.1084</z-m>
<scale>1.0000</scale>
</marker>
<exit>
<condition>
<or>
<and>
<greater-than>
<property>/instrumentation/comm[0]/frequencies/standby-mhz</property>
<value>119.64</value>
</greater-than>
<less-than>
<property>/instrumentation/comm[0]/frequencies/standby-mhz</property>
<value>119.66</value>
</less-than>
</and>
<equals>
<property>/instrumentation/kma20/com1</property>
<value>0</value>
</equals>
</or>
</condition>
</exit>
</step>
<end>
<message>Great job. COMM2 is located immediately below COMM1 in the radio stack, and is tuned in the same way.
The NAV radios work in exactly the same way, except they use a different frequency
range, and their output goes to the navigational instruments.</message>
</end>
</PropertyList>

View file

@ -2,7 +2,7 @@
<name>Before Takeoff Checks</name>
<description>
This tutorial covers the before takeoff checklist. This involves the engine checks that are made in the run-up area just prior to taxiing to the runway and taking off.
For more information on the before takeoff checklist, see Section 2-11 of the FAA Airplane Flying Handbook available at http://www.faa.gov/library/manuals/aircraft/airplane_handbook/.
</description>
<audio-dir>Aircraft/c172p/tutorial/startup</audio-dir>
@ -20,7 +20,7 @@ For more information on the before takeoff checklist, see Section 2-11 of the FA
<offset-azimuth-deg>0</offset-azimuth-deg>
<offset-distance-nm>0</offset-distance-nm>
</presets>
<init>
<set>
<property>/controls/gear/brake-parking</property>
@ -59,21 +59,41 @@ For more information on the before takeoff checklist, see Section 2-11 of the FA
<value>0.17</value>
</set>
</init>
<step>
<message>In this lesson we'll cover the pre-takeoff checks.</message>
<nasal>
<script>
# Script to simulate holding down the starter button until the engine starts
var starter = func() {
setprop("/controls/engines/engine/starter", 1);
if (! getprop("/engines/engine/running")) {
settimer(starter, 0);
}
};
# The FDM resets the starter property on each FDM cycle. By effectively starting
# a number of threads to continually keep setting the starter to true, we can
# get around this and give the engine the opportunity to catch.
starter();
starter();
starter();
starter();
starter();
</script>
</nasal>
</step>
<step>
<set>
<property>/controls/engines/engine/starter</property>
<value>false</value>
</set>
<message>You can access the pre-takeoff checklist by pressing ?,
or selecting Help->Aircraft Help from the menu.</message>
<message>You can access the pre-takeoff checklist by selecting Help->Checklists from the menu.</message>
<wait>10</wait>
</step>
<step>
<message>The parking brakes are already applied, so our first check is that the flight controls are free and correct.
</message>
@ -90,7 +110,7 @@ or selecting Help->Aircraft Help from the menu.</message>
<z-offset-m>0.4</z-offset-m>
<field-of-view>55.0</field-of-view>
</view>
<marker>
<x-m>1.4000</x-m>
<y-m>-4.0000</y-m>
@ -130,7 +150,7 @@ and that the aircraft has been rigged correctly.</message>
<z-offset-m>0.4</z-offset-m>
<field-of-view>55.0</field-of-view>
</view>
<marker>
<x-m>-0.3129</x-m>
<y-m>-0.0422</y-m>
@ -149,7 +169,7 @@ and that the aircraft has been rigged correctly.</message>
<z-offset-m>0.4</z-offset-m>
<field-of-view>55.0</field-of-view>
</view>
<marker>
<x-m>-0.3476</x-m>
<y-m>0.0898</y-m>
@ -166,7 +186,7 @@ and that the aircraft has been rigged correctly.</message>
</condition>
</error>
</step>
<step>
<message>Set the throttle to 1700 rpm for the engine checks.</message>
<view>
@ -178,7 +198,7 @@ and that the aircraft has been rigged correctly.</message>
<z-offset-m>0.4</z-offset-m>
<field-of-view>34.2</field-of-view>
</view>
<marker>
<x-m>-0.3653</x-m>
<y-m>-0.3107</y-m>
@ -208,17 +228,17 @@ and that the aircraft has been rigged correctly.</message>
<and>
<greater-than>
<property>/engines/engine/rpm</property>
<value>1650</value>
<value>1600</value>
</greater-than>
<less-than>
<property>/engines/engine/rpm</property>
<value>1750</value>
<value>1700</value>
</less-than>
</and>
</condition>
</exit>
</step>
<step>
<message>This aircraft has a vacuum pump to power some instruments, such as the attitude indicator and directional gyro.</message>
</step>
@ -234,7 +254,7 @@ and that the aircraft has been rigged correctly.</message>
<z-offset-m>0.4</z-offset-m>
<field-of-view>23.2</field-of-view>
</view>
<marker>
<x-m>-0.3578</x-m>
<y-m>-0.4324</y-m>
@ -242,7 +262,7 @@ and that the aircraft has been rigged correctly.</message>
<scale>1.4622</scale>
</marker>
</step>
<step>
<message>Check that the engine instruments are in the green.</message>
<view>
@ -254,7 +274,7 @@ and that the aircraft has been rigged correctly.</message>
<z-offset-m>0.4</z-offset-m>
<field-of-view>23.2</field-of-view>
</view>
<marker>
<x-m>-0.3671</x-m>
<y-m>-0.4031</y-m>
@ -274,7 +294,7 @@ and that the aircraft has been rigged correctly.</message>
<z-offset-m>0.4</z-offset-m>
<field-of-view>23.2</field-of-view>
</view>
<marker>
<x-m>-0.3560</x-m>
<y-m>-0.4102</y-m>
@ -294,7 +314,7 @@ and that the aircraft has been rigged correctly.</message>
<z-offset-m>0.4</z-offset-m>
<field-of-view>23.2</field-of-view>
</view>
<marker>
<x-m>-0.3671</x-m>
<y-m>-0.4142</y-m>
@ -305,11 +325,11 @@ and that the aircraft has been rigged correctly.</message>
<property>/sim/panel-hotspots</property>
<value>true</value>
</set>
</step>
<step>
<message>Click the left hotspot twice, to switch to the right magneto.
<message>Click the left hotspot twice, to switch to the right magneto, or use your mouse scrollwheel.
There should be a small drop in the tachometer.</message>
<view>
<heading-offset-deg>11.3</heading-offset-deg>
@ -320,7 +340,7 @@ and that the aircraft has been rigged correctly.</message>
<z-offset-m>0.4</z-offset-m>
<field-of-view>23.2</field-of-view>
</view>
<marker>
<x-m>-0.3511</x-m>
<y-m>-0.3107</y-m>
@ -359,7 +379,7 @@ and that the aircraft has been rigged correctly.</message>
<z-offset-m>0.4</z-offset-m>
<field-of-view>23.2</field-of-view>
</view>
<marker>
<x-m>-0.3511</x-m>
<y-m>-0.3107</y-m>
@ -398,14 +418,14 @@ and that the aircraft has been rigged correctly.</message>
<z-offset-m>0.4</z-offset-m>
<field-of-view>23.2</field-of-view>
</view>
<marker>
<x-m>-0.3511</x-m>
<y-m>-0.3107</y-m>
<z-m>-0.1360</z-m>
<scale>3.0</scale>
</marker>
<error>
<message>Click the left hotspot so the key is set to LEFT.</message>
<condition>
@ -424,7 +444,7 @@ and that the aircraft has been rigged correctly.</message>
</condition>
</exit>
</step>
<step>
<message>Click the middle hotspot, to switch back to both magnetos.
The tachometer should recover back to 1700rpm.</message>
@ -437,7 +457,7 @@ and that the aircraft has been rigged correctly.</message>
<z-offset-m>0.4</z-offset-m>
<field-of-view>23.2</field-of-view>
</view>
<marker>
<x-m>-0.3511</x-m>
<y-m>-0.3107</y-m>
@ -481,7 +501,7 @@ and that the aircraft has been rigged correctly.</message>
<z-offset-m>0.4</z-offset-m>
<field-of-view>23.2</field-of-view>
</view>
<marker>
<x-m>-0.3511</x-m>
<y-m>-0.3107</y-m>

View file

@ -7,7 +7,7 @@ This tutorial will take you through the pre-startup checklist and starting the C
</description>
<audio-dir>Aircraft/c172p/Tutorials/startup</audio-dir>
<timeofday>morning</timeofday>
<presets>
<airport-id>KLVK</airport-id>
<on-ground>1</on-ground>
@ -21,7 +21,7 @@ This tutorial will take you through the pre-startup checklist and starting the C
<offset-azimuth-deg>0</offset-azimuth-deg>
<offset-distance-nm>0</offset-distance-nm>
</presets>
<init>
<set>
<property>/controls/gear/brake-parking</property>
@ -56,24 +56,24 @@ This tutorial will take you through the pre-startup checklist and starting the C
<value>0.17</value>
</set>
</init>
<step>
<message>Welcome to Livermore Municipal Airport. In this lesson we'll go through the pre-startup checks and start the aircraft.</message>
<wait>10</wait>
</step>
<step>
<message>Before we start up, we need to brief what we'll do in case of an engine fire on startup. As
this isn't our aircraft, and we're fully insured, we'll simply open the door and run away.</message>
<wait>10</wait>
</step>
<step>
<message>Next, we check our seatbelts, and seat adjustments. Cessnas can get worn seat rails that
sometimes cause the seat to slip backwards, often just as you take off, so make sure it is secure.</message>
<wait>10</wait>
</step>
<step>
<message>The fuel selector is set to BOTH, the Mixture control is fully rich, and the carb heat is off.</message>
<view>
@ -86,7 +86,7 @@ This tutorial will take you through the pre-startup checklist and starting the C
<field-of-view>37.0</field-of-view>
</view>
</step>
<step>
<message>Open the throttle slightly. Use your joystick throttle control,
or PgUp to increase throttle to about 10%.</message>
@ -117,6 +117,7 @@ This tutorial will take you through the pre-startup checklist and starting the C
</error>
<error>
<message>That's a bit too much. Pull it out slightly using your joystick throttle control, or PgDn.</message>
<message>That's a bit too much - pull it out slightly.</message>
<condition>
<greater-than>
<property>/controls/engines/engine/throttle</property>
@ -139,7 +140,7 @@ This tutorial will take you through the pre-startup checklist and starting the C
</condition>
</exit>
</step>
<step>
<message>Now, we'll check no-one is about to walk into our propeller.</message>
<wait>2</wait>
@ -153,7 +154,7 @@ This tutorial will take you through the pre-startup checklist and starting the C
<field-of-view>55.0</field-of-view>
</view>
</step>
<step>
<message>Looks clear.</message>
<wait>2</wait>
@ -167,9 +168,10 @@ This tutorial will take you through the pre-startup checklist and starting the C
<field-of-view>55.0</field-of-view>
</view>
</step>
<step>
<message>We need to switch on the magnetos. Click the middle hotspot three times, so the key is set to BOTH.</message>
<message>We need to switch on the magnetos.
Click the middle hotspot three times, or use your mouse scroll wheel, so the key is set to BOTH.</message>
<view>
<heading-offset-deg>12.2</heading-offset-deg>
<pitch-offset-deg>-35.2</pitch-offset-deg>
@ -203,7 +205,7 @@ This tutorial will take you through the pre-startup checklist and starting the C
</less-than>
</condition>
</error>
<exit>
<condition>
<equals>
@ -213,7 +215,7 @@ This tutorial will take you through the pre-startup checklist and starting the C
</condition>
</exit>
</step>
<step>
<message>Finally, we can start the engine. Hold down s, or the right hotspot until the engine catches.</message>
<view>
@ -250,7 +252,7 @@ This tutorial will take you through the pre-startup checklist and starting the C
</condition>
</exit>
</step>
<step>
<message>Great, the engine is running. Adjust the throttle so we're running at between 800 and 1000 RPM.</message>
<view>
@ -286,7 +288,7 @@ This tutorial will take you through the pre-startup checklist and starting the C
</condition>
</error>
<error>
<message>That's a bit high. Reduce throttle slightly with PgDn, or your joystick throttle control.</message>
<message>That's a bit high. Reduce throttle to below 1000 RPM using PgDn, or your joystick throttle control.</message>
<condition>
<greater-than>
<property>/engines/engine/rpm</property>
@ -295,7 +297,7 @@ This tutorial will take you through the pre-startup checklist and starting the C
</condition>
</error>
<error>
<message>That's too low. Increase throttle slightly with PgUp, or your joystick throttle control.</message>
<message>That's too low. Increase throttle to above 800 RPM with PgUp, or your joystick throttle control.</message>
<condition>
<less-than>
<property>/engines/engine/rpm</property>
@ -318,8 +320,8 @@ This tutorial will take you through the pre-startup checklist and starting the C
</condition>
</exit>
</step>
<end>
<message>Great. We're now ready to taxi to the runway.</message>
<message>Great, our lesson is complete. We're now ready to taxi to the runway.</message>
</end>
</PropertyList>

View file

@ -2,7 +2,7 @@
<name>Taxiing</name>
<description>
This tutorial covers moving the aircraft around on the ground, from the parking position to the run-up area.
For more information on taxiing, see Section 2-9 of the FAA Airplane Flying Handbook available at http://www.faa.gov/library/manuals/aircraft/airplane_handbook/.
</description>
<audio-dir>Aircraft/c172p/tutorial/startup</audio-dir>
@ -20,40 +20,40 @@ For more information on taxiing, see Section 2-9 of the FAA Airplane Flying Hand
<offset-azimuth-deg>0</offset-azimuth-deg>
<offset-distance-nm>0</offset-distance-nm>
</presets>
<targets>
<j1>
<!-- Turn right onto taxiway -->
<longitude-deg>-121.81664</longitude-deg>
<latitude-deg>37.6949</latitude-deg>
</j1>
<j2>
<!-- Mention differential braking -->
<longitude-deg>-121.82258</longitude-deg>
<latitude-deg>37.6949</latitude-deg>
</j2>
<j3>
<!-- Left turn in taxiway -->
<longitude-deg>-121.8250</longitude-deg>
<latitude-deg>37.69498</latitude-deg>
</j3>
<a1>
<!-- Right turn onto taxiway A -->
<longitude-deg>-121.8251</longitude-deg>
<latitude-deg>37.694616</latitude-deg>
</a1>
<a2>
<!-- Runup aread -->
<longitude-deg>-121.8294</longitude-deg>
<latitude-deg>37.69459</latitude-deg>
</a2>
</targets>
<init>
<set>
<property>/controls/gear/brake-parking</property>
@ -69,16 +69,12 @@ For more information on taxiing, see Section 2-9 of the FAA Airplane Flying Hand
</set>
<set>
<property>/controls/engines/engine/throttle</property>
<value>0.07</value>
<value>0.2</value>
</set>
<set>
<property>/controls/engines/engine/starter</property>
<value>true</value>
</set>
<set>
<property>/engines/engine/running</property>
<value>true</value>
</set>
<set>
<property>/instrumentation/adf/frequencies/selected-khz</property>
<value>340</value>
@ -92,39 +88,40 @@ For more information on taxiing, see Section 2-9 of the FAA Airplane Flying Hand
<value>0.17</value>
</set>
</init>
<step>
<message>In this lesson we'll taxi the aircraft from its parking
position infront of the FBO, along taxiways Juliet and Alpha to the run-up area near runway 07L.</message>
<wait>10</wait>
<message>In this lesson we'll taxi the aircraft from its parking position infront of the FBO,
along taxiways Juliet and Alpha to the run-up area near runway 07L.</message>
<nasal>
<script>
# Script to simulate holding down the starter button until the engine starts
var starter = func() {
setprop("/controls/engines/engine/starter", 1);
if (! getprop("/engines/engine/running")) {
settimer(starter, 0);
}
};
# The FDM resets the starter property on each FDM cycle. By effectively starting
# a number of threads to continually keep setting the starter to true, we can
# get around this and give the engine the opportunity to catch.
starter();
starter();
starter();
starter();
starter();
</script>
</nasal>
</step>
<step>
<set>
<property>/controls/engines/engine/starter</property>
<value>false</value>
</set>
<message>I've already started the engine. Press Shift-B to release the parking brake. Throttle up to about
<message>I've already started the engine. Press Shift-B to release the parking brake. Throttle up to about
20% to move forward slightly, then hold b to check that the normal brakes work.</message>
<error>
<message>Apply the brakes by pressing b.</message>
<condition>
<and>
<equals>
<property>/controls/gear/brake-parking</property>
<value>0</value>
</equals>
<equals>
<property>/controls/gear/brake-left</property>
<value>0</value>
</equals>
<equals>
<property>/controls/gear/brake-left</property>
<value>0</value>
</equals>
</and>
</condition>
</error>
<error>
<message>The parking brake is still on. Release it by pressing Shift-B.</message>
<condition>
@ -149,6 +146,25 @@ For more information on taxiing, see Section 2-9 of the FAA Airplane Flying Hand
</and>
</condition>
</error>
<error>
<message>Apply the brakes by pressing b.</message>
<condition>
<and>
<equals>
<property>/controls/gear/brake-parking</property>
<value>0</value>
</equals>
<equals>
<property>/controls/gear/brake-left</property>
<value>0</value>
</equals>
<equals>
<property>/controls/gear/brake-left</property>
<value>0</value>
</equals>
</and>
</condition>
</error>
<exit>
<condition>
<and>
@ -168,11 +184,12 @@ For more information on taxiing, see Section 2-9 of the FAA Airplane Flying Hand
</condition>
</exit>
</step>
<step>
<message>Keep applying the brakes. You can steer the aircraft on the ground by either using 0/Enter on the
numeric keypad, or using the mouse in yoke mode (+) with the left mouse button held down. If you need to slow
down, just press b to apply the brakes.</message>
<wait>10</wait>
<error>
<message>Keep the brakes on until I tell you to start taxiing.</message>
<condition>
@ -189,9 +206,10 @@ For more information on taxiing, see Section 2-9 of the FAA Airplane Flying Hand
</condition>
</error>
</step>
<step>
<message>Release the brakes and taxi forwards. Make a right turn onto taxiway Juliet.</message>
<message>Release the brakes and taxi forwards. You may need to apply a little throttle to get going. Make a right turn onto taxiway Juliet.</message>
<wait>5</wait>
<error>
<message>That's left, not right.</message>
<condition>
@ -207,6 +225,15 @@ For more information on taxiing, see Section 2-9 of the FAA Airplane Flying Hand
</or>
</condition>
</error>
<error>
<message>Apply a little throttle to get going, but then reduce it once you're moving.</message>
<condition>
<less-than>
<property>/velocities/groundspeed-kt</property>
<value>1.0</value>
</less-than>
</condition>
</error>
<exit>
<condition>
<and>
@ -220,10 +247,10 @@ For more information on taxiing, see Section 2-9 of the FAA Airplane Flying Hand
</greater-than>
</and>
</condition>
</exit>
</step>
<step>
<message>Continue taxiing along taxiway Juliet. Keep the nosewheel on the yellow line. Don't allow the aircraft to go too fast - use b to brake if you need to. </message>
<error>
@ -243,6 +270,15 @@ For more information on taxiing, see Section 2-9 of the FAA Airplane Flying Hand
</or>
</condition>
</error>
<error>
<message>You're going too fast. Reduce your throttle slightly and apply your brakes.</message>
<condition>
<greater-than>
<property>/velocities/groundspeed-kt</property>
<value>10.0</value>
</greater-than>
</condition>
</error>
<exit>
<condition>
<less-than>
@ -252,7 +288,7 @@ For more information on taxiing, see Section 2-9 of the FAA Airplane Flying Hand
</condition>
</exit>
</step>
<step>
<message>If you need to turn very tightly, you can apply differential braking, and only brake one wheel, by pressing ',' for the left, or '.' for the right.</message>
<error>
@ -272,6 +308,15 @@ For more information on taxiing, see Section 2-9 of the FAA Airplane Flying Hand
</or>
</condition>
</error>
<error>
<message>You're going too fast. Reduce your throttle slightly and apply your brakes.</message>
<condition>
<greater-than>
<property>/velocities/groundspeed-kt</property>
<value>10.0</value>
</greater-than>
</condition>
</error>
<exit>
<condition>
<less-than>
@ -281,7 +326,7 @@ For more information on taxiing, see Section 2-9 of the FAA Airplane Flying Hand
</condition>
</exit>
</step>
<step>
<message>The taxiway turns left here. Slow down by applying some brakes (b) and follow it round.</message>
<error>
@ -310,7 +355,7 @@ For more information on taxiing, see Section 2-9 of the FAA Airplane Flying Hand
</condition>
</exit>
</step>
<step>
<message>We're now at the intersection of taxiways Juliet, Golf and Alpha. Turn right onto taxiway Alpha.</message>
<error>
@ -374,7 +419,7 @@ For more information on taxiing, see Section 2-9 of the FAA Airplane Flying Hand
</step>
<step>
<message>We've reached the run-up area. Brake slowly to a stop and set the parking brake.</message>
<message>We've reached the run-up area. Brake slowly to a stop and set the parking brake (shift-b).</message>
<exit>
<condition>
<equals>
@ -384,8 +429,8 @@ For more information on taxiing, see Section 2-9 of the FAA Airplane Flying Hand
</condition>
</exit>
</step>
<end>
<message>We've reached the run-up area. Well done</message>
<message>We've reached the run-up area. Well done.</message>
</end>
</PropertyList>

View file

@ -1,28 +1,36 @@
<?xml version="1.0"?>
<?xml version="1.0" encoding="UTF-8"?>
<!--
************************************************************************
Genius F-31U VIBRATION USB Joystick
*******************************************************************************
Genius F-31U VIBRATION USB Joystick Configuration for Flightgear.
Version 2.
© 2011, 2014 Martin Měřinský, mermar@centrum.cz, GPLv2 or later.
Axes:
0 - Aileron
1 - Elevator
2 - Rudder
3 - Throttle
4 - View left-right Hat
5 - View up-down Hat
4 - View left/right hat
5 - View up/down hat
Buttons:
0 - Brakes
0 - Fire primary and secondary weapon (armament trigger).
1 - Cycle view
2 - Elevator trim up
3 - Elevator trim down
4 - Flaps down
5 - Flaps up
4 - Flaps up
5 - Mixture richer
6 - Brakes
7 - Mixture richer
7 - Flaps down
8 - Mixture leaner
9 - Landing Gear Toggle
************************************************************************
9 - Landing gear toggle
Known issues:
Flightgear cannot invert left/right "lookat" view, so this is done using Nasal
and thus it works when Flightgear is paused, unlike view elevation (up/down).
In Windows up and down view is inverted.
*******************************************************************************
-->
<PropertyList>
<name type="string">Padix Co. Ltd. 10-Button USB Joystick</name> <!-- GNU/Linux. -->
@ -44,7 +52,7 @@ Buttons:
<command>property-scale</command>
<property>/controls/flight/elevator</property>
<power type="int">2</power>
<factor type="double">-1.0</factor> <!-- Reverse axis. -->
<factor type="double">-1.0</factor> <!-- Reverse axis. -->
</binding>
</axis>
@ -58,7 +66,7 @@ Buttons:
<command>property-scale</command>
<property>/controls/flight/rudder</property>
<power type="int">2</power>
<factor type="double">-1.0</factor> <!-- Reverse axis. -->
<factor type="double">-1.0</factor> <!-- Reverse axis. -->
</binding>
</axis>
@ -75,7 +83,7 @@ Buttons:
</axis>
<axis>
<desc>View Direction</desc>
<desc>View direction</desc>
<number>
<unix>4</unix>
<windows>6</windows>
@ -85,7 +93,7 @@ Buttons:
<repeatable>true</repeatable>
<binding>
<!--
This also works, but LookAt views has inverted left/right.
This also works, but LookAt views have inverted left/right.
<command>property-adjust</command>
<property>/sim/current-view/goal-heading-offset-deg</property>
<step type="double">3.0</step>
@ -106,7 +114,7 @@ Buttons:
<repeatable>true</repeatable>
<binding>
<!--
This also works, but LookAt views has inverted left/right.
This also works, but LookAt views have inverted left/right.
<command>property-adjust</command>
<property>/sim/current-view/goal-heading-offset-deg</property>
<step type="double">-3.0</step>
@ -125,7 +133,7 @@ Buttons:
</axis>
<axis>
<desc>View Elevation</desc>
<desc>View elevation</desc>
<number>
<unix>5</unix>
<windows>7</windows>
@ -136,7 +144,7 @@ Buttons:
<binding>
<command>property-adjust</command>
<property>/sim/current-view/goal-pitch-offset-deg</property>
<step type="double">3.0</step> <!-- Use -3.0 for Windows. -->
<step type="double">3.0</step>
</binding>
</low>
<high>
@ -145,28 +153,37 @@ Buttons:
<binding>
<command>property-adjust</command>
<property>/sim/current-view/goal-pitch-offset-deg</property>
<step type="double">-3.0</step> <!-- Use 3.0 for Windows. -->
<step type="double">-3.0</step>
</binding>
</high>
</axis>
<button n="0">
<desc>Brakes</desc>
<desc>Fire</desc>
<binding>
<command>nasal</command>
<script>controls.applyBrakes(1)</script>
<script>
setprop("/controls/armament/trigger", 1);
setprop("ai/submodels/trigger", 1);
setprop("/controls/armament/trigger1", 1);
setprop("ai/submodels/trigger1", 1);
</script>
</binding>
<mod-up>
<binding>
<command>nasal</command>
<script>controls.applyBrakes(0)</script>
<script>
setprop("/controls/armament/trigger", 0);
setprop("ai/submodels/trigger", 0);
setprop("/controls/armament/trigger1", 0);
setprop("ai/submodels/trigger1", 0);
</script>
</binding>
</mod-up>
</button>
<button n="1">
<desc>Cycle View</desc>
<desc>View cycle</desc>
<repeatable>false</repeatable>
<binding>
<command>nasal</command>
@ -196,20 +213,6 @@ Buttons:
</button>
<button n="4">
<desc>Flaps down</desc>
<binding>
<command>nasal</command>
<script>controls.flapsDown(1)</script>
</binding>
<mod-up>
<binding>
<command>nasal</command>
<script>controls.flapsDown(0)</script>
</binding>
</mod-up>
</button>
<button n="5">
<desc>Flaps up</desc>
<repeatable>false</repeatable>
<binding>
@ -224,6 +227,15 @@ Buttons:
</mod-up>
</button>
<button n="5">
<desc>Mixture richer</desc>
<repeatable>true</repeatable>
<binding>
<command>nasal</command>
<script>controls.adjMixture(1)</script>
</binding>
</button>
<button n="6">
<desc>Brakes</desc>
<binding>
@ -239,12 +251,17 @@ Buttons:
</button>
<button n="7">
<desc>Mixture richer</desc>
<repeatable>true</repeatable>
<desc>Flaps down</desc>
<binding>
<command>nasal</command>
<script>controls.adjMixture(1)</script>
<script>controls.flapsDown(1)</script>
</binding>
<mod-up>
<binding>
<command>nasal</command>
<script>controls.flapsDown(0)</script>
</binding>
</mod-up>
</button>
<button n="8">
@ -266,3 +283,4 @@ Buttons:
</button>
</PropertyList>

View file

@ -0,0 +1,661 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Logitech, Inc. Flight System G940 configuration for Flightgear.
Version 2.
© 2011, 2013, 2014 Martin Měřinský, mermar@centrum.cz, GPLv2 or later.
Axes:
0 - Stick left/right - Aileron
1 - Stick forward/backward - Elevator
2 - Pedals rudder - Rudder
3 - Pedal right break - Right differential break
4 - Pedal left break - Left differential break
5 - TRIM3 - Aileron trim
6 - Trohttle right - Throttle right engine
7 - Throttle left - Throttle left engine
8 - R1 - Mixture
9 - R2 - Propeller pitch
10 - Stick upper hat left/right -
11 - Stick upper hat up/down -
12 - Stick lower hat left/right - View direction
13 - Stick lower hat up/down - View elevation
14 - Throttle lower hat left/right - View zoom in/out
15 - Throttle lower hat up/down - Reset zoom to default/for greater overview
16 - Throttle upper hat left/right -
17 - Throttle upper hat up/down -
Buttons:
0 - S0 - Fire primary weapon
1 - FIRE - Fire secondary weapon and smoke on/off toggle
2 - S1 - Drop bombs
3 - S2 - Master arm toggle (cycle through modes)
4 - S3 - Flare release
5 - S4 - View cycle
6 - S5 - Smoke
7 - Stick upper hat push -
8 - S0 second position - Fire primary and secondary weapon and smoke on/off toggle
9 - T1 - Flaps up
10 - T2 - Flaps down
11 - T3 - Airbrake toggle
12 - T4 - Reverse thrust toggle
13 - P1 - Tailhook up/down toggle
14 - P2 - Floats up/down toggle
15 - P3 - External fuel tanks jettison
16 - P4 - Wing fold or oversweep toggle
17 - P5 - Landing gear up/down toggle
18 - P6 - Watter rudder up/down toggle
19 - P7 - Landing drag parachute reapack/deploy/jettison
20 - P8 - Refueling probe toggle
Known issues:
TRIM1, TRIM2, MODE, axis 16 and 17 do not work in GNU/Linux
(js-demo nor Flightgear).
Flightgear does not allow you to control "left" and "right" engines if you have
even number of engines and all engines if you have odd number of engines.
This config file controls all engines at once, although you have two hardware
axis. With simple editing, you can control throttle of engines 0 and 1.
Properties for plane features in Flightgear are not standardized. So the same
thing is done using different properties on different planes and you may see
errors "undefined symbol" in console. Eg.:
Nasal runtime error: undefined symbol: f14
at /input/joysticks/js/button[20]/binding, line 1
Flightgear cannot invert left/right "lookat" view, so this is done using Nasal
and thus it works when Flightgear is paused, unlike view elevation (up/down).
-->
<PropertyList>
<name type="string">G940</name> <!-- GNU/Linux. -->
<!-- Stick ************************************************************ -->
<axis n="0">
<desc>Aileron</desc>
<binding>
<command>property-scale</command>
<property>/controls/flight/aileron</property>
</binding>
</axis>
<axis n="1">
<desc>Elevator</desc>
<binding>
<command>property-scale</command>
<property>/controls/flight/elevator</property>
<factor type="double">-1.0</factor> <!-- Reverse axis. -->
</binding>
</axis>
<axis n="5">
<desc>Aileron trim</desc>
<binding>
<command>property-scale</command>
<property>/controls/flight/aileron-trim</property>
</binding>
</axis>
<button n="5">
<desc>View cycle</desc>
<repeatable>false</repeatable>
<binding>
<command>nasal</command>
<script>
view.stepView(1);
#gui.popupTip(sprintf("View index: %d, view type: %s", getprop("sim/current-view/view-number"), getprop("/sim/current-view/type")));
</script>
</binding>
</button>
<axis>
<desc>View direction</desc>
<number>
<unix>12</unix>
</number>
<low>
<desc>View left</desc>
<repeatable>true</repeatable>
<binding>
<!--
This also works, but LookAt views have inverted left/right.
<command>property-adjust</command>
<property>/sim/current-view/goal-heading-offset-deg</property>
<step type="double">3.0</step>
-->
<command>nasal</command>
<script>
var valueDelta = -3.0;
if (getprop("/sim/current-view/type") == "lookat")
{
valueDelta = 3.0;
}
setprop("/sim/current-view/heading-offset-deg", getprop("/sim/current-view/heading-offset-deg") - valueDelta);
</script>
</binding>
</low>
<high>
<desc>View right</desc>
<repeatable>true</repeatable>
<binding>
<!--
This also works, but LookAt views have inverted left/right.
<command>property-adjust</command>
<property>/sim/current-view/goal-heading-offset-deg</property>
<step type="double">-3.0</step>
-->
<command>nasal</command>
<script>
var valueDelta = -3.0;
if (getprop("/sim/current-view/type") == "lookat")
{
valueDelta = 3.0;
}
setprop("/sim/current-view/heading-offset-deg", getprop("/sim/current-view/heading-offset-deg") + valueDelta);
</script>
</binding>
</high>
</axis>
<axis>
<desc>View elevation</desc>
<number>
<unix>13</unix>
</number>
<low>
<desc>View down</desc>
<repeatable>true</repeatable>
<binding>
<command>property-adjust</command>
<property>/sim/current-view/goal-pitch-offset-deg</property>
<step type="double">3.0</step>
</binding>
</low>
<high>
<desc>View up</desc>
<repeatable>true</repeatable>
<binding>
<command>property-adjust</command>
<property>/sim/current-view/goal-pitch-offset-deg</property>
<step type="double">-3.0</step>
</binding>
</high>
</axis>
<button n="0">
<desc>Fire primary weapon</desc>
<binding>
<command>nasal</command>
<script>
setprop("/controls/armament/trigger", 1);
setprop("ai/submodels/trigger", 1);
</script>
</binding>
<mod-up>
<binding>
<command>nasal</command>
<script>
setprop("/controls/armament/trigger", 0);
setprop("ai/submodels/trigger", 0);
</script>
</binding>
</mod-up>
</button>
<button n="1">
<desc>Fire secondary weapon</desc>
<binding>
<command>nasal</command>
<script>
setprop("/controls/armament/trigger1", 1);
setprop("ai/submodels/trigger1", 1);
</script>
</binding>
<mod-up>
<binding>
<command>nasal</command>
<script>
setprop("/controls/armament/trigger1", 0);
setprop("ai/submodels/trigger1", 0);
</script>
</binding>
</mod-up>
</button>
<button n="2">
<desc>Drop bombs</desc>
<repeatable>false</repeatable>
<binding>
<command>nasal</command>
<script>
setprop("ai/submodels/red-beard-released", 1);
</script>
</binding>
</button>
<button n="3">
<desc>Master arm toggle (cycle through modes)</desc>
<repeatable>false</repeatable>
<binding>
<command>nasal</command>
<script>
f14.master_arm_cycle();
</script>
</binding>
</button>
<button n="4">
<desc>Flare release</desc>
<binding>
<command>nasal</command>
<script>
setprop("ai/submodels/submodel[0]/flare-release", 1);
</script>
</binding>
<mod-up>
<binding>
<command>nasal</command>
<script>
setprop("ai/submodels/submodel[0]/flare-release", 0);
</script>
</binding>
</mod-up>
</button>
<button n="6">
<desc>Smoke on/off toggle</desc>
<binding>
<command>nasal</command>
<script>
# Smoke toggle z50lx.
if (getprop("/controls/smoke") == 1)
smokeNextState = 0;
else
smokeNextState = 1;
setprop("/controls/smoke", smokeNextState);
# Smoke toggle Su-26M2.
if (getprop("/control/smoke") == 1)
smokeNextState = 0;
else
smokeNextState = 1;
setprop("/control/smoke", smokeNextState);
</script>
</binding>
</button>
<button n="8">
<desc>Fire primary and secondary weapon and smoke on/off toggle</desc>
<binding>
<command>nasal</command>
<script>
setprop("/controls/armament/trigger", 1);
setprop("ai/submodels/trigger", 1);
setprop("/controls/armament/trigger1", 1);
setprop("ai/submodels/trigger1", 1);
# Also smoke toggle.
if (getprop("/controls/smoke") == 1)
smokeNextState = 0;
else
smokeNextState = 1;
setprop("/controls/smoke", smokeNextState);
</script>
</binding>
<mod-up>
<binding>
<command>nasal</command>
<script>
setprop("/controls/armament/trigger", 0);
setprop("ai/submodels/trigger", 0);
setprop("/controls/armament/trigger1", 0);
setprop("ai/submodels/trigger1", 0);
</script>
</binding>
</mod-up>
</button>
<!-- Throttle ********************************************************* -->
<axis>
<desc>Throttle right engine</desc>
<number>
<unix>6</unix>
</number>
<binding>
<!-- If you want to control left and right engine, use this.
<command>property-scale</command>
<property>/controls/engines/engine[1]/throttle</property>
<offset type="double">-1.0</offset>
<factor type="double">-0.5</factor>
-->
<command>nasal</command>
<script>controls.throttleAxis()</script>
</binding>
</axis>
<axis>
<desc>Throttle left engine</desc>
<number>
<unix>7</unix>
</number>
<binding>
<command>property-scale</command>
<property>/controls/engines/engine[0]/throttle</property>
<offset type="double">-1.0</offset>
<factor type="double">-0.5</factor>
</binding>
</axis>
<axis>
<desc>Mixture</desc>
<number>
<unix>9</unix>
</number>
<binding>
<command>property-scale</command>
<property>/controls/engines/engine/mixture</property>
<offset type="double">-1.0</offset>
<factor type="double">-0.5</factor>
</binding>
</axis>
<axis>
<desc>Propeller pitch</desc>
<number>
<unix>8</unix>
</number>
<binding>
<command>property-scale</command>
<property>/controls/engines/engine/propeller-pitch</property>
<offset type="double">-1.0</offset>
<factor type="double">-0.5</factor>
</binding>
</axis>
<axis>
<desc>View zoom</desc>
<number>
<unix>14</unix>
</number>
<low>
<desc>Zoom out</desc>
<repeatable>true</repeatable>
<binding>
<command>nasal</command>
<script>
view.increase();
</script>
</binding>
</low>
<high>
<desc>Zoom in</desc>
<repeatable>true</repeatable>
<binding>
<command>nasal</command>
<script>view.decrease()</script>
</binding>
</high>
</axis>
<axis>
<desc>Reset zoom</desc>
<number>
<unix>15</unix>
</number>
<low>
<desc>Reset zoom to default</desc>
<repeatable>false</repeatable>
<binding>
<command>property-assign</command>
<property>/sim/current-view/field-of-view</property>
<property>/sim/view/config/default-field-of-view-deg</property>
</binding>
</low>
<high>
<desc>Reset zoom for greater overview</desc>
<repeatable>false</repeatable>
<binding>
<command>nasal</command>
<script>
setprop("/sim/current-view/field-of-view", 100);
</script>
</binding>
</high>
</axis>
<button n="9">
<desc>Flaps up</desc>
<binding>
<command>nasal</command>
<script>controls.flapsDown(-1)</script>
</binding>
<mod-up>
<binding>
<command>nasal</command>
<script>controls.flapsDown(0)</script>
</binding>
</mod-up>
</button>
<button n="10">
<desc>Flaps down</desc>
<binding>
<command>nasal</command>
<script>controls.flapsDown(1)</script>
</binding>
<mod-up>
<binding>
<command>nasal</command>
<script>controls.flapsDown(0)</script>
</binding>
</mod-up>
</button>
<button n="11">
<desc>Airbrake toggle</desc>
<binding>
<command>nasal</command>
<script>
if (getprop("/controls/flight/speedbrake") == 1)
speedbrakeNextState = 0;
else
speedbrakeNextState = 1;
setprop("/controls/flight/speedbrake", speedbrakeNextState);
</script>
</binding>
</button>
<button n="12">
<desc>Reverse thrust toggle</desc>
<binding>
<command>nasal</command>
<script>
reverserNextState = !getprop("/controls/engines/engine[0]/reverser");
props.setAll("/controls/engines/engine", "reverser", reverserNextState);
</script>
</binding>
</button>
<button n="13">
<desc>Landing tailhook toggle</desc>
<repeatable>false</repeatable>
<binding>
<command>nasal</command>
<script>
if (getprop("/controls/gear/tailhook") == 1)
hookNextState = 0;
else
hookNextState = 1;
setprop("/controls/gear/tailhook", hookNextState); # F-14b
setprop("fdm/jsbsim/systems/hook/tailhook-cmd-norm", hookNextState); # F-16
</script>
</binding>
</button>
<button n="14">
<desc>Floats up/down toggle</desc>
<repeatable>false</repeatable>
<binding>
<command>nasal</command>
<script>
if (getprop("/controls/gear/float-down") == 1)
floatNextState = 0;
else
floatNextState = 1;
setprop("/controls/gear/float-down", floatNextState);
</script>
</binding>
</button>
<button n="15">
<desc>External fuel tanks jettison</desc>
<repeatable>false</repeatable>
<binding>
<command>nasal</command>
<script>
# Lightning.
setprop("/sim/model/lightning/controls/tank_jettisoned", 1);
# F-14b
#setprop("/sim/model/f-14b/systems/external-loads/external-tanks", 0);
f14.toggle_ext_tank_selected();
</script>
</binding>
</button>
<button n="16">
<desc>Wing fold or oversweep toggle</desc>
<repeatable>false</repeatable>
<binding>
<command>nasal</command>
<script>
f14.toggleOversweep();
</script>
</binding>
</button>
<button n="17">
<desc>Landing gear toggle</desc>
<repeatable>false</repeatable>
<binding>
<command>nasal</command>
<script>controls.gearToggle()</script>
</binding>
</button>
<button n="18">
<desc>Watter ruder toggle</desc>
<repeatable>false</repeatable>
<binding>
<command>nasal</command>
<script>
if (getprop("/controls/gear/water-rudder-down") == 1)
waterRudderNextState = 0;
else
waterRudderNextState = 1;
interpolate("/controls/gear/water-rudder-down", waterRudderNextState, 2.5);
</script>
</binding>
</button>
<button n="19">
<desc>Drag parachute repack - deploy - jettison</desc>
<repeatable>false</repeatable>
<binding>
<command>nasal</command>
<script>
# Chute states:
# 0 ... repacked
# 1 ... deployed
# 2 ... jettisoned
if (chuteState == 0)
{
print("Command to chute (prepare for automatic or) deployment.");
# F-117, prepare for automatic deployment.
setprop("/sim/model/controls/chute", 1);
# Lightning.
setprop("sim/model/lightning/controls/flight/chute_open", 1);
setprop("sim/model/lightning/controls/flight/chute_deployed", 1);
setprop("sim/model/lightning/controls/flight/chute_jettisoned", 0);
chuteState = 1;
}
else if (chuteState == 1)
{
print("Command to chute jettison.");
# F-117, jettsion is automatic.
setprop("/sim/model/controls/chute", 0);
setprop("/sim/model/controls/chute-available", 0);
# Lightning.
setprop("sim/model/lightning/controls/flight/chute_open", 1);
setprop("sim/model/lightning/controls/flight/chute_deployed", 1);
setprop("sim/model/lightning/controls/flight/chute_jettisoned", 1);
chuteState = 2;
}
else
{
print("Command to repack chute.");
# F-117.
setprop("/sim/model/controls/chute", 0);
setprop("/sim/model/controls/chute-available", 0);
# Lightning.
setprop("sim/model/lightning/controls/flight/chute_open", 0);
setprop("sim/model/lightning/controls/flight/chute_deployed", 0);
setprop("sim/model/lightning/controls/flight/chute_jettisoned", 0);
chuteState = 0;
}
</script>
</binding>
</button>
<button n="20">
<desc>Refueling probe toggle</desc>
<repeatable>false</repeatable>
<binding>
<command>nasal</command>
<script>f14.refuel_probe_switch_cycle();</script>
</binding>
</button>
<!-- Pedals *********************************************************** -->
<axis>
<desc>Rudder</desc>
<number>
<unix>2</unix>
</number>
<binding>
<command>property-scale</command>
<property>/controls/flight/rudder</property>
<power type="int">2</power>
</binding>
</axis>
<axis>
<number>
<unix>4</unix>
</number>
<desc>Left differential break</desc>
<binding>
<command>property-scale</command>
<property>/controls/gear/brake-left</property>
<offset>-1.0</offset>
<factor>-0.5</factor>
</binding>
</axis>
<axis>
<number>
<unix>3</unix>
</number>
<desc>Right differential break</desc>
<binding>
<command>property-scale</command>
<property>/controls/gear/brake-right</property>
<offset>-1.0</offset>
<factor>-0.5</factor>
</binding>
</axis>
</PropertyList>

View file

@ -116,6 +116,11 @@ var window = {
settimer(func { me._write_(); } , 0, 1);
append(me.writebuffer, lines);
},
clear : func() {
me.lines = [];
me.writebuffer = [];
me.show();
},
show : func {
if (me.dialog != nil)
me.close();

View file

@ -105,6 +105,7 @@ var startTutorial = func {
# <init>
do_group(tutorialN.getNode("init"));
is_running(1); # needs to be after "presets-commit"
display.clear();
display.show();
# Pick up any weather conditions/scenarios set
@ -121,6 +122,7 @@ var stopTutorial = func {
set_properties(end);
run_nasal(end);
set_view(end) or view.point.restore();
say("Tutorial finished.");
settimer(func() { if (!is_running()) { display.close(); } }, 10);
}
set_marker();
@ -150,8 +152,6 @@ var step_tutorial = func(id) {
# <end>
if (current_step >= size(steps)) {
var end = tutorialN.getNode("end");
say_message(end, "Tutorial finished.");
#say_message(nil, "Deviations: " ~ num_errors);
stopTutorial();
return;
}

View file

@ -130,7 +130,7 @@ void main (void)
//////////////////////////////////////////////////////////////////////
//begin DIRT
//////////////////////////////////////////////////////////////////////
if (dirt_enabled > 0.0){
if (dirt_enabled >= 1){
vec3 dirtFactorIn = vec3 (dirt_r_factor, dirt_g_factor, dirt_b_factor);
vec3 dirtFactor = reflmap.rgb * dirtFactorIn.rgb;
//dirtFactor.r = smoothstep(0.0, 1.0, dirtFactor.r);

View file

@ -293,7 +293,7 @@ void main (void)
//////////////////////////////////////////////////////////////////////
//begin DIRT
//////////////////////////////////////////////////////////////////////
if (dirt_enabled > 0.0){
if (dirt_enabled >= 1){
vec3 dirtFactorIn = vec3 (dirt_r_factor, dirt_g_factor, dirt_b_factor);
vec3 dirtFactor = reflmap.rgb * dirtFactorIn.rgb;
//dirtFactor.r = smoothstep(0.0, 1.0, dirtFactor.r);

View file

@ -145,7 +145,7 @@ void main (void)
//////////////////////////////////////////////////////////////////////
//begin DIRT
//////////////////////////////////////////////////////////////////////
if (dirt_enabled > 0.0){
if (dirt_enabled >= 1){
vec3 dirtFactorIn = vec3 (dirt_r_factor, dirt_g_factor, dirt_b_factor);
vec3 dirtFactor = reflmap.rgb * dirtFactorIn.rgb;
//dirtFactor.r = smoothstep(0.0, 1.0, dirtFactor.r);

View file

@ -50,8 +50,7 @@
}
var static_serverList = [
['fgcom.flightgear.org', 'Avignon, France'],
['delta384.server4you.de', 'Unknown']
['fgcom.flightgear.org', 'Avignon, France']
];
var updateServersFailed = func {