Menu
CoddyTech

Monete sullo schermo

Lezione 5 di 18 del corso Gioco Roblox: Simulatore di animali domestici di Coddy.

Ora il client. PetClient è uno LocalScript all'interno dell'HUD, una ScreenGui che Roblox copia da StarterGui sullo schermo di ogni giocatore quando genera il personaggio. Un LocalScript viene eseguito sul dispositivo del giocatore stesso e può identificare il giocatore per cui viene eseguito:

local me = game:GetService("Players").LocalPlayer

Il server inserisce leaderstats nel giocatore poco dopo che si unisce, quindi il client lo attende con WaitForChild. Poi mostra le monete nell'etichetta Coins dell'HUD e lo aggiorna ogni volta che cambiano: l'evento Changed di un IntValue si attiva con il nuovo valore.

L'etichetta mostra solo ciò che ha deciso il server. Modificare Coins.Value in un LocalScript cambierebbe la visualizzazione di questo giocatore, ma non cambierebbe nulla sul server.

challenge icon

Sfida

Medio

In PetClient:

  1. Ottieni Players, local me = Players.LocalPlayer e local hud = script.Parent.
  2. Attendi leaderstats e il suo Coins.
  3. Scrivi showCoins(), che imposta hud.Coins.Text su Coins: 5 (il valore), chiamala una volta e collegala a Coins.Changed.

Premi Play e rompi una pila. Poi Check.

Provalo tu

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

local piles = workspace.Piles
local pileSpot = {} -- ogni mucchio -> il punto su cui si trova

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

-- Ogni giocatore riceve Coins nella classifica
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)

-- Il clic su un mucchio richiede hitPile, definita sotto spawnPile: dichiarala
-- qui, prima di entrambe
local hitPile

-- Un mucchio di monete su un punto: una copia di ServerStorage.CoinPile con la sua salute
-- e il suo valore come attributi
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)
	-- cliccaci sopra per colpirlo
	local detector = Instance.new("ClickDetector")
	detector.Parent = pile
	pileSpot[pile] = spot
	pile.Parent = piles
	detector.MouseClick:Connect(function(player)
		hitPile(player, pile)
	end)
	return pile
end

-- Un colpo riduce di 1 la salute di un mucchio;
-- a 0 il mucchio si rompe e assegna il suo valore
function hitPile(player, pile)
	local health = pile:GetAttribute("Health") - 1
	if health > 0 then
		pile:SetAttribute("Health", health)
		return
	end
	player.leaderstats.Coins.Value += pile:GetAttribute("Value")
	local spot = pileSpot[pile]
	pileSpot[pile] = nil
	pile:Destroy()
	-- un nuovo mucchio nello stesso punto, qualche secondo dopo
	task.delay(Settings.RespawnTime, spawnPile, spot)
end

-- Un mucchio su ogni punto della Meadow
for _, spot in workspace.Zones.Meadow.Spawns:GetChildren() do
	spawnPile(spot)
end
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Gioco Roblox: Simulatore di animali domestici