Menu
CoddyTech

Prenez possession de l’usine

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

Un tycoon appartient à quelqu’un. Le pad vert 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 stocké dans une variable en haut du script, qui vaut nil jusqu’à ce que quelqu’un revendique le tycoon :

local owner = nil

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

Lorsque le tycoon est revendiqué, tous les droppers qu’il contient démarrent. Les droppers portent un tag, Dropper, donc CollectionService:GetTagged("Dropper") les trouve tous, où qu’ils se trouvent. Les droppers achetés attendront dans ServerStorage ; seuls ceux qui se trouvent dans le workspace démarrent.

challenge icon

Défi

Moyen

Approprie-toi l’usine en marchant sur la plateforme verte.

  1. Supprime la ligne startDropper(tycoon.Dropper). En haut, récupère CollectionService et ajoute local owner = nil.
  2. Quand un joueur touche tycoon.ClaimPad et qu’il n’y a pas de propriétaire : fais de ce joueur le propriétaire et démarre chaque distributeur de CollectionService:GetTagged("Dropper") qui se trouve dans l’espace de travail.
  3. Au collecteur, ne paie que owner.

Appuie sur « Jouer » : rien ne tombe tant que tu n’as pas marché sur la plateforme verte. Ensuite, appuie sur « Vérifier ».

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, déposé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)

-- Leçon 6 : la fonctionnalité Claim the Factory se place ici

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

Entraînez-vous par vous-même : Playground Roblox