إنشاء مخاطر للاعبين

*This content is translated using AI (Beta) and may contain errors. To view this page in English, click here.


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

إنشاء خطر مائي أساسي

إنشاء خطر مائي أساسي

في Workspace > World، أنشئ مجلدًا جديدًا باسم Hazards.
داخل مجلد Hazards، أنشئ جزءًا كتلة يسمى Hazard بحجم 825، 1، 576 و CFrame.Position 174، -6.5، 38 بحيث يغطي الجزأ الجزء المائي حول الجزيرة والمنصات.
قم بتعيين الشفافية إلى 1 بحيث يكون الجزء غير مرئي ويظهر الماء الفعلي كخطر، وقم بتعطيل CanCollide حتى يقع اللاعبون خلاله في الماء، وقم بتمكين Anchored حتى لا تحركه الفيزياء.

الكشف عندما يلمس اللاعبون الخطر

لا يقوم الخطر بأي شيء حتى تكتب نصًا ينص على Touched ويخفض صحة اللاعب إلى صفر.

إنشاء HazardService

في ServerScriptService، أنشئ نصًا باسم HazardService يحتوي على الكود التالي:
```lua
local Players = game:GetService("Players")
local Workspace = game:GetService("Workspace")
local hazardsFolder = Workspace.World.Hazards
local hazards = hazardsFolder:GetChildren()
local function onHazardTouched(otherPart)
local character = otherPart.Parent
local player = Players:GetPlayerFromCharacter(character)
if player then
local humanoid = character:FindFirstChildWhichIsA("Humanoid")
if humanoid then
humanoid.Health = 0
end
end
end
for _, hazard in hazards do
hazard.Touched:Connect(onHazardTouched)
end
```

يحتوي HazardService على العديد من أوجه التشابه مع CoinService. ومع ذلك، بدلاً من جمع عملة، يتم ضبط صحة اللاعب على 0 عندما يلمسون خطرًا.

لا تتردد في تعديل أو إضافة أو إزالة كائنات الخطر في لعبتك لإنشاء عقبات فريدة. طالما أنها مدرجة في مجلد Hazards، فإن حلقة الكود تربط معالج الحدث بجميع مخاطرها.

الاتصال بدورة حياة اللاعب

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

إضافة معالجات دورة الحياة إلى CoinService

في ServerScriptService، أضف الكود التالي إلى أسفل نص CoinService الحالي (لا تستبدل أي من الكود الحالي — أضف هذا بعده):
```lua
local function onPlayerAdded(player)
-- إعادة تعيين عملات اللاعب إلى 0
updatePlayerCoins(player, function(_)
return 0
end)
player.CharacterAdded:Connect(function(character)
-- WaitForChild سيتوقف حلقة اللاعب، لذا يجب القيام بالأمر أدناه في خيط منفصل
task.spawn(function()
-- عند وفاة اللاعب
character:WaitForChild("Humanoid").Died:Connect(function()
-- إعادة تعيين عملات اللاعب إلى 0
updatePlayerCoins(player, function(_)
return 0
end)
end)
end)
end)
end
-- تهيئة أي لاعب يتم إضافته قبل الاتصال بحدث PlayerAdded
for _, player in Players:GetPlayers() do
onPlayerAdded(player)
end
local function onPlayerRemoved(player)
updatePlayerCoins(player, function(_)
return nil
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)
Players.PlayerRemoving:Connect(onPlayerRemoved)
```

تعرف الكود وظائف لإعادة تعيين عدد العملات خلال الأحداث المناسبة في دورة الحياة:

  • يتم إطلاق Players.PlayerAdded عندما ينضم لاعب إلى اللعبة، ويضبط عدد العملات إلى 0.
  • يتم إطلاق Player.CharacterAdded عندما يتم إضافة نموذج شخصية لاعب إلى العالم. يحدث ذلك بعد PlayerAdded وكلما أعيد ظهور اللاعب.
  • يتم إطلاق Humanoid.Died عندما يموت لاعب، ويعيد ضبط عدد العملات إلى 0. تنشئ task.spawn() خيطًا منفصلًا للتعامل مع هذا، بحيث يمكن تنفيذ جوانب أخرى من دورة حياة اللاعب.
  • يتم إطلاق Player.PlayerRemoved عندما يغادر لاعب اللعبة لتنظيف حالة اللاعب.
  • يحتوي هذا الكود على مشكلة محتملة حيث يمكن للاعبين جمع العملات قبل أن يتم تنفيذ حدث Players.PlayerAdded ثم يتم إعادة ضبط عدد العملات الخاصة بهم إلى الصفر. لتخفيف هذه المشكلة، ضع في اعتبارك حلولًا مثل جدولة الكود أو تجميد شخصية اللاعب حتى انتهاء التهيئة. ومع ذلك، تتضمن هذه الحلول مفاهيم برمجة أكثر تعقيدًا تكمل هذا الدليل.

اختبار اللعبة

اختر Test من القائمة المنسدلة وانقر على Play. اجمع بعض العملات، ثم اقفز إلى الماء. يجب أن تموت شخصيتك وتعيد الظهور في البداية، مع إعادة تعيين عدد العملات الخاصة بهم إلى 0.

©2026 شركة Roblox Corporation. تُعد منصّة Roblox، وشعار Roblox وشعار "توسيع حدود المخيلة"، من ضمن علاماتنا التجارية المسجّلة وغير المسجّلة في الولايات المتحدة وبلدان أخرى.