اللافتة
الدرس 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 الكلمات عليه.
التحدي
متوسطضع لافتة فوق المصنع توضّح لمن يعود.
- في
tycoon.Sign، أضف SurfaceGui يحتوي على TextLabel باسمStatusيملؤه، مع نص مكبّر يقرأStep on the green pad to claim this factory. - اكتب
setSign(text)، التي تضبط Text لذلك الملصق. - عندما يُطالب أحدهم بالمصنع، استدعِ
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