Bernard's VTOL
+4
RA2lover
Warbird
JHaskly
bwansy
8 posters
RigidChips :: Rigid-Chips :: Files :: Aircraft
Page 1 of 1
Bernard's VTOL
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
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
Re: Bernard's VTOL
Yay, you finished it! (And made it blue)
Great job on the upgrade.
Great job on the upgrade.
JHaskly- Admin
- Posts : 235
Join date : 2010-07-16
Age : 28
Location : Brisbane
Re: Bernard's VTOL
I need that Bernard/Aero.lue thing... where can i get it?
... and why do your jets look so cool?
... and why do your jets look so cool?
Warbird- Tank
- Posts : 60
Join date : 2010-10-27
Age : 29
Location : Germany
Re: Bernard's VTOL
Scripts/bwansy's library
RA2lover- Walker
- Posts : 382
Join date : 2010-10-11
Age : 29
Location : Brazil
Re: Bernard's VTOL
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.
@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.
Re: Bernard's VTOL
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
- Posts : 4
Join date : 2011-02-04
Re: Bernard's VTOL
you need bwansy's library, at Scripts/bwansy's library
RA2lover- Walker
- Posts : 382
Join date : 2010-10-11
Age : 29
Location : Brazil
Re: Bernard's VTOL
Thanks! I got it working now. This thing is awesome!
gripenguy- Cube
- Posts : 4
Join date : 2011-02-04
Re: Bernard's VTOL
Dayum... thats some hectic Lua I'm looking at, I see understand some, but other than the complicated stuff. Awesome work Bwansy!
Re: Bernard's VTOL
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?
accept renaming .txt to .lua,huh?
supershade- Hover
- Posts : 107
Join date : 2011-02-07
Age : 28
Location : Norman,Oklahoma
Re: Bernard's VTOL
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...
.txt files do work on rigidchips too...
RA2lover- Walker
- Posts : 382
Join date : 2010-10-11
Age : 29
Location : Brazil
Re: Bernard's VTOL
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- Hover
- Posts : 107
Join date : 2011-02-07
Age : 28
Location : Norman,Oklahoma
Re: Bernard's VTOL
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
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- Walker
- Posts : 382
Join date : 2010-10-11
Age : 29
Location : Brazil
supershade- Hover
- Posts : 107
Join date : 2011-02-07
Age : 28
Location : Norman,Oklahoma
Re: Bernard's VTOL
It keeps saying: Lua Compile Error, Awe
Chip Off The Old Rigid- Car
- Posts : 6
Join date : 2011-03-15
RigidChips :: Rigid-Chips :: Files :: Aircraft
Page 1 of 1
Permissions in this forum:
You cannot reply to topics in this forum