Menu
CoddyTech

Tablica

Lekcja 7 z 22 w kursie Gra Roblox: Fabryka Tycoon w Coddy.

Na szyldzie nad fabryką jest napisane, do kogo ona należy. Napis na powierzchni części to SurfaceGui znajdujący się w tej części i zawierający TextLabel. Nazwane etykiety łatwo ponownie znaleźć, a mała funkcja pozwala umieścić wszystkie zmiany na szyldzie w jednym miejscu:

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) sprawia, że etykieta wypełnia całą powierzchnię, a TextScaled dopasowuje do niej słowa.

challenge icon

Wyzwanie

Średni

Umieść nad fabryką znak informujący, do kogo należy.

  1. W tycoon.Sign dodaj SurfaceGui zawierający TextLabel o nazwie Status, który wypełnia całą powierzchnię i wyświetla przeskalowany tekst Step on the green pad to claim this factory.
  2. Napisz funkcję setSign(text), która ustawia właściwość Text tej etykiety.
  3. Gdy ktoś przejmie fabrykę, wywołaj setSign(player.Name .. "'s Factory").

Naciśnij „Graj” i wejdź na zieloną płytkę: na znaku pojawi się twoje imię. Następnie naciśnij „Sprawdź”.

Spróbuj swoich sił

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

-- Każdy gracz otrzymuje Cash w tabeli wyników
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)

-- Lekcja 7: tutaj umieść The Sign

-- Ore: mały element wart Cash, wypadający z urządzenia zrzucającego
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

-- Taśmociąg przenosi wszystko, co na nim leży
tycoon.Conveyor.AssemblyLinearVelocity = Vector3.new(Settings.BeltSpeed, 0, 0)

-- Kolektor zamienia rudę w Cash
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)

-- Przejęcie: pierwszy gracz, który stanie na płycie, zostaje właścicielem fabryki
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)

Wszystkie lekcje w sekcji Gra Roblox: Fabryka Tycoon

Poćwicz samodzielnie: Edytor online Roblox