Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
COMMUNITY QUESTION

Temperature script not working; what is the problem?

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)

3 comments

0

uh maybe try a regular script

0

u sure men localplayer cant access in script

0

This script is a local script, the script below is just a normal script. Searching for localplayer in the script below is definitely a problem I didn't notice before, but it should've worked for the localscirpt.

2 answers

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)

3 comments

0

You don't need to make two wait for child(s) in line 8, just put 1 wait for child. change the wait for child temp to .Temp only

0

ALSO ALSO ALSO i dont recommend using elseif in this kind of if statement, because it is just 2 if things (in function) just use if-else

0

also while true do loop make the function stuck lol

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

2 comments

0

Thank you so much for your help! This is a big help to me and I'll build off this!

0

No problemo

This discussion is preserved as it was. New answers, comments, and votes are closed.