I made a script that lowers the health of a building that you are touching every 1 second. I have an IntValue in each building that is called Health. My script is:
game.Players.PlayerAdded:Connect(function(player)
local debris = player:WaitForChild("leaderstats").Debris
while true do
wait(1)
repeat wait (1) until game.Workspace:FindFirstChild("ClonedMap")
local ClonedMap = game.Workspace:WaitForChild("Map")
local destructible = ClonedMap.Buildings:GetChildren()
wait(2)
for i,v in pairs(destructible) do
for a,k in pairs(v:GetChildren()) do
if k:IsA("Part") or k:IsA("BasePart") then
k.Touched:Connect(function(hit)
if hit.Parent:FindFirstChild("Humanoid") then
v:FindFirstChild("Health").Value = v:FindFirstChild("Health").Value - game.Players.LocalPlayer:FindFirstChild("Morph").Damage.Value
if v:FindFirstChild("Health").Value == 0 then
v:Destroy()
print("Building destroyed.")
end
game.Players.LocalPlayer.leaderstats.Debris.Value = game.Players.LocalPlayer.leaderstats.Debris.Value + 10
end
end)
end
end
end
end
end)
No errors in the output. It's also meant to check if what you are touching is a building, hence "destructible," then give you a currency called debris.
