Menu
CoddyTech

Divida uma Pilha

Lição 3 de 18 do curso Jogo Roblox: Simulador de Pets da Coddy.

Os jogadores quebram pilhas clicando nelas. Um ClickDetector dentro de uma peça dispara MouseClick no servidor, com o jogador que clicou, quando ele está perto o suficiente.

Cada clique subtrai 1 da Health da pilha. Quando ela chega a 0, a pilha quebra: o jogador recebe o Value dela em moedas, e a pilha é destruída.

local health = pile:GetAttribute("Health") - 1
if health > 0 then
	pile:SetAttribute("Health", health)
	return
end
-- quebrado

O clique é conectado dentro de spawnPile, e chama hitPile, que é escrita abaixo de spawnPile. Uma função só pode usar um nome local que já tenha sido declarado, então declare local hitPile primeiro, acima de ambas, e preencha depois com function hitPile(player, pile).

challenge icon

Desafio

Fácil
  1. Acima de spawnPile, declare local hitPile.
  2. Em spawnPile, adicione um ClickDetector à pilha e conecte seu MouseClick a hitPile(player, pile).
  3. Abaixo de spawnPile, escreva function hitPile(player, pile): subtraia 1 do atributo Health; se ainda estiver acima de 0, armazene esse valor e pare; caso contrário, adicione o Value da pilha aos Coins do jogador e destrua a pilha.

Pressione Play e clique em uma pilha três vezes. Depois, Check.

Experimente você mesmo

local Players = game:GetService("Players")
local ServerStorage = game:GetService("ServerStorage")
local Settings = require(game.ReplicatedStorage.Settings)

local piles = workspace.Piles

print("A Meadow pile gives " .. Settings.PileValue .. " coins")

-- Todos os jogadores recebem Coins no placar
Players.PlayerAdded:Connect(function(player)
	local leaderstats = Instance.new("Folder")
	leaderstats.Name = "leaderstats"
	leaderstats.Parent = player

	local coins = Instance.new("IntValue")
	coins.Name = "Coins"
	coins.Parent = leaderstats
end)

-- Uma pilha de moedas em um ponto: uma cópia de ServerStorage.CoinPile com sua vida
-- e seu valor como atributos
local function spawnPile(spot)
	local pile = ServerStorage.CoinPile:Clone()
	pile.Position = spot.Position
	pile:SetAttribute("MaxHealth", Settings.PileHealth)
	pile:SetAttribute("Health", Settings.PileHealth)
	pile:SetAttribute("Value", Settings.PileValue)
	pile.Parent = piles
	return pile
end

-- Uma pilha em cada ponto de Meadow
for _, spot in workspace.Zones.Meadow.Spawns:GetChildren() do
	spawnPile(spot)
end
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Jogo Roblox: Simulador de Pets