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

Fly script very glitchy and sends you out of the map?

Asked by 6 years ago

So this script is supposed to let you fly when you press V. It works but when I equip a tool the screens looks like it's having a seizure and when I try to move objects in the game with a tool it just flings me out of the map. Is there any changes I can make to this script to fix this? This is Filtering Enabled by the way. Thanks for your help.

repeat wait() until game.Players.LocalPlayer and game.Players.LocalPlayer.Character and game.Players.LocalPlayer.Character:findFirstChild("Torso") and game.Players.LocalPlayer.Character:findFirstChild("Humanoid") 
local mouse = game.Players.LocalPlayer:GetMouse() 
repeat wait() until mouse
local plr = game.Players.LocalPlayer 
local torso = plr.Character.Torso 
local flying = false 
local ctrl = {f = 0, b = 0, l = 0, r = 0} 
local lastctrl = {f = 0, b = 0, l = 0, r = 0}  
local speed = 60 
function Fly()
    local char = plr.Character
    if char then
        local humanoid = char:WaitForChild("Humanoid")
        local root = char:WaitForChild("HumanoidRootPart")
        root.Anchored = true
        root.Anchored = false
        root.Velocity = Vector3.new()
        humanoid.PlatformStand = false
    end 
local bg = Instance.new("BodyGyro", torso) 
bg.P = 9e4 
bg.maxTorque = Vector3.new(9e9, 9e9, 9e9) 
bg.cframe = torso.CFrame 
local bv = Instance.new("BodyVelocity", torso) 
bv.velocity = Vector3.new(0,0,0) 
bv.maxForce = Vector3.new(9e9, 9e9, 9e9) 
repeat wait() 
plr.Character.Humanoid.PlatformStand = true 
if (ctrl.l + ctrl.r) ~= 0 or (ctrl.f + ctrl.b) ~= 0 then 
bv.velocity = ((game.Workspace.CurrentCamera.CoordinateFrame.lookVector * (ctrl.f+ctrl.b)) + ((game.Workspace.CurrentCamera.CoordinateFrame * CFrame.new(ctrl.l+ctrl.r,(ctrl.f+ctrl.b)*0,0).p) - game.Workspace.CurrentCamera.CoordinateFrame.p))*60
lastctrl = {f = ctrl.f, b = ctrl.b, l = ctrl.l, r = ctrl.r} 
elseif (ctrl.l + ctrl.r) == 0 and (ctrl.f + ctrl.b) == 0 and speed ~= 0 then 
bv.velocity = ((game.Workspace.CurrentCamera.CoordinateFrame.lookVector * (lastctrl.f+lastctrl.b)) + ((game.Workspace.CurrentCamera.CoordinateFrame * CFrame.new(lastctrl.l+lastctrl.r,(lastctrl.f+lastctrl.b)*0,0).p) - game.Workspace.CurrentCamera.CoordinateFrame.p))*0 
else 
bv.velocity = Vector3.new(0,0,0) 
end 
bg.cframe = game.Workspace.CurrentCamera.CoordinateFrame 
until not flying 
ctrl = {f = 0, b = 0, l = 0, r = 0} 
lastctrl = {f = 0, b = 0, l = 0, r = 0} 
speed = 0 
bg:Destroy() 
bv:Destroy() 
plr.Character.Humanoid.PlatformStand = false 
end 
mouse.KeyDown:connect(function(key) 
if key:lower() == "" then 
if flying then flying = false
else 
flying = true
Fly() 
end 
elseif key:lower() == "w" then 
ctrl.f = 1 
elseif key:lower() == "s" then 
ctrl.b = -1 
elseif key:lower() == "a" then 
ctrl.l = -1 
elseif key:lower() == "d" then 
ctrl.r = 1 
end 
end) 
mouse.KeyUp:connect(function(key) 
if key:lower() == "w" then 
ctrl.f = 0 
elseif key:lower() == "s" then 
ctrl.b = 0 
elseif key:lower() == "a" then 
ctrl.l = 0 
elseif key:lower() == "d" then 
ctrl.r = 0 
end 
end)
Fly()

game:GetService("UserInputService").InputBegan:connect(function(input,event)
    if event then return end
if input.KeyCode == Enum.KeyCode.ButtonB or input.KeyCode == Enum.KeyCode.V then
        if (flying == false) then
            flying = true
            Fly()
        elseif (flying == true) then
            flying = false
        end
    end
end)

local noClipEvent = game.ReplicatedStorage:WaitForChild("NoClipEvent")
local isNoClipActive = false
local hoverHeight
local lastUpdate

local bodyPosition = Instance.new("BodyPosition")

game:GetService("UserInputService").InputBegan:connect(function(input, event)
    if not event then
        if input.KeyCode == Enum.KeyCode.ButtonB or input.KeyCode == Enum.KeyCode.V then
            if plr.Character and plr.Character.Parent then
                lastUpdate = tick()
                isNoClipActive = not isNoClipActive
                noClipEvent:FireServer(isNoClipActive)

                if isNoClipActive then
                    local root = plr.Character:FindFirstChild("HumanoidRootPart")
                    if root then
                        bodyPosition.Parent = plr.Character.HumanoidRootPart
                        bodyPosition.Position = root.Position
                        hoverHeight = root.Position.Y
                    end
                else
                    bodyPosition.Parent = nil
                end
            end
        end
    end
end)
0
Can you maybe make a gif? Tomstah 401 — 6y

Answer this question