Swim Script Trobules

I have a swim script, its separated into a lot of different stuff so if you need more just tell me but here’s the main swim script. I just need someone to add something to the script where the players walk speed stays at 16 the entire time you’re in the water until you leave. The reason for this is because I have a sprint script and I do not want players to be activate it in water which you currently can. Thank you for helping me!

Here is the swim script:

--Services{
local replicatedStorage = game:GetService("ReplicatedStorage")
local inputService = game:GetService("UserInputService")
local context = game:GetService("ContextActionService")
local playerService = game:GetService("Players")
local runService = game:GetService("RunService")
local lighting = game:GetService("Lighting")
--}

--Vars{
local player = playerService.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoidRootPart = character:WaitForChild("HumanoidRootPart")
local diveCorrection = lighting:WaitForChild("DiveCorrection")
local humanoid = character:WaitForChild("Humanoid")
local diveBlur = lighting:WaitForChild("DiveBlur")
local seaValue = script:WaitForChild("SeaValue")
local sea = seaValue.Value
local ocean = sea:WaitForChild("Ocean")
local sand = sea:WaitForChild("Sand")
--}

--LocalVars{
local swimPosition = nil
local surfacing = false
local isDiving = false
local swimming = false
local canJump = false
local isDive = false

local swimTrack = humanoid:LoadAnimation(game.ReplicatedFirst.Animations.Swim)
--}

--Tables{
local oceanSetting = {
	["LastCheck"] = DateTime.now().UnixTimestamp;
	["TimerChange"] = 25;
	["CurrentCount"] = 1;
	
}

local textureList = {
	"http://www.roblox.com/asset/?id=251911331";
	"http://www.roblox.com/asset/?id=251911339";
	"http://www.roblox.com/asset/?id=251911347";
	"http://www.roblox.com/asset/?id=251911363";
	"http://www.roblox.com/asset/?id=251911369";
	"http://www.roblox.com/asset/?id=251911379";
	"http://www.roblox.com/asset/?id=251911392";
	"http://www.roblox.com/asset/?id=251911407";
	"http://www.roblox.com/asset/?id=251911419";
	"http://www.roblox.com/asset/?id=251911429";
	"http://www.roblox.com/asset/?id=251911442";
	"http://www.roblox.com/asset/?id=251911454";
	"http://www.roblox.com/asset/?id=251911472";
	"http://www.roblox.com/asset/?id=251911481";
	"http://www.roblox.com/asset/?id=251911490";
	"http://www.roblox.com/asset/?id=251911502";
	"http://www.roblox.com/asset/?id=251911515";
	"http://www.roblox.com/asset/?id=251911532";
	"http://www.roblox.com/asset/?id=251915177";
	"http://www.roblox.com/asset/?id=251911587";
	"http://www.roblox.com/asset/?id=251911594";
	"http://www.roblox.com/asset/?id=251911605";
	"http://www.roblox.com/asset/?id=251911616";
	"http://www.roblox.com/asset/?id=251911630";
	"http://www.roblox.com/asset/?id=251911639";
}

--}




player.CharacterAdded:Connect(function(char)
	character = char
	humanoidRootPart = char:WaitForChild("HumanoidRootPart")
	humanoid = char:WaitForChild("Humanoid")
	swimPosition = nil
	surfacing = false
	isDiving = false
	swimming = false
	canJump = false
	isDive = false
	swimTrack = humanoid:LoadAnimation(game.ReplicatedFirst.Animations.Swim)
	ocean.Position = Vector3.new(humanoidRootPart.Position.X, ocean.Position.Y, humanoidRootPart.Position.Z)
	sand.Position = Vector3.new(humanoidRootPart.Position.X, sand.Position.Y, humanoidRootPart.Position.Z)
end)

humanoid.Destroying:Connect(function()
	swimPosition = nil
	surfacing = false
	isDiving = false
	swimming = false
	canJump = false
	isDive = false
	swimTrack:Stop()
end)

ocean.Touched:Connect(function(otherPart)
	if swimming == true then return end
	if otherPart.Parent == character and otherPart == character.PrimaryPart then
		swimming = true
		
		game.ReplicatedStorage.Bindables.PlayEffect:Fire("Splash", humanoidRootPart.CFrame, ocean.Position.Y + 7)
		
		swimPosition = Instance.new("BodyPosition")
		swimPosition.MaxForce = Vector3.new(0, 100000, 0)
		swimPosition.Position = Vector3.new(0, ocean.Position.Y + 7.5, 0)
		
		runService.RenderStepped:Wait()
		
		task.wait(.05)
		
		swimTrack:Play()
		swimPosition.Parent = humanoidRootPart
		
		task.wait(.25)
		canJump = true
	end
end)

inputService.JumpRequest:Connect(function()
	if swimPosition ~= nil and swimming and canJump and isDiving == false and isDive == false and surfacing == false then
		canJump = false
		swimPosition.Position = swimPosition.Position + Vector3.new(0, 25, 0)
		swimTrack:Stop()
		task.wait(.5)
		swimPosition:Destroy()
		
		swimming = false
	end
end)


runService.RenderStepped:Connect(function()
	runService.RenderStepped:Wait()
	if character ~= nil then
		local humanoidRootPart = character:FindFirstChild("HumanoidRootPart")
		if humanoidRootPart ~= nil then
			local distCheck = (character:GetPivot().Position - ocean.Position).Magnitude
			if distCheck >= 750 then
				ocean.Position = Vector3.new(humanoidRootPart.Position.X, ocean.Position.Y, humanoidRootPart.Position.Z)
				sand.Position = Vector3.new(humanoidRootPart.Position.X, sand.Position.Y, humanoidRootPart.Position.Z)
			end
		end
	end
	
	local camera = workspace.CurrentCamera
	if camera.CFrame.Y < ocean.Position.Y + 8 then
		diveBlur.Enabled = true
		diveCorrection.Enabled = true
	else
		diveBlur.Enabled = false
		diveCorrection.Enabled = false
	end
end)

And here is the sprint script incase you need it:

local userInputService = game:GetService("UserInputService")
local players = game:GetService("Players")

local player = players.LocalPlayer
local char = player.Character or player.CharacterAdded:Wait()
local hum = char:WaitForChild("Humanoid")
local animator = hum:WaitForChild("Animator")

local animation = Instance.new("Animation")
animation.AnimationId = "rbxassetid://18567622681"
local track = animator:LoadAnimation(animation)
track.Priority = Enum.AnimationPriority.Movement

local RUN_KEYCODE = Enum.KeyCode.LeftControl
local RUN_SPEED = 36
local WALK_SPEED = 16

local isSprinting = false
local isMoving = false
local isInAir = false

local function floorMaterialChanged()
	if hum.FloorMaterial == Enum.Material.Air then
		isInAir = true

		track:Stop()
	else
		isInAir = false

		if isSprinting and isMoving and not track.IsPlaying then
			track:Play()
		end
	end
end

local function updateAnimation()
	if isSprinting and isMoving then
		hum.WalkSpeed = RUN_SPEED
		if not track.IsPlaying then
			track:Play()
		end
	else
		hum.WalkSpeed = WALK_SPEED
		track:Stop()
	end
end

local function inputBegan(input, processed)
	if processed then return end

	if input.KeyCode == RUN_KEYCODE then
		isSprinting = not isSprinting
		updateAnimation()
	end
end

local function moveDirectionChanged()
	isMoving = hum.MoveDirection.Magnitude > 0
	if not isInAir then
		updateAnimation()
	end
end

userInputService.InputBegan:Connect(inputBegan)

hum:GetPropertyChangedSignal("MoveDirection"):Connect(moveDirectionChanged)

hum:GetPropertyChangedSignal("FloorMaterial"):Connect(floorMaterialChanged)

Remember, if you need anymore information just ask! And again, thank you for your help!

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.