Menu
CoddyTech

Conquista la fabbrica

Lezione 6 di 18 del corso Gioco Roblox: Tycoon della fabbrica di Coddy.

Un tycoon appartiene a qualcuno. Il pad verde vicino all'ingresso lo rivendica: il primo giocatore a salirci diventa il proprietario, la fabbrica si avvia e viene pagato solo il proprietario. Il proprietario è una variabile all'inizio dello script, nil finché qualcuno non rivendica la fabbrica:

local owner = nil

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

Quando la fabbrica viene rivendicata, ogni dropper al suo interno si avvia. I dropper hanno un tag, Dropper, così CollectionService:GetTagged("Dropper") li trova tutti, ovunque si trovino. I dropper acquistati aspetteranno in ServerStorage, quindi si avviano solo quelli presenti nel workspace.

In seguito, la fabbrica può essere rivendicata di nuovo dopo che il proprietario se ne va. Per evitare che un dropper esegua due cicli, startDropper contrassegna con un attributo i dropper in esecuzione e non fa nulla se è impostato.

Un cartello sopra la fabbrica indica a chi appartiene: una SurfaceGui su tycoon.Sign, come su qualsiasi cartello.

challenge icon

Sfida

Medio

Rendi reclamabile la fabbrica:

  1. Ottieni CollectionService e aggiungi local owner = nil vicino all'inizio.
  2. Metti un cartello su tycoon.Sign: una SurfaceGui con un TextLabel chiamato Status che la riempie, con testo bianco ridimensionato su uno sfondo scuro, con la scritta Step on the green pad to claim this factory, e una funzione setSign(text).
  3. In startDropper, restituisci subito se l'attributo Running del dropper è impostato; altrimenti impostalo e cancellalo quando il ciclo termina.
  4. Rimuovi la riga che avvia tycoon.Dropper. Quando un giocatore sale su tycoon.ClaimPad e non c'è un proprietario: assegnagli la proprietà, rendi grigio il pad (Color3.fromRGB(120, 120, 120), SmoothPlastic), imposta il cartello su Player1's Factory (usando il suo Name) e avvia ogni dropper contrassegnato nell'area di lavoro.
  5. Paga solo il proprietario al collettore (se ce n'è uno).

Premi Play e rivendica la tua fabbrica, poi Check.

Provalo tu

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")

-- Ogni giocatore riceve Cash nella classifica
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: un piccolo oggetto che vale Cash, rilasciato sotto 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)

-- Il nastro trasportatore trasporta tutto ciò che vi si trova sopra
tycoon.Conveyor.AssemblyLinearVelocity = Vector3.new(Settings.BeltSpeed, 0, 0)

-- Il raccoglitore trasforma Ore in 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 iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Gioco Roblox: Tycoon della fabbrica