I'm trying to make a sprint system that adjusts the max stamina based on a player value, game.workspace.Players.LocalPlayer.Data.MaxStamina.Value, but it says, "attempt to index number with "Data" which from my understanding (not much) means it's trying to access "Data" yet can't, but data is a part of the LocalPlayer, and the exact same line was used earlier and worked. How can I access the value of the MaxStamina?
local replicatedStorage = game:GetService("ReplicatedStorage")
local players = game:GetService("Players")
local runservice = game:GetService("RunService")
local player = game.Players.LocalPlayer
local staminaRegen = 2
local sprintModifier = 3 -- how much the players walk speed is amplified by sprinting
local sprintStaminaCost=1 --how much stamina player uses per frame of sprinting
local sprintingPlayers = {}
players.PlayerAdded:Connect(function(player)
wait(.01)
local maxStamina= player.Data.MaxStamina.Value--this works,
print(maxStamina)
local stamina = Instance.new("IntValue",player.Data)
stamina.Name = "Stamina"
stamina.Value = maxStamina
stamina.Changed:Connect(function(property)
replicatedStorage.Remote.StaminaUpdate:FireClient(player,stamina.Value,maxStamina)
end)
end)
--sprint key is pressed/released
replicatedStorage.Remote.Sprint.OnServerEvent:Connect(function(player, state)
local humanoid = player.Character.Humanoid
if state == "Began" then--and humanoid:GetState() == Enum.HumanoidStateType.RunningNoPhysics and humanoid.MoveDirection.Magnitude >0 then, this part was part of a guide i followed, but prevented from working, and when removed didnt notice any error related to current issue
sprintingPlayers[player.Name] = humanoid.WalkSpeed
humanoid.WalkSpeed = humanoid.WalkSpeed * sprintModifier
elseif state== "Ended"and sprintingPlayers[player.Name] then
humanoid.WalkSpeed = sprintingPlayers[player.Name]
sprintingPlayers[player.Name]= nil
end
end)
--adjust stamina for each player every frame
runservice.Heartbeat:Connect(function()--do I have to pass in player, maxStamina or someother value as a param?
wait(0.1)
local maxStamina = game.Players.LocalPlayer.Data.MaxStamina.Value--this doesn't
print(maxStamina,"\n",maxStamina.Value)
for index, player in pairs(players:GetChildren()) do
local stamina= player.Stamina.Value
local name = player.Name
local maxStamina = player.MaxStamina.Value
if not sprintingPlayers[name] then
if stamina.Value > maxStamina then
stamina.Value = maxStamina
elseif stamina.Value < maxStamina then
stamina.Value = stamina.Value + staminaRegen
end
else
if stamina.Value >= sprintStaminaCost then
stamina.Value= stamina.Value-sprintStaminaCost
else
player.Character.Humanoid.WalkSpeed = sprintingPlayers[name]
sprintingPlayers[name]=nil
end
end
end
end)
here is a screenshot of the location of "Data" https://imgur.com/a/O1I1qRr and the code above is located in ServerScriptService
I've tried to fix this with my very limited knowledge for a couple of hours, so please someone explain how.

1 comment
NeverMind, I figured it out. The lines i was saying dont work were not nessessary as they are accessed in the for loop I guess