I have asked a question on the roblox dev fourm and updated my code and removed the hidden stat (but i dont think its the error) and moved some code around but nothing is fixed and it almost feels like it got worse:
Speed Pad Code:
local speedBoost = script.Parent
local mainSpeedValue = 35 -- how much the speed pad changes your speed to
local OriginalValue = 30 -- how much the normal player gets in the game
local function SteppedOn(part)
game:WaitForChild("Players").PlayerAdded:Connect(function(plr)
local parent = part.Parent
local data = game.Players:GetPlayerFromCharacter(parent)
if game.Players:GetPlayerFromCharacter(parent) then
parent.Humanoid.WalkSpeed = mainSpeedValue
parent.Humanoid.WalkSpeed = parent.Humanoid.WalkSpeed + plr.leaderstats.extraspeed.Value
wait(5)
parent.Humanoid.WalkSpeed = OriginalValue
parent.Humanoid.WalkSpeed = parent.Humanoid.WalkSpeed + plr.leaderstats.extraspeed.Value
end
end)
end
speedBoost.Touched:connect(SteppedOn)
Starting Speed Pad Code (you know the yellow bar at the start of those speed games):
debounce = true
-- Debounce variable (so your function doesn't repeat itself)
function YourWalkspeedIsChanged(hit) -- Function, with "hit" being the argument (or the object that touches your part)
local player = game.Players:GetPlayerFromCharacter(hit.Parent)
if hit.Parent:findFirstChild("Humanoid") ~= nil and debounce == true then -- Seeing if there's humanoid
debounce = false -- "Locks" function, so it won't repeat
hit.Parent.Humanoid.WalkSpeed = 30 -- Changes the walkspeed
hit.Parent.Humanoid.WalkSpeed = hit.Parent.Humanoid.WalkSpeed + player.leaderstats.extraspeed.Value
debounce = true -- "Unlocks" function, so the function can run again
end
end
script.Parent.Touched:connect(YourWalkspeedIsChanged) -- Connection line, to run the function
Coin Code:
local db = true
script.Parent.Touched:connect(function(hit)
if hit.Parent:FindFirstChild("Humanoid") ~= nil then
if db == true then
db = false
script.Parent.Transparency = 1
local player = game.Players:GetPlayerFromCharacter(hit.Parent)
local respawntime = script.Parent.RespawnTime.Value
player.leaderstats.Coins.Value = player.leaderstats.Coins.Value + 5 + player.leaderstats.extracoins.Value -- change 'Coins' to your currency name.
script.Sound:Play()
wait(1)
script.Parent.Transparency = 1
wait(respawntime) -- time before respawn
db = true
script.Parent.Transparency = 0
end
end
end)
Updated Start Pad Speed Code (no errors in output, does not work)
I'd also prefer to be able to simply add a main speed value like it goes to 30 as the starting speed, then speed pads, charms, etc increase your speed, Bring in the ExSpeed leaderstat, as i dont wanna have to mess with making sure the ExSpeed is correct almost every second as that would cause lag.
script.Parent.Touched:connect(function(P) -- Connects a function with the argument P which is the part that touched the part
local PL = game.Players:WaitForChild(P.Parent.Name) -- Gets the player
local H = PL.Character:WaitForChild("Humanoid")
if PL then -- If player is found then
if H then -- If humanoid is found then
H.WalkSpeed = 30 -- Adds the extra speed to the original walk speed
H.WalkSpeed = H.WalkSpeed + PL.leaderstats.ExSpeed.Value
wait(1)
end
end
end)

3 comments
Why do you have a player.leaderstats.extraspeed?
You could just say humanoid.WalkSpeed = Whatever You Want The WalkSpeed To Be
but i want the players to be able to upgrade their extra speed but they also get a normal value at the start too plus their extra speed