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

خط النهاية

جزء من قسم برمجة ألعاب Roblox في رحلة Lua على Coddy. الدرس 23 من 24.

خط النهاية يحتسب الفوز ويعيد الفائز إلى نقطة البداية. تمنح player:LoadCharacterAsync() اللاعب شخصية جديدة عند نقطة ظهوره، دون انتظار مؤقّت إعادة الظهور.

يستغرق ذلك لحظة. وحتى وصول الشخصية الجديدة، يواصل خط النهاية إطلاق Touched لأجزاء جسم الشخصية القديمة الأخرى، وسيُحتسب كل جزء منها فوزًا. يمنع ذلك استخدام آلية منع التكرار، ويحتاج خط النهاية إلى واحدة لكل لاعب، حتى يُحتسب فوز لاعبين ينهيان السباق معًا. احتفظ بها في جدول يكون اللاعب مفتاحه:

local busy = {}
if not busy[player] then
	busy[player] = true
	-- احتسب الفوز، وأعِد اللاعب
	task.wait(1)
	busy[player] = nil
end

تقرأ busy[player] مدخلة الجدول الخاصة بذلك اللاعب أو تضبطها، وتكون قيمة المدخلة المفقودة هي nil. تزيل busy[player] = nil المدخلة، لذا يُحتسب عبوره التالي مجددًا.

challenge icon

التحدي

متوسط

وسادة الذهب هي خط النهاية، وهذا البرنامج النصي بداخلها. لدى كل لاعب بالفعل leaderstats مع Wins بقيمة 0، وتم إعداد منع التكرار لكل لاعب.

  1. أضف 1 إلى Wins الخاص باللاعب.
  2. أعِد اللاعب إلى نقطة البداية باستخدام player:LoadCharacterAsync().
  3. ثم امسح منع التكرار الخاص به، حتى تُحتسب جولته التالية.

اضغط على Play، واركض إلى خط النهاية مرتين، ثم اضغط على Check.

جرّب بنفسك

local Players = game:GetService("Players")
local finish = script.Parent
local busy = {}

finish.Touched:Connect(function(hit)
	local player = Players:GetPlayerFromCharacter(hit.Parent)
	if player and not busy[player] then
		busy[player] = true
		-- 1. أضف 1 إلى Wins الخاصة باللاعب
		-- 2. أعد اللاعب إلى نقطة البداية
		-- 3. بعد 1 ثانية، اسمح له بالفوز مرة أخرى
	end
end)
quiz iconاختبر نفسك

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

جميع دروس برمجة ألعاب Roblox

تدرّب بنفسك: مترجم Lua عبر الإنترنت