Sistema de moedas coletáveis
Esse sistema usa um único código que observa todas as moedas ou coletáveis do jogo. Para isso, temos que colocar todas as moedas dentro de uma única pasta. Vamos renomear a pasta para Moedas, já que é assim que a chamamos no código.

Após isso vamos para o a pasta ServerScriptServices. Nela vamos criar um script e colocar o seguinte código:
local Workspace = game:GetService("Workspace")
local Players = game:GetService("Players")
local pastaMoedas= Workspace.Moedas
local moedas = pastaMoedas:GetChildren()
for _, moeda in moedas do
moeda.Touched:Connect(function(outraParte)
local character = outraParte.Parent
local player = Players:GetPlayerFromCharacter(character)
if player then
--Aqui dentro conseguimos colocar o que vai acontecer ao tocar a moeda
moeda.Transparency = 1
end
end)
end
Indo um passo a frente
Se quisermos fazer um sistema de pontuação, o código se torna mais complexo. Vamos primeiro criar mais um script dentro de ServerScriptServices (nesse momento eu recomendo renomear ambos para não confundir o que cada um deles faz). Abaixo tem a versão atualizada do script que faz a moeda funcionar e, em seguida, o da pontuação.
local Workspace = game:GetService("Workspace")
local Players = game:GetService("Players")
local pastaMoedas= Workspace.Moedas
local moedas = pastaMoedas:GetChildren()
for _, moeda in moedas do
moeda:SetAttribute("Enabled", true)
moeda.Touched:Connect(function(outraParte)
if moeda:GetAttribute("Enabled") then
local character = outraParte.Parent
local player = Players:GetPlayerFromCharacter(character)
if player then
local pontos = player.leaderstats.Pontos
moeda.Transparency = 1
pontos.Value +=1
moeda:SetAttribute("Enabled", false )
end
end
end)
end
local Players = game:GetService("Players")
local function onCharacterAdded(character, player)
player:SetAttribute("IsAlive", true)
local humanoid = character:WaitForChild("Humanoid")
-- Se não quiser que a pontuação do jogador zere quando ele morra, delete esse pequeno bloco de texto abaixo.
humanoid.Died:Connect(function()
local points = player.leaderstats.Points
points.Value = 0
player:SetAttribute("IsAlive", false)
end)
end
local function onPlayerAdded(player)
local leaderstats = Instance.new("Folder")
leaderstats.Name = "leaderstats"
leaderstats.Parent = player
local points = Instance.new("IntValue")
points.Name = "Pontos"
points.Value = 0
points.Parent = leaderstats
player:SetAttribute("IsAlive", false)
player.CharacterAdded:Connect(function(character)
onCharacterAdded(character, player)
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)
Sua pasta ServerScriptServices deve ficar assim:
