Scripts working in studio but not in game

I have 2 scripts in StarterPlayerScripts for crouching and sprinting. These work ABSOLUTELY FINE in studio, with no issues. But never works in the game! Does anyone have any solutions?

Sprint

local Players = game:GetService("Players")
local TweenService = game:GetService("TweenService")
local UserInputService = game:GetService("UserInputService")

local Player = Players.LocalPlayer
local Character = Player.Character or Player.CharacterAdded:Wait()
local Humanoid = Character:WaitForChild("Humanoid")
local Camera = workspace.CurrentCamera

local DefaultFieldOFView = Camera.FieldOfView
local DefaultWalkingSpeed = Humanoid.WalkSpeed

local Speed = 25
local Key = Enum.KeyCode.LeftShift
local TweenSpeed = 0.2

local SprintingTween = TweenService:Create(Camera, TweenInfo.new(TweenSpeed), { FieldOfView = DefaultFieldOFView + (Speed / 5) })
local WalkingTween = TweenService:Create(Camera, TweenInfo.new(TweenSpeed), { FieldOfView = DefaultFieldOFView })

local sprinting = false

local function sprint(actionName, inputState, inputObject)
	if inputState == Enum.UserInputState.Begin then
		if sprinting == false then
			sprinting = true
			
			script.IsSprinting.Value = true
			
			Humanoid.WalkSpeed = Speed
		else
			sprinting = false
			
			script.IsSprinting.Value = false
			
			Humanoid.WalkSpeed = DefaultWalkingSpeed
		end
	end
end

local contextActionService = game:GetService("ContextActionService")

local sprintButton = contextActionService:BindAction("Sprint", sprint, true)
contextActionService:SetPosition("Sprint", UDim2.new(0.72, -85, 0.20, -85))
contextActionService:SetImage("Sprint", "rbxassetid://9641437468")

UserInputService.InputBegan:Connect(function(Input, Processed)
	if not Processed then 
		if Input.UserInputType == Enum.UserInputType.Keyboard and Input.KeyCode == Key and script.Parent.CrouchScriptMain.IsCrouching.Value == false then
			script.IsSprinting.Value = true
			
			Humanoid.WalkSpeed = Speed
		end
	end
end)

UserInputService.InputEnded:Connect(function(Input)
	if Input.UserInputType == Enum.UserInputType.Keyboard and Input.KeyCode == Key and script.Parent.CrouchScriptMain.IsCrouching.Value == false then 
		script.IsSprinting.Value = false
		
		Humanoid.WalkSpeed = DefaultWalkingSpeed
	end
end)


script.Parent.CrouchScriptMain.IsCrouching:GetPropertyChangedSignal("Value"):Connect(function()
	if script.Parent.CrouchScriptMain.IsCrouching.Value == true then
		sprinting = false

		Humanoid.WalkSpeed = DefaultWalkingSpeed
		WalkingTween:Play()
	end
end)

Crouch

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

local Player = Players.LocalPlayer
local Character = Player.Character or Player.CharacterAdded:Wait()
local Humanoid = Character:WaitForChild("Humanoid")

local DefaultWalkingSpeed = Humanoid.WalkSpeed

local Key = Enum.KeyCode.C
local Speed = 5

local crouched = false

local crouchAnim = nil

local contextActionService = game:GetService("ContextActionService")

local function crouch(actionName, inputState, inputObject)
	if inputState == Enum.UserInputState.Begin then
		if crouched == false then
			crouched = true
			script.IsCrouching.Value = true
			Humanoid.WalkSpeed = Speed
			crouchAnim:Play()
		else
			crouched = false
			script.IsCrouching.Value = false
			Humanoid.WalkSpeed = DefaultWalkingSpeed
			crouchAnim:Stop()
		end
	end
end

local mobileHolsterButton = contextActionService:BindAction("Crouch", crouch, true)
contextActionService:SetPosition("Crouch", UDim2.new(0.72, -85, 0.20, -25))
contextActionService:SetImage("Crouch", "rbxassetid://9640894555")

UserInputService.InputBegan:Connect(function(Input, Processed)
	if not Processed then 
		if Input.UserInputType == Enum.UserInputType.Keyboard and Input.KeyCode == Key then 
			if crouched == false then
				crouched = true
				script.IsCrouching.Value = true
				Humanoid.WalkSpeed = Speed
				crouchAnim:Play()
			else
				crouched = false
				script.IsCrouching.Value = false
				Humanoid.WalkSpeed = DefaultWalkingSpeed
				crouchAnim:Stop()
			end
		end
	end
end)

wait(1)

crouchAnim = game.Players.LocalPlayer.Character.Humanoid.Animator:LoadAnimation(game.ReplicatedStorage.Anims.Crouch)
1 Like

Found the issue. I should have put it in StarterCharacterScripts and not StarterPlayerScripts.

1 Like