Üsse Ulaş
Coddy'nin Roblox Oyunu: Kule Savunması kursunda ders 3 / 18.
Yolun sonuna ulaşan bir düşman üssün canını azaltır. Üssün canı sunucuda tutulmalıdır, ancak her oyuncunun ekranında gösterileceğinden çalışma alanının bir özelliği olarak saklayın: sunucuda ayarlanan bir özellik tüm istemciler tarafından görülür.
workspace:SetAttribute("BaseHealth", Settings.BaseHealth)
print(workspace:GetAttribute("BaseHealth")) --> 20damageBase(amount) canı 0'ın altına düşürmeden azaltır (math.max). Son ara noktadan sonra düşman bu işlevi çağırır ve Destroy ile oyundan çıkar.
Görev
Kolay- Yol noktalarını sıraladıktan sonra workspace özniteliği
BaseHealthdeğeriniSettings.BaseHealtholarak ayarlayın. damageBase(amount)fonksiyonunu yazın; bu fonksiyonBaseHealthdeğeriniamountkadar azaltır ve 0'ın altına düşürmez.walkPathfonksiyonunun sonunda, son yol noktasından sonradamageBase(1)çağrısını yapın ve düşmanı yok edin.
Play'e, ardından Check'e basın.
Kendin dene
local Players = game:GetService("Players")
local ServerStorage = game:GetService("ServerStorage")
local Settings = require(game.ReplicatedStorage.Settings)
local enemies = workspace.Enemies
print("The base can take " .. Settings.BaseHealth .. " hits")
-- Sıralı yol noktaları (1, 2, 3... olarak adlandırılırlar)
local waypoints = workspace.Path.Waypoints:GetChildren()
table.sort(waypoints, function(a, b)
return tonumber(a.Name) < tonumber(b.Name)
end)
-- Her oyuncuya liderlik tablosunda Money verilir
Players.PlayerAdded:Connect(function(player)
local leaderstats = Instance.new("Folder")
leaderstats.Name = "leaderstats"
leaderstats.Parent = player
local money = Instance.new("IntValue")
money.Name = "Money"
money.Value = Settings.StartMoney
money.Parent = leaderstats
end)
-- Bir düşmanı yol boyunca ilerlet. MoveTo 8 saniye sonra denemeyi bırakır ve bunu bildirir
-- (MoveToFinished false ile), bu yüzden yavaş bir düşmana varana kadar yeniden hareket komutu verilir.
local function walkPath(enemy)
local humanoid = enemy.Humanoid
for i = 2, #waypoints do
repeat
humanoid:MoveTo(waypoints[i].Position)
until humanoid.MoveToFinished:Wait() or not enemy.Parent
if not enemy.Parent then
return
end
end
end
-- Kapıda, yol boyunca ilerleyen yeni bir düşman
local function spawnEnemy(kind)
local enemy = ServerStorage.Enemies[kind]:Clone()
-- ilk yol noktasının hemen üzerine yerleştirilir
enemy:PivotTo(waypoints[1].CFrame + Vector3.new(0, 5, 0))
enemy.Parent = enemies
task.spawn(walkPath, enemy)
return enemy
end
-- Şimdilik tek bir düşman
spawnEnemy("Zombie")
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.