local CollectionService = game:GetService("CollectionService")
local taggedOrb = CollectionService:GetTagged('Orb')
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
function debounce(func)
local isRunning = false
return function(hit)
if not isRunning then
isRunning = true
func(hit)
isRunning = false
end
end
end
for _, tagged in pairs(taggedOrb) do
tagged.Touched:Connect(debounce(function(hit)
print("test")
if hit.Parent:FindFirstChild("Humanoid")then
local character = hit.Parent
local player = Players:GetPlayerFromCharacter(character)
if player then
local leaderstats = player.leaderstats
local data = player.Data
if tagged.Name == "small" then
leaderstats.Power.Value = leaderstats.Power.Value + 3
data.Gems.Value = data.Gems.Value + 1
elseif tagged.Name == "medium" then
leaderstats.Power.Value = leaderstats.Power.Value + 7
data.Gems.Value = data.Gems.Value + 3
elseif tagged.Name == "big" then
leaderstats.Power.Value = leaderstats.Power.Value + 15
data.Gems.Value = data.Gems.Value + 5
elseif tagged.Name == "huge" then
leaderstats.Power.Value = leaderstats.Power.Value + 30
data.Gems.Value = data.Gems.Value + 10
end
tagged:Destroy()
end
end
end))
end
Here is the updated code to detect for newly tagged instances and correctly detecting the touched event.
local CollectionService = game:GetService("CollectionService")
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local function onHit(hit)
print("test")
if hit.Parent:FindFirstChild("Humanoid")then
local character = hit.Parent
local player = Players:GetPlayerFromCharacter(character)
if player then
local leaderstats = player.leaderstats
local data = player.Data
if tagged.Name == "small" then
leaderstats.Power.Value = leaderstats.Power.Value + 3
data.Gems.Value = data.Gems.Value + 1
elseif tagged.Name == "medium" then
leaderstats.Power.Value = leaderstats.Power.Value + 7
data.Gems.Value = data.Gems.Value + 3
elseif tagged.Name == "big" then
leaderstats.Power.Value = leaderstats.Power.Value + 15
data.Gems.Value = data.Gems.Value + 5
elseif tagged.Name == "huge" then
leaderstats.Power.Value = leaderstats.Power.Value + 30
data.Gems.Value = data.Gems.Value + 10
end
tagged:Destroy()
end
end
end
local function onInstanceAdded(instance)
instance.Touched:Connect(onHit)
end
local taggedOrb = CollectionService:GetTagged('Orb')
for _, tagged in pairs(taggedOrb) do
onInstanceAdded(tagged)
end
CollectionService:GetInstanceAddedSignal('Orb'):Connect(onInstanceAdded)
Yes but the other script goes through ones that already have their tag at the script’s runtime, therefore if they weren’t loaded in during script runtime they won’t have their touch connection setup.