I'm trying to make it so that when you run over the touched block with a certain tool the tool will only be removed and points will only be given for a certain color.
Right now whether it is purple or gray the tool will be removed and XP will be given. I only want XP to be given and the tool to be removed if the block is purple. The particle is also not working in this current version.
I had started with a removal code which worked great when I didn't care about the color of the block. I thought part of the problem was it didn't have a debounce so I added that. I tried elseif statements which will print into Output but does not stop the tool from being removed. I tried doubling the check for purple twice so maybe it would stop it somewhere, and no.
Basically it seems like it always thinks the current color of the part is 'purple' because the if statement isn't using it as a conditional. It will remove the part and give XP.
Here's the code as it is:
local expPart = script.Parent
local debounce = true
local purple = Color3.fromRGB(100, 0, 100)
local gray = Color3.fromRGB(67, 67, 67)
currentColor = expPart.Color
local function delivery(hit)
if currentColor == purple and debounce then
debounce = false
local Humanoid = hit.Parent:FindFirestChild("Humanoid")
if currentColor == purple and Humanoid and debounce == false then
for i,item in pairs(hit.Parent:GetChildren()) do
if item.Name == "Box" and item:IsA("Tool") then
local stats = game.Players[hit.Parent.Name].leaderstats
local expGive = stats:WaitForChild("XP")
expGive.Value = expGive.Value +10
local playerCharacter = game.Players[hit.Parent.Name].Character
local particle = Instance.new("ParticleEmitter")
particle.Color = ColorSequence.new(currentColor)
particle.Parent = playerCharacter:WaitForChild("Head")
debounce = true
wait(2)
particle:Destroy()
item:Destroy()
end
end
for i,item in pairs(game.Players[hit.Parent.Name].Backpack:GetChildren()) do
if item.Name == "Box" and item:IsA("Tool") then
item:Destroy()
wait(2)
debounce = true
end
end
end
wait(2)
debounce = true
elseif currentColor == gray and debounce then
debounce = false
print("It is gray")
wait(2)
debounce = true
return
end
end
expPart.Touched:Connect(delivery)
while true do
local randomTimer = math.random(1,22)
expPart.Color = purple
wait(10)
expPart.Color = gray
wait(randomTimer)
end
I started with this code originally:
expPart.Touched:connect(function(hit)
local Humanoid = hit.Parent:FindFirstChild("Humanoid")
if Humanoid and currentColor == purple then
for i,item in pairs(hit.Parent:GetChildren()) do
if item.Name == "Box" and item:IsA("Tool") then
local stats = game.Players[hit.Parent.Name].leaderstats
local expGive = stats:WaitForChild("XP")
expGive.Value = expGive.Value +10
local playerCharacter = game.Players[hit.Parent.Name].Character
local particle = Instance.new("ParticleEmitter")
particle.Color = ColorSequence.new(currentColor)
particle.Parent = playerCharacter:WaitForChild("Head")
wait(1)
particle:Destroy()
item:Destroy()
end
end
for i,item in pairs(game.Players[hit.Parent.Name].Backpack:GetChildren()) do
if item.Name == "Box" and item:IsA("Tool") then
item:Destroy()
end
end
end
end)
I appreciate all of you taking a look at this!
