المُسقِط
الدرس 2 من 18 في دورة لعبة Roblox: تايكون المصنع على Coddy.
يبدأ المال بالخام. الصندوق الرمادي فوق الناقل، workspace.Tycoon.Dropper، يُسقط جزءًا صغيرًا كل ثانية. يحمل كل خام قيمته كسمة attribute، وهي قيمة مسماة يمكنك تخزينها على أي نسخة:
ore:SetAttribute("Value", 10)
print(ore:GetAttribute("Value")) --> 10يستمر الإسقاط إلى الأبد، لذا فهو حلقة. الحلقة التي تنتظر ستعيق بقية البرنامج النصي، لذلك تعمل حلقة المُسقِط بالتوازي معه، ضمن task.spawn، وتتوقف إذا غادر المُسقِط العالم في أي وقت:
task.spawn(function()
while dropper:IsDescendantOf(workspace) do
dropOre(dropper)
task.wait(Settings.DropInterval)
end
end)الجزء الجديد غير مثبت ما لم تثبّته، لذا يسقط الخام من المُسقِط من تلقاء نفسه.
التحدي
سهلاجعل المُسقِط يُسقِط خامًا:
- بالقرب من الأعلى:
local tycoon = workspace.Tycoon. - اكتب
dropOre(dropper): جزءًا بحجم 1 × 1 × 1 اسمهOre، رمادي اللون (Color3.fromRGB(150, 150, 160))، على بُعد 2.5 studs أسفل المُسقِط، مع سمةValueمضبوطة علىSettings.OreValue، ويكون تابعًا لمساحة العمل. - اكتب
startDropper(dropper): داخلtask.spawn، ما دام المُسقِط موجودًا في مساحة العمل، أسقِط خامًا وانتظرSettings.DropIntervalثانية. - استدعِ
startDropper(tycoon.Dropper).
اضغط Play: سيتراكم الخام أسفل المُسقِط. ثم اضغط Check.
جرّب بنفسك
local Players = game:GetService("Players")
local Settings = require(game.ReplicatedStorage.Settings)
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)
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.