Run it
Copy the script and paste it into your executor.
local person = game.Players.LocalPlayer
local body = person.Character
local humanoidr = body:WaitForChild("HumanoidRootPart")
local humanoidp = body:WaitForChild("Humanoid")
local folder = workspace:FindFirstChild(person.Name)
if folder then
local uw = folder:FindFirstChild("UnderwaterDetection")
if uw then uw:Destroy() end
end
local ocean = workspace:FindFirstChild("OceanTile1")
local wavemath = require(game.ReplicatedStorage.WaveMath)
local floatForce
local function keepAboveWater()
pos = humanoidr.Position
waveY = ocean.Position.Y + .(ocean.Position.Y) + wavemath.(pos.X,pos.Z,:()).Y
pos.Y < waveY
floatForce
floatForce = .()
floatForce.Name =
floatForce.Attachment0 = humanoidr.RootAttachment
floatForce.RelativeTo = .ActuatorRelativeTo.World
floatForce.Parent = humanoidr
mass = humanoidr.AssemblyMass
floatForce.Force = .(, .(mass**(waveY-pos.Y),,mass*),)
humanoidp:(.HumanoidStateType.GettingUp)
floatForce
floatForce:()
floatForce =
:().Heartbeat:(keepAboveWater)
body:().Changed:(()
humanoidp:(.HumanoidStateType.GettingUp)
)Prevents you from ragdolling when hitting the water

Draw A Raft & Set Sail