Menu
CoddyTech

Rivendica la fabbrica

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

Un tycoon appartiene a qualcuno. Il tappetino verde vicino all'ingresso lo rivendica: il primo giocatore che ci sale sopra diventa il proprietario, la fabbrica si avvia e solo il proprietario viene pagato. Il proprietario è una variabile in cima allo script, nil finché qualcuno non lo rivendica:

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)

Quando la fabbrica viene rivendicata, si avvia ogni droppatore al suo interno. I droppatori hanno il tag Dropper, quindi CollectionService:GetTagged("Dropper") li trova tutti, ovunque si trovino. I droppatori acquistati resteranno in attesa in ServerStorage, quindi si avviano solo quelli nel workspace.

challenge icon

Sfida

Medio

Rendi tua la fabbrica quando sali sulla pedana verde.

  1. Elimina la riga startDropper(tycoon.Dropper). Verso l'inizio, recupera CollectionService e aggiungi local owner = nil.
  2. Quando un giocatore tocca tycoon.ClaimPad e non c'è un proprietario: assegnagli la proprietà e avvia ogni dropper in CollectionService:GetTagged("Dropper") che si trova nel workspace.
  3. Al collettore, paga solo owner.

Premi «Gioca»: non cade nulla finché non sali sulla pedana verde. Poi premi «Verifica».

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: una piccola parte che vale Cash, rilasciata 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 sposta 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)

-- Lezione 6: Claim the Factory va qui

Tutte le lezioni di Gioco Roblox: Tycoon della fabbrica

Esercitati da solo: Playground Roblox