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

منصة شراء

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

النقود مُخصّصة للإنفاق. تشتري كلٌّ من الوسادات الزرقاء أمام السير الناقل شيئًا ما؛ وتشتري الأولى قطّارة ثانية. تعرف الوسادة سعرها من سمة، Price، عُيّنت عند بناء العالم.

ينتظر العنصر الذي تشتريه في ServerStorage.TycoonItems، في المكان الصحيح بالفعل. ينقله الشراء إلى مجلد Built الخاص بالمصنع، فيصبح جزءًا من العالم، وينقل الوسادة إلى ServerStorage، حيث لا يستطيع أحد أن يطأها. نُقلت ولم تُدمَّر: يعيد درس لاحق الوسادات.

if cash.Value >= price then
	cash.Value -= price
	pad.Parent = ServerStorage
	items.Dropper2.Parent = tycoon.Built
end

كل طرف يلمس الوسادة يُطلق الحدث Touched عدة مرات في اللحظة نفسها. بعد أن يشتري أحدهم أول مرة، لن تعود الوسادة ضمن tycoon.Buttons، لذا فإن التحقق من ذلك أولًا يمنع الشراء المزدوج.

challenge icon

التحدي

متوسط

اجعل الوسادة الأولى تعمل:

  1. احصل على ServerStorage، وأبقِ local items = ServerStorage.TycoonItems بالقرب من الأعلى.
  2. عندما يلمس لاعب tycoon.Buttons.Dropper2Pad: لا تفعل شيئًا إلا إذا كان المالك وكانت الوسادة لا تزال في tycoon.Buttons. إذا كان رصيده من Cash يساوي سمة Price للوسادة أو يتجاوزها، فاقتطع السعر، وانقل الوسادة إلى ServerStorage، وانقل items.Dropper2 إلى tycoon.Built، ثم شغّله.

اضغط على العب، واكسب 30 Cash واشترِها، ثم اضغط على تحقّق.

جرّب بنفسك

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)

-- اللافتة فوق المصنع
local gui = Instance.new("SurfaceGui")
gui.Parent = tycoon.Sign

local signLabel = Instance.new("TextLabel")
signLabel.Name = "Status"
signLabel.Size = UDim2.fromScale(1, 1)
signLabel.BackgroundColor3 = Color3.fromRGB(25, 25, 35)
signLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
signLabel.TextScaled = true
signLabel.Text = "Step on the green pad to claim this factory"
signLabel.Parent = gui

local function setSign(text)
	signLabel.Text = text
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)
	if dropper:GetAttribute("Running") then
		return
	end
	dropper:SetAttribute("Running", true)
	task.spawn(function()
		while dropper:IsDescendantOf(workspace) do
			dropOre(dropper)
			task.wait(Settings.DropInterval)
		end
		dropper:SetAttribute("Running", nil)
	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
		setSign(player.Name .. "'s Factory")
		for _, dropper in CollectionService:GetTagged("Dropper") do
			if dropper:IsDescendantOf(workspace) then
				startDropper(dropper)
			end
		end
	end
end)
quiz iconاختبر نفسك

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

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