Menu
CoddyTech

Fabrikayı Ele Geçir

Coddy'nin Roblox Oyunu: Fabrika Tycoon kursunda ders 6 / 18.

Bir tycoon birine aittir. Girişin yanındaki yeşil ped bunu sahiplenir: üzerine ilk basan oyuncu sahip olur, fabrika çalışmaya başlar ve yalnızca sahibi ödeme alır. Sahip, betiğin başında tanımlanan tek bir değişkendir; biri sahiplenene kadar nil değerindedir:

local owner = nil

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

Fabrika sahiplenildiğinde, içindeki her damlatıcı çalışmaya başlar. Damlatıcılarda etiket olarak Dropper bulunur; böylece CollectionService:GetTagged("Dropper"), nerede olurlarsa olsunlar hepsini bulur. Satın alınan damlatıcılar ServerStorage içinde bekleyeceğinden, yalnızca çalışma alanındakiler çalışmaya başlar.

Sahibi ayrıldıktan sonra fabrika daha sonra yeniden sahiplenilebilir. Hiçbir damlatıcının iki döngüyü aynı anda çalıştırmaması için startDropper, çalışan bir damlatıcıyı bir öznitelikle işaretler ve bu öznitelik ayarlanmışsa hiçbir şey yapmaz.

Fabrikanın üzerindeki bir tabela kime ait olduğunu belirtir: diğer tüm tabelalarda olduğu gibi, tycoon.Sign üzerinde bir SurfaceGui bulunur.

challenge icon

Görev

Orta

Fabrikanın sahiplenilebilir olmasını sağla:

  1. CollectionService'i al ve üst kısımlara yakın bir yere local owner = nil ekle.
  2. tycoon.Sign üzerine bir tabela yerleştir: içinde tamamen yer kaplayan, Status adında bir TextLabel bulunan bir SurfaceGui; koyu arka plan üzerinde beyaz, ölçeklendirilmiş yazı ve Step on the green pad to claim this factory metni; ayrıca bir setSign(text) işlevi.
  3. startDropper içinde, damlalığın Running niteliği ayarlanmışsa hemen geri dön; aksi takdirde niteliği ayarla ve döngü sona erdiğinde temizle.
  4. tycoon.Dropper'ı başlatan satırı kaldır. Bir oyuncu tycoon.ClaimPad üzerine bastığında ve sahibi yoksa: onu sahip yap, pedi griye çevir (Color3.fromRGB(120, 120, 120), SmoothPlastic), tabelayı Player1's Factory olarak ayarla (oyuncunun Name değeriyle) ve çalışma alanında etiketlenmiş her damlalığı başlat.
  5. Toplayıcıda yalnızca sahibine ödeme yap (sahibi varsa).

Play'e bas ve fabrikanı sahiplen, ardından Check'e bas.

Kendin dene

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

-- Her oyuncu, liderlik tablosunda Cash kazanır
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: dropper'ın altına bırakılan, Cash değerinde küçük bir parça
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)

-- Konveyör, üzerindeki her şeyi taşır
tycoon.Conveyor.AssemblyLinearVelocity = Vector3.new(Settings.BeltSpeed, 0, 0)

-- Toplayıcı, Ore'u Cash'e dönüştürür
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 iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Roblox Oyunu: Fabrika Tycoon bölümündeki tüm dersler