Alt Eden Su
Coddy'nin Roblox Oyunu: Felaketten Sağ Kalma kursunda ders 10 / 20.
İlk felaketin zamanı. Oyunda birkaç felaket olacak, bu yüzden hepsi tek bir tabloda yer alacak ve her biri haritayı alan bir işlev olacak. Bir tabloda saklanan işlev, diğer işlevler gibi çağrılır:
local Disasters = {}
function Disasters.Flood(map)
-- suyu oluştur
end
Disasters.Flood(map)Sel, adanın altında geniş mavi bir parça olarak başlar. Oyuncuları havada tutmamalı, bu nedenle CanCollide false olur (Touched yine de tetiklenir) ve Anchored olarak kalır. Her felaket dokunduğu kişiyi oyundan çıkaracağından, bu işleme bir ad verelim:
local function defeat(hit)
local humanoid = hit.Parent:FindFirstChild("Humanoid")
if humanoid then
humanoid.Health = 0
end
end
lava.Touched:Connect(defeat)hit, dokunan parçadır; örneğin bir ayak. Parent karakterdir. Suyu haritanın içine yerleştir ki turun sonunda harita yok edildiğinde su da onunla birlikte yok olsun.
Görev
Ortaİlk felaketi ekle: oyuncuyu yenen su.
defeat(hit)yaz:hit.Parentbir Humanoid içeriyorsa Health değerini 0 yap.local Disasters = {}veDisasters.Flood(map)oluştur: haritadaWateradında bir parça olsun; sabitlenmiş, CanCollide false,map.Base'ten 10 stud daha geniş ve uzun, ondan 2 stud aşağıda olsun ve Touched,defeat'e bağlansın.- Işınlanmadan sonra
Disasters.Flood(map)çağır.
“Oyna” düğmesine bas ve adadan aşağı yürü: altındaki su seni yener. Ardından “Kontrol et” düğmesine bas.
Kendin dene
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")
-- Her oyuncunun liderlik tablosunda Wins değeri olur
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)
-- Bekleme alanındaki durum panosu
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
-- Ders 10: Yenilgiye Uğratan Su buraya gelecek
-- Tur döngüsü
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
Roblox Oyunu: Felaketten Sağ Kalma bölümündeki tüm dersler
Kendi başına pratik yap: Roblox playground