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
- 01
Script
Pega en ServerScriptService. Crea Lobby y Arena.
- 02
Decora
Mueve las dos plataformas y construye encima. El ciclo sigue igual.
Explorer → ServerScriptService → Script “Rondas”
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)