Please share your thoughts on the new main page and portal's look in the village pump!
Immatriculation
From FlightGear wiki
| This article is a stub. You can help the wiki by expanding it.. |
Immatriclation at the tail of the DR400.
Immatriculation makes it possible to add a user changeable callsign to an aircraft.
Examples are based on the Robin DR400.
Please note that this article does not cover the model part! Following only this page, will not result in a working immatriclation!
-set.xml
Add this to enable the immatriculation:
<model> <immat>true</immat> </model>
Let's make a menu button:
<menubar>
<default>
<menu n="100">
<label>Robin DR400</label>
<enabled type="bool">true</enabled>
<item>
<label>Immatriculation</label>
<binding>
<command>nasal</command>
<script>dr400.immat_dialog.toggle()</script>
</binding>
</item>
</menu>
</default>
</menubar>
</sim>
And place a path to the immat.nas file we will create in the next step.
<nasal> <file>Aircraft/DR400/Nasal/immat.nas</file> </nasal>
immat.nas
# ===========================
# Immatriculation by Zakharov
# ===========================
var refresh_immat = func {
var immat = props.globals.getNode("/sim/model/immat",1).getValue();
var immat_size = size(immat);
if (immat_size != 0) immat = string.uc(immat);
for (var i = 0; i < 6; i += 1) {
if (i >= immat_size)
glyph = -1;
elsif (string.isupper(immat[i]))
glyph = immat[i] - `A`;
elsif (string.isdigit(immat[i]))
glyph = immat[i] - `0` + 26;
else
glyph = 36;
props.globals.getNode("/sim/multiplay/generic/int["~i~"]", 1).setValue(glyph+1);
}
}
var immat_dialog = gui.Dialog.new("/sim/gui/dialogs/DR400/status/dialog",
"Aircraft/DR400/Dialogs/immat.xml");
setlistener("/sim/signals/fdm-initialized", func {
if (props.globals.getNode("/sim/model/immat") == nil) {
var immat = props.globals.getNode("/sim/model/immat",1);
var callsign = props.globals.getNode("/sim/multiplay/callsign").getValue();
if (callsign != "callsign") immat.setValue(callsign);
else immat.setValue("F-GHYQ");
}
refresh_immat();
setlistener("sim/model/immat", refresh_immat, 0);
},0);