RigidChips
Would you like to react to this message? Create an account in a few clicks or log in to continue.

Bernard's VTOL

+4
RA2lover
Warbird
JHaskly
bwansy
8 posters

Go down

Bernard's VTOL Empty Bernard's VTOL

Post by bwansy 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

bwansy
Admin

Posts : 170
Join date : 2010-07-15

https://rigidchips.forumotion.com

Back to top Go down

Bernard's VTOL Empty Re: Bernard's VTOL

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

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

Great job on the upgrade.

JHaskly
Admin

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

Back to top Go down

Bernard's VTOL Empty Re: Bernard's VTOL

Post by Warbird 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 : 29
Location : Germany

Back to top Go down

Bernard's VTOL Empty Re: Bernard's VTOL

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

Scripts/bwansy's library
RA2lover
RA2lover
Walker
Walker

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

Back to top Go down

Bernard's VTOL Empty Re: Bernard's VTOL

Post by bwansy 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.

bwansy
Admin

Posts : 170
Join date : 2010-07-15

https://rigidchips.forumotion.com

Back to top Go down

Bernard's VTOL Empty Re: Bernard's VTOL

Post by gripenguy 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

Back to top Go down

Bernard's VTOL Empty Re: Bernard's VTOL

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

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

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

Back to top Go down

Bernard's VTOL Empty Re: Bernard's VTOL

Post by gripenguy 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

Back to top Go down

Bernard's VTOL Empty Re: Bernard's VTOL

Post by Timothy Ashtön 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
Timothy Ashtön
Timothy Ashtön
Walker
Walker

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

http://wildfrontierguidecomplete.blogspot.com/

Back to top Go down

Bernard's VTOL Empty Re: Bernard's VTOL

Post by supershade 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?
supershade
supershade
Hover
Hover

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

Back to top Go down

Bernard's VTOL Empty Re: Bernard's VTOL

Post by RA2lover 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...
RA2lover
RA2lover
Walker
Walker

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

Back to top Go down

Bernard's VTOL Empty Re: Bernard's VTOL

Post by supershade 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)
supershade
supershade
Hover
Hover

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

Back to top Go down

Bernard's VTOL Empty Re: Bernard's VTOL

Post by RA2lover 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
RA2lover
RA2lover
Walker
Walker

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

Back to top Go down

Bernard's VTOL Empty Re: Bernard's VTOL

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

thx.
supershade
supershade
Hover
Hover

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

Back to top Go down

Bernard's VTOL Empty Re: Bernard's VTOL

Post by Chip Off The Old Rigid 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

Back to top Go down

Bernard's VTOL Empty Re: Bernard's VTOL

Post by Sponsored content


Sponsored content


Back to top Go down

Back to top

- Similar topics

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