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)