Menu
CoddyTech

Tabela

Coddy'nin Roblox Oyunu: Fabrika Tycoon kursunda ders 7 / 22.

Fabrikanın üzerindeki tabela, fabrikanın kime ait olduğunu belirtir. Bir parçanın yüzeyindeki metin, parçanın içinde bulunan ve bir TextLabel içeren bir SurfaceGui'dir. Adlandırılmış etiketleri yeniden bulmak kolaydır ve küçük bir işlev, tabeladaki her değişikliği tek bir yerde tutar:

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) etiketi tüm yüzeyi kaplayacak şekilde boyutlandırır ve TextScaled sözcükleri yüzeye sığdırır.

challenge icon

Görev

Orta

Fabrikanın kime ait olduğunu belirten bir tabelayı fabrikanın üzerine yerleştir.

  1. tycoon.Sign içine, fabrikayı kaplayan ve Status adında bir TextLabel içeren bir SurfaceGui ekle; metni ölçekli olsun ve Step on the green pad to claim this factory yazsın.
  2. Bu etiketin Text özelliğini ayarlayan setSign(text) fonksiyonunu yaz.
  3. Fabrika sahiplenildiğinde setSign(player.Name .. "'s Factory") çağır.

“Oyna” düğmesine bas ve yeşil platforma bas: tabelada adın görünür. Ardından “Kontrol et” düğmesine bas.

Kendin dene

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

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

-- Ders 7: Sign buraya yerleştirilir

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

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

-- Toplayıcı, Ore'yi 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()
		if owner then
			owner.leaderstats.Cash.Value += value
		end
	end
end)

-- Sahiplenme: platforma ilk basan oyuncu fabrikanın sahibi olur
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)

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

Kendi başına pratik yap: Roblox playground