Menu
CoddyTech

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
-- roto

El 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).

challenge icon

Desafío

Fácil
  1. Encima de spawnPile, declara local hitPile.
  2. En spawnPile, agrega un ClickDetector a la pila y conecta su MouseClick con hitPile(player, pile).
  3. Debajo de spawnPile, escribe function 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
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Juego de Roblox: simulador de mascotas