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

اصنع أول سيمولاتور لك

انقر على بلورة لتكسب قوة، وبع القوة مقابل عملات، واشترِ تحسينات تجعل كل نقرة أقوى.

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

جهّز المكان

  1. افتح Roblox Studio، واضغط New Experience واختر قالب Baseplate.
  2. ستبني ثلاثة أشياء على الأرض: بلورة تنقر عليها، ولوحة للبيع، ولوحة لشراء التحسينات.
  3. اترك نحو 20 studs بينها، ليضطر اللاعبون إلى المشي.

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

  • قالب Baseplate موجود في قائمة القوالب على شاشة البداية.
  • يعرض الحقل Position في Properties مكان القطعة. إذا كان بين الرقمين الأولين لقطعتين 20، فهما تبعدان 20 studs عن بعضهما.
  • أبقِ الأشياء الثلاثة قريبة من SpawnLocation، المنصة التي يظهر عليها اللاعبون.
  • على جهاز Mac استخدم المفتاح Cmd كلما قال هذا الدرس Ctrl.
نصيحة. ارسم التصميم على الورق أولًا. تكون لعبة السيمولاتور ممتعة عندما يكون المشي بين النقر والبيع والتحسين قصيرًا.
هذه الخطوة لا تعمل معي

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

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

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

2
الخطوة 2 / 8

أنشئ إحصاءات اللاعب

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

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

	for _, name in ipairs({"Power", "Coins"}) do
		local value = Instance.new("IntValue")
		value.Name = name
		value.Parent = stats
	end

	local multiplier = Instance.new("IntValue")
	multiplier.Name = "Multiplier"
	multiplier.Value = 1
	multiplier.Parent = player
end)

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

  • تنشئ الحلقة قيمتين بقطعة كود واحدة: Power و Coins.
  • Multiplier هو مقدار القوة التي تعطيها نقرة واحدة. يبدأ من 1.
  • يوجد Multiplier على اللاعب وليس في leaderstats، لذلك يبقى مخفيًا عن قائمة اللاعبين.

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

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

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

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

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

3
الخطوة 3 / 8

ابنِ البلورة

  1. أضف Part. اجعل Size يساوي 6, 8, 6، وفعّل Anchored وسمّه Crystal. اختر لونًا فاتحًا واجعل Material يساوي Neon.
  2. مرّر الفأرة فوق Crystal، واضغط + وأضف ClickDetector.
  3. أضف Script إلى Crystal والصق هذا الكود.
  4. اضغط Play وانقر على البلورة. تزيد Power بمقدار 1 مع كل نقرة.
Crystal > Script
local crystal = script.Parent
local clickDetector = crystal.ClickDetector

clickDetector.MouseClick:Connect(function(player)
	local power = player.leaderstats.Power
	power.Value += player.Multiplier.Value
end)

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

  • الـ ClickDetector يجعل الـ Part قابلًا للنقر. ويعمل أيضًا مع اللمس على الهواتف.
  • MouseClick تخبر السكربت أي لاعب نقر.
  • يضيف السكربت Multiplier اللاعب إلى Power، فتجعل التحسينات كل نقرة أقوى.

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

  • اكتب الحجم في الحقل Size في Properties واضغط Enter. ثم ارفع البلورة بأداة Move حتى تقف على الأرض.
  • عندما تضغط +، اكتب ClickDetector لتجده. ويجب أن يظهر في Explorer مزاحًا خطوة إلى الداخل، تحت Crystal.
  • في اللعبة يتحول مؤشر الفأرة إلى يد عندما يكون فوق البلورة.
  • يجب أن تقف قريبًا بما يكفي. يعمل ClickDetector من مسافة 32 studs أو أقل.
خطأ شائع. لا يحدث شيء عند النقر: يجب أن يكون ClickDetector داخل Crystal مباشرة، بجانب السكربت.
هذه الخطوة لا تعمل معي

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

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

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

4
الخطوة 4 / 8

أضف لوحة البيع

  1. أضف Part على الأرض. اجعل Size يساوي 8, 1, 8، وفعّل Anchored، واجعله أصفر وسمّه Sell.
  2. أضف Script إلى Sell والصق هذا الكود.
  3. اضغط Play، وانقر على البلورة عدة مرات ثم اصعد على اللوحة. تتحول Power إلى Coins.
Sell > Script
local Players = game:GetService("Players")
local pad = script.Parent

pad.Touched:Connect(function(hit)
	local player = Players:GetPlayerFromCharacter(hit.Parent)
	if not player then return end

	local stats = player.leaderstats
	if stats.Power.Value > 0 then
		stats.Coins.Value += stats.Power.Value
		stats.Power.Value = 0
	end
end)

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

  • GetPlayerFromCharacter تعرف اللاعب الذي وقف على اللوحة.
  • تضيف اللوحة كل Power اللاعب إلى Coins ثم تعيد Power إلى 0.

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

  • المنصة الصغيرة قطعة مسطحة يمشي عليها اللاعبون.
  • ضع المنصة الصغيرة مسطحة على الأرض. إذا كانت مرتفعة جدًا، لا يستطيع اللاعبون الصعود عليها.
  • المشي على المنصة وقوتك 0 لا يفعل شيئًا. وهذا صحيح.
  • للتجربة: اضغط على البلورة 10 مرات، وامشِ على المنصة، فتعرض قائمة اللاعبين Power 0 وCoins 10.
هذه الخطوة لا تعمل معي

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

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

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

5
الخطوة 5 / 8

أضف لوحة التحسين

  1. أضف Part آخر على الأرض. اجعل Size يساوي 8, 1, 8، وفعّل Anchored، واجعله أزرق وسمّه Upgrade.
  2. أضف Script إلى Upgrade والصق هذا الكود.
  3. اضغط Play، واكسب 25 عملة ثم قف على اللوحة. صارت كل نقرة تعطي 2 قوة.
Upgrade > Script
local Players = game:GetService("Players")
local pad = script.Parent
local waiting = {}

pad.Touched:Connect(function(hit)
	local player = Players:GetPlayerFromCharacter(hit.Parent)
	if not player or waiting[player] then return end

	local price = player.Multiplier.Value * 25
	local coins = player.leaderstats.Coins
	if coins.Value < price then return end

	waiting[player] = true
	coins.Value -= price
	player.Multiplier.Value += 1

	task.wait(1)
	waiting[player] = nil
end)

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

  • الثمن هو Multiplier اللاعب مضروبًا في 25، فيكون كل تحسين أغلى من الذي قبله.
  • الجدول waiting يمنع الوقوف الطويل على اللوحة من شراء تحسينات كثيرة دفعة واحدة.
  • بعد الشراء يزيد Multiplier بمقدار 1.

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

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

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

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

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

6
الخطوة 6 / 8

اكتب عناوين اللوحات

  1. مرّر الفأرة فوق Sell، واضغط + وأضف BillboardGui. اجعل Size فيه {0, 200}, {0, 50} و StudsOffset يساوي 0, 4, 0.
  2. أضف TextLabel داخل الـ BillboardGui. اجعل Size فيه {1, 0}, {1, 0}، وفعّل TextScaled واكتب هذا النص: SELL
  3. افعل الشيء نفسه مع Upgrade بالنص: UPGRADE
  4. افعل الشيء نفسه مع Crystal بالنص: CLICK ME. استعمل هناك StudsOffset يساوي 0, 7, 0، ليطفو العنوان فوق البلورة.

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

  • لضبط Size وStudsOffset اضغط على الحقل في Properties، واكتب الأرقام تمامًا كما هي، مع الأقواس والفواصل، ثم اضغط Enter.
  • Text خاصية في TextLabel. اضغط على الحقل Text، واكتب الكلمة ثم اضغط Enter.
  • طريقة أسرع: اضغط على BillboardGui الجاهز في Explorer، واضغط Ctrl+C، ثم اضغط على القطعة التالية واضغط Ctrl+Shift+V. بعدها غيّر النص فقط.
  • تساعد اللافتات اللاعبين الجدد على فهم اللعبة دون أي شرح.
نصيحة. يدور BillboardGui دائمًا ليواجه الكاميرا، فيستطيع اللاعبون قراءته من أي جهة.
هذه الخطوة لا تعمل معي

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

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

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

7
الخطوة 7 / 8

اختبر الدورة

  1. اضغط F5. انقر، وبع، وحسّن، وكرر.
  2. تأكد أن ثمن التحسين يزيد: 25 عملة، ثم 50، ثم 75.
  3. اضغط Shift+F5 لتتوقف. إذا فشل شيء، افتح نافذة Output من قائمة Window واقرأ النص الأحمر.

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

  • عدّ نقراتك. مع Multiplier 1، عشر نقرات تعطي قوة مقدارها 10.
  • بعد الترقية الأولى تعطي عشر نقرات قوة مقدارها 20، وبعد الثانية 30.
  • التغييرات التي تجريها أثناء تشغيل اللعبة تضيع عندما توقفها. اضغط Shift+F5 أولًا، ثم عدّل.
  • في نافذة Output اضغط على سطر أحمر فيفتح Studio السكربت عند السطر الذي فيه الخطأ.
خطأ شائع. اللوحة لا تشتري شيئًا: تحتاج إلى 25 Coins على الأقل، وليس 25 Power. بع أولًا.
هذه الخطوة لا تعمل معي

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

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

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

8
الخطوة 8 / 8

انشرها

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

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

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

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

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

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

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

  • أضف بلورة ثانية تعطي 5 قوة لكل نقرة لكنها تقف بعيدة.
  • اجعل ثمن التحسين يتضاعف في كل مرة. تلميح: 25 * 2 ^ (player.Multiplier.Value - 1)
  • اجعل البلورة أكبر قليلًا مع كل نقرة. تلميح: غيّر crystal.Size