Menu
CoddyTech

Nombres de los ganadores

Lección 9 de 20 del curso Juego de Roblox: Supervivencia ante desastres de Coddy.

Un ganador quiere ver su nombre en luces. Para enumerar los nombres de los supervivientes, recopílalos en una lista y únelos.

Una lista es una tabla con claves 1, 2, 3. table.insert(list, value) añade un elemento al final, #list es su longitud y table.concat(list, ", ") une los elementos en una sola cadena con un separador entre ellos:

local names = {}
table.insert(names, "Ana")
table.insert(names, "Ben")
print(#names) --> 2
print(table.concat(names, ", ")) --> Ana, Ben

No se puede unir una cadena a una tabla con ..; eso es un error. Primero, une la lista en una cadena.

challenge icon

Desafío

Intermedio

Escribe los nombres de los ganadores en el tablero.

  1. Cuando termine la ronda, crea local names = {} e inserta Name de cada superviviente con table.insert.
  2. Muestra "Winners: " .. table.concat(names, ", ") o Nobody survived! cuando #names sea 0.

Pulsa «Jugar» y sobrevive a una ronda: el tablero te nombra ganador. Después, pulsa «Comprobar».

Pruébalo tú mismo

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")

-- Cada jugador obtiene Wins en la tabla de clasificación
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)

-- El panel de estado en la sala de espera
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

-- El bucle de rondas
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()
	-- Lección 9: Winner Names va aquí
	if next(survivors) then
		setStatus("Survivors win!")
	else
		setStatus("Nobody survived!")
	end
	task.wait(3)
end
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Juego de Roblox: Supervivencia ante desastres

Practica por tu cuenta: Playground de Roblox