Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

Plane script won't work?

Asked by
Nidoxs 190
8 years ago

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 answer

Log in to vote
0
Answered by 8 years ago

Try turning on Filtering Enabled, its a property in workspace.Check out this blog scripting helpers made : https://scriptinghelpers.org/blog/it-works-in-studio-but-not-online .You are using Local for the client but then you use some codes for a regular script [ Server Script ].When using that in a local script it won't work.Read the blog and turn filtering enabled on. :D

Ad

Answer this question