Menu
CoddyTech
flag Ar iconالعربيةdown icon

استحوذ على المصنع

الدرس 6 من 18 في دورة لعبة Roblox: تايكون المصنع على Coddy.

يعود مصنع التايكون إلى شخص ما. اللوحة الخضراء بجانب المدخل تتيح المطالبة به: يصبح أول لاعب يطأها المالك، ويبدأ المصنع بالعمل، ولا يحصل على المال إلا المالك. المالك هو متغير واحد في أعلى البرنامج النصي، وتكون قيمته nil حتى يطالب به أحد:

local owner = nil

claimPad.Touched:Connect(function(hit)
	local player = Players:GetPlayerFromCharacter(hit.Parent)
	if player and not owner then
		owner = player
	end
end)

عند المطالبة بالمصنع، يبدأ كل موزّع فيه بالعمل. تحمل الموزّعات وسمًا، Dropper، لذا يعثر CollectionService:GetTagged("Dropper") عليها كلها أينما كانت. ستنتظر الموزّعات التي تم شراؤها في ServerStorage، لذا لا يبدأ العمل إلا للموجود منها في مساحة العمل.

لاحقًا، يمكن المطالبة بالمصنع مجددًا بعد مغادرة مالكه. ولضمان ألا يشغّل أي موزّع حلقتين أبدًا، تضع startDropper سمةً على الموزّع الجاري تشغيله، ولا تفعل شيئًا إذا كانت السمة مضبوطة.

تُظهر لافتة فوق المصنع لمن تعود ملكيته: واجهة SurfaceGui على tycoon.Sign، كما هو الحال على أي لوحة.

challenge icon

التحدي

متوسط

اجعل المصنع قابلاً للمطالبة به:

  1. احصل على CollectionService، وأضف local owner = nil بالقرب من الأعلى.
  2. ضع لافتة على tycoon.Sign: SurfaceGui مع TextLabel اسمه Status يملؤه، بنص أبيض مكبّر على خلفية داكنة، يقرأ Step on the green pad to claim this factory، ودالة setSign(text).
  3. في startDropper، أوقف التنفيذ فورًا إذا كانت سمة Running الخاصة بالـ dropper مضبوطة؛ وإلا فاضبطها، ثم امسحها عند انتهاء الحلقة.
  4. احذف السطر الذي يبدأ tycoon.Dropper. عندما يخطو لاعب على tycoon.ClaimPad ولا يكون هناك مالك: اجعله المالك، واجعل لون اللوحة رماديًا (Color3.fromRGB(120, 120, 120)، SmoothPlastic)، واضبط اللافتة على Player1's Factory (باستخدام Name الخاص به)، وابدأ كل dropper ذي وسم في مساحة العمل.
  5. ادفع للمالك فقط عند المجمّع (إن وُجد).

اضغط Play وطالب بمصنعك، ثم اضغط Check.

جرّب بنفسك

local Players = game:GetService("Players")
local Debris = game:GetService("Debris")
local Settings = require(game.ReplicatedStorage.Settings)

local tycoon = workspace.Tycoon

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)

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

startDropper(tycoon.Dropper)

-- يحمل الحزام الناقل كل ما يستقر عليه
tycoon.Conveyor.AssemblyLinearVelocity = Vector3.new(Settings.BeltSpeed, 0, 0)

-- يحوّل المُجمِّع الخام إلى Cash
tycoon.Collector.Touched:Connect(function(hit)
	if hit.Name == "Ore" then
		local value = hit:GetAttribute("Value")
		hit:Destroy()
		for _, player in Players:GetPlayers() do
			player.leaderstats.Cash.Value += value
		end
	end
end)
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس لعبة Roblox: تايكون المصنع