Taller Lua

Catálogo/Sistema de rondas

KitsAvanzado

Sistema de rondas

Ciclo clásico: espera en lobby, teletransporta a la arena, dura N segundos y vuelve. El reloj es un Billboard en el lobby.

Valores

Dónde va

  1. 01

    Script

    Pega en ServerScriptService. Crea Lobby y Arena.

  2. 02

    Decora

    Mueve las dos plataformas y construye encima. El ciclo sigue igual.

Explorer → ServerScriptServiceScriptRondas

Rondas.luaScript
--[[
  Sistema de rondas · Taller Lua
  Pega este Script en ServerScriptService y pulsa Play.
  Es para TU juego en Roblox Studio — no es un exploit.
]]

local Players = game:GetService("Players")

local INTERMISSION = 12
local ROUND_TIME = 30

local old = workspace:FindFirstChild("TallerRounds")
if old then
	old:Destroy()
end

local folder = Instance.new("Folder")
folder.Name = "TallerRounds"
folder.Parent = workspace

local function platform(name, position, color)
	local p = Instance.new("Part")
	p.Name = name
	p.Anchored = true
	p.Size = Vector3.new(40, 1, 40)
	p.CFrame = CFrame.new(position)
	p.Color = color
	p.Material = Enum.Material.Slate
	p.Parent = folder
	return p
end

local lobby = platform("Lobby", Vector3.new(0, 6, 80), Color3.fromRGB(70, 90, 120))
local arena = platform("Arena", Vector3.new(0, 6, -80), Color3.fromRGB(120, 80, 70))

local spawnLoc = Instance.new("SpawnLocation")
spawnLoc.Anchored = true
spawnLoc.Duration = 0
spawnLoc.Size = Vector3.new(8, 1, 8)
spawnLoc.CFrame = lobby.CFrame + Vector3.new(0, 1, 0)
spawnLoc.Parent = folder

local clockPart = Instance.new("Part")
clockPart.Name = "Reloj"
clockPart.Anchored = true
clockPart.CanCollide = false
clockPart.Size = Vector3.new(1, 1, 1)
clockPart.Transparency = 1
clockPart.CFrame = lobby.CFrame + Vector3.new(0, 12, 0)
clockPart.Parent = folder

local gui = Instance.new("BillboardGui")
gui.Size = UDim2.fromOffset(280, 64)
gui.AlwaysOnTop = true
gui.Parent = clockPart
local label = Instance.new("TextLabel")
label.BackgroundTransparency = 1
label.Size = UDim2.fromScale(1, 1)
label.Font = Enum.Font.SourceSansBold
label.TextColor3 = Color3.new(1, 1, 1)
label.TextScaled = true
label.Parent = gui

local function teleportAll(part)
	for _, player in ipairs(Players:GetPlayers()) do
		local hrp = player.Character and player.Character:FindFirstChild("HumanoidRootPart")
		if hrp then
			local offset = Vector3.new(math.random(-12, 12), 4, math.random(-12, 12))
			hrp.CFrame = part.CFrame + offset
		end
	end
end

task.spawn(function()
	while true do
		for t = INTERMISSION, 1, -1 do
			label.Text = "LOBBY  " .. t
			task.wait(1)
		end
		teleportAll(arena)
		for t = ROUND_TIME, 1, -1 do
			label.Text = "RONDA  " .. t
			task.wait(1)
		end
		teleportAll(lobby)
	end
end)