Bernard's VTOL

View previous topic View next topic Go down

Bernard's VTOL

Post by bwansy on Wed Dec 08, 2010 9:27 am

I have upgraded one of my best tilt-jet VTOL planes, giving it better agility and reliability (the old one used to freeze RC randomly). Controls are in-game. Please note that it is not possible to switch into VTOL mode at speeds above 30m/s (108km/h).

Enjoy!

Screenshot here

Code:
// [RCD]
Val
{
   AILEL(default=0, min=-400, max=400, disp=0)
   AILER(default=0, min=-400, max=400, disp=0)
   CANARDL(default=0, min=-400, max=400, disp=0)
   CANARDR(default=0, min=-400, max=400, disp=0)
   COL1(default=#83A5CD, disp=0)
   COL2(default=#3B3B3B, disp=0)
   ENGPITCHL(default=90, min=-400, max=400, disp=0)
   ENGPITCHR(default=90, min=-400, max=400, disp=0)
   FLAPANG(default=180, min=-400, max=400, disp=0)
   JETANGL(default=90, min=-400, max=400, disp=0)
   JETANGR(default=90, min=-400, max=400, disp=0)
   JETPWRL(default=0, min=-999999999, max=999999999, disp=0)
   JETPWRR(default=0, min=-999999999, max=999999999, disp=0)
   NOZZANG(default=45, min=-400, max=400, disp=0)
   SPOILL(default=180, min=-400, max=400, disp=0)
   SPOILM(default=15, min=-400, max=400, disp=0)
   SPOILR(default=180, min=-400, max=400, disp=0)
   SURF1(default=#000000, disp=0)
   SURF2(default=#00A000, disp=0)
   SURF_T(default=#00F000, disp=0)
   WINGFOLD(default=90, disp=0)
   WINGSWEEP1(default=0, min=-400, max=400, disp=0)
   WINGSWEEP2(default=180, min=-400, max=400, disp=0)
   WINGSWEEP3(default=30, min=-400, max=400, disp=0)
}
Key
{
}
Body
{
   Core() {
      S:Frame(angle=160, option=1) {
         S:Chip(angle=-160, color=COL1, name=NOSE) {
            S:Weight(color=COL1) {
               S:Trim(angle=90, color=COL1) { }
               S:Weight(color=COL1) {
                  S:Cowl(angle=-150, effect=SURF_T) {
                     S:Cowl(angle=150, color=COL1, effect=SURF1) {
                        N:Cowl(angle=-2, color=COL1, effect=SURF1) {
                           N:Cowl(angle=5, color=0, effect=SURF2) {
                              N:Cowl(angle=15, color=0, effect=SURF2) {
                                 W:Cowl(angle=120, option=4, color=0, effect=SURF2) { }
                                 E:Cowl(angle=120, option=3, color=0, effect=SURF2) { }
                              }
                              W:Cowl(angle=120, color=0, effect=SURF2) { }
                              E:Cowl(angle=120, color=0, effect=SURF2) { }
                           }
                        }
                        W:Cowl(angle=90, color=COL1, effect=SURF1) { }
                        E:Cowl(angle=90, color=COL1, effect=SURF1) { }
                     }
                  }
                  S:Cowl(angle=150, effect=SURF_T) {
                     S:Cowl(angle=-150, color=COL1, effect=SURF1) {
                        N:Cowl(angle=-2, color=COL1, effect=SURF1) {
                           N:Cowl(angle=0, color=COL1, effect=SURF1) {
                              N:Cowl(angle=-3, color=COL1, effect=SURF1) {
                                 N:Cowl(angle=-10, color=COL1, effect=SURF1) {
                                    N:Cowl(angle=-150, color=COL1, effect=SURF1) {
                                       N:Cowl(angle=-20, color=COL1, effect=SURF1) { }
                                       E:Cowl(angle=-150, option=4, color=COL1, effect=SURF1) { }
                                       W:Cowl(angle=-150, option=3, color=COL1, effect=SURF1) { }
                                    }
                                    W:Cowl(angle=-150, option=4, color=COL1, effect=SURF1) { }
                                    E:Cowl(angle=-150, option=3, color=COL1, effect=SURF1) { }
                                 }
                                 E:Cowl(angle=-150, color=COL1, effect=SURF1) { }
                                 W:Cowl(angle=-150, color=COL1, effect=SURF1) { }
                              }
                              W:Cowl(angle=-150, color=COL1, effect=SURF1) { }
                              E:Cowl(angle=-150, color=COL1, effect=SURF1) { }
                           }
                           W:Cowl(angle=-90, color=COL1, effect=SURF1) {
                              N:Cowl(angle=-30, option=3, color=COL1, effect=SURF1) { }
                           }
                           E:Cowl(angle=-90, color=COL1, effect=SURF1) {
                              N:Cowl(angle=-30, option=4, color=COL1, effect=SURF1) { }
                           }
                        }
                        S:Cowl(angle=-20, color=COL1, effect=SURF1) {
                           E:Cowl(angle=-92, option=4, color=COL1, effect=SURF1) { }
                           W:Cowl(angle=-92, option=3, color=COL1, effect=SURF1) { }
                        }
                     }
                  }
                  W:Cowl() {
                     W:Cowl(angle=175, color=COL1, effect=SURF1) {
                        N:Cowl(angle=5, option=4, color=COL1, effect=SURF1) { }
                        S:Cowl(angle=5, option=3, color=COL1, effect=SURF1) { }
                     }
                     W:Cowl(angle=-160, color=COL1, effect=SURF1) {
                        N:Cowl(angle=-20, option=4, color=COL1, effect=SURF1) {
                           W:Cowl(angle=-25, color=COL1, effect=SURF1) { }
                        }
                        S:Cowl(angle=-20, option=3, color=COL1, effect=SURF1) {
                           W:Cowl(angle=-25, color=COL1, effect=SURF1) { }
                        }
                        W:Cowl(angle=-25, color=COL1, effect=SURF1) { }
                     }
                  }
                  W:Rudder(angle=-WINGSWEEP1, color=COL1) {
                     W:Chip(color=COL1) {
                        W:Rudder(angle=-WINGSWEEP2, color=COL1) {
                           W:Cowl(angle=175, color=COL1, effect=SURF1) {
                              N:Cowl(angle=5, option=4, color=COL1, effect=SURF1) { }
                              S:Cowl(angle=5, option=3, color=COL1, effect=SURF1) { }
                           }
                           W:Cowl(angle=-170, color=COL1, effect=SURF1) {
                              N:Cowl(angle=-10, option=4, color=COL1, effect=SURF1) { }
                              S:Cowl(angle=-10, option=3, color=COL1, effect=SURF1) { }
                           }
                           E:Trim(angle=-ENGPITCHL, color=COL1, name=ENGL) {
                              E:TrimF(angle=-AILEL, option=1) {
                                 W:Frame(angle=WINGFOLD, option=1) {
                                    E:Rudder(angle=WINGSWEEP3, color=COL1) {
                                       E:Cowl(color=COL1, effect=SURF1) {
                                          E:Cowl(angle=-90, effect=SURF_T) {
                                             N:Cowl(angle=-75, effect=SURF_T) {
                                                W:Cowl(angle=-90, option=3, color=COL1, effect=SURF1) {
                                                   N:Cowl(color=COL1, effect=SURF1) { }
                                                }
                                             }
                                          }
                                       }
                                    }
                                 }
                              }
                              N:Chip(color=COL1) {
                                 N:Frame(option=1) {
                                    W:TrimF(angle=-JETANGL, option=1) {
                                       E:Jet(power=JETPWRL, color=COL2, effect=1) {
                                          S:Frame(angle=NOZZANG) {
                                             S:Cowl(angle=180, color=COL2, effect=SURF1) {
                                                E:Cowl(angle=-160, option=3, color=COL2, effect=SURF1) { }
                                                W:Cowl(angle=-160, option=4, color=COL2, effect=SURF1) { }
                                                N:Cowl(angle=-160, color=COL2, effect=SURF1) { }
                                             }
                                          }
                                          N:Frame(angle=NOZZANG) {
                                             N:Cowl(angle=180, color=COL2, effect=SURF1) {
                                                W:Cowl(angle=-160, option=3, color=COL2, effect=SURF1) { }
                                                E:Cowl(angle=-160, option=4, color=COL2, effect=SURF1) { }
                                                S:Cowl(angle=-160, color=COL2, effect=SURF1) { }
                                             }
                                          }
                                          N:Cowl(angle=-115, color=COL2) { }
                                          S:Cowl(angle=-115, color=COL2) { }
                                       }
                                       E:Trim(angle=FLAPANG, color=COL2) { }
                                    }
                                 }
                              }
                              N:Trim(angle=90, color=COL1) { }
                              S:Chip(color=COL1) {
                                 S:Cowl(color=COL1, effect=SURF1) {
                                    S:Cowl(angle=-160, color=COL1, effect=SURF1) {
                                       S:Cowl(angle=-10, color=COL1, effect=SURF1) {
                                          S:Cowl(angle=-10, color=COL1, effect=SURF1) {
                                             W:Cowl(angle=-90, color=COL1, effect=SURF1) {
                                                N:Cowl(angle=-30, option=4, color=COL1, effect=SURF1) {
                                                   W:Cowl(angle=-92, option=4, color=COL1, effect=SURF1) { }
                                                }
                                                S:Cowl(color=COL1, effect=SURF1) {
                                                   S:Cowl(option=5, color=COL1) { }
                                                }
                                             }
                                             E:Cowl(angle=-90, color=COL1, effect=SURF1) {
                                                N:Cowl(angle=-30, option=3, color=COL1, effect=SURF1) {
                                                   E:Cowl(angle=-92, option=3, color=COL1, effect=SURF1) { }
                                                }
                                                E:Cowl(angle=-90, color=COL1, effect=SURF1) {
                                                   S:Cowl(color=COL1, effect=SURF1) {
                                                      S:Cowl(angle=-60, color=COL1) { }
                                                   }
                                                }
                                                S:Cowl(color=COL1, effect=SURF1) {
                                                   S:Cowl(option=5, color=COL1) { }
                                                }
                                             }
                                             S:Cowl(color=COL1, effect=SURF1) {
                                                S:Cowl(angle=-60, color=COL1) { }
                                             }
                                             N:Cowl(angle=-90, color=0, effect=SURF1) { }
                                          }
                                          W:Cowl(angle=-120, color=COL1, effect=SURF1) { }
                                          E:Cowl(angle=-120, color=COL1, effect=SURF1) { }
                                       }
                                       W:Cowl(angle=-120, option=4, color=COL1, effect=SURF1) { }
                                       E:Cowl(angle=-120, option=3, color=COL1, effect=SURF1) { }
                                    }
                                 }
                              }
                              S:Chip(angle=SPOILL, color=COL1) { }
                              S:Chip(angle=-SPOILL, color=COL1) { }
                           }
                        }
                     }
                  }
                  E:Cowl() {
                     E:Cowl(angle=175, color=COL1, effect=SURF1) {
                        S:Cowl(angle=5, option=4, color=COL1, effect=SURF1) { }
                        N:Cowl(angle=5, option=3, color=COL1, effect=SURF1) { }
                     }
                     E:Cowl(angle=-160, color=COL1, effect=SURF1) {
                        S:Cowl(angle=-20, option=4, color=COL1, effect=SURF1) {
                           E:Cowl(angle=-25, color=COL1, effect=SURF1) { }
                        }
                        N:Cowl(angle=-20, option=3, color=COL1, effect=SURF1) {
                           E:Cowl(angle=-25, color=COL1, effect=SURF1) { }
                        }
                        E:Cowl(angle=-25, color=COL1, effect=SURF1) { }
                     }
                  }
                  E:Rudder(angle=WINGSWEEP1, color=COL1) {
                     E:Chip(color=COL1) {
                        E:Rudder(angle=WINGSWEEP2, color=COL1) {
                           E:Cowl(angle=175, color=COL1, effect=SURF1) {
                              S:Cowl(angle=5, option=4, color=COL1, effect=SURF1) { }
                              N:Cowl(angle=5, option=3, color=COL1, effect=SURF1) { }
                           }
                           E:Cowl(angle=-170, color=COL1, effect=SURF1) {
                              S:Cowl(angle=-10, option=4, color=COL1, effect=SURF1) { }
                              N:Cowl(angle=-10, option=3, color=COL1, effect=SURF1) { }
                           }
                           W:Trim(angle=ENGPITCHR, color=COL1, name=ENGR) {
                              W:TrimF(angle=AILER, option=1) {
                                 E:Frame(angle=WINGFOLD, option=1) {
                                    W:Rudder(angle=-WINGSWEEP3, color=COL1) {
                                       W:Cowl(color=COL1, effect=SURF1) {
                                          W:Cowl(angle=-90, effect=SURF_T) {
                                             N:Cowl(angle=-75, effect=SURF_T) {
                                                E:Cowl(angle=-90, option=4, color=COL1, effect=SURF1) {
                                                   N:Cowl(color=COL1, effect=SURF1) { }
                                                }
                                             }
                                          }
                                       }
                                    }
                                 }
                              }
                              N:Chip(color=COL1) {
                                 N:Frame(option=1) {
                                    E:TrimF(angle=JETANGR, option=1) {
                                       W:Jet(power=JETPWRR, color=COL2, effect=1) {
                                          N:Frame(angle=NOZZANG) {
                                             N:Cowl(angle=180, color=COL2, effect=SURF1) {
                                                W:Cowl(angle=-160, option=3, color=COL2, effect=SURF1) { }
                                                E:Cowl(angle=-160, option=4, color=COL2, effect=SURF1) { }
                                                S:Cowl(angle=-160, color=COL2, effect=SURF1) { }
                                             }
                                          }
                                          S:Frame(angle=NOZZANG) {
                                             S:Cowl(angle=180, color=COL2, effect=SURF1) {
                                                E:Cowl(angle=-160, option=3, color=COL2, effect=SURF1) { }
                                                W:Cowl(angle=-160, option=4, color=COL2, effect=SURF1) { }
                                                N:Cowl(angle=-160, color=COL2, effect=SURF1) { }
                                             }
                                          }
                                          N:Cowl(angle=-115, color=COL2) { }
                                          S:Cowl(angle=-115, color=COL2) { }
                                       }
                                       W:Trim(angle=-FLAPANG, color=COL2) { }
                                    }
                                 }
                              }
                              N:Trim(angle=90, color=COL1) { }
                              S:Chip(color=COL1) {
                                 S:Cowl(color=COL1, effect=SURF1) {
                                    S:Cowl(angle=-160, color=COL1, effect=SURF1) {
                                       S:Cowl(angle=-10, color=COL1, effect=SURF1) {
                                          S:Cowl(angle=-10, color=COL1, effect=SURF1) {
                                             W:Cowl(angle=-90, color=COL1, effect=SURF1) {
                                                N:Cowl(angle=-30, option=4, color=COL1, effect=SURF1) {
                                                   W:Cowl(angle=-92, option=4, color=COL1, effect=SURF1) { }
                                                }
                                                S:Cowl(color=COL1, effect=SURF1) {
                                                   S:Cowl(option=5, color=COL1) { }
                                                }
                                             }
                                             E:Cowl(angle=-90, color=COL1, effect=SURF1) {
                                                N:Cowl(angle=-30, option=3, color=COL1, effect=SURF1) {
                                                   E:Cowl(angle=-92, option=3, color=COL1, effect=SURF1) { }
                                                }
                                                E:Cowl(angle=-90, color=COL1, effect=SURF1) {
                                                   S:Cowl(color=COL1, effect=SURF1) {
                                                      S:Cowl(angle=-60, color=COL1) { }
                                                   }
                                                }
                                                S:Cowl(color=COL1, effect=SURF1) {
                                                   S:Cowl(option=5, color=COL1) { }
                                                }
                                             }
                                             S:Cowl(color=COL1, effect=SURF1) {
                                                S:Cowl(angle=-60, color=COL1) { }
                                             }
                                             N:Cowl(angle=-90, color=0, effect=SURF1) { }
                                          }
                                          W:Cowl(angle=-120, color=COL1, effect=SURF1) { }
                                          E:Cowl(angle=-120, color=COL1, effect=SURF1) { }
                                       }
                                       W:Cowl(angle=-120, option=4, color=COL1, effect=SURF1) { }
                                       E:Cowl(angle=-120, option=3, color=COL1, effect=SURF1) { }
                                    }
                                 }
                              }
                              S:Chip(angle=SPOILR, color=COL1) { }
                              S:Chip(angle=-SPOILR, color=COL1) { }
                           }
                        }
                     }
                  }
                  S:Weight(color=COL1) {
                     S:Chip(color=COL1) {
                        S:Chip(color=COL1) {
                           S:Cowl(angle=175, color=COL1, effect=SURF1) {
                              S:Cowl(angle=-2, color=COL1, effect=SURF1) {
                                 S:Cowl(angle=-2, color=COL1, effect=SURF1) {
                                    E:Cowl(angle=140, color=COL1, effect=SURF1) { }
                                    W:Cowl(angle=140, color=COL1, effect=SURF1) { }
                                 }
                                 E:Cowl(angle=140, option=3, color=COL1, effect=SURF1) { }
                                 W:Cowl(angle=140, option=4, color=COL1, effect=SURF1) { }
                              }
                           }
                           S:Cowl(angle=-165, color=COL1, effect=SURF1) {
                              S:Cowl(angle=-5, color=COL1, effect=SURF1) {
                                 S:Cowl(angle=-5, color=COL1, effect=SURF1) {
                                    E:Cowl(angle=-140, color=COL1, effect=SURF1) { }
                                    W:Cowl(angle=-140, color=COL1, effect=SURF1) { }
                                    E:Cowl(angle=-92, option=3, color=COL1, effect=SURF1) { }
                                    W:Cowl(angle=-92, option=4, color=COL1, effect=SURF1) { }
                                 }
                                 W:Cowl(angle=-140, option=4, color=COL1, effect=SURF1) { }
                                 E:Cowl(angle=-140, option=3, color=COL1, effect=SURF1) { }
                              }
                           }
                           E:Cowl(angle=90, effect=SURF_T) {
                              S:Cowl(angle=-175, effect=SURF_T) {
                                 S:Cowl(angle=-90, effect=SURF_T) {
                                    S:Cowl(angle=-175, effect=SURF_T) {
                                       S:Cowl(angle=-90, effect=SURF_T) {
                                          S:Cowl(angle=-90, effect=SURF_T) {
                                             S:Cowl(angle=-170, effect=SURF_T) {
                                                S:Cowl(angle=-90, effect=SURF_T) {
                                                   W:Cowl(angle=-70, color=COL1, effect=SURF1) { }
                                                   W:Cowl(angle=-100, color=COL1, effect=SURF1) { }
                                                }
                                             }
                                          }
                                          W:Cowl(angle=-75, color=COL1, effect=SURF1) { }
                                          W:Cowl(angle=-95, color=COL1, effect=SURF1) { }
                                       }
                                    }
                                 }
                                 W:Cowl(angle=-75, option=4, color=COL1, effect=SURF1) { }
                                 W:Cowl(angle=-95, option=4, color=COL1, effect=SURF1) { }
                              }
                           }
                           W:Cowl(angle=90, effect=SURF_T) {
                              S:Cowl(angle=-175, effect=SURF_T) {
                                 S:Cowl(angle=-90, effect=SURF_T) {
                                    S:Cowl(angle=-175, effect=SURF_T) {
                                       S:Cowl(angle=-90, effect=SURF_T) {
                                          S:Cowl(angle=-90, effect=SURF_T) {
                                             S:Cowl(angle=-170, effect=SURF_T) {
                                                S:Cowl(angle=-90, effect=SURF_T) {
                                                   E:Cowl(angle=-70, color=COL1, effect=SURF1) { }
                                                   E:Cowl(angle=-100, color=COL1, effect=SURF1) { }
                                                }
                                             }
                                          }
                                          E:Cowl(angle=-75, color=COL1, effect=SURF1) { }
                                          E:Cowl(angle=-95, color=COL1, effect=SURF1) { }
                                       }
                                    }
                                 }
                                 E:Cowl(angle=-75, option=3, color=COL1, effect=SURF1) { }
                                 E:Cowl(angle=-95, option=3, color=COL1, effect=SURF1) { }
                              }
                           }
                        }
                     }
                  }
               }
               S:Chip(angle=SPOILM, color=COL1) { }
               S:Chip(angle=-SPOILM, color=COL1) { }
            }
            N:Chip(color=COL1) {
               W:Cowl(angle=90, effect=SURF_T) {
                  N:Cowl(angle=-175, effect=SURF_T) {
                     N:Cowl(angle=-90, effect=SURF_T) {
                        N:Cowl(angle=-175, effect=SURF_T) {
                           N:Cowl(angle=-90, effect=SURF_T) {
                              N:Cowl(angle=-90, effect=SURF_T) {
                                 N:Cowl(angle=-170, effect=SURF_T) {
                                    N:Cowl(angle=-90, effect=SURF_T) {
                                       E:Cowl(angle=-60, color=COL1, effect=SURF1) {
                                          N:Cowl(angle=-10, option=3, color=COL1, effect=SURF1) { }
                                          S:Cowl(option=3, color=COL1, effect=SURF1) { }
                                       }
                                       E:Cowl(angle=-115, color=COL1, effect=SURF1) {
                                          N:Cowl(angle=10, option=3, color=COL1, effect=SURF1) { }
                                       }
                                    }
                                 }
                              }
                              E:Cowl(angle=-75, color=COL1, effect=SURF1) { }
                              E:Cowl(angle=-115, color=COL1, effect=SURF1) { }
                           }
                        }
                     }
                  }
               }
               E:Cowl(angle=90, effect=SURF_T) {
                  N:Cowl(angle=-175, effect=SURF_T) {
                     N:Cowl(angle=-90, effect=SURF_T) {
                        N:Cowl(angle=-175, effect=SURF_T) {
                           N:Cowl(angle=-90, effect=SURF_T) {
                              N:Cowl(angle=-90, effect=SURF_T) {
                                 N:Cowl(angle=-170, effect=SURF_T) {
                                    N:Cowl(angle=-90, effect=SURF_T) {
                                       W:Cowl(angle=-60, color=COL1, effect=SURF1) {
                                          N:Cowl(angle=-10, option=4, color=COL1, effect=SURF1) { }
                                          S:Cowl(option=4, color=COL1, effect=SURF1) { }
                                       }
                                       W:Cowl(angle=-115, color=COL1, effect=SURF1) {
                                          N:Cowl(angle=10, option=4, color=COL1, effect=SURF1) { }
                                       }
                                    }
                                 }
                              }
                              W:Cowl(angle=-75, color=COL1, effect=SURF1) { }
                              W:Cowl(angle=-115, color=COL1, effect=SURF1) { }
                           }
                        }
                     }
                  }
               }
               E:Trim(angle=CANARDR, color=COL1) { }
               W:Trim(angle=-CANARDL, color=COL1) { }
            }
         }
      }
   }
}
Lua
{require("Bernard/Aero.lua")


function init()

   armlen = 1.2
   mouseflag = 0
   engflag = 0
   flightmode = 0
   holdalt = 0
   thrang = 90
   tgtht = _Y(NOSE)
   ap = {cruise = {flag = 1,spd = 0}}
   twratio = 1.2
   
   clist = {}
   for i = 0,_CHIPS()-1 do
      if _TYPE(i) ~= 9 then
         table.insert(clist,i)
      end
   end
   
   vtolready = 0
   planeready = 0
   
end
function OnInit()
   init()
end
function OnReset()
   init()
end



function inputctrl()
   keyup = animate(keyup or 0,_KEY(0)-_KEY(1),0.2)
   keyleft = animate(keyleft or 0,_KEY(2)-_KEY(3),0.2)
   inpyaw = animate(inpyaw or 0,_KEY(4)-_KEY(6),0.2)
   inpthr = limit((inpthr or 0)+(_KEY(8)-_KEY(5))*0.05,0,1)
   
   engflag = switch(engflag,16)
   mouseflag = switch(mouseflag,15)
   if mouseflag > 0 then
      mx,my = inputmouse()
      inpup = pow2(my,1.5)
      inpleft = pow2(mx,1.5)
   else
      inpup,inpleft = keyup,keyleft
   end
end

function getstate()
   st = getstatefull(NOSE,clist,st)
   st.alpha = atan2(-st.v.y,-st.v.z)
   st.beta = atan2(st.v.x,-st.v.z)
   st.ex,st.ey,st.ez = vtr3.euler(NOSE)
   wt = st.m*9.81
end

function CSASvtol()
   engang = (atan2(_YY(ENGL),_ZY(ENGL))+atan2(_YY(ENGR),_ZY(ENGR)))/2
   if thrang == 90 then vtolready = 1 end

   if holdalt == 0 or engflag == 0 then
      tgtht = st.c.y
      if (abs(st.iv.y) < 3) and (abs(st.v.z) < 5) then
         holdalt = 1
      end
   end
   
   ht = getht(NOSE)
   if ht <= 0 then
      lowlim = 0.05
   else
      lowlim = math.min((ht-1.54)*0.01,0.03)
   end
   tgtht = tgtht+limit(_KEY(8)-_KEY(5),0.05,-lowlim)
   
   dy = (tgtht-st.c.y)*holdalt
   engf = limit(1+dy*0.3-st.iv.y*0.1,0,1.25)*engflag
   pitcht = ((limit(st.v.z,-10,10)*0.02+inpup*0.3-engang*vtolready)*2+st.w.x*1)*engflag
   rollt = ((-st.v.x*0.05+inpleft*0.2+st.ez)*0.5+st.w.z*0.3)*engflag
   yawt = (inpyaw*0.3+st.w.y*0.1)*engflag
   
   planeready = 0
end

function actuatevtol()
   WINGFOLD = animate(WINGFOLD,90,5)
   if WINGFOLD == 90 then
      thrang = animate(thrang or 0,90,5)
   end
   ENGPITCHL = animate(ENGPITCHL,thrang-deg(engang)*vtolready,5)
   ENGPITCHR = animate(ENGPITCHR,thrang-deg(engang)*vtolready,5)
   WINGSWEEP3 = animate(WINGSWEEP3,30,2)
   NOZZANG = animate(NOZZANG,45,10)
   FLAPANG = 90+thrang
   WINGSWEEP1 = animate(WINGSWEEP1,-asind((1.2-st.bcg.z)/1.2),5)
   WINGSWEEP2 = 180-WINGSWEEP1
   CANARDL = animate(CANARDL,0,10)
   CANARDR = animate(CANARDR,0,10)
   AILEL = animate(AILEL,0,10)
   AILER = animate(AILER,0,10)
   
   JETANGL = animate(JETANGL,90+limit(-pitcht*20-yawt*15,-20,20),10)
   JETANGR = animate(JETANGR,90+limit(-pitcht*20+yawt*15,-20,20),10)
   
   JETPWRL = 6*wt*twratio/2*(engf-rollt)*vtolready
   JETPWRR = 6*wt*twratio/2*(engf+rollt)*vtolready
end

function CSASplane()
   if thrang == 0 and abs(st.v.z) > 15 then planeready = 1 end

   pcorr = vcorr(st.v.z,0.3,0.1)
   alphalock = ctrllock(st.v.z,5,10)
   pitcht = (inpup*2*planeready+st.w.x*0.5*alphalock)*pcorr+st.alpha*1*alphalock
   
   rcorr = vcorr(st.v.z,0.1,0.1)
   rollt = (inpleft*2*planeready+st.w.z*0.15*alphalock)*rcorr
   
   yawt = st.beta*15*alphalock+st.w.y*5
   
   ap.cruise.spd = limit(ap.cruise.spd+(_KEY(8)-_KEY(5))*1,0,140)
   thrf = limit((thrf or 0)+0.01*(0.5*(ap.cruise.spd+st.v.z)+0.4*st.dv.z),-0.2,1)*engflag
   
   vtolready = 0
end

function actuateplane()
   engfl = math.max(thrf-yawt*0.1,0)
   engfr = math.max(thrf+yawt*0.1,0)
   
   spoilfl = -math.min(thrf-yawt,0)
   spoilfr = -math.min(thrf+yawt,0)
   
   thrang = animate(thrang,0,5)
   ENGPITCHL = animate(ENGPITCHL,thrang,5)
   ENGPITCHR = animate(ENGPITCHR,thrang,5)
   if thrang == 0 then
      WINGSWEEP1 = animate(WINGSWEEP1,60,5)
      WINGSWEEP2 = 180-WINGSWEEP1
      WINGFOLD = animate(WINGFOLD,0,5)
   end
   
   if -st.v.z*3.6 > 300 then
      sweeptgt = -30
   end
   if -st.v.z*3.6 < 250 then
      sweeptgt = 30
   end
   WINGSWEEP3 = animate(WINGSWEEP3,sweeptgt,2)
   NOZZANG = animate(NOZZANG,95,10)
   FLAPANG = 90+thrang
   
   CANARDL = animate(CANARDL,limit(-pitcht*40,-30,30),10)
   CANARDR = animate(CANARDR,limit(-pitcht*40,-30,30),10)
   AILEL = animate(AILEL,limit(-rollt*40,-30,30),10)
   AILER = animate(AILER,limit(rollt*40,-30,30),10)
   
   JETANGL = animate(JETANGL,90+limit(-pitcht*30+rollt*20,-20,20),10)
   JETANGR = animate(JETANGR,90+limit(-pitcht*30-rollt*20,-20,20),10)
   JETPWRL = 6*wt*twratio/2*engfl
   JETPWRR = 6*wt*twratio/2*engfr
   
   SPOILL = animate(SPOILL,180+limit(sqrt(spoilfl)*50*pcorr,0,30),5)
   SPOILR = animate(SPOILR,180+limit(sqrt(spoilfr)*50*pcorr,0,30),5)
end

function OnFrame()
   
   inputctrl()
   getstate()
   if flightmode == 0 then
      CSASvtol()
      actuatevtol()
      if _KEYDOWN(14) > 0 then
         flightmode = 1
         ap.cruise.spd = 75
         thrf = 1.2
      end
   else
      CSASplane()
      actuateplane()
      if _KEYDOWN(14) > 0 and abs(st.v.z) < 30 then
         flightmode = 0
         holdalt = 0
      end
   end

   _ZOOM(55)
   out(0,"VTOL by Bernard (bwansy)")
   if flightmode == 0 then
      out(1,string.format("Hover height: %.2f",tgtht))
   else
      out(1,string.format("Cruise speed: %g m/s",ap.cruise.spd))      
   end
   out(2,"[W] Toggle mouse/keyboard | [E] Toggle engine")
   out(3,"Arrow keys/ mouse: pitch and roll | [Z/C]: Yaw")
   out(4,"[Q] Toggle flight mode")
   out(5,"[S/X] Cruise speed / hover altitude")
end
}


Last edited by bwansy on Tue Dec 14, 2010 6:23 am; edited 2 times in total

_________________
A.K.A. Bernard

bwansy
Admin

Posts : 170
Join date : 2010-07-15

View user profile http://rigidchips.forum-motion.com

Back to top Go down

Re: Bernard's VTOL

Post by JHaskly on Wed Dec 08, 2010 5:42 pm

Yay, you finished it! Very Happy (And made it blue)

Great job on the upgrade.

_________________
Previously (and currently) known as Juz.

Please do not write "LUA", beause it's "Lua". It's Moon in Portuguese, not a Limited User Account, Last Universal Ancestor, or the Lukla Airport in Nepal.

JHaskly
Admin

Posts : 235
Join date : 2010-07-16
Age : 21
Location : Brisbane

View user profile

Back to top Go down

Re: Bernard's VTOL

Post by Warbird on Sun Dec 12, 2010 12:22 am

I need that Bernard/Aero.lue thing... where can i get it?


... and why do your jets look so cool?

Warbird
Tank
Tank

Posts : 60
Join date : 2010-10-27
Age : 23
Location : Germany

View user profile

Back to top Go down

Re: Bernard's VTOL

Post by RA2lover on Sun Dec 12, 2010 5:29 am

Scripts/bwansy's library
avatar
RA2lover
Walker
Walker

Posts : 382
Join date : 2010-10-11
Age : 22
Location : Brazil

View user profile

Back to top Go down

Re: Bernard's VTOL

Post by bwansy on Tue Dec 14, 2010 6:23 am

Updated: improved handling in VTOL mode.

@warbird: I used a texture mod that can be found here.
Just download "nuclear_thermal_jet_e.zip", then extract and replace the content in your resources folder.

_________________
A.K.A. Bernard

bwansy
Admin

Posts : 170
Join date : 2010-07-15

View user profile http://rigidchips.forum-motion.com

Back to top Go down

Re: Bernard's VTOL

Post by gripenguy on Tue Feb 08, 2011 5:27 pm

Sorry for being a noob, but I can't get that nuclear_thermal_jet_e.zip thing to work. I extracted it in the resources folder, but RC still comes up with the message "Lua compile error [string "VTOL.txt"]:1: could not load package 'Bernard/Aero.lua' from path '?;?.Lua'"

gripenguy
Cube
Cube

Posts : 4
Join date : 2011-02-04

View user profile

Back to top Go down

Re: Bernard's VTOL

Post by RA2lover on Tue Feb 08, 2011 5:30 pm

you need bwansy's library, at Scripts/bwansy's library
avatar
RA2lover
Walker
Walker

Posts : 382
Join date : 2010-10-11
Age : 22
Location : Brazil

View user profile

Back to top Go down

Re: Bernard's VTOL

Post by gripenguy on Wed Feb 09, 2011 5:51 pm

Thanks! I got it working now. This thing is awesome!

gripenguy
Cube
Cube

Posts : 4
Join date : 2011-02-04

View user profile

Back to top Go down

Re: Bernard's VTOL

Post by Timothy Ashtön on Thu Feb 10, 2011 11:41 am

Dayum... thats some hectic Lua I'm looking at, I see understand some, but other than the complicated stuff. Awesome work Bwansy! Very Happy
avatar
Timothy Ashtön
Walker
Walker

Posts : 289
Join date : 2010-07-17
Age : 25
Location : Ontario

View user profile http://wildfrontierguidecomplete.blogspot.com/

Back to top Go down

Re: Bernard's VTOL

Post by supershade on Thu Feb 10, 2011 1:17 pm

This aircraft is awesome....By the way thanks for premaking the scripts instead of having us to have to make them,windows 7 and XP do not really
accept renaming .txt to .lua,huh?
avatar
supershade
Hover
Hover

Posts : 107
Join date : 2011-02-07
Age : 22
Location : Norman,Oklahoma

View user profile

Back to top Go down

Re: Bernard's VTOL

Post by RA2lover on Thu Feb 10, 2011 1:36 pm

just use rigidchips designer, copy the text in the code box, then press ctrl+shift+v then save.

.txt files do work on rigidchips too...
avatar
RA2lover
Walker
Walker

Posts : 382
Join date : 2010-10-11
Age : 22
Location : Brazil

View user profile

Back to top Go down

Re: Bernard's VTOL

Post by supershade on Thu Feb 10, 2011 1:39 pm

Okay thanks for clearing that up RA2lover.But where do I copy the lua script to? In the objects lua script tab?


Last edited by supershade on Thu Feb 10, 2011 1:43 pm; edited 1 time in total (Reason for editing : Question)
avatar
supershade
Hover
Hover

Posts : 107
Join date : 2011-02-07
Age : 22
Location : Norman,Oklahoma

View user profile

Back to top Go down

Re: Bernard's VTOL

Post by RA2lover on Thu Feb 10, 2011 2:02 pm

you can place the libraries on the rigidchips install folder, but i would recommend placing it on a new folder inside it, because juz's library has files with the same name.

usually the scripts tell the folder on which it should be installed. on this model's case, the library should be installed on ../Bernard
avatar
RA2lover
Walker
Walker

Posts : 382
Join date : 2010-10-11
Age : 22
Location : Brazil

View user profile

Back to top Go down

Re: Bernard's VTOL

Post by supershade on Thu Feb 10, 2011 2:30 pm

thx.
avatar
supershade
Hover
Hover

Posts : 107
Join date : 2011-02-07
Age : 22
Location : Norman,Oklahoma

View user profile

Back to top Go down

Re: Bernard's VTOL

Post by Chip Off The Old Rigid on Thu Mar 24, 2011 6:24 pm

It keeps saying: Lua Compile Error, Awe Sad

Chip Off The Old Rigid
Car
Car

Posts : 6
Join date : 2011-03-15

View user profile

Back to top Go down

Re: Bernard's VTOL

Post by Sponsored content


Sponsored content


Back to top Go down

View previous topic View next topic Back to top

- Similar topics

 
Permissions in this forum:
You cannot reply to topics in this forum