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

Fly tool script started killing the player recently, not sure why?

Asked by 6 years ago

Hi,

My fly tool for my game has been killing the player after a while of using it, and I have no idea why. It never did this until a day or two ago, so I am thinking Roblox broke something again. I even tried removing the "humanoid.Health>0" parts, and it still killed me after awhile. It does it after flying for a bit. I'm lost!

sp=script.Parent
plr=game.Players.LocalPlayer


local speed=2
local topspeed=50

local rate=1/30

local inertia=1-(speed/topspeed)
local debris=game:GetService("Debris")
local flying=false
local controls={forward=0,backward=0,left=0,right=0}
local momentum=Vector3.new(0,0,0)
local lastmomentum=Vector3.new(0,0,0)
local totalmomentum=0
local tilt=0
local lasttilt=0

local equipped = false

local anim=script:WaitForChild("FlyAnimation")

function RemoveFlyStuff()
    if plr and plr.Character then
        local torso=plr.Character:FindFirstChild("Torso")
        if torso~=nil then
            for _,v in pairs(torso:GetChildren()) do
                if v and (v.Name=="FlightGyro" or v.Name=="FlightVelocity") then
                    v:remove()
                end
            end
        end
    end
    if flyanim~=nil then
        flyanim:Stop()
    end
end

function fly()
    flying=not flying
    RemoveFlyStuff()
    if flying then
        if plr and plr.Character then
            local torso=plr.Character:FindFirstChild("Torso")
            local humanoid=plr.Character:FindFirstChild("Humanoid")
            if torso and humanoid and **humanoid.Health>0 then**
                momentum=torso.Velocity+(torso.CFrame.lookVector*10)+Vector3.new(0,10,0)

                local gyro=Instance.new("BodyGyro")
                gyro.Name="FlightGyro"
                gyro.P=10^6
                gyro.maxTorque=Vector3.new(gyro.P,gyro.P,gyro.P)
                gyro.cframe=torso.CFrame
                gyro.Parent=torso

                velocity=Instance.new("BodyVelocity")
                velocity.Name="FlightVelocity"
                velocity.velocity=Vector3.new(0,0,0)
                velocity.P=10^4
                velocity.maxForce=Vector3.new(1,1,1)*(10^6)
                velocity.Parent=torso

                if flyanim~=nil then
                    flyanim:Stop()
                end
                flyanim=humanoid:LoadAnimation(anim)
                if flyanim then
                    flyanim:Play()
                end

                while equipped and flying and torso and humanoid and **humanoid.Health>0 do**
                    local movement=game.Workspace.CurrentCamera.CoordinateFrame:vectorToWorldSpace(Vector3.new(controls.left+controls.right,math.abs(controls.forward)*.2,controls.forward+controls.backward))*speed

                    momentum=(momentum*inertia)+movement
                    totalmomentum=momentum.magnitude
                    if totalmomentum>topspeed then
                        totalmomentum=topspeed
                    end

                    local tilt=((momentum*Vector3.new(1,0,1)).unit:Cross(((lastmomentum*Vector3.new(1,0,1)).unit))).y
                    local tstilt=tostring(tilt)
                    if tstilt=="-1.#IND" or tstilt=="1.#IND" or tilt==math.huge or tilt==-math.huge or tstilt==tostring(0/0) then
                        tilt=0
                    end

                    local abstilt=math.abs(tilt)
                    if abstilt>.06 or abstilt<.0001 then
                        if math.abs(lasttilt)>.0001 then
                            tilt=lasttilt*.9
                        else
                            tilt=0
                        end
                    else
                        tilt=(lasttilt*.77)+(tilt*.25)
                    end
                    lasttilt=tilt

                    if totalmomentum<.5 then
                        momentum=Vector3.new(0,0,0)
                        totalmomentum=0
                        gyro.cframe=game.Workspace.CurrentCamera.CoordinateFrame
                    else
                        gyro.cframe=CFrame.new(Vector3.new(0,0,0),momentum)*CFrame.Angles(0,0,tilt*(-20))*CFrame.Angles(math.pi*(-.5)*(totalmomentum/topspeed),0,0)
                    end
                    velocity.velocity=momentum
                    lastmomentum=momentum
                    wait(rate)
                end
                RemoveFlyStuff()
                flying=false
            end
        end
    end
end

local IsFlying = false

script.Parent.Equipped:connect(function(mouse)
    equipped = true
    mouse.KeyDown:connect(function(key2)
        local key=string.byte(key2)
        if key==32 then
            if IsFlying then
                RemoveFlyStuff()
            else
                fly()
            end
            IsFlying = not IsFlying
        elseif key==string.byte("w") or key==17 then
            controls.forward=-1
        elseif key==string.byte("a") or key==20 then
            controls.left=-1
        elseif key==string.byte("s") or key==18 then
            controls.backward=1
        elseif key==string.byte("d") or key==19 then
            controls.right=1
        end
    end)
    mouse.KeyUp:connect(function(key2)
        local key=string.byte(key2)
        if key==string.byte("w") or key==17 then
            controls.forward=0
        elseif key==string.byte("a") or key==20 then
            controls.left=0
        elseif key==string.byte("s") or key==18 then
            controls.backward=0
        elseif key==string.byte("d") or key==19 then
            controls.right=0
        end
    end)
    delay(0,function()
        fly()
        IsFlying = true
    end)
end)

script.Parent.Unequipped:connect(function()
    equipped = false
    if flying then
        RemoveFlyStuff()
        IsFlying = false
    end

end)

Answer this question