|
From: <fli...@li...> - 2017-03-16 21:00:19
|
Revision: 2555
http://sourceforge.net/p/flightgear/fgaddon/2555
Author: lbrenta
Date: 2017-03-16 21:00:17 +0000 (Thu, 16 Mar 2017)
Log Message:
-----------
707: Nasal/fuel-and-payload.nas: add defensive code to guard against buggy remote
aircraft that pollute our perfectly good local property tree over multiplayer.
at one point I had 45 engines plus an APU under /engines. This caused errors
in then engines_alive Nasal loop, which in turn disabled the (also Nasal-based)
fuel and payload dialogs.
Modified Paths:
--------------
trunk/Aircraft/707/Nasal/fuel-and-payload.nas
Modified: trunk/Aircraft/707/Nasal/fuel-and-payload.nas
===================================================================
--- trunk/Aircraft/707/Nasal/fuel-and-payload.nas 2017-03-16 15:24:25 UTC (rev 2554)
+++ trunk/Aircraft/707/Nasal/fuel-and-payload.nas 2017-03-16 21:00:17 UTC (rev 2555)
@@ -787,13 +787,19 @@
# control the engine dependens
foreach(var e; props.globals.getNode("/engines").getChildren("engine")) {
- var n2 = e.getNode("n2").getValue() or 0;
+ var n2_node = e.getNode("n2");
+ if (n2_node == nil) {
+ continue;
+ # some buggy aircraft create additional /engines/engine[x] properties over multiplayer;
+ # they lack n2: skip them
+ }
+ var n2 = n2_node.getValue() or 0;
var oil = getprop("/b707/oil/quantity["~e.getIndex()~"]") or 0;
var s = getprop("/b707/fuel/valves/fuel-shutoff["~e.getIndex()~"]") or 0;
var c = props.globals.getNode("/controls/engines/engine["~e.getIndex()~"]/cutoff");
var f = props.globals.initNode("/controls/engines/engine["~e.getIndex()~"]/fire",0,"BOOL");
var w = props.globals.getNode("/b707/warning/enabled");
- var b = boost_pumps_for_engine (e.getIndex());
+ var b = boost_pumps_for_engine (e.getIndex());
var cfv = getprop ("/b707/fuel/valves/valve-pos[" ~ (e.getIndex()+1) ~ "]");
var fp = 0;
var newfp = 0;
|