Menu
CoddyTech

השלט

שיעור 7 מתוך 22 בקורס משחק Roblox: איל מפעל של Coddy.

שלט מעל המפעל מציין למי הוא שייך. טקסט על פני השטח של חלק הוא SurfaceGui בתוך החלק, ובו TextLabel. קל למצוא תוויות עם שמות שוב, ופונקציה קטנה מרכזת במקום אחד כל שינוי בשלט:

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) גורם לתווית למלא את כל פני השטח, ו-TextScaled מתאים את המילים אליו.

challenge icon

אתגר

בינוני

הצב שלט מעל המפעל שמציין למי הוא שייך.

  1. ב־tycoon.Sign, הוסף SurfaceGui שמכיל TextLabel בשם Status שממלא אותו, עם טקסט מותאם לגודל שכתוב בו Step on the green pad to claim this factory.
  2. כתוב את setSign(text), שמגדירה את Text של התווית.
  3. כשהמפעל נתבע, קרא ל־setSign(player.Name .. "'s Factory").

לחץ על "שחק" ודרוך על המשטח הירוק: השלט מציג את שמך. לאחר מכן לחץ על "בדיקה".

נסו בעצמכם

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

-- כל שחקן מקבל Cash בלוח המובילים
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)

-- שיעור 7: ה-Sign ממוקם כאן

-- Ore: חלק קטן ששווה Cash, שנופל מתחת למתקן ההפלה
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

-- המסוע מוביל את כל מה שמונח עליו
tycoon.Conveyor.AssemblyLinearVelocity = Vector3.new(Settings.BeltSpeed, 0, 0)

-- מתקן האיסוף הופך Ore ל-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)

-- תפיסת בעלות: השחקן הראשון שדורך על המשטח הופך לבעל המפעל
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: איל מפעל

תרגלו בעצמכם: Roblox אונליין