Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local runService = game:GetService("RunService")
- local startHeightFallDamage = 10
- local damagePerHeight = 1
- local humanoid = nil
- local character = nil
- local lastStepAir = false
- local totalAirVecrticalDistance = 0
- local lastGroundedPosition = Vector3.new(0,0,0)
- local function reset()
- humanoid = nil
- character = nil
- totalAirVecrticalDistance=0
- lastGroundedPosition = Vector3.new(0,0,0)
- end
- runService.Heartbeat:Connect(function()
- if humanoid == nil or character == nil then
- print("waiting for character")
- return
- end
- if humanoid.FloorMaterial == Enum.Material.Air then
- totalAirVecrticalDistance = lastGroundedPosition.Y - character:FindFirstChild("HumanoidRootPart").Position.Y
- lastStepAir = true
- print("Air distance is: "..tostring(totalAirVecrticalDistance))
- else
- if lastStepAir and totalAirVecrticalDistance>startHeightFallDamage then
- local fallDamage = (totalAirVecrticalDistance-startHeightFallDamage)*damagePerHeight
- if fallDamage<1 then fallDamage = 1
- end
- print("Total fallen distance: "..tostring(totalAirVecrticalDistance))
- humanoid:TakeDamage(fallDamage)
- end
- lastGroundedPosition = character:FindFirstChild("HumanoidRootPart").Position
- lastStepAir = false
- totalAirVecrticalDistance = 0
- end
- end)
- local function fallDamage(char)
- character =char
- humanoid = char.Humanoid
- end
- local function onPlayerAdd(player)
- player.CharacterAdded:Connect(fallDamage)
- player.CharacterRemoving:Connect(reset)
- end
- game.Players.PlayerAdded:Connect(onPlayerAdd)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement