-
Notifications
You must be signed in to change notification settings - Fork 0
/
runscript.lua
106 lines (82 loc) · 2.75 KB
/
runscript.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
local player = game.Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
local anim = Instance.new("Animation")
anim.AnimationId = "" -- Insert your running/boosting animation here
local runAnimation = humanoid:LoadAnimation(anim)
local defaultWalkSpeed = 16
local runWalkSpeed = 35
local boostedRunWalkSpeed = 53
local boostDuration = 5
local cooldownDuration = 3
humanoid.WalkSpeed = defaultWalkSpeed
local camera = game.Workspace.CurrentCamera
local defaultFOV = camera.FieldOfView
local targetFOV = defaultFOV + 20
local boostedFOV = defaultFOV + 50
local TweenService = game:GetService("TweenService")
local UserInputService = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local isRunning = false
local isCooldownActive = false
local lastRunTime = 0
local function playRunAnimation()
print("Playing run animation")
isRunning = true
lastRunTime = tick()
humanoid.WalkSpeed = runWalkSpeed
runAnimation:Play()
local tweenInfo = TweenInfo.new(0.5, Enum.EasingStyle.Quad, Enum.EasingDirection.Out)
local fovTween = TweenService:Create(camera, tweenInfo, {FieldOfView = targetFOV})
fovTween:Play()
end
local function stopRunAnimation()
isRunning = false
runAnimation:Stop()
if not isCooldownActive then
isCooldownActive = true
humanoid.WalkSpeed = defaultWalkSpeed
task.wait(cooldownDuration)
isCooldownActive = false
end
end
UserInputService.InputBegan:Connect(
function(input)
if input.UserInputType == Enum.UserInputType.Keyboard and input.KeyCode == Enum.KeyCode.LeftShift then
if not isRunning and not isCooldownActive and humanoid.MoveDirection.Magnitude > 0 then
playRunAnimation()
end
end
end
)
UserInputService.InputEnded:Connect(
function(input)
if input.UserInputType == Enum.UserInputType.Keyboard and input.KeyCode == Enum.KeyCode.LeftShift then
stopRunAnimation()
end
end
)
RunService.Heartbeat:Connect(
function()
if isRunning then
local elapsed = tick() - lastRunTime
print("Elapsed time: " .. elapsed)
if elapsed > boostDuration then
humanoid.WalkSpeed = boostedRunWalkSpeed
local tweenInfo = TweenInfo.new(0.5, Enum.EasingStyle.Quad, Enum.EasingDirection.Out)
local fovTween = TweenService:Create(camera, tweenInfo, {FieldOfView = boostedFOV})
fovTween:Play()
end
else
runAnimation:Stop()
end
if humanoid.MoveDirection.Magnitude == 0 and isRunning then
stopRunAnimation()
end
if not isRunning and camera.FieldOfView ~= defaultFOV then
local tweenInfo = TweenInfo.new(0.5, Enum.EasingStyle.Quad, Enum.EasingDirection.Out)
local fovResetTween = TweenService:Create(camera, tweenInfo, {FieldOfView = defaultFOV})
fovResetTween:Play()
end
end
)