→ كل الدروس
الدرس 2

اصنع أول Tycoon لك

جهاز Dropper يصنع مكعبات، وناقل Conveyor يحملها، وجهاز Collector يحولها إلى نقود، وزر يشتري Dropper ثانيًا.

مجاني60 دقيقة · مبتدئ · Roblox Studio
1
الخطوة 1 / 9

جهّز المكان

  1. افتح Roblox Studio، واضغط New Experience واختر قالب Baseplate.
  2. في Explorer مرّر الفأرة فوق Workspace، واضغط + وأضف Folder. سمّه Tycoon.
  3. كل ما تبنيه في هذا الدرس يوضع في ذلك الـ Folder. هكذا يبقى Explorer مرتبًا.

المزيد من التفاصيل

  • قالب Baseplate موجود في قائمة القوالب على شاشة البداية.
  • عندما تضغط +، تُفتح قائمة. اكتب الكلمة Folder لتجده بسرعة، ثم اضغط عليه.
  • لتغيير اسم المجلد، اضغط عليه مرة واحدة، واضغط F2، واكتب Tycoon ثم اضغط Enter.
  • على جهاز Mac استخدم المفتاح Cmd كلما قال هذا الدرس Ctrl.
نصيحة. غيّر اسم كل Part مباشرة بعد إنشائه. السكربتات تجد الـ Parts بأسمائها، فالـ Part الذي ما زال اسمه Part لن يعمل.
هذه الخطوة لا تعمل معي

تحقق من هذه الأمور الثلاثة أولًا

  • اسم كل قطعة وكل سكربت مطابق تمامًا لما في الدرس، بنفس الأحرف الكبيرة.
  • السكربت موجود داخل الشيء الصحيح. انظر إلى العنوان فوق صندوق الكود.
  • افتح نافذة Output من قائمة Window. النص الأحمر يعرض السكربت والسطر الذي فيه المشكلة.

ما زلت عالقًا؟ راسلنا ←

2
الخطوة 2 / 9

أعطِ كل لاعب نقودًا

  1. مرّر الفأرة فوق ServerScriptService، واضغط + وأضف Script. سمّه Leaderstats.
  2. احذف السطر الموجود فيه والصق هذا الكود.
  3. اضغط Play. سيظهر اسمك في قائمة اللاعبين وبجانبه Cash 0.
ServerScriptService > Leaderstats
local Players = game:GetService("Players")

Players.PlayerAdded:Connect(function(player)
	local stats = Instance.new("Folder")
	stats.Name = "leaderstats"
	stats.Parent = player

	local cash = Instance.new("IntValue")
	cash.Name = "Cash"
	cash.Value = 0
	cash.Parent = stats
end)

ماذا يفعل كل جزء

  • PlayerAdded تعمل مرة واحدة لكل لاعب ينضم.
  • الـ Folder الذي اسمه leaderstats خاص. تعرض Roblox القيم الموجودة داخله في قائمة اللاعبين.
  • الـ IntValue يحمل عددًا صحيحًا. وهنا يحمل نقود اللاعب.

المزيد من التفاصيل

  • ServerScriptService في قائمة Explorer. السكربتات الموجودة فيه تعمل على الخادم، حيث لا يستطيع اللاعبون تغييرها.
  • يُفتح السكربت في تبويب جديد. اضغط داخل الكود، ثم Ctrl+A ثم Ctrl+V لتستبدل كل شيء.
  • ارجع إلى عالمك بالضغط على التبويب الذي عليه اسم مكانك.
  • قائمة اللاعبين في الزاوية العلوية اليمنى من اللعبة. اضغط F5 للبدء وShift+F5 للإيقاف.
هذه الخطوة لا تعمل معي

تحقق من هذه الأمور الثلاثة أولًا

  • اسم كل قطعة وكل سكربت مطابق تمامًا لما في الدرس، بنفس الأحرف الكبيرة.
  • السكربت موجود داخل الشيء الصحيح. انظر إلى العنوان فوق صندوق الكود.
  • افتح نافذة Output من قائمة Window. النص الأحمر يعرض السكربت والسطر الذي فيه المشكلة.

ما زلت عالقًا؟ راسلنا ←

3
الخطوة 3 / 9

ابنِ الـ Dropper

  1. أضف Part داخل الـ Folder المسمى Tycoon. اجعل Size يساوي 4, 1, 4، وفعّل Anchored وسمّه Dropper.
  2. ارفعه نحو 10 studs فوق الأرض بأداة Move (Ctrl+2).
  3. أضف Script إلى Dropper والصق هذا الكود.
  4. اضغط Play. يسقط مكعب أصفر كل ثانيتين.
Dropper > Script
local Debris = game:GetService("Debris")
local dropper = script.Parent

while true do
	task.wait(2)

	local cube = Instance.new("Part")
	cube.Name = "Cube"
	cube.Size = Vector3.new(1.5, 1.5, 1.5)
	cube.Color = Color3.fromRGB(255, 200, 60)
	cube.Position = dropper.Position - Vector3.new(0, 2, 0)
	cube.Parent = workspace

	Debris:AddItem(cube, 20)
end

ماذا يفعل كل جزء

  • Instance.new تنشئ Part جديدًا من الكود.
  • Position تضع المكعب على بعد studs 2 تحت الـ Dropper.
  • يزيل Debris كل مكعب بعد 20 ثانية، فلا تتكدس المكعبات القديمة.

المزيد من التفاصيل

  • لتضع القطعة في المجلد، اسحب اسمها في Explorer إلى الاسم Tycoon.
  • بأداة Move اسحب السهم الأخضر إلى أعلى. يعرض الحقل Position في Properties الارتفاع في الرقم الأوسط.
  • يظهر المكعب على بعد 2 studs تحت جهاز الإسقاط ثم يسقط. إذا كان جهاز الإسقاط منخفضًا جدًا، تتكدس المكعبات تحته.
  • يأتي المكعب الأول بعد ثانيتين من بدء اللعبة.
خطأ شائع. لا تظهر مكعبات: تأكد أن السكربت داخل Dropper وأن Dropper مفعّل عليه Anchored.
هذه الخطوة لا تعمل معي

تحقق من هذه الأمور الثلاثة أولًا

  • اسم كل قطعة وكل سكربت مطابق تمامًا لما في الدرس، بنفس الأحرف الكبيرة.
  • السكربت موجود داخل الشيء الصحيح. انظر إلى العنوان فوق صندوق الكود.
  • افتح نافذة Output من قائمة Window. النص الأحمر يعرض السكربت والسطر الذي فيه المشكلة.

ما زلت عالقًا؟ راسلنا ←

4
الخطوة 4 / 9

أضف الـ Conveyor

  1. أضف Part، واجعل Size يساوي 6, 1, 30، وفعّل Anchored وسمّه Conveyor.
  2. ضعه على الأرض بحيث يكون أحد طرفيه تحت الـ Dropper مباشرة.
  3. أضف Script إلى Conveyor والصق هذا الكود.
  4. اضغط Play. تقع المكعبات على الـ Conveyor وتنزلق عليه.
Conveyor > Script
local conveyor = script.Parent

conveyor.AssemblyLinearVelocity = conveyor.CFrame.LookVector * 8

ماذا يفعل كل جزء

  • AssemblyLinearVelocity تخبر Roblox بسرعة حركة الأشياء الموجودة فوق الـ Part.
  • LookVector هو الاتجاه الذي تنظر إليه مقدمة الـ Part. والرقم 8 هو السرعة بالـ studs في الثانية.

المزيد من التفاصيل

  • لكل قطعة وجه أمامي. يدفع السير المكعبات نحو وجهه الأمامي.
  • يجب أن يتجه الضلع الطويل للسير، وطوله 30 studs، بعيدًا عن جهاز الإسقاط، نحو المكان الذي سيقف فيه جهاز الجمع.
  • السير نفسه لا يتحرك. الأشياء التي فوقه هي فقط التي تنزلق.
  • إذا سقطت المكعبات من الجانب، فاجعل السير أعرض أو انقل جهاز الإسقاط إلى منتصفه.
خطأ شائع. تنزلق المكعبات في الاتجاه الخطأ: أدِر الـ Conveyor 180 درجة بأداة Rotate (Ctrl+4).
هذه الخطوة لا تعمل معي

تحقق من هذه الأمور الثلاثة أولًا

  • اسم كل قطعة وكل سكربت مطابق تمامًا لما في الدرس، بنفس الأحرف الكبيرة.
  • السكربت موجود داخل الشيء الصحيح. انظر إلى العنوان فوق صندوق الكود.
  • افتح نافذة Output من قائمة Window. النص الأحمر يعرض السكربت والسطر الذي فيه المشكلة.

ما زلت عالقًا؟ راسلنا ←

5
الخطوة 5 / 9

اجمع المكعبات

  1. أضف Part في الطرف البعيد من الـ Conveyor. اجعل Size يساوي 6, 4, 1، وفعّل Anchored، واجعله أخضر وسمّه Collector.
  2. أوقفه عموديًا مثل جدار، لتصطدم به المكعبات.
  3. أضف Script إلى Collector والصق هذا الكود.
  4. اضغط Play. كل مكعب يصل إلى الـ Collector يضيف 5 إلى Cash.
Collector > Script
local Players = game:GetService("Players")
local collector = script.Parent

collector.Touched:Connect(function(hit)
	if hit.Name ~= "Cube" then return end
	hit:Destroy()

	for _, player in ipairs(Players:GetPlayers()) do
		local stats = player:FindFirstChild("leaderstats")
		if stats then
			stats.Cash.Value += 5
		end
	end
end)

ماذا يفعل كل جزء

  • يتجاهل السكربت كل شيء لا يسمى Cube. فقدماك لا تُحسبان.
  • Destroy تزيل المكعب من اللعبة.
  • الحلقة تعطي 5 نقود لكل لاعب في السيرفر. تايكون بمالك واحد لكل قطعة أرض درس متقدم.

المزيد من التفاصيل

  • الحجم Size 6, 4, 1 قائم أصلًا: عرضه 6 وارتفاعه 4 وسمكه 1. ضعه عبر نهاية السير مثل بوابة مغلقة.
  • يجب أن يلمس طرفه السفلي السير، فلا يستطيع أي مكعب المرور من تحته.
  • لتجعله أخضر، اضغط على الحقل Color في Properties.
  • للتجربة: اضغط F5 وراقب قائمة اللاعبين. يزيد Cash بمقدار 5 في كل مرة يصل فيها مكعب إلى الجدار.
هذه الخطوة لا تعمل معي

تحقق من هذه الأمور الثلاثة أولًا

  • اسم كل قطعة وكل سكربت مطابق تمامًا لما في الدرس، بنفس الأحرف الكبيرة.
  • السكربت موجود داخل الشيء الصحيح. انظر إلى العنوان فوق صندوق الكود.
  • افتح نافذة Output من قائمة Window. النص الأحمر يعرض السكربت والسطر الذي فيه المشكلة.

ما زلت عالقًا؟ راسلنا ←

6
الخطوة 6 / 9

جهّز الـ Dropper الثاني

  1. حدد Dropper واضغط Ctrl+D. سمّ النسخة Dropper2 وانقلها بجانب الأولى، وما زالت فوق الـ Conveyor.
  2. اسحب Dropper2 من Workspace إلى ServerStorage.
  3. يختفي من العالم. الأشياء الموجودة في ServerStorage تنتظر هناك حتى ينقلها سكربت إلى مكانها.

المزيد من التفاصيل

  • تقع النسخة فوق الأصل تمامًا. اسحبها جانبًا بأداة Move لترى الاثنين.
  • غيّر اسم النسخة بالمفتاح F2. يجب أن يكون الاسم Dropper2، بحرف D كبير وبلا مسافة.
  • ServerStorage في قائمة Explorer. اسحب الاسم Dropper2 إليه.
  • السكربت الموجود داخل النسخة جاء معها. لا تحتاج إلى إضافته مرة أخرى.
نصيحة. السكربتات الموجودة داخل ServerStorage لا تعمل. لهذا يبقى الـ Dropper الثاني ساكتًا حتى يشتريه أحد.
هذه الخطوة لا تعمل معي

تحقق من هذه الأمور الثلاثة أولًا

  • اسم كل قطعة وكل سكربت مطابق تمامًا لما في الدرس، بنفس الأحرف الكبيرة.
  • السكربت موجود داخل الشيء الصحيح. انظر إلى العنوان فوق صندوق الكود.
  • افتح نافذة Output من قائمة Window. النص الأحمر يعرض السكربت والسطر الذي فيه المشكلة.

ما زلت عالقًا؟ راسلنا ←

7
الخطوة 7 / 9

أضف زر الشراء

  1. أضف Part على الأرض قرب الـ Conveyor. اجعل Size يساوي 4, 1, 4، وفعّل Anchored، واجعله أزرق فاتحًا وسمّه BuyDropper.
  2. أضف Script إلى BuyDropper والصق هذا الكود.
  3. لتضع عنوانًا على الزر، مرّر الفأرة فوق BuyDropper، واضغط + وأضف BillboardGui. اجعل Size فيه {0, 200}, {0, 50} و StudsOffset يساوي 0, 3, 0.
  4. أضف TextLabel داخل الـ BillboardGui. اجعل Size فيه {1, 0}, {1, 0}، وفعّل TextScaled واكتب هذا النص: Second dropper - 50
BuyDropper > Script
local Players = game:GetService("Players")
local ServerStorage = game:GetService("ServerStorage")

local button = script.Parent
local PRICE = 50
local bought = false

button.Touched:Connect(function(hit)
	if bought then return end

	local player = Players:GetPlayerFromCharacter(hit.Parent)
	local stats = player and player:FindFirstChild("leaderstats")
	if not stats or stats.Cash.Value < PRICE then return end

	bought = true
	stats.Cash.Value -= PRICE
	ServerStorage.Dropper2.Parent = workspace
	button:Destroy()
end)

ماذا يفعل كل جزء

  • PRICE هو الثمن. غيّر الرقم لتجعل الزر أرخص أو أغلى.
  • يتحقق السكربت أن لاعبًا حقيقيًا لمس الزر وأن عند اللاعب نقودًا كافية.
  • نقل Dropper2 إلى workspace يشغّله. ويبدأ سكربته بالعمل فورًا.

المزيد من التفاصيل

  • يشتري اللاعبون بالمشي على الزر، فضعه على الأرض حيث يسهل الوصول إليه.
  • لضبط Size وStudsOffset اضغط على الحقل في Properties، واكتب الأرقام تمامًا كما هي، مع الأقواس والفواصل، ثم اضغط Enter.
  • Text خاصية في TextLabel. اضغط على الحقل Text، واكتب الكلمات ثم اضغط Enter.
  • تطفو اللافتة فوق الزر. إذا لم تستطع رؤيتها، فارفع الرقم الأوسط في StudsOffset.
هذه الخطوة لا تعمل معي

تحقق من هذه الأمور الثلاثة أولًا

  • اسم كل قطعة وكل سكربت مطابق تمامًا لما في الدرس، بنفس الأحرف الكبيرة.
  • السكربت موجود داخل الشيء الصحيح. انظر إلى العنوان فوق صندوق الكود.
  • افتح نافذة Output من قائمة Window. النص الأحمر يعرض السكربت والسطر الذي فيه المشكلة.

ما زلت عالقًا؟ راسلنا ←

8
الخطوة 8 / 9

اختبر الدورة كلها

  1. اضغط F5. شاهد المكعبات تسقط وتركب على الـ Conveyor وتتحول إلى نقود.
  2. انتظر حتى تصير عندك 50 نقدًا، ثم قف على الزر الأزرق.
  3. يظهر الـ Dropper الثاني ويختفي الزر وتزيد نقودك بسرعة مضاعفة.
  4. اضغط Shift+F5 لتتوقف. إذا فشل شيء، افتح نافذة Output من قائمة Window واقرأ النص الأحمر.

المزيد من التفاصيل

  • يلزم 10 مكعبات، أي 20 ثانية على الأقل، حتى تصل إلى 50 من النقود.
  • بعد الشراء ينخفض Cash بمقدار 50. هذا صحيح. فأنت دفعت ثمن جهاز الإسقاط.
  • يُحذف الزر بعد الشراء، فلا يمكن شراؤه مرتين.
  • إذا ظهر جهاز الإسقاط الثاني في مكان خاطئ، فأوقف اللعبة، واسحب Dropper2 من ServerStorage إلى Workspace، وحرّكه، ثم اسحبه إلى ServerStorage من جديد.
خطأ شائع. لا تتغير Cash أبدًا: يجب أن تسمى الأجزاء الساقطة Cube، تمامًا كما في سكربت الـ Dropper.
هذه الخطوة لا تعمل معي

تحقق من هذه الأمور الثلاثة أولًا

  • اسم كل قطعة وكل سكربت مطابق تمامًا لما في الدرس، بنفس الأحرف الكبيرة.
  • السكربت موجود داخل الشيء الصحيح. انظر إلى العنوان فوق صندوق الكود.
  • افتح نافذة Output من قائمة Window. النص الأحمر يعرض السكربت والسطر الذي فيه المشكلة.

ما زلت عالقًا؟ راسلنا ←

9
الخطوة 9 / 9

انشرها

  1. اختر File → Publish to Roblox. أعطِ اللعبة اسمًا ووصفًا قصيرًا.
  2. في موقع Creator Hub افتح لعبتك واملأ استبيان Maturity.
  3. اجعل اللعبة Public وأرسل الرابط إلى صديق.

المزيد من التفاصيل

  • في أول مرة تنشر فيها، يطلب Studio اسمًا ووصفًا. اضغط Create.
  • Creator Hub هو الموقع create.roblox.com. سجّل الدخول بالحساب نفسه واضغط على لعبتك في القائمة.
  • قد تطلب Roblox المزيد قبل أن تصبح اللعبة عامة، مثل التحقق من العمر على الحساب. تخبرك الصفحة بما ينقص.
  • إذا كان عمرك أقل من 18 سنة، فافعل هذه الخطوة مع أحد والديك.
نصيحة. التقدم غير محفوظ بعد. عندما يغادر اللاعب تضيع نقوده. حفظ البيانات درس متقدم.
هذه الخطوة لا تعمل معي

تحقق من هذه الأمور الثلاثة أولًا

  • اسم كل قطعة وكل سكربت مطابق تمامًا لما في الدرس، بنفس الأحرف الكبيرة.
  • السكربت موجود داخل الشيء الصحيح. انظر إلى العنوان فوق صندوق الكود.
  • افتح نافذة Output من قائمة Window. النص الأحمر يعرض السكربت والسطر الذي فيه المشكلة.

ما زلت عالقًا؟ راسلنا ←

الآن غيّره بنفسك

  • اجعل كل مكعب يساوي 10 نقود بدل 5.
  • أضف Dropper ثالثًا ثمنه 200 نقد.
  • اجعل الـ Dropper الثاني أسرع من الأول. أي رقم تغيّر؟