I'm trying to make a script that mimics temperature by assigning an IntValue to players so it may measure the amount of heat they receive. As shown in the script below, I'm trying to make it so whenever players are within a certain distance of a heat source, their temperature IntValue increases by one, and when they leave the radius, that increase is removed. I thought what I have would work, but it doesn't work as I thought it would.
local Players = game:GetService("Players") local player = Players.LocalPlayer or Players:GetPropertyChangedSignal("LocalPlayer"):wait() local char = player.Character or player.CharacterAdded:Wait() local fire = workspace.Heat local warmDist = 12 local temp = game.ReplicatedStorage:WaitForChild(player.Name):WaitForChild("Temp") local inside = false while true do wait(1) local distance = (char.HumanoidRootPart.Position - fire.Position).magnitude if distance <= warmDist then inside = true elseif distance > warmDist then inside = false end end function updateTemp() if inside == true then temp.Value = (temp.Value)+1 elseif inside == false then temp.Value = (temp.Value)-1 end end inside.Changed:Connect(updateTemp)
I tried to turn the localscript into a normal script yet it still didn't work. Here's what I had with the adjusts I made:
local Players = game:GetService("Players") local player = Players.LocalPlayer or Players:GetPropertyChangedSignal("LocalPlayer"):wait() local char = player.Character or player.CharacterAdded:Wait() local fire = workspace.Heat local warmDist = 12 local tempVal = game.ReplicatedStorage:WaitForChild(player.Name):WaitForChild("Temp").Value local tempCheck = game.ReplicatedStorage.RemoteEvents.Temperature local inside = false while true do wait(1) local distance = (char.HumanoidRootPart.Position - fire.Position).magnitude if distance <= warmDist then inside = true elseif distance > warmDist then inside = false end end function updateTemp() if inside == true then tempVal = tempVal+1 tempCheck:FireServer(tempVal) elseif inside == false then tempVal = tempVal-1 tempCheck:FireServer(tempVal) end end inside.Changed:Connect(updateTemp)
So you should try this for a LocalScript, because you need to access LocalScript (it depends, but I'd recommend localscript)
Well I stated in the comment, while true do loop stuck the function to update the temperature. What you are gonna do is like this:
local Players = game:GetService("Players") local player = Players.LocalPlayer -- it makes me confuse about using or things in these variables local char = player.Character local fire = workspace.Heat local warmDist = 12 local tempVal = game.ReplicatedStorage:WaitForChild(player.Name):WaitForChild("Temp").Value local tempCheck = game.ReplicatedStorage.RemoteEvents.Temperature while wait(1) do local distance = (char.HumanoidRootPart.Position - fire.Position).magnitude if distance <= warmDist then tempVal = tempVal+1 else tempVal = tempVal-1 end end
I had changed to my own version using the things i stated in comment, also gtg bye i dont know what to make this as an outro so bye bye