It works perfectly in PLAY SOLO but not in Online mode. I know that it doesn't get up to setting the camera to "Track" so there's a hint as to where it went wrong. Code :
bin = script.Parent
local a = "EscapePod"..math.random(1,100)
bin.Parent.Parent.Parent.Name = a
plane = nil
hold = false
local debounce = false
local planedebounce = false
local stuntdebounce = false
local controlling = false
local currentspeed = 0
local turn = nil
fly = false
function computeDirection(vec)
local lenSquared = vec.magnitude * vec.magnitude
local invSqrt = 1 / math.sqrt(lenSquared)
return Vector3.new(vec.x * invSqrt, vec.y * invSqrt, vec.z * invSqrt)
end
function move(point, engine)
local origincframe = engine:findFirstChild("Direction").cframe
size = engine.Size
target = engine.Position+((point - engine.Position).unit*100)
local dir = (target - engine.Position).unit
local spawnPos = engine.Position
left = engine.CFrame*CFrame.new(-size.x/2, 0, 0).p
right = engine.CFrame*CFrame.new(size.x/2, 0, 0).p
md = (target - engine.Position).magnitude
foebmd = engine.CFrame*CFrame.new(0, 0, -md).p
toleft = (target -left).magnitude
toright = (target -right).magnitude
rot = ((foebmd - target).magnitude/10)
local pos = spawnPos + (dir * 1)
turn = math.rad((rot/10)*engine.TiltFactor.Value)
if turn > math.rad(89) then
turn = math.rad(89)
end
if toleft< toright and toleft >rot then
engine:findFirstChild("Direction").cframe = CFrame.new(pos, pos + dir)*CFrame.fromEulerAnglesXYZ(0, 0, turn)
elseif toleft > toright and toright >rot then
engine:findFirstChild("Direction").cframe = CFrame.new(pos, pos + dir)*CFrame.fromEulerAnglesXYZ(0, 0, -turn)
else
engine:findFirstChild("Direction").cframe = CFrame.new(pos, pos + dir)
end
engine:findFirstChild("Direction").P = engine.TurnSpeed.Value
end
function findPlane(player)
local list = player.Character:GetChildren()
for x = 1, #list do
if (list[x].Name == "AircraftSeat") then
return list[x]
end
end
return nil
end
function onButton1Down(mouse)
local vehicle = findPlane(script.Parent.Parent.Parent)
if vehicle ~= nil and debounce == false and planedebounce == false then
if fly == false then return end
debounce = true
controlling = true
while true do
wait()
local engine = vehicle
local position = mouse.Hit
local target = position.p
move(target, engine)
if planedebounce == true or
controlling == false then break end
end
wait(0.1)
debounce = false
end
end
function onButton1Up(mouse)
controlling = false
end
function onSelected(mouse)
mouse.Icon = "http://www.roblox.com/asset/?id=7419350"
game.Workspace.CurrentCamera.CameraSubject = bin.Parent.Parent.Character.Head
game.Workspace.CurrentCamera.CameraType = "Track"
mouse.Button1Down:connect(function() onButton1Down(mouse) end)
mouse.Button1Up:connect(function() onButton1Up(mouse) end)
mouse.KeyDown:connect(onKeyDown)
mouse.Move:connect(function() Fly(mouse) end)
mouse.Idle:connect(function() Fly(mouse) end)
end
function onDeselected(mouse)
game.Workspace.CurrentCamera.CameraSubject = bin.Parent.Parent.Character.Humanoid
game.Workspace.CurrentCamera.CameraType = "Custom"
end
function Fly(mouse)
local vehicle = findPlane(script.Parent.Parent.Parent)
if (vehicle==nil) then return end
vehicle.Thrust.velocity = (vehicle.CFrame.lookVector * currentspeed) + Vector3.new(0,vehicle.LiftTrim.Value/100,0)
end
local pod = game.Workspace:FindFirstChild(a)
function onKeyDown(key)
if (key~=nil) then
key = key:lower()
local vehicle = findPlane(script.Parent.Parent.Parent)
if (vehicle==nil) then return end
if key == "y" and fly == false then
vehicle.Thrust.MaxForce = Vector3.new(0,10000000,0)
vehicle.Thrust.P = 8500
vehicle.Thrust.Velocity = Vector3.new(0,5,0)
pod.LaserEngine1.P.Enabled = true
pod.LaserEngine2.P.Enabled = true
if fly == false then
vehicle.PowerUp:Play()
wait(vehicle.PowerUp.TimeLength)
end
if fly == false then
vehicle.PowerUp2:Play()
wait(6)
end
if fly == false then
vehicle.Thrust.MaxForce = Vector3.new(0,0,0)
vehicle.Thrust.P = 1250
vehicle.Thrust.Velocity = Vector3.new(0,1,0)
vehicle.ThrustSound:Play()
fly = true
vehicle.Direction.cframe = vehicle.CFrame
vehicle.Direction.maxTorque = Vector3.new(4e3,4e3,4e3)
vehicle.Thrust.maxForce = Vector3.new(9e20,9e20,9e20)
while fly == true do
if currentspeed < vehicle.Speed.Value then
currentspeed = currentspeed + 1
elseif currentspeed > vehicle.Speed.Value then
currentspeed = currentspeed - 1
end
if vehicle.Acceleration.Value > 1000 then vehicle.Acceleration.Value = 1000 end
wait((1-(vehicle.Acceleration.Value/1000))+0.01)
if fly == false then break end
end
end
end
if key == "x" and fly == true then
vehicle.PowerDown:Play()
vehicle.ThrustSound:Stop()
pod.LaserEngine1.P.Enabled = false
pod.LaserEngine2.P.Enabled = false
fly = false
currentspeed = 0
vehicle.Direction.maxTorque = Vector3.new(0,0,0)
vehicle.Thrust.maxForce = Vector3.new(0,0,0)
end
if key == "w" then
if vehicle.Speed.Value < vehicle.MaxSpeed.Value then
vehicle.Speed.Value = vehicle.Speed.Value + 10
end
end
if key == "s" then
if vehicle.Speed.Value > -10 then
vehicle.Speed.Value = vehicle.Speed.Value - 10
end
end
if key == "p" then
vehicle.Speed.Value = vehicle.MaxSpeed.Value
end
if key == "l" and fly == true then
vehicle.Direction.maxTorque = Vector3.new(4e3,0,4e3)
local frame = vehicle:FindFirstChild("OriginCFrame")
if frame ~= nil then
vehicle.Direction.cframe = frame.Value
end
wait(2)
vehicle.Direction.cframe = vehicle.CFrame
vehicle.Direction.maxTorque = Vector3.new(4e3,4e3,4e3)
end
end
end
bin.Selected:connect(onSelected)
bin.Deselected:connect(onDeselected)

1 comment
https://scriptinghelpers.org/blog/it-works-in-studio-but-not-online <- this should help