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
-- quebradoO 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).
Desafio
Fácil- Acima de
spawnPile, declarelocal hitPile. - Em
spawnPile, adicione um ClickDetector à pilha e conecte seuMouseClickahitPile(player, pile). - Abaixo de
spawnPile, escrevafunction 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
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.