Deshacer un montón
Lección 3 de 18 del curso Juego de Roblox: simulador de mascotas de Coddy.
Los jugadores rompen las pilas al hacer clic en ellas. Un ClickDetector dentro de una pieza activa MouseClick en el servidor, con el jugador que hizo clic, cuando está lo bastante cerca.
Cada clic resta 1 de Health de la pila. Cuando llega a 0, la pila se rompe: el jugador recibe su Value en monedas y la pila se destruye.
local health = pile:GetAttribute("Health") - 1
if health > 0 then
pile:SetAttribute("Health", health)
return
end
-- rotoEl clic se conecta dentro de spawnPile y llama a hitPile, que se escribe debajo de spawnPile. Una función solo puede usar un nombre local que ya se haya declarado, así que declara primero local hitPile, antes de ambas, y complétala más tarde con function hitPile(player, pile).
Desafío
Fácil- Encima de
spawnPile, declaralocal hitPile. - En
spawnPile, agrega un ClickDetector a la pila y conecta suMouseClickconhitPile(player, pile). - Debajo de
spawnPile, escribefunction hitPile(player, pile): resta 1 al atributo Health; si sigue por encima de 0, guárdalo y detente; de lo contrario, agrega el Value de la pila a Coins del jugador y destruye la pila.
Pulsa Play y haz clic en una pila tres veces. Después, Check.
Pruébalo tú mismo
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")
-- Cada jugador recibe Coins en la tabla de clasificación
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)
-- Una pila de monedas en un punto: una copia de ServerStorage.CoinPile con su salud
-- y su 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
-- Una pila en cada punto de Meadow
for _, spot in workspace.Zones.Meadow.Spawns:GetChildren() do
spawnPile(spot)
end
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.