I have a sprint script that works fine but whenever the player presses another button whilst sprinting (holding shift) they get interrupted and stop sprinting as if the game thinks they arent holding shift anymore.
Any ways to prevent this?
Localscript.
local shift = Enum.KeyCode.LeftShift
local R2 = Enum.KeyCode.ButtonR2
local function HoldDown()
return UIS:IsKeyDown(shift) or UIS:IsKeyDown(R2)
end
A snippet:
local function Input(input, gameProcessedEvent) -- This is the entire sprint script.
if HoldDown() then
--rest of sprint
end
end
UIS.InputBegan:Connect(Input) -- Calls the sprint function.
4 Likes
I’m unsure why’d the character stop printing, but perhaps a better way of listening if the player is holding down Shift or not, is to register when the player first started pressing it, making the player faster accordingly — which you’ve done, though a bit different — and finally listening for when the players stop pressing the same key. As such, in a more general case:
UIS.InputBegan:Connect(function(input, gPE)
if not GPE then
if input.KeyCode == Enum.KeyCode.LeftShift then
-- make player sprint (example)
localPlayer.Character.Humanoid.WalkSpeed = 20;
end
end
end)
UIS.InputEnded:Connect(function(input, gPE)
if input.KeyCode == Enum.KeyCode.LeftShift then
-- revert player to normal walking speed
localPlayer.Character.Humanoid.WalkSpeed = 16;
end
end)
1 Like
Player still stops sprinting whenever they press another button. (Such as 1 or D)
Here is the entire script
local stamina = 15
UIS.InputBegan:Connect(function(input, GPE)
if not GPE then
if input.KeyCode == Enum.KeyCode.LeftShift then
if Humanoid.MoveDirection.Magnitude > 0 then
if not (character.Humanoid.WalkSpeed <= 7) then
character.Humanoid.WalkSpeed = NewWalkSpeed
sprinting = true
while stamina > 0 and sprinting do
stamina = stamina - .03
Bar.Size = UDim2.new(stamina / 10, 0, 1, 0)
Num.Text = stamina
--Bar.BackgroundColor3 = Bar.BackgroundColor3:lerp(Color3.fromRGB(255, 42, 42), 0.001)
tween:Play()
task.wait()
if stamina <= 0 then
tween2:Play()
runninganim:Stop()
sprinting = false
character.Humanoid.WalkSpeed = NormalWalkSpeed
end
end
end
end
end
if character.Humanoid.WalkSpeed == 0 and runninganim.IsPlaying then
runninganim:Stop()
end
end
end)
1 Like
Are you sure that just pressing a different key is in fact the culprit? The issue doesn’t seem very obvious, and it does not look to be an issue with how inputs are being registered.
Yes i am very much sure, i tried equipping a tool (WITH NO SCRIPTS) and it stops sprinting, it also even regenerates the “stamina” faster, while pressing two directional keys (W and D) decreases stamina faster. Also this is how i set the sprinting boolvalue to true.
Humanoid.Running:Connect(function()
if Humanoid.MoveDirection.Magnitude > 0 then
if sprinting == true then
runninganim:Play()
end
else
runninganim:Stop()
end
end)
What I did for my sprinting system is I created a variable to check whether the player is sprinting and change the variable when the player clicks the key-bind for sprinting.
Sample script below to make it more easier to understand.
local Sprinting = false
UIS.InputBegan:Connect(function(input, GPE)
if not GPE then
if input.KeyCode == Enum.KeyCode.LeftShift then
if Sprinting == false then
Sprinting = true
Player.Character.Humanoid.WalkSpeed = 25
end
end
end
end)
UIS.InputEnded:Connect(function(input, GPE)
if input.KeyCode == Enum.KeyCode.LeftShift then
if Sprinting == true then
Sprinting = false
Player.Character.Humanoid.WalkSpeed = 16
end
end
end)
Not sure if this would make a difference or fix the problem, but feel free to criticize.
2 Likes