diff --git a/Nasal/auto_hold.nas b/Nasal/auto_hold.nas
new file mode 100644
index 0000000..21a30ff
--- /dev/null
+++ b/Nasal/auto_hold.nas
@@ -0,0 +1,58 @@
+#//Auto hold system by Sidi Liang
+print("Auto hold system loaded");
+var active = 0;
+var working = 0;
+var targetSpeed = 0;
+var throttleNode = props.getNode("/controls/engines/engine/throttle",1);
+var speedNode = props.getNode("sim/multiplay/generic/float[15]", 1);
+var engineNode = props.getNode("/controls/engines/engine/started",1);
+var door1 = followme.frontleft_door;
+var door2 = followme.frontright_door;
+var door3 = followme.rearleft_door;
+var door4 = followme.rearright_door;
+var autoHoldMainLoop = func(){
+ if(active){
+ throttle = throttleNode.getValue();
+ currentSpeed = speedNode.getValue();
+ if(!throttle and !math.round(currentSpeed)){
+ if(!door1.getpos() and !door2.getpos() and !door3.getpos() and !door4.getpos() and engineNode.getValue()){
+ followme.brakeController.applyBrakes(1);
+ working = 1;
+ }else{
+ stopAndSwitchToParking();
+ }
+ }else if(!math.round(currentSpeed)){
+ followme.brakeController.applyBrakes(0);
+ working = 0;
+ }
+ }
+}
+var stopAndSwitchToParking = func(){
+ followme.brakeController.applyBrakes(0);
+ working = 0;
+ followme.brakeController.enableHandBrake();
+}
+
+var autoHoldTimer = maketimer(0.05,autoHoldMainLoop);
+
+var startAutoHold = func(){
+ autoHoldTimer.start();
+ active = 1;
+}
+
+var stopAutoHold = func(){
+ active = 0;
+ autoHoldTimer.stop();
+ if(followme.brakeController.applyingFeetBrake){
+ working = 0;
+ followme.brakeController.applyBrakes(0);
+ }else{
+ stopAndSwitchToParking();
+ }
+}
+
+
+var toggleAutoSpeed = func(){
+ if(!autoHoldTimer.isRunning) startAutoHold();
+ else stopAutoHold();
+}
diff --git a/Nasal/systems.nas b/Nasal/systems.nas
index 09876ba..de27c3c 100644
--- a/Nasal/systems.nas
+++ b/Nasal/systems.nas
@@ -356,6 +356,7 @@ var BrakeController = {
rightBrakeNode: props.getNode("/controls/gear/brake-right",1),
parkingBrakeNode: props.getNode("/controls/gear/brake-parking",1),
+ applyingFeetBrake: 0,
handBrakeIsOn: 0,
leftBrakeValue: 0,
rightBrakeValue: 0,
@@ -398,9 +399,11 @@ var BrakeController = {
safety.emergencyMode();
},
keyboardBrake: func(){
+ applyingFeetBrake = 1;
me.applyBrakes(0.8);
},
keyboardBrakeRelease: func(){
+ applyingFeetBrake = 0;
me.applyBrakes(0);
},
releaseBrake: func(){
diff --git a/followme_e-tron-set.xml b/followme_e-tron-set.xml
index ee449e0..07d386d 100644
--- a/followme_e-tron-set.xml
+++ b/followme_e-tron-set.xml
@@ -856,6 +856,9 @@
Aircraft/followme_e-tron/Nasal/auto_speed.nas
+
+ Aircraft/followme_e-tron/Nasal/auto_hold.nas
+
Aircraft/followme_e-tron/Models/Interior/Instruments/CDU/boeing.nas
Aircraft/followme_e-tron/Models/Interior/Instruments/CDU/library.nas