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

فكّك كومة

الدرس 3 من 18 في دورة لعبة Roblox: محاكي الحيوانات الأليفة على Coddy.

يكسر اللاعبون الأكوام بالنقر عليها. يطلق ClickDetector داخل جزء ما حدث MouseClick على الخادم، مع اللاعب الذي نقر، عندما يكون قريبًا بما يكفي.

يُنقص كل نقرة 1 من Health الكومة. عندما تصل إلى 0، تنكسر الكومة: يحصل اللاعب على قيمة Value منها على شكل عملات، وتُدمَّر الكومة.

local health = pile:GetAttribute("Health") - 1
if health > 0 then
	pile:SetAttribute("Health", health)
	return
end
-- مكسور

يُوصَل حدث النقر داخل spawnPile، ويستدعي hitPile، المكتوبة أدناه spawnPile. لا يمكن للدالة استخدام اسم محلي إلا إذا كان قد أُعلن عنه مسبقًا، لذا أعلن local hitPile أولًا، قبل كليهما، ثم عرّفها لاحقًا باستخدام function hitPile(player, pile).

challenge icon

التحدي

سهل
  1. فوق spawnPile، صرّح عن local hitPile.
  2. في spawnPile، أضف ClickDetector إلى الكومة واربط MouseClick الخاص به بـ hitPile(player, pile).
  3. أسفل spawnPile، اكتب function hitPile(player, pile): أنقص 1 من سمة Health؛ وإذا بقيت أكبر من 0، فاحفظها وتوقّف؛ وإلا فأضف قيمة Value للكومة إلى Coins الخاصة باللاعب ودمّر الكومة.

اضغط على Play وانقر على كومة ثلاث مرات. ثم اضغط على Check.

جرّب بنفسك

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

local piles = workspace.Piles

print("A Meadow pile gives " .. Settings.PileValue .. " coins")

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

	local coins = Instance.new("IntValue")
	coins.Name = "Coins"
	coins.Parent = leaderstats
end)

-- كومة عملات في أحد المواقع: نسخة من ServerStorage.CoinPile مع صحتها
-- وقيمتها بوصفهما سمات
local function spawnPile(spot)
	local pile = ServerStorage.CoinPile:Clone()
	pile.Position = spot.Position
	pile:SetAttribute("MaxHealth", Settings.PileHealth)
	pile:SetAttribute("Health", Settings.PileHealth)
	pile:SetAttribute("Value", Settings.PileValue)
	pile.Parent = piles
	return pile
end

-- كومة في كل موقع في Meadow
for _, spot in workspace.Zones.Meadow.Spawns:GetChildren() do
	spawnPile(spot)
end
quiz iconاختبر نفسك

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

جميع دروس لعبة Roblox: محاكي الحيوانات الأليفة