Menu
CoddyTech

نقل اللاعبين آنيًا

الدرس 6 من 20 في دورة لعبة Roblox: النجاة من الكوارث على Coddy.

الجزيرة التي لا يقف عليها أحد ليست لعبة. عندما تبدأ الجولة، ينتقل كل لاعب إلى Spawn في الخريطة، وعندما تنتهي، يعود إلى الردهة.

تعرض Players:GetPlayers() قائمة بكل اللاعبين في اللعبة، وجسم اللاعب هو player.Character، وهو Model. تنقل Model:PivotTo(cframe) نموذجًا كاملًا دفعة واحدة، مع احتفاظ كل جزء بمكانه. إن CFrame هو موضع بالإضافة إلى دوران، وإضافة Vector3 إليه تحرّكه:

local function teleport(player, target)
	local character = player.Character
	if character then
		character:PivotTo(target.CFrame + Vector3.new(0, 4, 0))
	end
end

تُسقط الـ4 ستودات إلى الأعلى اللاعبَ قليلًا فوق الهدف بدلًا من داخله. تكون player.Character بقيمة nil للحظة بعد الانضمام أو الموت، ومن هنا يأتي استخدام if.

challenge icon

التحدي

متوسط

أرسل اللاعبين إلى الجزيرة ثم أعدهم.

  1. اكتب teleport(player, target): إذا كان player.Character موجودًا، فنفّذ PivotTo(target.CFrame + Vector3.new(0, 4, 0)).
  2. مباشرةً بعد تحميل الخريطة، انقل كل لاعب إلى map.Spawn.
  3. عند انتهاء العد التنازلي للجولة، انقل الجميع إلى lobbySpawn، قبل تدمير الخريطة.

اضغط «العب»: ستهبط على الجزيرة عند بدء الجولة، وستعود إلى الردهة عند انتهائها. ثم اضغط «تحقق».

جرّب بنفسك

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

print("Rounds last " .. Settings.RoundLength .. " seconds")

-- يحصل كل لاعب على Wins في لوحة المتصدرين
Players.PlayerAdded:Connect(function(player)
	local leaderstats = Instance.new("Folder")
	leaderstats.Name = "leaderstats"
	leaderstats.Parent = player

	local wins = Instance.new("IntValue")
	wins.Name = "Wins"
	wins.Parent = leaderstats
end)

-- لوحة الحالة في الردهة
local gui = Instance.new("SurfaceGui")
gui.Parent = workspace.StatusBoard

local status = Instance.new("TextLabel")
status.Name = "Status"
status.Size = UDim2.fromScale(1, 1)
status.BackgroundColor3 = Color3.fromRGB(25, 25, 35)
status.TextColor3 = Color3.fromRGB(255, 255, 255)
status.TextScaled = true
status.Text = "Welcome to Disaster Survival!"
status.Parent = gui

local function setStatus(text)
	status.Text = text
end

-- الدرس 6: يوضع هنا كود نقل اللاعبين آنيًا

-- حلقة الجولات
while true do
	for seconds = Settings.Intermission, 1, -1 do
		setStatus("Intermission: " .. seconds)
		task.wait(1)
	end

	local map = ServerStorage.Maps.Island:Clone()
	map.Name = "Map"
	map.Parent = workspace

	for seconds = Settings.RoundLength, 1, -1 do
		setStatus("Time left: " .. seconds)
		task.wait(1)
	end

	map:Destroy()
end

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

تدرّب بنفسك: Playground لـ Roblox