function FixVars()Acceleration2=Acceleration.Value<0 and 0 or Acceleration.Value>1000 and 1000 or Acceleration.Value MaxBank2=MaxBank.Value<-90 and-90 or MaxBank.Value>90 and 90 or MaxBank.Value MaxSpeed2=MaxSpeed.Value<0 and 0 or MaxSpeed.Value<StallSpeed.Value and StallSpeed.Value or MaxSpeed.Value StallSpeed2=StallSpeed.Value<0 and 0 or StallSpeed.Value>MaxSpeed.Value and MaxSpeed.Value or StallSpeed.Value TurnSpeed2=TurnSpeed.Value<0 and 0 or TurnSpeed.Value ThrottleInc2=ThrottleInc.Value<0 and 0 or ThrottleInc.Value MaxAltitude2=MaxAltitude.Value<MinAltitude.Value and MinAltitude.Value or MaxAltitude.Value MinAltitude2=MinAltitude.Value>MaxAltitude.Value and MaxAltitude.Value or MinAltitude.Value MissileTime2=ReloadTimes.Missiles.Value<0 and 0 or ReloadTimes.Missiles.Value RocketTime2=ReloadTimes.Rockets.Value<0 and 0 or ReloadTimes.Rockets.Value GunTime2=ReloadTimes.Guns.Value<0 and 0 or ReloadTimes.Guns.Value FlareTime2=ReloadTimes.Flares.Value<0 and 0 or ReloadTimes.Flares.Value BombTime2=ReloadTimes.Bombs.Value<0 and 0 or ReloadTimes.Bombs.Value CameraType2=pcall(function()Camera.CameraType=CameraType.Value end)and CameraType.Value or"\067\117\115\116\111\109"PlaneName2=PlaneName.Value==""and"\080\108\097\110\101"or PlaneName.Value if WeaponsValue.Value then if WeaponsValue.Missiles.Value or WeaponsValue.Bombs.Value then Targetable2=true elseif not(WeaponsValue.Missiles.Value and WeaponsValue.Bombs.Value)then Targetable2=false end elseif not WeaponsValue.Value then Targetable2=false end if FlightControls.SpeedUp.Value=="\065\114\114\111\119\075\101\121\085\112"then SpeedUp2=17 SUAK=true elseif FlightControls.SpeedUp.Value=="\065\114\114\111\119\075\101\121\068\111\119\110"then SpeedUp2=18 SUAK=true else SpeedUp2=FlightControls.SpeedUp.Value SUAK=false end if FlightControls.SlowDown.Value=="\065\114\114\111\119\075\101\121\085\112"then SlowDown2=17 SDAK=true elseif FlightControls.SlowDown.Value=="\065\114\114\111\119\075\101\121\068\111\119\110"then SlowDown2=18 SDAK=true else SlowDown2=FlightControls.SlowDown.Value SDAK=false end Engine.Direction.P=TurnSpeed2 end function FireMachineGun(v)while FiringGun do for v,f in pairs(v:GetChildren())do if f:IsA("\066\097\115\101\080\097\114\116")then if f.Name=="\077\097\099\104\105\110\101\071\117\110"then local v=Instance.new("\080\097\114\116")v.BrickColor=BrickColor.new("\082\101\097\108\108\121 \114\101\100")v.Name="\066\117\108\108\101\116"v.CanCollide=false v.FormFactor="\083\121\109\109\101\116\114\105\099"v.Size=Vector3.new(5,5,3)v.BottomSurface="\083\109\111\111\116\104"v.TopSurface="\083\109\111\111\116\104"local q=Instance.new("\066\108\111\099\107\077\101\115\104")q.Parent=v q.Scale=Vector3.new(.04,.04,1)local z=Instance.new("\066\111\100\121\086\101\108\111\099\105\116\121")z.Parent=v z.maxForce=Vector3.new(math.huge,math.huge,math.huge)local W=Instance.new("\079\098\106\101\099\116\086\097\108\117\101")W.Parent=v W.Name="\080\108\097\110\101\084\097\103"W.Value=Plane v.Touched:connect(function(v)if not v:IsDescendantOf(Character)then local f=v.Parent:findFirstChild("\072\117\109\097\110\111\105\100")if f then f:TakeDamage(100)local v=Instance.new("\079\098\106\101\099\116\086\097\108\117\101")v.Name="\099\114\101\097\116\111\114"v.Value=Player v.Parent=f elseif not f then v:BreakJoints()end end end)v.Parent=game.Workspace v.CFrame=f.CFrame+f.CFrame.lookVector*10 z.velocity=(f.Velocity+v.CFrame.lookVector*2000)+Vector3.new(0,.15,0)delay(3,function()v:Destroy()end)end end end wait(GunTime2)end end function FireRockets(v)for v,f in pairs(v:GetChildren())do if f:IsA("\066\097\115\101\080\097\114\116")then if f.Name=="\082\111\099\107\101\116\083\112\097\119\110"then local v=false local q=Instance.new("\080\097\114\116")q.BrickColor=BrickColor.new("\087\104\105\116\101")q.Name="\077\105\115\115\105\108\101"q.CanCollide=false q.FormFactor="\083\121\109\109\101\116\114\105\099"q.Size=Vector3.new(1,1,5)q.BottomSurface="\083\109\111\111\116\104"q.TopSurface="\083\109\111\111\116\104"local z=Instance.new("\083\112\101\099\105\097\108\077\101\115\104")z.Parent=q z.MeshId="\104\116\116\112\058\047\047\119\119\119\046\114\111\098\108\111\120\046\099\111\109\047\097\115\115\101\116\047\063\105\100\061\050\050\053\049\053\051\052"z.MeshType="\070\105\108\101\077\101\115\104"z.Scale=Vector3.new(.5,.5,.5)local W=Instance.new("\080\097\114\116")W.Parent=q W.Transparency=1 W.Name="\086\105\115\117\097\108"W.CanCollide=false W.FormFactor="\083\121\109\109\101\116\114\105\099"W.Size=Vector3.new(1,1,1)W.BottomSurface="\083\109\111\111\116\104"W.TopSurface="\083\109\111\111\116\104"local l=Instance.new("\087\101\108\100")l.Parent=q l.Part0=q l.Part1=W l.C0=CFrame.new(0,0,4)*CFrame.Angles(math.rad(90),0,0)local Z=Instance.new("\066\111\100\121\086\101\108\111\099\105\116\121")Z.Parent=q Z.maxForce=Vector3.new(math.huge,math.huge,math.huge)local g=Instance.new("\066\111\100\121\071\121\114\111")g.Parent=Part g.maxTorque=Vector3.new(math.huge,math.huge,math.huge)g.cframe=f.CFrame local x=Instance.new("\070\105\114\101")x.Parent=W x.Heat=25 x.Size=10 local h=Instance.new("\083\109\111\107\101")h.Parent=W h.Color=Color3.new(.7843137254902,.7843137254902,.7843137254902)h.Opacity=.7 h.RiseVelocity=25 h.Size=10 local K=Instance.new("\079\098\106\101\099\116\086\097\108\117\101")K.Parent=Part K.Name="\080\108\097\110\101\084\097\103"K.Value=Plane q.Touched:connect(function(f)if not v then if not f:IsDescendantOf(Character)then if f.Name~="\077\105\115\115\105\108\101"then v=true local f=Instance.new("\069\120\112\108\111\115\105\111\110",game.Workspace)f.Position=q.Position f.BlastPressure=5000 f.BlastRadius=10 ScanPlayers(q.Position,10)f.Parent=game.Workspace q:Destroy()end end end end)q.Parent=game.Workspace q.CFrame=f.CFrame+f.CFrame.lookVector*10 Z.velocity=q.CFrame.lookVector*1250+Vector3.new(0,.15,0)delay(5,function()q:Destroy()end)end end end end function DeployFlares(v)for v,f in pairs(v:GetChildren())do if f:IsA("\066\097\115\101\080\097\114\116")then if f.Name=="\070\108\097\114\101\083\112\097\119\110"then local v=40 local q=math.rad(math.random(-v,v))local z=math.rad(math.random(-v,v))local W=Instance.new("\080\097\114\116")W.Transparency=1 W.Name="\070\108\097\114\101"W.CanCollide=false W.FormFactor="\083\121\109\109\101\116\114\105\099"W.Size=Vector3.new(1,1,1)W.BottomSurface="\083\109\111\111\116\104"W.TopSurface="\083\109\111\111\116\104"local l=Instance.new("\066\105\108\108\098\111\097\114\100\071\117\105")l.Parent=W l.Size=UDim2.new(10,0,10,0)local Z=Instance.new("\073\109\097\103\101\076\097\098\101\108")Z.Parent=l Z.BackgroundTransparency=1 Z.Image="\104\116\116\112\058\047\047\119\119\119\046\114\111\098\108\111\120\046\099\111\109\047\097\115\115\101\116\047\063\105\100\061\052\051\055\048\056\056\048\051"Z.Size=UDim2.new(1,0,1,0)local g=Instance.new("\083\109\111\107\101")g.Parent=W g.Opacity=.5 g.RiseVelocity=25 g.Size=5 local x=Instance.new("\080\111\105\110\116\076\105\103\104\116")x.Parent=W x.Brightness=10 x.Color=Color3.new(1,1,0)x.Range=20 W.Parent=game.Workspace W.CFrame=(f.CFrame+f.CFrame.lookVector*5)*CFrame.Angles(q,z,0)W.Velocity=W.CFrame.lookVector*150 delay(5,function()W:Destroy()end)end end end end function DropBomb(v)if not Locked then for v,f in pairs(v:GetChildren())do if f:IsA("\066\097\115\101\080\097\114\116")then if f.Name=="\066\111\109\098\083\112\097\119\110"then local v=false local q=Instance.new("\080\097\114\116")q.Name="\066\111\109\098"q.CanCollide=false q.FormFactor="\083\121\109\109\101\116\114\105\099"q.Size=Vector3.new(2,2,9)q.BottomSurface="\083\109\111\111\116\104"q.TopSurface="\083\109\111\111\116\104"local z=Instance.new("\083\112\101\099\105\097\108\077\101\115\104")z.Parent=q z.MeshId="\104\116\116\112\058\047\047\119\119\119\046\114\111\098\108\111\120\046\099\111\109\047\097\115\115\101\116\047\063\105\100\061\056\056\055\056\050\054\054\054"z.MeshType="\070\105\108\101\077\101\115\104"z.Scale=Vector3.new(4,4,4)z.TextureId="\104\116\116\112\058\047\047\119\119\119\046\114\111\098\108\111\120\046\099\111\109\047\097\115\115\101\116\047\063\105\100\061\056\056\055\056\050\054\051\049"local W=Instance.new("\066\111\100\121\071\121\114\111")W.Parent=q W.maxTorque=Vector3.new(math.huge,math.huge,math.huge)W.cframe=f.CFrame*CFrame.Angles(math.rad(90),0,0)local l=Instance.new("\079\098\106\101\099\116\086\097\108\117\101")l.Parent=q l.Name="\080\108\097\110\101\084\097\103"l.Value=Plane q.Touched:connect(function(f)if not v then if not f:IsDescendantOf(Character)and f.Name~="\066\111\109\098"then v=true local f=Instance.new("\069\120\112\108\111\115\105\111\110")f.Position=q.Position f.BlastPressure=500000 f.BlastRadius=75 ScanPlayers(q.Position,75)f.Parent=game.Workspace q:Destroy()end end end)q.Parent=game.Workspace q.CFrame=f.CFrame*CFrame.Angles(math.rad(90),0,0)+f.CFrame.lookVector*3 q.Velocity=q.CFrame.lookVector*(TrueAirSpeed*.75)delay(7,function()q:Destroy()end)end end end end end function DropGuidedBomb(v)if Locked then local f=false local q=Instance.new("\080\097\114\116")q.Name="\066\111\109\098"q.CanCollide=false q.FormFactor="\083\121\109\109\101\116\114\105\099"q.Size=Vector3.new(2,2,9)q.BottomSurface="\083\109\111\111\116\104"q.TopSurface="\083\109\111\111\116\104"local z=Instance.new("\083\112\101\099\105\097\108\077\101\115\104")z.Parent=q z.MeshId="\104\116\116\112\058\047\047\119\119\119\046\114\111\098\108\111\120\046\099\111\109\047\097\115\115\101\116\047\063\105\100\061\056\056\055\056\050\054\054\054"z.MeshType="\070\105\108\101\077\101\115\104"z.Scale=Vector3.new(4,4,4)z.TextureId="\104\116\116\112\058\047\047\119\119\119\046\114\111\098\108\111\120\046\099\111\109\047\097\115\115\101\116\047\063\105\100\061\056\056\055\056\050\054\051\049"local W=Instance.new("\079\098\106\101\099\116\086\097\108\117\101")W.Parent=q W.Name="\084\114\097\099\107\101\114"W.Value=TargetPlayer.Character.Torso local l=Instance.new("\078\117\109\098\101\114\086\097\108\117\101")l.Parent=q l.Name="\080\108\097\110\101\083\112\100"l.Value=TrueAirSpeed*.8 local Z=Instance.new("\066\111\100\121\071\121\114\111")Z.Parent=q Z.maxTorque=Vector3.new(math.huge,math.huge,math.huge)Z.P=2000 local g=Instance.new("\066\111\100\121\086\101\108\111\099\105\116\121")g.Parent=q g.maxForce=Vector3.new(math.huge,6000,math.huge)g.velocity=Vector3.new(0,0,0)local x=BombM:clone()x.Parent=q local h=Instance.new("\079\098\106\101\099\116\086\097\108\117\101")h.Parent=q h.Name="\080\108\097\110\101\084\097\103"h.Value=Plane q.Touched:connect(function(v)if not f then if not v:IsDescendantOf(Character)and v.Name~="\066\111\109\098"then f=true local v=Instance.new("\069\120\112\108\111\115\105\111\110")v.Position=q.Position v.BlastPressure=500000 v.BlastRadius=75 ScanPlayers(q.Position,75)v.Parent=game.Workspace q:Destroy()end end end)q.Parent=game.Workspace q.CFrame=v.CFrame*CFrame.Angles(math.rad(90),0,0)+v.CFrame.lookVector*10 x.Disabled=false end end function FireMissile(v)if not Locked then local f=false local q=Instance.new("\080\097\114\116")q.Name="\077\105\115\115\105\108\101"q.CanCollide=false q.FormFactor="\083\121\109\109\101\116\114\105\099"q.Size=Vector3.new(1,1,13)q.BottomSurface="\083\109\111\111\116\104"q.TopSurface="\083\109\111\111\116\104"local z=Instance.new("\083\112\101\099\105\097\108\077\101\115\104")z.Parent=q z.MeshId="\104\116\116\112\058\047\047\119\119\119\046\114\111\098\108\111\120\046\099\111\109\047\097\115\115\101\116\047\063\105\100\061\050\050\053\049\053\051\052"z.MeshType="\070\105\108\101\077\101\115\104"z.TextureId="\104\116\116\112\058\047\047\119\119\119\046\114\111\098\108\111\120\046\099\111\109\047\097\115\115\101\116\047\063\105\100\061\050\053\054\052\052\057\049"local W=Instance.new("\080\097\114\116")W.Parent=q W.Name="\086\105\115\117\097\108"W.Transparency=1 W.CanCollide=false W.FormFactor="\083\121\109\109\101\116\114\105\099"W.Size=Vector3.new(1,1,1)W.BottomSurface="\083\109\111\111\116\104"W.TopSurface="\083\109\111\111\116\104"local l=Instance.new("\087\101\108\100")l.Parent=q l.Part0=q l.Part1=W l.C0=CFrame.new(0,0,5)*CFrame.Angles(math.rad(90),0,0)local Z=Instance.new("\066\111\100\121\086\101\108\111\099\105\116\121")Z.Parent=q Z.maxForce=Vector3.new(math.huge,math.huge,math.huge)local g=Instance.new("\066\111\100\121\071\121\114\111")g.Parent=Part g.maxTorque=Vector3.new(math.huge,math.huge,math.huge)g.cframe=v.CFrame*CFrame.Angles(math.rad(90),0,0)local x=Instance.new("\070\105\114\101")x.Parent=W x.Enabled=false x.Heat=25 x.Size=30 local h=Instance.new("\083\109\111\107\101")h.Parent=W h.Color=Color3.new(.7843137254902,.7843137254902,.7843137254902)h.Enabled=false h.Opacity=1 h.RiseVelocity=25 h.Size=25 local K=Instance.new("\079\098\106\101\099\116\086\097\108\117\101")K.Parent=Part K.Name="\080\108\097\110\101\084\097\103"K.Value=Plane q.Touched:connect(function(v)if not f then if not v:IsDescendantOf(Character)and v.Name~="\077\105\115\115\105\108\101"then f=true local v=Instance.new("\069\120\112\108\111\115\105\111\110")v.Position=q.Position v.BlastPressure=50000 v.BlastRadius=50 ScanPlayers(q.Position,50)v.Parent=game.Workspace q:Destroy()end end end)q.Parent=game.Workspace q.CFrame=v.CFrame*CFrame.Angles(math.rad(90),0,0)+v.CFrame.lookVector*15 Z.velocity=q.CFrame.lookVector*Engine.Velocity.magnitude delay(.3,function()Z.velocity=q.CFrame.lookVector*1500+Vector3.new(0,.15,0)x.Enabled=true h.Enabled=true end)delay(5,function()q:Destroy()end)end end function FireGuidedMissile(v)if Targetable2 then if Locked then local f=false local q=Instance.new("\080\097\114\116")q.Name="\077\105\115\115\105\108\101"q.CanCollide=false q.FormFactor="\083\121\109\109\101\116\114\105\099"q.Size=Vector3.new(1,1,13)q.BottomSurface="\083\109\111\111\116\104"q.TopSurface="\083\109\111\111\116\104"local z=Instance.new("\083\112\101\099\105\097\108\077\101\115\104")z.Parent=q z.MeshId="\104\116\116\112\058\047\047\119\119\119\046\114\111\098\108\111\120\046\099\111\109\047\097\115\115\101\116\047\063\105\100\061\050\050\053\049\053\051\052"z.MeshType="\070\105\108\101\077\101\115\104"z.TextureId="\104\116\116\112\058\047\047\119\119\119\046\114\111\098\108\111\120\046\099\111\109\047\097\115\115\101\116\047\063\105\100\061\050\053\054\052\052\057\049"local W=Instance.new("\080\097\114\116")W.Parent=q W.Transparency=1 W.Name="\086\105\115\117\097\108"W.CanCollide=false W.FormFactor="\083\121\109\109\101\116\114\105\099"W.Size=Vector3.new(1,1,1)W.BottomSurface="\083\109\111\111\116\104"W.TopSurface="\083\109\111\111\116\104"local l=Instance.new("\087\101\108\100")l.Parent=q l.Part0=q l.Part1=W l.C0=CFrame.new(0,0,5)*CFrame.Angles(math.rad(90),0,0)local Z=Instance.new("\079\098\106\101\099\116\086\097\108\117\101")Z.Parent=q Z.Name="\084\114\097\099\107\101\114"Z.Value=TargetPlayer.Character.Torso local g=Instance.new("\066\111\100\121\086\101\108\111\099\105\116\121")g.Parent=q g.maxForce=Vector3.new(math.huge,math.huge,math.huge)local x=MissileM:clone()x.Parent=q local h=Instance.new("\070\105\114\101")h.Parent=W h.Enabled=false h.Heat=25 h.Size=30 local K=Instance.new("\083\109\111\107\101")K.Parent=W K.Color=Color3.new(.7843137254902,.7843137254902,.7843137254902)K.Enabled=false K.Opacity=1 K.RiseVelocity=25 K.Size=25 local w=Instance.new("\079\098\106\101\099\116\086\097\108\117\101")w.Parent=Part w.Name="\080\108\097\110\101\084\097\103"w.Value=Plane q.Touched:connect(function(v)if not f then if not v:IsDescendantOf(Character)and v.Name~="\077\105\115\115\105\108\101"then f=true local v=Instance.new("\069\120\112\108\111\115\105\111\110")v.Position=q.Position v.BlastPressure=50000 v.BlastRadius=50 ScanPlayers(q.Position,50)v.Parent=game.Workspace q:Destroy()end end end)q.Parent=game.Workspace q.CFrame=v.CFrame*CFrame.Angles(math.rad(90),0,0)+v.CFrame.lookVector*15 delay(.3,function()x.Disabled=false h.Enabled=true K.Enabled=true end)delay(10,function()q:Destroy()end)end end end function ScanPlayers(v,f)coroutine.resume(coroutine.create(function()for q,z in pairs(game.Players:GetPlayers())do if z.Character and z.Character:findFirstChild("\084\111\114\115\111")then local q=z.Character.Torso if(q.Position-v).magnitude+2<=f then local v=z.Character:findFirstChild("\072\117\109\097\110\111\105\100")if v then local f=Instance.new("\079\098\106\101\099\116\086\097\108\117\101")f.Name="\099\114\101\097\116\111\114"f.Value=Player f.Parent=v;(game:GetService("\068\101\098\114\105\115")):AddItem(f,.1)end end end end end))end function ReloadRocket(v)if not RocketEnabled then wait(v)RocketEnabled=true end end function ReloadFlare(v)if not FlareEnabled then wait(v)FlareEnabled=true end end function ReloadBomb(v)if not BombEnabled then wait(v)BombEnabled=true end end function ReloadMissile(v)if not MissileEnabled then wait(v)MissileEnabled=true end end function onMouseMoved(v)if Targetable2 then local f=GuiClone.Main if Targeting then v.Icon=AimingCursor f.Mode.Text="\084\097\114\103\101\116\105\110\103 \077\111\100\101"local q=false for f,z in pairs(game.Players:GetPlayers())do if z.Character then if z.Character:findFirstChild("\084\111\114\115\111")then if z~=Player then if z.TeamColor~=Player.TeamColor or z.Neutral then local f=Character.Head local W=z.Character.Torso.CFrame local l=(f.CFrame.p-W.p).magnitude local Z=(v.Hit.p-f.CFrame.p).unit local g=((Z*l+f.CFrame.p)-W.p).magnitude if not Locked then if g/l<.1 then q=true if TargetPlayer~=z then TargetPlayer=z v.Icon=TargetCursor AimGui.Enabled=true LockGui.Enabled=false AimGui.Adornee=TargetPlayer.Character.Torso LockGui.Adornee=nil end end if not q and TargetPlayer then TargetPlayer=nil v.Icon=AimingCursor AimGui.Enabled=false LockGui.Enabled=false AimGui.Adornee=nil LockGui.Adornee=nil end elseif Locked then v.Icon=LockedCursor AimGui.Enabled=false LockGui.Enabled=true AimGui.Adornee=nil LockGui.Adornee=TargetPlayer.Character.Torso end end end end end end elseif not Targeting then v.Icon=NormalCursor f.Mode.Text="\070\108\121\105\110\103 \077\111\100\101"end end end function onButton1Down(v)Locked=not Locked and(TargetPlayer and(Targeting and(EngineOn and Targeting2)))end function IncreaseSpd()if EngineOn then if Selected then while Accelerating do Throttle=Throttle<1 and Throttle+.01 or 1 DesiredSpeed=MaxSpeed2*Throttle wait(ThrottleInc2)end end end end function DecreaseSpd()if EngineOn then if Selected then while Decelerating do Throttle=Throttle>0 and Throttle-.01 or 0 DesiredSpeed=MaxSpeed2*Throttle wait(ThrottleInc2)end end end end function RoundNumber(v)return v-math.floor(v)>=.5 and math.ceil(v)or math.floor(v)end function GetGear(v)for v,f in pairs(v:GetChildren())do if f:IsA("\066\097\115\101\080\097\114\116")then if not f:findFirstChild("\071\101\097\114\080\114\111\112")then local v=Instance.new("\083\116\114\105\110\103\086\097\108\117\101")v.Name="\071\101\097\114\080\114\111\112"v.Value=f.Transparency..("\044"..tostring(f.CanCollide))v.Parent=f end table.insert(LandingGear,f)end GetGear(f)end end function ChangeGear()for v,f in pairs(LandingGear)do local q=f.GearProp local z=q.Value:find("\044",1,true)local W=tonumber(q.Value:sub(1,z-1))local l=q.Value:sub(z+1)f.Transparency=W~=1 and(GearUp and W or 1)f.CanCollide=l and(GearUp and l or false)end end function SetUpGui()local v=GuiClone.Main v.Title.Text=PlaneName2 local f=v.Parent.Target local q=v.Parent.HUD local z,W=v.ControlsA,v.ControlsB local l,Z=v.FrameA,v.FrameB local g,x=l.C1.Key,Z.C1.Key local h,K=l.C2.Key,Z.C2.Key local w,n=l.C3.Key,Z.C3.Key local L,A=l.C4.Key,Z.C4.Key local m,M=l.C5.Key,Z.C5.Key local J,a=l.C6.Key,l.C7.Key local B=v.Gear for v,f in pairs(LandingGear)do if f.Transparency==1 then GearUp=true else GearUp=false break end end local t=math.ceil(MaxSpeed2/50)for v=1,t+10,1 do local f=q.Speed.Main local z=f["\083\112\101\101\100-\048"]local W=z:clone()W.Position=UDim2.new(0,0,1,-(80+75*v))W.Name=("\083\112\101\101\100-\037\105"):format(50*v)W.Text.Text=tostring(50*v)W.Parent=f end local O=math.ceil(MaxAltitude2/500)for v=1,O+10,1 do local f=q.Altitude.Main local z=f["\065\108\116\105\116\117\100\101-\048"]local W=z:clone()W.Position=UDim2.new(0,0,1,-(80+75*v))W.Name=("\065\108\116\105\116\117\100\101-\037\115"):format(tostring(.5*v))W.Text.Text=tostring(.5*v)W.Parent=f end B.Text=GearUp and"\071\101\097\114 \085\112"or"\071\101\097\114 \068\111\119\110"g.Text="\075\101\121\058 "..FlightControls.Engine.Value:upper()if FlightControls.SpeedUp.Value=="\065\114\114\111\119\075\101\121\085\112"then h.Text="\075\101\121\058 \065\114\114\111\119\075\101\121\085\112"elseif FlightControls.SpeedUp.Value=="\065\114\114\111\119\075\101\121\068\111\119\110"then h.Text="\075\101\121\058 \065\114\114\111\119\075\101\121\068\111\119\110"else h.Text="\075\101\121\058 "..FlightControls.SpeedUp.Value:upper()end if FlightControls.SlowDown.Value=="\065\114\114\111\119\075\101\121\085\112"then w.Text="\075\101\121\058 \065\114\114\111\119\075\101\121\085\112"elseif FlightControls.SlowDown.Value=="\065\114\114\111\119\075\101\121\068\111\119\110"then w.Text="\075\101\121\058 \065\114\114\111\119\075\101\121\068\111\119\110"else w.Text="\075\101\121\058 "..FlightControls.SlowDown.Value:upper()end L.Text="\075\101\121\058 "..FlightControls.Gear.Value:upper()if Targetable2 then m.Text="\075\101\121\058 "..TargetControls.Modes.Value:upper()else m.Parent.Visible=false end if Ejectable.Value then J.Text="\075\101\121\058 "..FlightControls.Eject.Value:upper()else J.Parent.Visible=false end if CamLock.Value then a.Text="\075\101\121\058 "..FlightControls.LockCam.Value:upper()else a.Parent.Visible=false end if not WeaponsValue.Value then x.Parent.Visible=false K.Parent.Visible=false n.Parent.Visible=false A.Parent.Visible=false M.Parent.Visible=false Z.Title.Text="\078\111 \087\101\097\112\111\110\115"elseif WeaponsValue.Value then if WeaponsValue.Missiles.Value then x.Text="\075\101\121\058 "..WeaponControls.FireMissile.Value:upper()elseif not WeaponsValue.Missiles.Value then x.Parent.Visible=false end if WeaponsValue.Rockets.Value then K.Text="\075\101\121\058 "..WeaponControls.FireRockets.Value:upper()elseif not WeaponsValue.Rockets.Value then K.Parent.Visible=false end if WeaponsValue.Guns.Value then n.Text="\075\101\121\058 "..WeaponControls.FireGuns.Value:upper()elseif not WeaponsValue.Guns.Value then n.Parent.Visible=false end if WeaponsValue.Bombs.Value then A.Text="\075\101\121\058 "..WeaponControls.DropBombs.Value:upper()elseif not WeaponsValue.Bombs.Value then A.Parent.Visible=false end if WeaponsValue.Flares.Value then M.Text="\075\101\121\058 "..WeaponControls.DeployFlares.Value:upper()elseif not WeaponsValue.Flares.Value then M.Parent.Visible=false end end z.MouseButton1Click:connect(function()if GuiAVisible then GuiAVisible=false l:TweenPosition(UDim2.new(0,150,0,-190),"\073\110","\081\117\097\100",1,true)elseif not GuiAVisible then GuiAVisible=true l:TweenPosition(UDim2.new(0,150,0,170),"\079\117\116","\081\117\097\100",1,true)end end)W.MouseButton1Click:connect(function()if GuiBVisible then GuiBVisible=false Z:TweenPosition(UDim2.new(0,-150,0,-150),"\073\110","\081\117\097\100",1,true)elseif not GuiBVisible then GuiBVisible=true Z:TweenPosition(UDim2.new(0,-150,0,170),"\079\117\116","\081\117\097\100",1,true)end end)end function GetRoll(v)local f=v*CFrame.Angles(0,math.rad(90),0)local q=CFrame.new(v.p,v.p+v.lookVector)*CFrame.Angles(0,math.rad(90),0)local z=f:toObjectSpace(q)return-math.atan2(z.lookVector.Y,z.lookVector.Z)%(math.pi*2)+math.pi end function GetPitch(v)local f=v.lookVector local q=math.sqrt(f.x^2+f.z^2)return math.atan(f.y/q)end function UpdateCamera()if Selected then if not LockedCam then Camera.CameraType=CameraType2 elseif LockedCam then local v=Character.Head.CFrame local f=(Plane:GetModelSize()).magnitude/3 local q=v.p+v.lookVector*(f-1)local z=v.p+v.lookVector*f Camera.CameraType=Enum.CameraType.Scriptable Camera.CoordinateFrame=CFrame.new(q,z)Camera:SetRoll(GetRoll(Character.Head.CFrame))end else Camera.CameraType=Enum.CameraType.Custom end end function UpdateTargetStats(v,f)if v then local q=Character.Head local z=v.Character.Torso.CFrame local W=(q.CFrame.p-z.p).magnitude local l=v.Character.Torso.Velocity.magnitude local Z=v.Character.Torso.Position.Y f.LockName.Text=("\084\097\114\103\101\116\058 \037\115"):format(v.Name)f.Dist.Text=("\068\105\115\116\097\110\099\101\058 \037\115"):format(tostring(math.floor(W*10)/10))f.Speed.Text=("\083\112\101\101\100\058 \037\115"):format(tostring(math.floor(l*10)/10))f.Altitude.Text=("\065\108\116\105\116\117\100\101\058 \037\115"):format(tostring(math.floor(Z*10)/10))elseif not v then f.LockName.Text="\084\097\114\103\101\116\058 \078\111\110\101"f.Dist.Text="\068\105\115\116\097\110\099\101\058 \078\047\065"f.Speed.Text="\083\112\101\101\100\058 \078\047\065"f.Altitude.Text="\065\108\116\105\116\117\100\101\058 \078\047\065"end end function UpdateHUD(v)v.Roll.Rotation=math.deg(GetRoll(Character.Head.CFrame))local f=math.deg(GetPitch(Character.Head.CFrame))/90 v.Roll.Pitch.Position=UDim2.new(0,-200,0,-500+f*450)local q=TrueAirSpeed/50 v.Speed.Main.Position=UDim2.new(0,0,.5,q*75)v.Speed.Disp.Text.Text=RoundNumber(TrueAirSpeed)local z=RoundNumber(Engine.Position.Y)/500 v.Altitude.Main.Position=UDim2.new(0,0,.5,z*75)v.Altitude.Disp.Text.Text=RoundNumber(Engine.Position.Y)local W=Engine.Velocity.y/math.abs(Engine.Velocity.y)local l=RoundNumber(math.abs(Engine.Velocity.y))v.ClimbRate.Text=("\086\083\073\058 \037\105"):format(l*W)v.GearStatus.Text=GearUp and"\071\101\097\114 \085\112"or"\071\101\097\114 \068\111\119\110"v.GearStatus.TextColor3=GearUp and Color3.new(0,1,0)or Color3.new(1,0,0)v.EngineStatus.Text=EngineOn and"\069\110\103\105\110\101 \079\110"or"\069\110\103\105\110\101 \079\102\102"v.EngineStatus.TextColor3=EngineOn and Color3.new(0,1,0)or Color3.new(1,0,0)v.StallWarn.Visible=not Taxi()and Stall()v.PullUp.Visible=EngineOn and(not Taxi()and(AltRestrict.Value and Engine.Position.Y<MinAltitude2+20))v.TaxiStatus.Visible=Engine and Taxi()v.Throttle.Bar.Tray.Position=UDim2.new(0,0,1,-(Throttle*460))v.Throttle.Bar.Tray.Size=UDim2.new(1,0,0,Throttle*460)v.Throttle.Disp.Text=math.abs(math.floor(Throttle*100)).."\037"local Z=(StallSpeed2/math.floor(TrueAirSpeed+.5))*(StallSpeed2/MaxSpeed2)local g=Z>1 and 1 or Z<0 and 0 or Z v.Throttle.Bar.StallLine.Position=UDim2.new(0,0,1-g,0)v.Throttle.Bar.Tray.BackgroundColor3=Throttle<=g and Color3.new(1,0,0)or Color3.new(0,1,0)end function UpdateGui(v,f)local q=GuiClone.Main local z=GuiClone.Target local W=Player.PlayerGui.PlaneGui.HUD q.Visible=not HUDOnLock.Value or HUDOnLock.Value and not LockedCam W.Visible=LockedCam and HUDOnLock.Value if LockedCam and HUDOnLock.Value then UpdateHUD(W)end if Targetable2 then UpdateTargetStats(TargetPlayer,z)end q.PullUp.Visible=EngineOn and(not v and(AltRestrict.Value and Engine.Position.Y<MinAltitude2+20))q.Taxi.Visible=EngineOn and v q.Stall.Visible=not v and f q.Altitude.Text="\065\108\116\105\116\117\100\101\058 "..RoundNumber(Engine.Position.Y)q.Speed.Text="\083\112\101\101\100\058 "..RoundNumber(TrueAirSpeed)q.Throttle.Bar.Tray.Size=UDim2.new(Throttle,0,1,0)q.Throttle.Percent.Text=math.abs(math.floor(Throttle*100)).."\037"local l=(StallSpeed2/math.floor(TrueAirSpeed+.5))*(StallSpeed2/MaxSpeed2)local Z=l>1 and 1 or l<0 and 0 or l q.Throttle.Bar.StallLine.Position=UDim2.new(Z,0,0,0)q.Throttle.Bar.Tray.BackgroundColor3=Throttle<=Z and Color3.new(1,0,0)or Color3.new(0,.66666666666667,0)end function CalculateSpeed()while Selected do if EngineOn then CurrentSpeed=CurrentSpeed<DesiredSpeed and CurrentSpeed+2 or CurrentSpeed-2 CurrentSpeed=CurrentSpeed<0 and 0 or CurrentSpeed>MaxSpeed2 and MaxSpeed2 or CurrentSpeed end wait(.5-Acceleration2/2000)end end function GetLowestPoint()if#LandingGear==0 then LowestPoint=(Engine.Position.Y+5)+Engine.Size.Y/2 return end for v,f in pairs(LandingGear)do local q=Engine.Position.Y-(f.CFrame*CFrame.new(f.Size.X/2,0,0)).Y local z=Engine.Position.Y-(f.CFrame*CFrame.new(-(f.Size.X/2),0,0)).Y local W=Engine.Position.Y-(f.CFrame*CFrame.new(0,f.Size.Y/2,0)).Y local l=Engine.Position.Y-(f.CFrame*CFrame.new(0,-(f.Size.Y/2),0)).Y local Z=Engine.Position.Y-(f.CFrame*CFrame.new(0,0,f.Size.Z/2)).Y local g=Engine.Position.Y-(f.CFrame*CFrame.new(0,0,-(f.Size.Z/2))).Y local x=math.max(q,z,W,l,Z,g)+5 LowestPoint=x>LowestPoint and x or LowestPoint end end function GetBankAngle(v)local f,q=v.ViewSizeX,v.X local z=(f/2-q)/(f/2)z=z<-1 and-1 or z>1 and 1 or z return math.rad(z*MaxBank2)end function Taxi()local v=Ray.new(Engine.Position,Vector3.new(0,-LowestPoint,0))return TrueAirSpeed<=StallSpeed2 and game.Workspace:FindPartOnRay(v,Plane)end function Stall()return AltRestrict.Value and Engine.Position.Y>MaxAltitude2 or TrueAirSpeed<StallSpeed2 end function FlyMain(v)if Selected then local f=GetBankAngle(v)local q,z=Taxi(),Stall()if EngineOn then Engine.Thrust.velocity=Engine.CFrame.lookVector*CurrentSpeed+Vector3.new(0,.15,0)if q then if CurrentSpeed<2 then Thrust.maxForce=Vector3.new(0,0,0)Direction.maxTorque=Vector3.new(0,0,0)else Thrust.maxForce=Vector3.new(math.huge,0,math.huge)Direction.maxTorque=Vector3.new(0,math.huge,0)Direction.cframe=CFrame.new(Engine.Position,v.Hit.p)end elseif z then Thrust.maxForce=Vector3.new(0,0,0)Direction.maxTorque=Vector3.new(math.huge,math.huge,math.huge)Direction.cframe=v.Hit*CFrame.Angles(0,0,f)else Thrust.maxForce=Vector3.new(math.huge,math.huge,math.huge)Direction.maxTorque=Vector3.new(math.huge,math.huge,math.huge)Direction.cframe=v.Hit*CFrame.Angles(0,0,f)end if AltRestrict.Value and Engine.Position.Y<MinAltitude2 then AutoCrash.Value=true end elseif not EngineOn then Thrust.maxForce=Vector3.new(0,0,0)Thrust.velocity=Vector3.new(0,0,0)Direction.maxTorque=Vector3.new(0,0,0)end TrueAirSpeed=Engine.Velocity.magnitude UpdateGui(q,z)wait()end end function onKeyDown(v)v:lower()if v==FlightControls.Engine.Value then local v=GuiClone.Main if not EngineOn then EngineOn=true DesiredSpeed=0 CurrentSpeed=0 Throttle=0 v.Engine.Visible=false CalculateSpeed()elseif EngineOn then EngineOn=false DesiredSpeed=0 CurrentSpeed=0 Throttle=0 v.Engine.Visible=true end end if v==FlightControls.Gear.Value then local v=GuiClone.Main local f=Taxi()if#LandingGear~=0 then if not f then ChangeGear()if not GearUp then GearUp=true v.Gear.Text="\071\101\097\114 \085\112"elseif GearUp then GearUp=false v.Gear.Text="\071\101\097\114 \068\111\119\110"end end end end if SUAK and v:byte()==SpeedUp2 or not SUAK and v==SpeedUp2 then Accelerating=true IncreaseSpd()end if SDAK and v:byte()==SlowDown2 or not SDAK and v==SlowDown2 then Decelerating=true DecreaseSpd()end if v==TargetControls.Modes.Value then if Targetable2 then if EngineOn then if not Targeting then Targeting=true elseif Targeting then Targeting=false Locked=false AimGui.Enabled=false LockGui.Enabled=false end end end end if v==FlightControls.Eject.Value:lower()then if EngineOn then local v=Taxi()if not v then if Ejectable.Value then if not Plane.Ejected.Value then Plane.Ejected.Value=true local v=MainParts.Seat local f=Tool.Ejector:clone()f.Parent=Player.PlayerGui f.Disabled=false local q=Instance.new("\070\105\114\101")q.Parent=Engine q.Heat=25 q.Size=30 local z=Instance.new("\083\109\111\107\101")z.Parent=Engine z.Color=Color3.new(.33333333333333,.33333333333333,.33333333333333)z.Opacity=.7 z.RiseVelocity=10 z.Size=10 v.SeatWeld:remove()end end end end end if v==FlightControls.LockCam.Value then LockedCam=not LockedCam end if v==WeaponControls.FireGuns.Value then if WeaponsValue.Value then if WeaponsValue.Guns.Value then if EngineOn then local v=Taxi()if not v then FiringGun=true FireMachineGun(Weapons)end end end end end if v==WeaponControls.FireRockets.Value then if WeaponsValue.Value then if WeaponsValue.Rockets.Value then local v=Taxi()if not v then if RocketEnabled then RocketEnabled=false FireRockets(Weapons)ReloadRocket(RocketTime2)end end end end end if v==WeaponControls.DeployFlares.Value then if WeaponsValue.Value then if WeaponsValue.Flares.Value then if EngineOn then local v=Taxi()if not v then if FlareEnabled then FlareEnabled=false for v=1,5,1 do DeployFlares(Weapons)wait(.2)end ReloadFlare(FlareTime2)end end end end end end if v==WeaponControls.DropBombs.Value then if WeaponsValue.Value then if WeaponsValue.Bombs.Value then if EngineOn then local v=Taxi()if not v then if BombEnabled then BombEnabled=false local v={}for f,q in pairs(Weapons:GetChildren())do if q:IsA("\066\097\115\101\080\097\114\116")then if q.Name=="\066\111\109\098\083\112\097\119\110"then table.insert(v,q)end end end local f=v[math.random(1,#v)]if Locked then DropGuidedBomb(f)ReloadBomb(BombTime2*2)elseif not Locked then for v=1,5,1 do DropBomb(Weapons)wait(.3)end ReloadBomb(BombTime2)end end end end end end end if v==WeaponControls.FireMissile.Value then if WeaponsValue.Value then if WeaponsValue.Missiles.Value then if EngineOn then local v=Taxi()if not v then if MissileEnabled then MissileEnabled=false local v={}for f,q in pairs(Weapons:GetChildren())do if q:IsA("\066\097\115\101\080\097\114\116")then if q.Name=="\077\105\115\115\105\108\101\083\112\097\119\110"then table.insert(v,q)end end end local f=v[math.random(1,#v)]if Locked then FireGuidedMissile(f)ReloadMissile(MissileTime2*2)elseif not Locked then FireMissile(f)ReloadMissile(MissileTime2)end end end end end end end if v==TargetControls.UnTarget.Value then if Targetable2 then if Locked then Locked=false end end end end function onKeyUp(v)v:lower()if SUAK and v:byte()==SpeedUp2 or not SUAK and v==SpeedUp2 then Accelerating=false end if SDAK and v:byte()==SlowDown2 or not SDAK and v==SlowDown2 then Decelerating=false end if v==WeaponControls.FireGuns.Value then FiringGun=false end end function onSelected(v)Selected=true mouse2=v FixVars()GetGear(Gear)GetLowestPoint()ToolSelect.Value=true GuiClone=GUI:clone()GuiClone.Parent=Player.PlayerGui SetUpGui()Camera.CameraType=CameraType2 if Targetable2 then AimGui=Instance.new("\066\105\108\108\098\111\097\114\100\071\117\105",Player.PlayerGui)AimGui.AlwaysOnTop=true AimGui.Enabled=false AimGui.Size=UDim2.new(0,50,0,50)local v=Instance.new("\073\109\097\103\101\076\097\098\101\108",AimGui)v.BackgroundTransparency=1 v.Image="\104\116\116\112\058\047\047\119\119\119\046\114\111\098\108\111\120\046\099\111\109\047\097\115\115\101\116\047\063\105\100\061\049\048\055\051\056\056\054\057\052"v.Size=UDim2.new(1,0,1,0)LockGui=Instance.new("\066\105\108\108\098\111\097\114\100\071\117\105",Player.PlayerGui)LockGui.AlwaysOnTop=true LockGui.Enabled=false LockGui.Size=UDim2.new(0,50,0,50)local f=Instance.new("\073\109\097\103\101\076\097\098\101\108",LockGui)f.BackgroundTransparency=1 f.Image="\104\116\116\112\058\047\047\119\119\119\046\114\111\098\108\111\120\046\099\111\109\047\097\115\115\101\116\047\063\105\100\061\049\048\055\051\056\056\054\053\054"f.Size=UDim2.new(1,0,1,0)end v.Icon=NormalCursor FTab[1]=v.Move:connect(function()onMouseMoved(v)end)FTab[2]=v.Idle:connect(function()onMouseMoved(v)end)FTab[3]=v.Button1Down:connect(function()onButton1Down(v)end)FTab[4]=v.KeyDown:connect(onKeyDown)FTab[5]=v.KeyUp:connect(onKeyUp)FTab[6]=RunService.RenderStepped:connect(UpdateCamera)FTab[7]=RunService.Stepped:connect(function()FlyMain(v)end)end function onDeselected(v)Selected=false LockedCam=false for v,f in pairs(FTab)do if f then f:disconnect()end end Camera.CameraType=Enum.CameraType.Custom Camera.CameraSubject=Character.Humanoid if Targetable2 then AimGui:remove()LockGui:remove()end if not Taxi()and EngineOn then if not Deselect0.Value and not Plane.Ejected.Value then onDeselectFlying()end end CurrentSpeed=0 DesiredSpeed=0 TrueAirSpeed=0 EngineOn=false Updating=false Locked=false Targeting=false TargetPlayer=nil ToolSelect.Value=false GuiAVisible=true GuiBVisible=true GuiClone:remove()Engine.Thrust.velocity=Vector3.new(0,0,0)Engine.Thrust.maxForce=Vector3.new(0,0,0)Engine.Direction.maxTorque=Vector3.new(0,0,0)end function onDeselectFlying()if not Deselect0.Value then local v=Instance.new("\069\120\112\108\111\115\105\111\110")v.Parent=game.Workspace v.Position=Engine.Position v.BlastRadius=(Plane:GetModelSize()).magnitude v.BlastPressure=100000 Character.Humanoid.Health=0 Engine.Thrust:remove()Engine.Direction:remove()delay(5,function()Plane:Destroy()end)end end function onDeselectForced()if Deselect0.Value then onDeselected()mouse2.Icon="\114\098\120\097\115\115\101\116\058\047\047\116\101\120\116\117\114\101\115\092\065\114\114\111\119\067\117\114\115\111\114\046\112\110\103"end end script.Parent.Selected:connect(onSelected)script.Parent.Deselected:connect(onDeselected)Deselect0.Changed:connect(onDeselectForced)

function FixVars() --This function fixes any errors in the Customize folder
	Acceleration2 = (Acceleration.Value < 0 and 0 or Acceleration.Value > 1000 and 1000 or Acceleration.Value)
	MaxBank2 = (MaxBank.Value < -90 and -90 or MaxBank.Value > 90 and 90 or MaxBank.Value)
	MaxSpeed2 = (MaxSpeed.Value < 0 and 0 or MaxSpeed.Value < StallSpeed.Value and StallSpeed.Value or MaxSpeed.Value)
	StallSpeed2 = (StallSpeed.Value < 0 and 0 or StallSpeed.Value > MaxSpeed.Value and MaxSpeed.Value or StallSpeed.Value)
	TurnSpeed2 = (TurnSpeed.Value < 0 and 0 or TurnSpeed.Value)
	ThrottleInc2 = (ThrottleInc.Value < 0 and 0 or ThrottleInc.Value)
	MaxAltitude2 = (MaxAltitude.Value < MinAltitude.Value and MinAltitude.Value or MaxAltitude.Value)
	MinAltitude2 = (MinAltitude.Value > MaxAltitude.Value and MaxAltitude.Value or MinAltitude.Value)
	MissileTime2 = (ReloadTimes.Missiles.Value < 0 and 0 or ReloadTimes.Missiles.Value)
	RocketTime2 = (ReloadTimes.Rockets.Value < 0 and 0 or ReloadTimes.Rockets.Value)
	GunTime2 = (ReloadTimes.Guns.Value < 0 and 0 or ReloadTimes.Guns.Value)
	FlareTime2 = (ReloadTimes.Flares.Value < 0 and 0 or ReloadTimes.Flares.Value)
	BombTime2 = (ReloadTimes.Bombs.Value < 0 and 0 or ReloadTimes.Bombs.Value)
	CameraType2 = (pcall(function() Camera.CameraType = CameraType.Value end) and CameraType.Value or "Custom")
	PlaneName2 = (PlaneName.Value == "" and "Plane" or PlaneName.Value)
	if WeaponsValue.Value then
		if WeaponsValue.Missiles.Value or WeaponsValue.Bombs.Value then
			Targetable2 = true
		elseif (not (WeaponsValue.Missiles.Value and WeaponsValue.Bombs.Value)) then
			Targetable2 = false
		end
	elseif (not WeaponsValue.Value) then
		Targetable2 = false
	end
	if FlightControls.SpeedUp.Value == "ArrowKeyUp" then
		SpeedUp2 = 17
		SUAK = true
	elseif FlightControls.SpeedUp.Value == "ArrowKeyDown" then
		SpeedUp2 = 18
		SUAK = true
	else
		SpeedUp2 = FlightControls.SpeedUp.Value
		SUAK = false
	end
	if FlightControls.SlowDown.Value == "ArrowKeyUp" then
		SlowDown2 = 17
		SDAK = true
	elseif FlightControls.SlowDown.Value == "ArrowKeyDown" then
		SlowDown2 = 18
		SDAK = true
	else
		SlowDown2 = FlightControls.SlowDown.Value
		SDAK = false
	end
	Engine.Direction.P = TurnSpeed2
end

function FireMachineGun(GunParent) --This function creates the bullets for the MachineGuns
	while FiringGun do
		for _,v in pairs(GunParent:GetChildren()) do --This is what allow you to put as many MachineGuns as you want in the Guns folder
			if v:IsA("BasePart") then
				if v.Name == "MachineGun" then
					local Part = Instance.new("Part")
					Part.BrickColor = BrickColor.new("Really red")
					Part.Name = "Bullet"
					Part.CanCollide = false
					Part.FormFactor = "Symmetric"
					Part.Size = Vector3.new(5,5,3)
					Part.BottomSurface = "Smooth"
					Part.TopSurface = "Smooth"
					local Mesh = Instance.new("BlockMesh")
					Mesh.Parent = Part
					Mesh.Scale = Vector3.new(1/25,1/25,1)
					local BV = Instance.new("BodyVelocity")
					BV.Parent = Part
					BV.maxForce = Vector3.new(math.huge,math.huge,math.huge)
					local PlaneTag = Instance.new("ObjectValue")
					PlaneTag.Parent = Part
					PlaneTag.Name = "PlaneTag"
					PlaneTag.Value = Plane
					Part.Touched:connect(function(Object) --This lets me call the "Touched" function, which means I don't need an external script
						if (not Object:IsDescendantOf(Character)) then
							local HitHumanoid = Object.Parent:findFirstChild("Humanoid")
							if HitHumanoid then
								HitHumanoid:TakeDamage(100) --This only damges the player if they don't have a forcefield
								local CreatorTag = Instance.new("ObjectValue")
								CreatorTag.Name = "creator"
								CreatorTag.Value = Player
								CreatorTag.Parent = HitHumanoid
							elseif (not HitHumanoid) then
								Object:BreakJoints()
							end
						end
					end)
					Part.Parent = game.Workspace
					Part.CFrame = v.CFrame + v.CFrame.lookVector * 10
					BV.velocity = (v.Velocity) + (Part.CFrame.lookVector * 2000) + (Vector3.new(0,0.15,0))
					delay(3,function() Part:Destroy() end)
				end
			end
		end
		wait(GunTime2)
	end
end

function FireRockets(GunParent) --This function creates the rockets for the rocket spawns
	for _,v in pairs(GunParent:GetChildren()) do --This allows you to put as many RocketSpawns as you want in the Rockets folder
		if v:IsA("BasePart") then
			if v.Name == "RocketSpawn" then
				local Exploded = false
				local Part1 = Instance.new("Part")
				Part1.BrickColor = BrickColor.new("White")
				Part1.Name = "Missile"
				Part1.CanCollide = false
				Part1.FormFactor = "Symmetric"
				Part1.Size = Vector3.new(1,1,5)
				Part1.BottomSurface = "Smooth"
				Part1.TopSurface = "Smooth"
				local Mesh = Instance.new("SpecialMesh")
				Mesh.Parent = Part1
				Mesh.MeshId = "http://www.roblox.com/asset/?id=2251534"
				Mesh.MeshType = "FileMesh"
				Mesh.Scale = Vector3.new(0.5,0.5,0.5)
				local Part2 = Instance.new("Part")
				Part2.Parent = Part1
				Part2.Transparency = 1
				Part2.Name = "Visual"
				Part2.CanCollide = false
				Part2.FormFactor = "Symmetric"
				Part2.Size = Vector3.new(1,1,1)
				Part2.BottomSurface = "Smooth"
				Part2.TopSurface = "Smooth"
				local Weld = Instance.new("Weld")
				Weld.Parent = Part1
				Weld.Part0 = Part1
				Weld.Part1 = Part2
				Weld.C0 = CFrame.new(0,0,4) * CFrame.Angles(math.rad(90),0,0)
				local BV = Instance.new("BodyVelocity")
				BV.Parent = Part1
				BV.maxForce = Vector3.new(math.huge,math.huge,math.huge)
				local BG = Instance.new("BodyGyro")
				BG.Parent = Part
				BG.maxTorque = Vector3.new(math.huge,math.huge,math.huge)
				BG.cframe = v.CFrame
				local Fire = Instance.new("Fire")
				Fire.Parent = Part2
				Fire.Heat = 25
				Fire.Size = 10
				local Smoke = Instance.new("Smoke")
				Smoke.Parent = Part2
				Smoke.Color = Color3.new(200/255,200/255,200/255)
				Smoke.Opacity = 0.7
				Smoke.RiseVelocity = 25
				Smoke.Size = 10
				local PlaneTag = Instance.new("ObjectValue")
				PlaneTag.Parent = Part
				PlaneTag.Name = "PlaneTag"
				PlaneTag.Value = Plane
				Part1.Touched:connect(function(Object)
					if (not Exploded) then
						if (not Object:IsDescendantOf(Character)) then
							if Object.Name ~= "Missile" then
								Exploded = true
								local Explosion = Instance.new("Explosion",game.Workspace)
								Explosion.Position = Part1.Position
								Explosion.BlastPressure = 5000
								Explosion.BlastRadius = 10
								ScanPlayers(Part1.Position,10)
								Explosion.Parent = game.Workspace
								Part1:Destroy()
							end
						end
					end
				end)
				Part1.Parent = game.Workspace
				Part1.CFrame = v.CFrame + v.CFrame.lookVector * 10
				BV.velocity = Part1.CFrame.lookVector * 1250 + Vector3.new(0,0.15,0)
				delay(5,function() Part1:Destroy() end)
			end
		end
	end
end

function DeployFlares(GunParent) --This function creates the flares for the flare spawns
	for _,v in pairs(GunParent:GetChildren()) do
		if v:IsA("BasePart") then
			if v.Name == "FlareSpawn" then
				local RandomFactor = 40
				local RandomX = math.rad(math.random(-RandomFactor,RandomFactor))
				local RandomY = math.rad(math.random(-RandomFactor,RandomFactor))
				local Part = Instance.new("Part")
				Part.Transparency = 1
				Part.Name = "Flare"
				Part.CanCollide = false
				Part.FormFactor = "Symmetric"
				Part.Size = Vector3.new(1,1,1)
				Part.BottomSurface = "Smooth"
				Part.TopSurface = "Smooth"
				local BG = Instance.new("BillboardGui")
				BG.Parent = Part
				BG.Size = UDim2.new(10,0,10,0)
				local IL = Instance.new("ImageLabel")
				IL.Parent = BG
				IL.BackgroundTransparency = 1
				IL.Image = "http://www.roblox.com/asset/?id=43708803"
				IL.Size = UDim2.new(1,0,1,0)
				local Smoke = Instance.new("Smoke")
				Smoke.Parent = Part
				Smoke.Opacity = 0.5
				Smoke.RiseVelocity = 25
				Smoke.Size = 5
				local PL = Instance.new("PointLight")
				PL.Parent = Part
				PL.Brightness = 10
				PL.Color = Color3.new(1,1,0)
				PL.Range = 20
				Part.Parent = game.Workspace
				Part.CFrame = (v.CFrame + v.CFrame.lookVector * 5) * CFrame.Angles(RandomX,RandomY,0)
				Part.Velocity = Part.CFrame.lookVector * 150
				delay(5,function() Part:Destroy() end)
			end
		end
	end
end

function DropBomb(GunParent) --This function creates the non-guided bombs for the bomb spawns
	if (not Locked) then
		for _,v in pairs(GunParent:GetChildren()) do
			if v:IsA("BasePart") then
				if v.Name == "BombSpawn" then
					local Exploded = false
					local Part = Instance.new("Part")
					Part.Name = "Bomb"
					Part.CanCollide = false
					Part.FormFactor = "Symmetric"
					Part.Size = Vector3.new(2,2,9)
					Part.BottomSurface = "Smooth"
					Part.TopSurface = "Smooth"
					local Mesh = Instance.new("SpecialMesh")
					Mesh.Parent = Part
					Mesh.MeshId = "http://www.roblox.com/asset/?id=88782666"
					Mesh.MeshType = "FileMesh"
					Mesh.Scale = Vector3.new(4,4,4)
					Mesh.TextureId = "http://www.roblox.com/asset/?id=88782631"
					local BG = Instance.new("BodyGyro")
					BG.Parent = Part
					BG.maxTorque = Vector3.new(math.huge,math.huge,math.huge)
					BG.cframe = v.CFrame * CFrame.Angles(math.rad(90),0,0)
					local PlaneTag = Instance.new("ObjectValue")
					PlaneTag.Parent = Part
					PlaneTag.Name = "PlaneTag"
					PlaneTag.Value = Plane
					Part.Touched:connect(function(Object)
						if (not Exploded) then
							if (not Object:IsDescendantOf(Character)) and Object.Name ~= "Bomb" then
								Exploded = true
								local Explosion = Instance.new("Explosion")
								Explosion.Position = Part.Position
								Explosion.BlastPressure = 500000
								Explosion.BlastRadius = 75
								ScanPlayers(Part.Position,75)
								Explosion.Parent = game.Workspace
								Part:Destroy()
							end
						end
					end)
					Part.Parent = game.Workspace
					Part.CFrame = (v.CFrame * CFrame.Angles(math.rad(90),0,0)) + v.CFrame.lookVector * 3
					Part.Velocity = (Part.CFrame.lookVector * (TrueAirSpeed * 0.75))
					delay(7,function() Part:Destroy() end)
				end
			end
		end
	end
end

function DropGuidedBomb(Gun) --This function creates guided bombs for the bombs spawns
	if Locked then
		local Exploded = false
		local Part = Instance.new("Part")
		Part.Name = "Bomb"
		Part.CanCollide = false
		Part.FormFactor = "Symmetric"
		Part.Size = Vector3.new(2,2,9)
		Part.BottomSurface = "Smooth"
		Part.TopSurface = "Smooth"
		local Mesh = Instance.new("SpecialMesh")
		Mesh.Parent = Part
		Mesh.MeshId = "http://www.roblox.com/asset/?id=88782666"
		Mesh.MeshType = "FileMesh"
		Mesh.Scale = Vector3.new(4,4,4)
		Mesh.TextureId = "http://www.roblox.com/asset/?id=88782631"
		local OV = Instance.new("ObjectValue")
		OV.Parent = Part
		OV.Name = "Tracker"
		OV.Value = TargetPlayer.Character.Torso
		local NV = Instance.new("NumberValue")
		NV.Parent = Part
		NV.Name = "PlaneSpd"
		NV.Value = TrueAirSpeed * 0.8 --This makes the bombs travel speed 4/5 of the plane's speed
		local BG = Instance.new("BodyGyro")
		BG.Parent = Part
		BG.maxTorque = Vector3.new(math.huge,math.huge,math.huge)
		BG.P = 2000
		local BV = Instance.new("BodyVelocity")
		BV.Parent = Part
		BV.maxForce = Vector3.new(math.huge,6000,math.huge)
		BV.velocity = Vector3.new(0,0,0)
		local Script = BombM:clone()
		Script.Parent = Part
		local PlaneTag = Instance.new("ObjectValue")
		PlaneTag.Parent = Part
		PlaneTag.Name = "PlaneTag"
		PlaneTag.Value = Plane
		Part.Touched:connect(function(Object)
			if (not Exploded) then
				if (not Object:IsDescendantOf(Character)) and Object.Name ~= "Bomb" then
					Exploded = true
					local Explosion = Instance.new("Explosion")
					Explosion.Position = Part.Position
					Explosion.BlastPressure = 500000
					Explosion.BlastRadius = 75
					ScanPlayers(Part.Position,75)
					Explosion.Parent = game.Workspace
					Part:Destroy()
				end
			end
		end)
		Part.Parent = game.Workspace
		Part.CFrame = (Gun.CFrame * CFrame.Angles(math.rad(90),0,0)) + Gun.CFrame.lookVector * 10
		Script.Disabled = false
	end
end

function FireMissile(Gun) --This function creates the non-guided missiles for the missile spawns
	if (not Locked) then
		local Exploded = false
		local Part1 = Instance.new("Part")
		Part1.Name = "Missile"
		Part1.CanCollide = false
		Part1.FormFactor = "Symmetric"
		Part1.Size = Vector3.new(1,1,13)
		Part1.BottomSurface = "Smooth"
		Part1.TopSurface = "Smooth"
		local Mesh = Instance.new("SpecialMesh")
		Mesh.Parent = Part1
		Mesh.MeshId = "http://www.roblox.com/asset/?id=2251534"
		Mesh.MeshType = "FileMesh"
		Mesh.TextureId = "http://www.roblox.com/asset/?id=2564491"
		local Part2 = Instance.new("Part")
		Part2.Parent = Part1
		Part2.Name = "Visual"
		Part2.Transparency = 1
		Part2.CanCollide = false
		Part2.FormFactor = "Symmetric"
		Part2.Size = Vector3.new(1,1,1)
		Part2.BottomSurface = "Smooth"
		Part2.TopSurface = "Smooth"
		local Weld = Instance.new("Weld")
		Weld.Parent = Part1
		Weld.Part0 = Part1
		Weld.Part1 = Part2
		Weld.C0 = CFrame.new(0,0,5)*CFrame.Angles(math.rad(90),0,0)
		local BV = Instance.new("BodyVelocity")
		BV.Parent = Part1
		BV.maxForce = Vector3.new(math.huge,math.huge,math.huge)
		local BG = Instance.new("BodyGyro")
		BG.Parent = Part
		BG.maxTorque = Vector3.new(math.huge,math.huge,math.huge)
		BG.cframe = Gun.CFrame * CFrame.Angles(math.rad(90),0,0)
		local Fire = Instance.new("Fire")
		Fire.Parent = Part2
		Fire.Enabled = false
		Fire.Heat = 25
		Fire.Size = 30
		local Smoke = Instance.new("Smoke")
		Smoke.Parent = Part2
		Smoke.Color = Color3.new(40/51,40/51,40/51)
		Smoke.Enabled = false
		Smoke.Opacity = 1
		Smoke.RiseVelocity = 25
		Smoke.Size = 25
		local PlaneTag = Instance.new("ObjectValue")
		PlaneTag.Parent = Part
		PlaneTag.Name = "PlaneTag"
		PlaneTag.Value = Plane
		Part1.Touched:connect(function(Object)
			if (not Exploded) then
				if (not Object:IsDescendantOf(Character)) and Object.Name ~= "Missile" then
					Exploded = true
					local Explosion = Instance.new("Explosion")
					Explosion.Position = Part1.Position
					Explosion.BlastPressure = 50000
					Explosion.BlastRadius = 50
					ScanPlayers(Part1.Position,50)
					Explosion.Parent = game.Workspace
					Part1:Destroy()
				end
			end
		end)
		Part1.Parent = game.Workspace
		Part1.CFrame = (Gun.CFrame * CFrame.Angles(math.rad(90),0,0)) + Gun.CFrame.lookVector * 15
		BV.velocity = Part1.CFrame.lookVector * Engine.Velocity.magnitude
		delay(0.3,function()
			BV.velocity = (Part1.CFrame.lookVector * 1500) + Vector3.new(0,0.15,0)
			Fire.Enabled = true
			Smoke.Enabled = true
		end)
		delay(5,function() Part1:Destroy() end)
	end
end

function FireGuidedMissile(Gun) --This function creates the guided missiles for the missile spawns
	if Targetable2 then
		if Locked then
			local Exploded = false
			local Part1 = Instance.new("Part")
			Part1.Name = "Missile"
			Part1.CanCollide = false
			Part1.FormFactor = "Symmetric"
			Part1.Size = Vector3.new(1,1,13)
			Part1.BottomSurface = "Smooth"
			Part1.TopSurface = "Smooth"
			local Mesh = Instance.new("SpecialMesh")
			Mesh.Parent = Part1
			Mesh.MeshId = "http://www.roblox.com/asset/?id=2251534"
			Mesh.MeshType = "FileMesh"
			Mesh.TextureId = "http://www.roblox.com/asset/?id=2564491"
			local Part2 = Instance.new("Part")
			Part2.Parent = Part1
			Part2.Transparency = 1
			Part2.Name = "Visual"
			Part2.CanCollide = false
			Part2.FormFactor = "Symmetric"
			Part2.Size = Vector3.new(1,1,1)
			Part2.BottomSurface = "Smooth"
			Part2.TopSurface = "Smooth"
			local Weld = Instance.new("Weld")
			Weld.Parent = Part1
			Weld.Part0 = Part1
			Weld.Part1 = Part2
			Weld.C0 = CFrame.new(0,0,5)*CFrame.Angles(math.rad(90),0,0)
			local OV = Instance.new("ObjectValue")
			OV.Parent = Part1
			OV.Name = "Tracker"
			OV.Value = TargetPlayer.Character.Torso
			local BV = Instance.new("BodyVelocity")
			BV.Parent = Part1
			BV.maxForce = Vector3.new(math.huge,math.huge,math.huge)
			local Script = MissileM:clone()
			Script.Parent = Part1
			local Fire = Instance.new("Fire")
			Fire.Parent = Part2
			Fire.Enabled = false
			Fire.Heat = 25
			Fire.Size = 30
			local Smoke = Instance.new("Smoke")
			Smoke.Parent = Part2
			Smoke.Color = Color3.new(40/51,40/51,40/51)
			Smoke.Enabled = false
			Smoke.Opacity = 1
			Smoke.RiseVelocity = 25
			Smoke.Size = 25
			local PlaneTag = Instance.new("ObjectValue")
			PlaneTag.Parent = Part
			PlaneTag.Name = "PlaneTag"
			PlaneTag.Value = Plane
			Part1.Touched:connect(function(Object)
				if (not Exploded) then
					if (not Object:IsDescendantOf(Character)) and Object.Name ~= "Missile" then
						Exploded = true
						local Explosion = Instance.new("Explosion")
						Explosion.Position = Part1.Position
						Explosion.BlastPressure = 50000
						Explosion.BlastRadius = 50
						ScanPlayers(Part1.Position,50)
						Explosion.Parent = game.Workspace
						Part1:Destroy()
					end
				end
			end)
			Part1.Parent = game.Workspace
			Part1.CFrame = (Gun.CFrame * CFrame.Angles(math.rad(90),0,0)) + Gun.CFrame.lookVector * 15
			delay(0.3,function()
				Script.Disabled = false
				Fire.Enabled = true
				Smoke.Enabled = true
			end)
			delay(10,function() Part1:Destroy() end)
		end
	end
end

function ScanPlayers(Pos,Radius) --This is a function that I created that efficiently puts a CreatorTag in the player
	coroutine.resume(coroutine.create(function()
		for i,v in pairs(game.Players:GetPlayers()) do --This gets all the players
			if v.Character and v.Character:findFirstChild("Torso") then
				local PTorso = v.Character.Torso
				if ((PTorso.Position - Pos).magnitude + 2) <= Radius then --If the distance between the explosion and the player is less than the radius...
					local HitHumanoid = v.Character:findFirstChild("Humanoid")
					if HitHumanoid then
						local CreatorTag = Instance.new("ObjectValue")
						CreatorTag.Name = "creator"
						CreatorTag.Value = Player
						CreatorTag.Parent = HitHumanoid
						game:GetService("Debris"):AddItem(CreatorTag,0.1)
					end
				end
			end
		end
	end))
end

function ReloadRocket(Time) --This function reloads the rockets based on the rocket reload time
	if (not RocketEnabled) then
		wait(Time)
		RocketEnabled = true
	end
end

function ReloadFlare(Time) --This function reloads the flares based on the flare reload time
	if (not FlareEnabled) then
		wait(Time)
		FlareEnabled = true
	end
end

function ReloadBomb(Time) --This function reloads the bombs based on the bomb reload time
	if (not BombEnabled) then
		wait(Time)
		BombEnabled = true
	end
end

function ReloadMissile(Time) --This function reloads the missile based on the missile reload time
	if (not MissileEnabled) then
		wait(Time)
		MissileEnabled = true
	end
end

function onMouseMoved(mouse) --This function is activated when the mouse moves
	if Targetable2 then --If the plane can target...
		local Gui = GuiClone.Main
		if Targeting then
			mouse.Icon = AimingCursor --All the cursors in this script were made by me
			Gui.Mode.Text = "Targeting Mode"
			local FoundPlayer = false
			for i,v in pairs(game.Players:GetPlayers()) do
				if v.Character then
					if v.Character:findFirstChild("Torso") then
						if v ~= Player then
							if ((v.TeamColor ~= Player.TeamColor) or v.Neutral) then
								local myHead = Character.Head
								local TorsoPos = v.Character.Torso.CFrame
								local Distance = (myHead.CFrame.p - TorsoPos.p).magnitude
								local MouseDirection = (mouse.Hit.p - myHead.CFrame.p).unit
								local Offset = (((MouseDirection * Distance) + myHead.CFrame.p) - TorsoPos.p).magnitude
								if (not Locked) then
									if (Offset/Distance) < 0.1 then
										FoundPlayer = true
										if TargetPlayer ~= v then
											TargetPlayer = v
											mouse.Icon = TargetCursor
											AimGui.Enabled = true
											LockGui.Enabled = false
											AimGui.Adornee = TargetPlayer.Character.Torso
											LockGui.Adornee = nil
										end
									end
									if (not FoundPlayer) and TargetPlayer then
										TargetPlayer = nil
										mouse.Icon = AimingCursor
										AimGui.Enabled = false
										LockGui.Enabled = false
										AimGui.Adornee = nil
										LockGui.Adornee = nil
									end
								elseif Locked then
									mouse.Icon = LockedCursor
									AimGui.Enabled = false
									LockGui.Enabled = true
									AimGui.Adornee = nil
									LockGui.Adornee = TargetPlayer.Character.Torso
								end
							end
						end
					end
				end
			end
		elseif (not Targeting) then
			mouse.Icon = NormalCursor
			Gui.Mode.Text = "Flying Mode"
		end
	end
end

function onButton1Down(mouse) --This function is activated when you press the left mouse button
	Locked = ((not Locked) and TargetPlayer and Targeting and EngineOn and Targeting2)
end

function IncreaseSpd() --This function increases the speed
	if EngineOn then
		if Selected then
			while Accelerating do
				Throttle = (Throttle < 1 and Throttle + 0.01 or 1)
				DesiredSpeed = MaxSpeed2 * Throttle
				wait(ThrottleInc2)
			end
		end
	end
end

function DecreaseSpd() --This function decreases the speed
	if EngineOn then
		if Selected then
			while Decelerating do
				Throttle = (Throttle > 0 and Throttle - 0.01 or 0)
				DesiredSpeed = MaxSpeed2 * Throttle
				wait(ThrottleInc2)
			end
		end
	end
end

function RoundNumber(Num) --This function rounds a number to the nearest whole number
	return ((Num - math.floor(Num)) >= 0.5 and math.ceil(Num) or math.floor(Num))
end

function GetGear(Parent) --This function gets all the parts in the Gear folder
	for i,v in pairs(Parent:GetChildren()) do
		if (v:IsA("BasePart")) then
			if (not v:findFirstChild("GearProp")) then
				local GearProp = Instance.new("StringValue")
				GearProp.Name = "GearProp"
				GearProp.Value = v.Transparency..","..tostring(v.CanCollide)
				GearProp.Parent = v
			end
			table.insert(LandingGear,v) --This inserts a table with the gear's properties into the LandingGear table
		end
		GetGear(v)
	end
end

function ChangeGear() --This function extends or retracts the gear
	for i,v in pairs(LandingGear) do
		local GearProp = v.GearProp
		local Comma = GearProp.Value:find(",",1,true)
		local TransVal = tonumber(GearProp.Value:sub(1,Comma - 1))
		local CollideVal = GearProp.Value:sub(Comma + 1)
		v.Transparency = (TransVal ~= 1 and (GearUp and TransVal or 1))
		v.CanCollide = (CollideVal and (GearUp and CollideVal or false))
	end
end

function SetUpGui() --This function sets up the PlaneGui
	local Gui = GuiClone.Main
	Gui.Title.Text = PlaneName2
	local TargetStats = Gui.Parent.Target
	local HUD = Gui.Parent.HUD
	local ControlsA,ControlsB = Gui.ControlsA,Gui.ControlsB
	local FrameA,FrameB = Gui.FrameA,Gui.FrameB
	local C1A,C1B = FrameA.C1.Key,FrameB.C1.Key
	local C2A,C2B = FrameA.C2.Key,FrameB.C2.Key
	local C3A,C3B = FrameA.C3.Key,FrameB.C3.Key
	local C4A,C4B = FrameA.C4.Key,FrameB.C4.Key
	local C5A,C5B = FrameA.C5.Key,FrameB.C5.Key
	local C6,C7 = FrameA.C6.Key,FrameA.C7.Key
	local GearText = Gui.Gear
	for i,v in pairs(LandingGear) do --This section determines whether the gear are up or down
		if v.Transparency == 1 then
			GearUp = true
		else
			GearUp = false
			break
		end
	end
	local MaxSpeedScaled = math.ceil(MaxSpeed2/50)
	for i = 1,(MaxSpeedScaled + 10) do --This creates a loop that clones the SpeedGui and positions it accordingly
		local SpeedGui = HUD.Speed.Main
		local Speed0 = SpeedGui["Speed-0"]
		local SpeedClone = Speed0:clone()
		SpeedClone.Position = UDim2.new(0,0,1,-(80 + (75 * i)))
		SpeedClone.Name = ("Speed-%i"):format(50 * i)
		SpeedClone.Text.Text = tostring(50 * i)
		SpeedClone.Parent = SpeedGui
	end
	local MaxAltScaled = math.ceil(MaxAltitude2/500)
	for i = 1,(MaxAltScaled + 10) do --This creates a loop that clones the AltitudeGui and positions it accordingly
		local AltGui = HUD.Altitude.Main
		local Altitude0 = AltGui["Altitude-0"]
		local AltClone = Altitude0:clone()
		AltClone.Position = UDim2.new(0,0,1,-(80 + (75 * i)))
		AltClone.Name = ("Altitude-%s"):format(tostring(0.5 * i))
		AltClone.Text.Text = tostring(0.5 * i)
		AltClone.Parent = AltGui
	end
	GearText.Text = (GearUp and "Gear Up" or "Gear Down")
	C1A.Text = "Key: "..FlightControls.Engine.Value:upper()
	if FlightControls.SpeedUp.Value == "ArrowKeyUp" then
		C2A.Text = "Key: ArrowKeyUp"
	elseif FlightControls.SpeedUp.Value == "ArrowKeyDown" then
		C2A.Text = "Key: ArrowKeyDown"
	else
		C2A.Text = "Key: "..FlightControls.SpeedUp.Value:upper()
	end
	if FlightControls.SlowDown.Value == "ArrowKeyUp" then
		C3A.Text = "Key: ArrowKeyUp"
	elseif FlightControls.SlowDown.Value == "ArrowKeyDown" then
		C3A.Text = "Key: ArrowKeyDown"
	else
		C3A.Text = "Key: "..FlightControls.SlowDown.Value:upper()
	end
	C4A.Text = "Key: "..FlightControls.Gear.Value:upper()
	if Targetable2 then
		C5A.Text = "Key: "..TargetControls.Modes.Value:upper()
	else
		C5A.Parent.Visible = false
	end
	if Ejectable.Value then
		C6.Text = "Key: "..FlightControls.Eject.Value:upper()
	else
		C6.Parent.Visible = false
	end
	if CamLock.Value then
		C7.Text = "Key: "..FlightControls.LockCam.Value:upper()
	else
		C7.Parent.Visible = false
	end
	if (not WeaponsValue.Value) then
		C1B.Parent.Visible = false
		C2B.Parent.Visible = false
		C3B.Parent.Visible = false
		C4B.Parent.Visible = false
		C5B.Parent.Visible = false
		FrameB.Title.Text = "No Weapons"
	elseif WeaponsValue.Value then
		if WeaponsValue.Missiles.Value then
			C1B.Text = "Key: "..WeaponControls.FireMissile.Value:upper()
		elseif (not WeaponsValue.Missiles.Value) then
			C1B.Parent.Visible = false
		end
		if WeaponsValue.Rockets.Value then
			C2B.Text = "Key: "..WeaponControls.FireRockets.Value:upper()
		elseif (not WeaponsValue.Rockets.Value) then
			C2B.Parent.Visible = false
		end
		if WeaponsValue.Guns.Value then
			C3B.Text = "Key: "..WeaponControls.FireGuns.Value:upper()
		elseif (not WeaponsValue.Guns.Value) then
			C3B.Parent.Visible = false
		end
		if WeaponsValue.Bombs.Value then
			C4B.Text = "Key: "..WeaponControls.DropBombs.Value:upper()
		elseif (not WeaponsValue.Bombs.Value) then
			C4B.Parent.Visible = false
		end
		if WeaponsValue.Flares.Value then
			C5B.Text = "Key: "..WeaponControls.DeployFlares.Value:upper()
		elseif (not WeaponsValue.Flares.Value) then
			C5B.Parent.Visible = false
		end
	end
	ControlsA.MouseButton1Click:connect(function() --This function allows the Flight Controls frame to be opened or closed without an external script
		if GuiAVisible then
			GuiAVisible = false
			FrameA:TweenPosition(UDim2.new(0,150,0,-190),"In","Quad",1,true)
		elseif (not GuiAVisible) then
			GuiAVisible = true
			FrameA:TweenPosition(UDim2.new(0,150,0,170),"Out","Quad",1,true)
		end
	end)
	ControlsB.MouseButton1Click:connect(function()
		if GuiBVisible then
			GuiBVisible = false
			FrameB:TweenPosition(UDim2.new(0,-150,0,-150),"In","Quad",1,true)
		elseif (not GuiBVisible) then
			GuiBVisible = true
			FrameB:TweenPosition(UDim2.new(0,-150,0,170),"Out","Quad",1,true)
		end
	end)
end

function GetRoll(CF) --This function gets the rotation of the Engine. Credit to DevAdrian for this
	local CFRight = CF * CFrame.Angles(0,math.rad(90),0)
	local CFNoRollRight = CFrame.new(CF.p,CF.p + CF.lookVector) * CFrame.Angles(0,math.rad(90),0)
	local CFDiff = CFRight:toObjectSpace(CFNoRollRight)
	return (-math.atan2(CFDiff.lookVector.Y, CFDiff.lookVector.Z) % (math.pi * 2) + math.pi)
end

function GetPitch(CF) --This function gets the pitch of the Engine. Credit to DevAdrian for this
	local LV = CF.lookVector
	local XZDist = math.sqrt(LV.x^2 + LV.z^2)
	return math.atan(LV.y / XZDist)
end

function UpdateCamera() --This function uses the RunService to update the camera. It happens very fast so it is smooth
	if Selected then
		if (not LockedCam) then
			Camera.CameraType = CameraType2
		elseif LockedCam then
			local HeadCF = Character.Head.CFrame
			local PlaneSize = Plane:GetModelSize().magnitude/3
			local Origin = HeadCF.p + (HeadCF.lookVector * (PlaneSize - 1))
			local Target = HeadCF.p + (HeadCF.lookVector * PlaneSize)
			Camera.CameraType = Enum.CameraType.Scriptable
			Camera.CoordinateFrame = CFrame.new(Origin,Target)
			Camera:SetRoll(GetRoll(Character.Head.CFrame))
		end
	else
		Camera.CameraType = Enum.CameraType.Custom
	end
end

function UpdateTargetStats(Target,Gui) --This function updates the stats about the Target
	if Target then
		local myHead = Character.Head
		local TorsoPos = Target.Character.Torso.CFrame
		local Distance = (myHead.CFrame.p - TorsoPos.p).magnitude
		local TargetSpeed = (Target.Character.Torso.Velocity).magnitude
		local TargetAlt = Target.Character.Torso.Position.Y
		Gui.LockName.Text = ("Target: %s"):format(Target.Name)
		Gui.Dist.Text = ("Distance: %s"):format(tostring(math.floor(Distance * 10)/10))
		Gui.Speed.Text = ("Speed: %s"):format(tostring(math.floor(TargetSpeed * 10)/10))
		Gui.Altitude.Text = ("Altitude: %s"):format(tostring(math.floor(TargetAlt * 10)/10))
	elseif (not Target) then
		Gui.LockName.Text = "Target: None"
		Gui.Dist.Text = "Distance: N/A"
		Gui.Speed.Text = "Speed: N/A"
		Gui.Altitude.Text = "Altitude: N/A"
	end
end

function UpdateHUD(Gui) --This function updates the HUD whenever the camera is locked
	Gui.Roll.Rotation = math.deg(GetRoll(Character.Head.CFrame))
	local PitchNum = math.deg(GetPitch(Character.Head.CFrame))/90
	Gui.Roll.Pitch.Position = UDim2.new(0,-200,0,-500 + (PitchNum * 450))
	local SpeedScaled = TrueAirSpeed/50
	Gui.Speed.Main.Position = UDim2.new(0,0,0.5,SpeedScaled * 75)
	Gui.Speed.Disp.Text.Text = RoundNumber(TrueAirSpeed)
	local AltScaled = RoundNumber(Engine.Position.Y)/500
	Gui.Altitude.Main.Position = UDim2.new(0,0,0.5,AltScaled * 75)
	Gui.Altitude.Disp.Text.Text = RoundNumber(Engine.Position.Y)
	local NegFactor = (Engine.Velocity.y/math.abs(Engine.Velocity.y))
	local VerticalSpeed = RoundNumber(math.abs(Engine.Velocity.y))
	Gui.ClimbRate.Text = ("VSI: %i"):format(VerticalSpeed * NegFactor)
	Gui.GearStatus.Text = (GearUp and "Gear Up" or "Gear Down")
	Gui.GearStatus.TextColor3 = (GearUp and Color3.new(0,1,0) or Color3.new(1,0,0))
	Gui.EngineStatus.Text = (EngineOn and "Engine On" or "Engine Off")
	Gui.EngineStatus.TextColor3 = (EngineOn and Color3.new(0,1,0) or Color3.new(1,0,0))
	Gui.StallWarn.Visible = ((not Taxi()) and Stall())
	Gui.PullUp.Visible = (EngineOn and (not Taxi()) and (AltRestrict.Value) and (Engine.Position.Y < (MinAltitude2 + 20)))
	Gui.TaxiStatus.Visible = (Engine and Taxi())
	Gui.Throttle.Bar.Tray.Position = UDim2.new(0,0,1,-(Throttle * 460))
	Gui.Throttle.Bar.Tray.Size = UDim2.new(1,0,0,(Throttle * 460))
	Gui.Throttle.Disp.Text = math.abs(math.floor(Throttle * 100)).."%"
	local StallLinePos = (StallSpeed2/math.floor(TrueAirSpeed + 0.5)) * (StallSpeed2/MaxSpeed2)
	local StallLinePosFix = (StallLinePos > 1 and 1 or StallLinePos < 0 and 0 or StallLinePos)
	Gui.Throttle.Bar.StallLine.Position = UDim2.new(0,0,1 - StallLinePosFix,0)
	Gui.Throttle.Bar.Tray.BackgroundColor3 = (Throttle <= StallLinePosFix and Color3.new(1,0,0) or Color3.new(0,1,0))
end

function UpdateGui(Taxiing,Stalling) --This function updates the gui.
	local Gui = GuiClone.Main
	local TargetStats = GuiClone.Target
	local HUD = Player.PlayerGui.PlaneGui.HUD
	Gui.Visible = ((not HUDOnLock.Value) or (HUDOnLock.Value and (not LockedCam)))
	HUD.Visible = (LockedCam and HUDOnLock.Value)
	if LockedCam and HUDOnLock.Value then UpdateHUD(HUD) end
	if Targetable2 then UpdateTargetStats(TargetPlayer,TargetStats) end
	Gui.PullUp.Visible = (EngineOn and (not Taxiing) and (AltRestrict.Value) and (Engine.Position.Y < (MinAltitude2 + 20)))
	Gui.Taxi.Visible = (EngineOn and Taxiing)
	Gui.Stall.Visible = ((not Taxiing) and Stalling)
	Gui.Altitude.Text = "Altitude: "..RoundNumber(Engine.Position.Y)
	Gui.Speed.Text = "Speed: "..RoundNumber(TrueAirSpeed)
	Gui.Throttle.Bar.Tray.Size = UDim2.new(Throttle,0,1,0)
	Gui.Throttle.Percent.Text = math.abs(math.floor(Throttle * 100)).."%"
	local StallLinePos = (StallSpeed2/math.floor(TrueAirSpeed + 0.5)) * (StallSpeed2/MaxSpeed2)
	local StallLinePosFix = (StallLinePos > 1 and 1 or StallLinePos < 0 and 0 or StallLinePos)
	Gui.Throttle.Bar.StallLine.Position = UDim2.new(StallLinePosFix,0,0,0)
	Gui.Throttle.Bar.Tray.BackgroundColor3 = (Throttle <= StallLinePosFix and Color3.new(1,0,0) or Color3.new(0,2/3,0))
end

function CalculateSpeed() --This function calculates the current speed
	while Selected do
		if EngineOn then
			CurrentSpeed = (CurrentSpeed < DesiredSpeed and CurrentSpeed + 2 or CurrentSpeed - 2) --A simple ternary operation that calculates the currentspeed
			CurrentSpeed = (CurrentSpeed < 0 and 0 or CurrentSpeed > MaxSpeed2 and MaxSpeed2 or CurrentSpeed) --This fixes the currentspeed
		end
		wait(0.5 - (Acceleration2/2000))
	end
end

function GetLowestPoint() --This function gets the lowest point of the plane
	if (#LandingGear == 0) then
		LowestPoint = (Engine.Position.Y + 5 + (Engine.Size.Y/2))
		return
	end
	for i,v in pairs(LandingGear) do
		local Set0 = (Engine.Position.Y - (v.CFrame * CFrame.new((v.Size.X/2),0,0)).Y)
		local Set1 = (Engine.Position.Y - (v.CFrame * CFrame.new(-(v.Size.X/2),0,0)).Y)
		local Set2 = (Engine.Position.Y - (v.CFrame * CFrame.new(0,(v.Size.Y/2),0)).Y)
		local Set3 = (Engine.Position.Y - (v.CFrame * CFrame.new(0,-(v.Size.Y/2),0)).Y)
		local Set4 = (Engine.Position.Y - (v.CFrame * CFrame.new(0,0,(v.Size.Z/2))).Y)
		local Set5 = (Engine.Position.Y - (v.CFrame * CFrame.new(0,0,-(v.Size.Z/2))).Y)
		local Max = (math.max(Set0,Set1,Set2,Set3,Set4,Set5) + 5)
		LowestPoint = (Max > LowestPoint and Max or LowestPoint)
	end
end

function GetBankAngle(M) --This function calculates the Bank Angle
	local VSX,X = M.ViewSizeX,M.X
	local Ratio = (((VSX/2) - X)/(VSX/2))
	Ratio = (Ratio < -1 and -1 or Ratio > 1 and 1 or Ratio)
	return math.rad(Ratio * MaxBank2)
end

function Taxi() --This function determines whether the plane is taxiing or not
	local Ray = Ray.new(Engine.Position,Vector3.new(0,-LowestPoint,0))
	return (TrueAirSpeed <= StallSpeed2 and game.Workspace:FindPartOnRay(Ray,Plane))
end

function Stall() --This function determines whether the plane is stalling or not
	return ((AltRestrict.Value and Engine.Position.Y > MaxAltitude2) or TrueAirSpeed < StallSpeed2)
end

function FlyMain(M) --This is the main flying function
	if Selected then
		local BankAngle = GetBankAngle(M) --This uses the "GetBankAngle" function to calculate the Bank Angle
		local Taxi,Stall = Taxi(),Stall()
		if EngineOn then
			Engine.Thrust.velocity = (Engine.CFrame.lookVector * CurrentSpeed) + Vector3.new(0,0.15,0)
			if Taxi then
				if (CurrentSpeed < 2) then
					Thrust.maxForce = Vector3.new(0,0,0)
					Direction.maxTorque = Vector3.new(0,0,0)
				else
					Thrust.maxForce = Vector3.new(math.huge,0,math.huge)
					Direction.maxTorque = Vector3.new(0,math.huge,0)
					Direction.cframe = CFrame.new(Engine.Position,M.Hit.p)
				end
			elseif Stall then
				Thrust.maxForce = Vector3.new(0,0,0)
				Direction.maxTorque = Vector3.new(math.huge,math.huge,math.huge)
				Direction.cframe = (M.Hit*CFrame.Angles(0,0,BankAngle))
			else
				Thrust.maxForce = Vector3.new(math.huge,math.huge,math.huge)
				Direction.maxTorque = Vector3.new(math.huge,math.huge,math.huge)
				Direction.cframe = (M.Hit*CFrame.Angles(0,0,BankAngle))
			end
			if ((AltRestrict.Value) and (Engine.Position.Y < MinAltitude2)) then --If there are altitude restrictions and you are below it...
				AutoCrash.Value = true
			end
		elseif (not EngineOn) then
			Thrust.maxForce = Vector3.new(0,0,0)
			Thrust.velocity = Vector3.new(0,0,0)
			Direction.maxTorque = Vector3.new(0,0,0)
		end
		TrueAirSpeed = Engine.Velocity.magnitude
		UpdateGui(Taxi,Stall) --This activates the "UpdateGui" function]]
		wait()
	end
end

function onKeyDown(Key) --This function is activated whenever a key is pressed
	Key:lower()
	if (Key == FlightControls.Engine.Value) then --If you press the engine key...
		local Gui = GuiClone.Main
		if (not EngineOn) then
			EngineOn = true
			DesiredSpeed = 0
			CurrentSpeed = 0
			Throttle = 0
			Gui.Engine.Visible = false
			CalculateSpeed()
		elseif EngineOn then
			EngineOn = false
			DesiredSpeed = 0
			CurrentSpeed = 0
			Throttle = 0
			Gui.Engine.Visible = true
		end
	end
	if (Key == FlightControls.Gear.Value) then --If you press the change gear key...
		local Gui = GuiClone.Main
		local Taxiing = Taxi()
		if (#LandingGear ~= 0) then
			if (not Taxiing) then
				ChangeGear()
				if (not GearUp) then
					GearUp = true
					Gui.Gear.Text = "Gear Up"
				elseif GearUp then
					GearUp = false
					Gui.Gear.Text = "Gear Down"
				end
			end
		end
	end
	if SUAK and Key:byte() == SpeedUp2 or (not SUAK) and (Key == SpeedUp2) then --If you press the speed up key...
		Accelerating = true
		IncreaseSpd()
	end
	if SDAK and Key:byte() == SlowDown2 or (not SDAK) and (Key == SlowDown2) then --If you press the slow down key...
		Decelerating = true
		DecreaseSpd()
	end
	if (Key == TargetControls.Modes.Value) then --If you press the change modes key...
		if Targetable2 then
			if EngineOn then
				if (not Targeting) then
					Targeting = true
				elseif Targeting then
					Targeting = false
					Locked = false
					AimGui.Enabled = false
					LockGui.Enabled = false
				end
			end
		end
	end
	if (Key == FlightControls.Eject.Value:lower()) then
		if EngineOn then
			local Taxiing = Taxi()
			if (not Taxiing) then
				if Ejectable.Value then
					if (not Plane.Ejected.Value) then
						Plane.Ejected.Value = true
						local Seat = MainParts.Seat
						local EjectClone = Tool.Ejector:clone()
						EjectClone.Parent = Player.PlayerGui
						EjectClone.Disabled = false
						local Fire = Instance.new("Fire")
						Fire.Parent = Engine
						Fire.Heat = 25
						Fire.Size = 30
						local Smoke = Instance.new("Smoke")
						Smoke.Parent = Engine
						Smoke.Color = Color3.new(1/3,1/3,1/3)
						Smoke.Opacity = 0.7
						Smoke.RiseVelocity = 10
						Smoke.Size = 10
						Seat.SeatWeld:remove()
					end
				end
			end
		end
	end
	if (Key == FlightControls.LockCam.Value) then
		LockedCam = (not LockedCam)
	end
	if (Key == WeaponControls.FireGuns.Value) then --If you press the fire guns key...
		if WeaponsValue.Value then --If there are weapons...
			if WeaponsValue.Guns.Value then --If there are guns...
				if EngineOn then
					local Taxiing = Taxi()
					if (not Taxiing) then --This prevents you from firing the gun while your on the ground
						FiringGun = true
						FireMachineGun(Weapons) --This activates the "FireMachineGun" function
					end
				end
			end
		end
	end
	if (Key == WeaponControls.FireRockets.Value) then --If you press the fire rockets key...
		if WeaponsValue.Value then
			if WeaponsValue.Rockets.Value then
				local Taxiing = Taxi()
				if (not Taxiing) then
					if RocketEnabled then
						RocketEnabled = false
						FireRockets(Weapons)
						ReloadRocket(RocketTime2)
					end
				end
			end
		end
	end
	if (Key == WeaponControls.DeployFlares.Value) then --If you press the deploy flares key...
		if WeaponsValue.Value then
			if WeaponsValue.Flares.Value then
				if EngineOn then
					local Taxiing = Taxi()
					if (not Taxiing) then
						if FlareEnabled then --This makes the plane deploy flares 5 times every 0.2 seconds before you have to reload
							FlareEnabled = false
							for i = 1,5 do
								DeployFlares(Weapons)
								wait(0.2)
							end
							ReloadFlare(FlareTime2)
						end
					end
				end
			end
		end
	end
	if (Key == WeaponControls.DropBombs.Value) then --If you press the drop bombs key...
		if WeaponsValue.Value then
			if WeaponsValue.Bombs.Value then
				if EngineOn then
					local Taxiing = Taxi()
					if (not Taxiing) then
						if BombEnabled then
							BombEnabled = false
							local BombSpawns = {}
							for i,v in pairs(Weapons:GetChildren()) do
								if v:IsA("BasePart") then
									if v.Name == "BombSpawn" then
										table.insert(BombSpawns,v)
									end
								end
							end
							local CurrentSpawn = BombSpawns[math.random(1,#BombSpawns)] --This line selects a random bomb spawn
							if Locked then
								DropGuidedBomb(CurrentSpawn)
								ReloadBomb((BombTime2 * 2))
							elseif (not Locked) then
								for i = 1,5 do
									DropBomb(Weapons)
									wait(0.3)
								end
								ReloadBomb(BombTime2)
							end
						end
					end
				end
			end
		end
	end
	if (Key == WeaponControls.FireMissile.Value) then --If you press the fire missile key...
		if WeaponsValue.Value then
			if WeaponsValue.Missiles.Value then
				if EngineOn then
					local Taxiing = Taxi()
					if (not Taxiing) then
						if MissileEnabled then
							MissileEnabled = false
							local MissileSpawns = {}
							for i,v in pairs(Weapons:GetChildren()) do
								if v:IsA("BasePart") then
									if v.Name == "MissileSpawn" then
										table.insert(MissileSpawns,v)
									end
								end
							end
							local CurrentSpawn = MissileSpawns[math.random(1,#MissileSpawns)] --This line selects a random missile spawn
							if Locked then
								FireGuidedMissile(CurrentSpawn)
								ReloadMissile((MissileTime2 * 2))
							elseif (not Locked) then
								FireMissile(CurrentSpawn)
								ReloadMissile(MissileTime2)
							end
						end
					end
				end
			end
		end
	end
	if (Key == TargetControls.UnTarget.Value) then --If you press the untarget key...
		if Targetable2 then
			if Locked then
				Locked = false
			end
		end
	end
end

function onKeyUp(Key) --This function is activated when you let go of a key
	Key:lower()
	if SUAK and Key:byte() == SpeedUp2 or (not SUAK) and (Key == SpeedUp2) then --If you let go of the speed up key...
		Accelerating = false
	end
	if SDAK and Key:byte() == SlowDown2 or (not SDAK) and (Key == SlowDown2) then --If you let go of the slow down key...
		Decelerating = false
	end
	if (Key == WeaponControls.FireGuns.Value) then --If you let go of the fire guns key...
		FiringGun = false
	end
end

function onSelected(mouse) --This function is activated when you select the Plane tool
	Selected = true
	mouse2 = mouse
	FixVars() --This activates the "FixVars" function
	GetGear(Gear) --This activates the "GetGear" function
	GetLowestPoint() --This activates the "GetLowestPoint" function
	ToolSelect.Value = true
	GuiClone = GUI:clone() --This line and the next one clones the plane gui and puts it into the player
	GuiClone.Parent = Player.PlayerGui
	SetUpGui() --This activates the "SetUpGui" function
	Camera.CameraType = CameraType2 --This makes your cameratype the customize cameratype
	if Targetable2 then --If the plane can target, then it will create the objects required for targeting
		AimGui = Instance.new("BillboardGui",Player.PlayerGui)
		AimGui.AlwaysOnTop = true
		AimGui.Enabled = false
		AimGui.Size = UDim2.new(0,50,0,50)
		local Label = Instance.new("ImageLabel",AimGui)
		Label.BackgroundTransparency = 1
		Label.Image = "http://www.roblox.com/asset/?id=107388694"
		Label.Size = UDim2.new(1,0,1,0)
		LockGui = Instance.new("BillboardGui",Player.PlayerGui)
		LockGui.AlwaysOnTop = true
		LockGui.Enabled = false
		LockGui.Size = UDim2.new(0,50,0,50)
		local Label = Instance.new("ImageLabel",LockGui)
		Label.BackgroundTransparency = 1
		Label.Image = "http://www.roblox.com/asset/?id=107388656"
		Label.Size = UDim2.new(1,0,1,0)
	end
	mouse.Icon = NormalCursor
	FTab[1] = mouse.Move:connect(function() onMouseMoved(mouse) end) --Lines 1025-1029 activate the given functions
	FTab[2] = mouse.Idle:connect(function() onMouseMoved(mouse) end)
	FTab[3] = mouse.Button1Down:connect(function() onButton1Down(mouse) end)
	FTab[4] = mouse.KeyDown:connect(onKeyDown)
	FTab[5] = mouse.KeyUp:connect(onKeyUp)
	FTab[6] = RunService.RenderStepped:connect(UpdateCamera)
	FTab[7] = RunService.Stepped:connect(function() FlyMain(mouse) end)
end

function onDeselected(mouse) --This function is activated when you deselect the Plane tool
	Selected = false
	LockedCam = false
	for i,v in pairs(FTab) do --This disconnects all the connections. It prevents bugs
		if v then
			v:disconnect()
		end
	end
	Camera.CameraType = Enum.CameraType.Custom --This makes the CameraType "Custom"
	Camera.CameraSubject = Character.Humanoid
	if Targetable2 then --If the plane can target, then the objects required for targeting will be removed
		AimGui:remove()
		LockGui:remove()
	end
	if (not Taxi()) and EngineOn then --If you're not Taxiing and your engine is on...
		if (not Deselect0.Value) and (not Plane.Ejected.Value) then --If you deselected the tool and didn't eject...
			onDeselectFlying()
		end
	end
	CurrentSpeed = 0 --Lines 1041-1054 resets the plane, the plane gui, and the plane tool
	DesiredSpeed = 0
	TrueAirSpeed = 0
	EngineOn = false
	Updating = false
	Locked = false
	Targeting = false
	TargetPlayer = nil
	ToolSelect.Value = false
	GuiAVisible = true
	GuiBVisible = true
	GuiClone:remove()
	Engine.Thrust.velocity = Vector3.new(0,0,0)
	Engine.Thrust.maxForce = Vector3.new(0,0,0)
	Engine.Direction.maxTorque = Vector3.new(0,0,0)
end

function onDeselectFlying() --This function blows up the plane
	if (not Deselect0.Value) then
		local Explosion = Instance.new("Explosion")
		Explosion.Parent = game.Workspace
		Explosion.Position = Engine.Position
		Explosion.BlastRadius = Plane:GetModelSize().magnitude
		Explosion.BlastPressure = 100000
		Character.Humanoid.Health = 0
		Engine.Thrust:remove()
		Engine.Direction:remove()
		delay(5,function()
			Plane:Destroy()
		end)
	end
end

function onDeselectForced() --This function is activated when you get out of the plane without deselecting the tool first
	if Deselect0.Value then
		onDeselected()
		mouse2.Icon = "rbxasset://textures\\ArrowCursor.png" --This makes the mouse icon the normal icon
	end
end

script.Parent.Selected:connect(onSelected) --The next 3 lines activate the given functions
script.Parent.Deselected:connect(onDeselected)
Deselect0.Changed:connect(onDeselectForced)
