Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
1

Temperature script not working; what is the problem?

Asked by 3 years ago

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)
0
uh maybe try a regular script BulletproofVast 1033 — 3y
0
u sure men localplayer cant access in script Xapelize 2658 — 3y
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. ChirpPerson 74 — 3y

2 answers

Log in to vote
0
Answered by 3 years ago

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)
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 Xapelize 2658 — 3y
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 Xapelize 2658 — 3y
0
also while true do loop make the function stuck lol Xapelize 2658 — 3y
Ad
Log in to vote
0
Answered by
Xapelize 2658 Moderation Voter Community Moderator
3 years ago

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

0
Thank you so much for your help! This is a big help to me and I'll build off this! ChirpPerson 74 — 3y
0
No problemo Xapelize 2658 — 3y

Answer this question