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.
Défi
MoyenApproprie-toi l’usine en marchant sur la plateforme verte.
- Supprime la ligne
startDropper(tycoon.Dropper). En haut, récupèreCollectionServiceet ajoutelocal owner = nil. - Quand un joueur touche
tycoon.ClaimPadet qu’il n’y a pas de propriétaire : fais de ce joueur le propriétaire et démarre chaque distributeur deCollectionService:GetTagged("Dropper")qui se trouve dans l’espace de travail. - 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
2Votre empire
Prenez possession de l’usineEntraînez-vous par vous-même : Playground Roblox