Menu
CoddyTech

Le panneau

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

Une pancarte au-dessus de l’usine indique à qui elle appartient. Le texte affiché sur la face d’une pièce est un SurfaceGui dans la pièce, qui contient un TextLabel. Les étiquettes nommées sont faciles à retrouver, et une petite fonction regroupe toutes les modifications apportées à la pancarte au même endroit :

local gui = Instance.new("SurfaceGui")
gui.Parent = tycoon.Sign

local signLabel = Instance.new("TextLabel")
signLabel.Name = "Status"
signLabel.Size = UDim2.fromScale(1, 1)
signLabel.TextScaled = true
signLabel.Text = "Opening soon"
signLabel.Parent = gui

UDim2.fromScale(1, 1) fait remplir toute la face à l’étiquette, et TextScaled ajuste le texte à celle-ci.

challenge icon

Défi

Moyen

Place une enseigne au-dessus de l’usine indiquant à qui elle appartient.

  1. Dans tycoon.Sign, ajoute un SurfaceGui contenant un TextLabel nommé Status qui le remplit, avec un texte mis à l’échelle affichant Step on the green pad to claim this factory.
  2. Écris setSign(text), qui définit le Text de cette étiquette.
  3. Lorsque l’usine est revendiquée, appelle setSign(player.Name .. "'s Factory").

Appuie sur « Jouer » et marche sur la dalle verte : l’enseigne affiche ton nom. Puis appuie sur « Vérifier ».

Essayez vous-même

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

local tycoon = workspace.Tycoon
local owner = nil

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)

-- Leçon 7 : le panneau va ici

-- Minerai : une petite pièce qui vaut du Cash, lâchée sous un distributeur
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

-- 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()
		if owner then
			owner.leaderstats.Cash.Value += value
		end
	end
end)

-- Prise de possession : le premier joueur à marcher sur la plaque devient propriétaire de l’usine
local claimPad = tycoon.ClaimPad
claimPad.Touched:Connect(function(hit)
	local player = Players:GetPlayerFromCharacter(hit.Parent)
	if player and not owner then
		owner = player
		claimPad.Color = Color3.fromRGB(120, 120, 120)
		claimPad.Material = Enum.Material.SmoothPlastic
		for _, dropper in CollectionService:GetTagged("Dropper") do
			if dropper:IsDescendantOf(workspace) then
				startDropper(dropper)
			end
		end
	end
end)

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

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