Menu
CoddyTech

Réclamez l’usine

Leçon 6 sur 18 du cours Jeu Roblox : Tycoon d’usine de Coddy.

Un tycoon appartient à quelqu’un. La plaque verte près de l’entrée permet de le revendiquer : le premier joueur qui marche dessus en devient le propriétaire, l’usine démarre et seul le propriétaire est payé. Le propriétaire est une variable en haut du script, à nil jusqu’à ce que quelqu’un revendique l’usine :

local owner = nil

claimPad.Touched:Connect(function(hit)
	local player = Players:GetPlayerFromCharacter(hit.Parent)
	if player and not owner then
		owner = player
	end
end)

Quand l’usine est revendiquée, chaque distributeur qu’elle contient démarre. Les distributeurs portent une balise, Dropper, afin que CollectionService:GetTagged("Dropper") les trouve tous, où qu’ils se trouvent. Les distributeurs achetés attendront dans ServerStorage ; seuls ceux qui se trouvent dans l’espace de travail démarrent donc.

Plus tard, l’usine peut être revendiquée à nouveau après le départ de son propriétaire. Pour qu’aucun distributeur ne lance jamais deux boucles, startDropper marque un distributeur en cours d’exécution avec un attribut et ne fait rien si celui-ci est défini.

Un panneau au-dessus de l’usine indique à qui elle appartient : un SurfaceGui sur tycoon.Sign, comme sur n’importe quel panneau.

challenge icon

Défi

Moyen

Rendre l’usine revendicable :

  1. Récupère CollectionService et ajoute local owner = nil près du début.
  2. Place un panneau sur tycoon.Sign : un SurfaceGui avec un TextLabel nommé Status qui le remplit, avec du texte blanc mis à l’échelle sur un fond sombre, affichant Step on the green pad to claim this factory, et une fonction setSign(text).
  3. Dans startDropper, retourne immédiatement si l’attribut Running du dropper est défini ; sinon, définis-le, puis efface-le lorsque la boucle se termine.
  4. Supprime la ligne qui démarre tycoon.Dropper. Lorsqu’un joueur marche sur tycoon.ClaimPad et qu’il n’y a pas de propriétaire : fais-en le propriétaire, grise la plateforme (Color3.fromRGB(120, 120, 120), SmoothPlastic), définis le panneau sur Player1's Factory (avec son Name), et démarre chaque dropper balisé dans l’espace de travail.
  5. Ne paie que le propriétaire au collecteur (s’il y en a un).

Appuie sur Play et revendique ton usine, puis sur Check.

Essayez vous-même

local Players = game:GetService("Players")
local Debris = game:GetService("Debris")
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)
	if math.random() < Settings.GoldChance then
		ore.Color = Color3.fromRGB(255, 200, 40)
		ore.Material = Enum.Material.Neon
		ore:SetAttribute("Value", Settings.OreValue * 5)
	end
	ore.Parent = workspace
	Debris:AddItem(ore, 20)
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)
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Jeu Roblox : Tycoon d’usine