I'm working on a heal power up that heals a player to max health, rests for thirty seconds, and then it reenables itself to be used again. I'm using the method that Urist McSpark implemented in one of his Hour of Code videos, where the script is finding the parent of whatever part touched it. If the parent is a player, then it finds its "Humanoid" and resets the health back to max. The problem that I ran into while testing this is that the mesh of the hat keeps touching the power up first, and its parent is the hat itself (Which is obviously not a player). Below I'll put the code I've written:
local medkit = script.Parent
local da = medkit.DecalA
local db = medkit.DecalB
local cooldown = 30
local isOn = true
local function turnoff()
medkit.Transparency = .7
da.Transparency = .7
db.Transparency = .7
isOn = false
end
local function turnOn()
medkit.Transparency = 0
da.Transparency = 0
db.Transparency = 0
isOn = true
end
local function heal(part)
if (isOn == false) then return end
if (isOn == true) then
local parent = part.Parent
local health = parent.Humanoid.Health
if game.Players:GetPlayerFromCharacter(parent)then
parent.Humanoid.Health = parent.Humanoid.MaxHealth
turnoff()
end
end
end
medkit.Touched:connect(heal)
while true do
wait(cooldown)
if (isOn == false) then turnOn() end
end
As I asked in the title, how can I detect players in a better way? I apologize if it's an obvious question, as I've just picked up scripting last week. I feel like the answer is obvious, but I'm not picking up on it. Thanks in advance.
