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: توضع اللافتة هنا

-- 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: قطب المصنع

تدرّب بنفسك: Playground لـ Roblox