השלט
שיעור 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 = guiUDim2.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: ה-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 אונליין