Le minerai d’or
Leçon 5 sur 18 du cours Jeu Roblox : Tycoon d’usine de Coddy.
Un peu de chance incite les joueurs à garder un œil sur le tapis : certains minerais sont en or et valent cinq fois plus. math.random() sans argument renvoie un nombre de 0 inclus à 1 exclu : le résultat est donc inférieur à 0.1 une fois sur dix :
if math.random() < Settings.GoldChance then
-- celui-ci est en or
endLe minerai d’or brille (Neon) et vaut Settings.OreValue * 5. Les paramètres de cette leçon rendent l’or courant, donc tu en verras beaucoup.
Au fil du jeu, certains minerais tomberont du tapis. Debris:AddItem(ore, 20) supprime chaque minerai après 20 secondes, où qu’il ait atterri, afin que le monde ne se remplisse jamais de pièces égarées.
Défi
FacileDans dropOre :
- Si
math.random() < Settings.GoldChance, rends le minerai doré :Color3.fromRGB(255, 200, 40), Neon et une valeur deSettings.OreValue * 5. - Après avoir défini le parent du minerai, fais en sorte que le service
Debrisle supprime au bout de 20 secondes.
Appuie sur Play et surveille l’apparition d’or, puis clique sur Check.
Essayez vous-même
local Players = game:GetService("Players")
local Settings = require(game.ReplicatedStorage.Settings)
local tycoon = workspace.Tycoon
print("Ore is worth " .. Settings.OreValue .. " Cash")
-- Chaque joueur reçoit du Cash dans le classement
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 : une petite pièce qui vaut du Cash, lâchée sous 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)
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)
-- Le convoyeur transporte tout ce qui repose dessus
tycoon.Conveyor.AssemblyLinearVelocity = Vector3.new(Settings.BeltSpeed, 0, 0)
-- Le collecteur transforme le minerai en 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)
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.