Menu
CoddyTech

Minerale d’oro

Lezione 5 di 22 del corso Gioco Roblox: Tycoon della fabbrica di Coddy.

Un po' di fortuna tiene i giocatori con gli occhi sul nastro trasportatore: alcuni minerali sono d'oro e valgono cinque volte tanto. math.random() senza argomenti restituisce un numero da 0 fino a (escluso) 1, quindi è inferiore a 0.1 una volta su dieci:

if math.random() < Settings.GoldChance then
	-- questo è d'oro
end

Il minerale d'oro brilla (Neon) e vale Settings.OreValue * 5.

Durante la vita del gioco, alcuni minerali cadranno dal nastro trasportatore. Debris:AddItem(ore, 20) rimuove ogni minerale dopo 20 secondi, ovunque sia finito, così il mondo non si riempie mai di parti sparse.

challenge icon

Sfida

Facile

Fai in modo che un minerale su dieci sia d’oro e rimuovi i minerali rimasti in giro.

  1. In dropOre, se math.random() < Settings.GoldChance: colora il minerale con Color3.fromRGB(255, 200, 40), impostane il materiale su Neon e imposta il suo Value su Settings.OreValue * 5.
  2. Dopo aver impostato il genitore del minerale, chiama Debris:AddItem(ore, 20).

Premi «Gioca»: ogni tanto un minerale d’oro luminoso percorre il nastro e frutta 50. Poi premi «Verifica».

Provalo tu

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

local tycoon = workspace.Tycoon

print("Ore is worth " .. Settings.OreValue .. " Cash")

-- Ogni giocatore riceve Cash nella classifica
Players.PlayerAdded:Connect(function(player)
	local leaderstats = Instance.new("Folder")
	leaderstats.Name = "leaderstats"
	leaderstats.Parent = player

	local cash = Instance.new("IntValue")
	cash.Name = "Cash"
	cash.Parent = leaderstats
end)

-- Ore: una piccola parte che vale Cash, rilasciata sotto un dropper
local function dropOre(dropper)
	local ore = Instance.new("Part")
	ore.Name = "Ore"
	ore.Size = Vector3.new(1, 1, 1)
	ore.Color = Color3.fromRGB(150, 150, 160)
	ore.Position = dropper.Position - Vector3.new(0, 2.5, 0)
	ore:SetAttribute("Value", Settings.OreValue)
	-- Lezione 5: Gold Ore va qui
	ore.Parent = workspace
end

local function startDropper(dropper)
	task.spawn(function()
		while dropper:IsDescendantOf(workspace) do
			dropOre(dropper)
			task.wait(Settings.DropInterval)
		end
	end)
end

startDropper(tycoon.Dropper)

-- Il nastro trasportatore trasporta tutto ciò che vi si trova sopra
tycoon.Conveyor.AssemblyLinearVelocity = Vector3.new(Settings.BeltSpeed, 0, 0)

-- Il raccoglitore trasforma Ore in Cash
tycoon.Collector.Touched:Connect(function(hit)
	if hit.Name == "Ore" then
		local value = hit:GetAttribute("Value")
		hit:Destroy()
		for _, player in Players:GetPlayers() do
			player.leaderstats.Cash.Value += value
		end
	end
end)

Tutte le lezioni di Gioco Roblox: Tycoon della fabbrica

Esercitati da solo: Playground Roblox