Hi All
Below is some information for how to add a checklist to an aircraft based on my work with the G36 Bonanza Improvement Project here > G36 Improvement Project - #1006 by StevoSim
This is for the G36 but the file locations can be amended
Main checklist file stored in:
- \Community\Aircraft_2B_bonanza-g36-improvement-project\SimObjects\Airplanes\Aircraft\Asobo_Bonanza_G36\Checklist\Bonanza_G36_Checklist.xml
Document references the following files:
- \Official\OneStore\fs-base-aircraft-common\CheckpointsLibrary\Asobo_DefaultCheckpointLibrary.xml
- \Official\OneStore\asobo-aircraft-bonanza-g36\SimObjects\Airplanes\Asobo_Bonanza_G36\Checklist\Library.xml
Original Document found at:
- \Official\OneStore\asobo-aircraft-bonanza-g36\SimObjects\Airplanes\Asobo_Bonanza_G36\Checklist\Bonanza_G36_Checklist.xml
The file is split into sections - which are fixed by Asobo (I think) these are listed as steps. So for the G36 we have:
<Step ChecklistStepId="PREFLIGHT_GATE">
<Step ChecklistStepId="PREFLIGHT_TAXI_OUT">
<Step ChecklistStepId="FLIGHT_RUNWAY">
<Step ChecklistStepId="FLIGHT_TAKEOFF">
<Step ChecklistStepId="FLIGHT_CRUISE">
<Step ChecklistStepId="FLIGHT_DESCENT">
<Step ChecklistStepId="LANDING_APPROACH">
<Step ChecklistStepId="LANDING_TOUCHDOWN">
<Step ChecklistStepId="LANDING_TAXI_IN">
<Step ChecklistStepId="LANDING_GATE">
Within these steps you can create the individual pages we see in the checklist with: <Page SubjectTT="PAGE NAME">
e.g. Pre-Start, Engine Start etc.
Each checklist item is opened with <Checkpoint Id="Name of Item">
You can force the camera system to move the view with <ForceCamera name="Switches" />
As much as I can tell the camera name is using the tag Title ="Pilot"
found in the cameras.cfg in \Official\OneStore\asobo-aircraft-bonanza-g36\SimObjects\Airplanes\Asobo_Bonanza_G36\cameras.cfg
You can set the text found at the bottom of the checklist window with a hint with <Clue name="The parking break should be set" />
.
The text in the checklist is set with: <CheckpointDesc SubjectTT="Parking Brake" ExpectationTT="Set" />
The checklist system uses test’s to check each option.
Each <Test>
must have a <TestValue>
and a series of <Operator OpType="">
for the system to check against. You can sequence test’s in a checklist action using <Sequence SeqType="">
; SeqTypes can be 'Ordered'
, 'Unordered'
or in 'Parallel'
.
The <Operator OpType="">
can be:
- GREATER
- LESS
- BETWEEN
- EQUAL
- LESS_OR_EQUAL
- OR (You can nest
<Operator OpType="">
together in a chain) - GREATER_OR_EQUAL
- NOT
- AND
You can also useTolerance="1500"
within the tag to set a tollerance level - e.g. when setting the throttle.
Once you set the test variables you then put the SimVar you want to check against with a <Val SimVarName=""></>
<Val SimVarName="ELECTRICAL MASTER BATTERY:2" Units="Bool" />
<Val Value="1" />
You can also use some logical operators to check the SimVars and also check XMLVARs for example the BUS 1 voltages @Frett created.
<Val Code="(L:XMLVAR_BUS1_VOLT_INDICATED, volts) (A:ELECTRICAL BATTERY BUS VOLTAGE:2, volts) 21.0 > and" />
- So this is XMLVAR_BUS1_VOLT_INDICATED >= (Greaterthan and equal to) ELECTRICAL BATTERY BUS VOLTAGE:2
You can get the system to check or automatically complete the item with
<Action Copilot="True" Condition="TestValueFalse" SpecialAction="WaitUntilTestValueValidated" />
The condition can be either TestValueFalse or TestValueTrue.
The SpecialAction is set as:
- WaitUntilTestValueValidated
- WaitForUserToDoIt
- WaitForDuration with value=“x”
There is also Once="true"
, and EventID="SET_STARTER1_HELD"
EventParam="1"
& Code="1 (>L:XMLVAR_Starter_State_IsDown)"
The EventID="SET_STARTER1_HELD"
I believe is linked to a animation??? The code= is a logical test.
I am still a little unsure and need to get my head around this…
Finally to highlight an instrument you use
<Instrument Id="HTML:AS1000_PFD:Display" />
A full example is:
`<Checkpoint Id="PREFLIGHT_ELEVATOR_TRIM">`
`<ForceCamera name="Pedestal" />`
`<Clue name="Trim tabs should be set to 0 or Neutral" />`
`<CheckpointDesc SubjectTT="Trim Tabs" ExpectationTT="Neutral" />`
`<Test>`
`<TestValue>`
`<Operator OpType="EQUAL" Tolerance="500">`
`<Val SimVarName="ELEVATOR TRIM INDICATOR" Units="Position 16k" />`
`<Val Value="0" />`
`</Operator>`
`</TestValue>`
`<Instrument Id="HANDLING_Wheel_ElevatorTrim" />`
`<Instrument Id="HANDLING_Indicator_ElevatorTrim" />`
`<Action Copilot="True" Condition="TestValueFalse" Once="true" EventID="ELEVATOR_TRIM_SET" EventParam="0" />`
`</Test>`
`</Checkpoint>`
To Do
- Understand what a L: and A: and K: mean
SOLVED!
- Find a list of instrument ID’s or where these are referenced
- Instrument ID’s are referenced in the SimObjects/Airplanes/Asobo_Bonanza_G36/model/Bonanza_g36_interior.xml. Each switch/instrument/guage needs to have the line
<PART_ID>NAMEOFPART</PART_ID>
added into the<useTemplate>
section.
Thanks to @TK421i for the following with regard XMLVars:
Unlike SimVars, XMLVars are specific to the aircraft model so, depending on the developer, will change from aircraft to aircraft. You can dig these out of the model browser using developer mode in MSFS.
Using the model browser you can also traverse the interior.xml file to establish the Part_ID. In many cases this has not been set by the developers. To get around this you can extend the interior.xml file with you own and add the Part_ID in the relevant Node.
Hope that helps everyone!
Matt