Tên người chiến thắng
Bài học 9 trên 20 trong khóa học Trò chơi Roblox: sinh tồn trước thảm họa của Coddy.
Người chiến thắng muốn thấy tên mình được chiếu sáng. Để liệt kê tên những người sống sót, hãy gom chúng vào một danh sách (list) rồi nối danh sách lại.
Danh sách là một bảng (table) có các khóa (key) 1, 2, 3. table.insert(list, value) thêm phần tử vào cuối, #list là độ dài của danh sách, còn table.concat(list, ", ") nối các phần tử thành một chuỗi (string) với dấu phân cách ở giữa:
local names = {}
table.insert(names, "Ana")
table.insert(names, "Ben")
print(#names) --> 2
print(table.concat(names, ", ")) --> Ana, BenKhông thể nối chuỗi với bảng bằng ..; đó là lỗi. Trước tiên, hãy nối danh sách thành một chuỗi.
Thử thách
Trung bìnhHiển thị tên người chiến thắng trên bảng.
- Khi vòng đấu kết thúc, tạo
local names = {}rồi dùngtable.insertđể thêmNamecủa từng người sống sót. - Hiển thị
"Winners: " .. table.concat(names, ", "), hoặcNobody survived!khi#namesbằng 0.
Nhấn Chơi và sống sót qua một vòng đấu: bảng sẽ hiển thị tên bạn là người chiến thắng. Sau đó nhấn Kiểm tra.
Tự làm thử
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")
-- Mỗi người chơi đều có Wins trên bảng xếp hạng
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)
-- Bảng trạng thái trong sảnh chờ
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
-- Vòng lặp (loop) của các vòng chơi
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
for player in survivors do
player.leaderstats.Wins.Value += 1
teleport(player, lobbySpawn)
end
map:Destroy()
-- Bài học 9: Thêm tên người chiến thắng vào đây
if next(survivors) then
setStatus("Survivors win!")
else
setStatus("Nobody survived!")
end
task.wait(3)
end
Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Trò chơi Roblox: sinh tồn trước thảm họa
4Biến mọi thứ thành trò chơi
Hai bản đồ2Bản đồ và người chơi
Tải bản đồTự luyện tập: Playground Roblox