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

ارتفاع منسوب المياه

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

حان وقت الكارثة الأولى. ستضم اللعبة عدة كوارث، لذا سنضعها في جدول واحد، بحيث تكون كل واحدة منها دالة تأخذ الخريطة. وتُستدعى الدالة المخزنة في جدول مثل أي دالة أخرى:

local Disasters = {}

function Disasters.Flood(map)
	-- أنشئ الماء وارفع مستواه
end

Disasters.Flood(map)

الفيضان عبارة عن جزء أزرق عريض يبدأ أسفل الجزيرة ويرتفع، لكن ليس إلى القمة: تظل الصخور في Island والأسطح في Rooftops جافة، لذا ينجو اللاعب الذي يتسلق في الوقت المناسب. اللعبة التي لا يستطيع أحد النجاة من كارثتها ليست لعبة. يغيّر TweenService إحدى الخصائص بسلاسة مع مرور الوقت: حدّد المدة باستخدام TweenInfo، وعيّن القيم المستهدفة، ثم استدعِ Play.

local rise = TweenInfo.new(12, Enum.EasingStyle.Linear)
TweenService:Create(water, rise, { Position = water.Position + Vector3.new(0, 8, 0) }):Play()

يجب ألا يحمل الماء اللاعبين إلى الأعلى، لذا تكون قيمة CanCollide هي false وتظل قيمة Anchored كما هي. والقضاء على من يلمسه هو المهمة نفسها التي كان يؤديها الحمم في الدورة الأولى؛ وتمنحه هذه اللعبة اسمًا، defeat(hit)، لأن كل كارثة ستستخدمه.

اجعل الماء تابعًا للخريطة، لكي يؤدي تدمير الخريطة في نهاية الجولة إلى إزالة الماء معها.

challenge icon

التحدي

متوسط

أضف الفيضان:

  1. احصل على TweenService في الأعلى.
  2. اكتب defeat(hit): إذا كان لدى hit.Parent عنصر Humanoid، فاضبط قيمة Health لديه على 0.
  3. أنشئ local Disasters = {} وfunction Disasters.Flood(map): جزءًا اسمه Water في الخريطة، مثبتًا، وCanCollide غير مفعّل، أزرق وشبه شفاف (Transparency 0.3)، وأعرض بـ 10 studs من map.Base في كل اتجاه، ويبدأ على بُعد 2 studs أسفله. يؤدي لمسه إلى الهزيمة. حرّك Position الخاص به باستخدام Tween بمقدار 8 studs إلى الأعلى خلال Settings.RoundLength * 0.8 ثانية، بوتيرة ثابتة (Enum.EasingStyle.Linear)، بحيث يتوقف أسفل قمم الصخور.
  4. استدعِ Disasters.Flood(map) مباشرة بعد نقل اللاعبين.

اضغط Play وتسابق مع المد: اقفز فوق الصخور إلى يسار نقطة الظهور. ثم اضغط Check.

جرّب بنفسك

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

local lobbySpawn = workspace.LobbySpawn

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

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

-- حلقة الجولات
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

	local survivors = {}
	for _, player in Players:GetPlayers() do
		local character = player.Character
		if character and character.Humanoid.Health > 0 then
			teleport(player, map.Spawn)
			survivors[player] = true
			character.Humanoid.Died:Connect(function()
				survivors[player] = nil
			end)
		end
	end

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

	local names = {}
	for player in survivors do
		player.leaderstats.Wins.Value += 1
		teleport(player, lobbySpawn)
		table.insert(names, player.Name)
	end
	map:Destroy()
	if #names > 0 then
		setStatus("Winners: " .. table.concat(names, ", "))
	else
		setStatus("Nobody survived!")
	end
	task.wait(3)
end
quiz iconاختبر نفسك

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

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