📚 Banco de Snippets

Copia, pega y entiende por qué funciona.

Moneda que se recoge

Economía
local moneda = script.Parent
moneda.Touched:Connect(function(otro)
	local j = game.Players:GetPlayerFromCharacter(otro.Parent)
	if j then
		j.leaderstats.Monedas.Value += 1
		moneda:Destroy()
	end
end)

💬 Detecta al jugador, suma 1 moneda y borra la moneda.

Bloque que desaparece

Obby
local p = script.Parent
p.Touched:Connect(function()
	task.wait(0.5)
	p.Transparency = 1
	p.CanCollide = false
	task.wait(3)
	p.Transparency = 0
	p.CanCollide = true
end)

💬 Medio segundo después de pisarlo se vuelve invisible y vuelve en 3s.

Súper salto

Poderes
local p = script.Parent
p.Touched:Connect(function(otro)
	local h = otro.Parent:FindFirstChild("Humanoid")
	if h then h.JumpPower = 100 end
end)

💬 Cambia la fuerza de salto del personaje.

Velocidad

Poderes
local h = otro.Parent:FindFirstChild("Humanoid")
if h then h.WalkSpeed = 32 end

💬 WalkSpeed normal es 16; 32 es el doble.

Parte que gira

Animación
local p = script.Parent
while true do
	p.CFrame = p.CFrame * CFrame.Angles(0, math.rad(2), 0)
	task.wait()
end

💬 Cada fotograma gira 2 grados.

Mensaje de bienvenida

Básico
game.Players.PlayerAdded:Connect(function(j)
	print("¡Bienvenido, " .. j.Name .. "!")
end)

💬 Corre cada vez que entra un jugador.

Temporizador

Básico
for i = 10, 1, -1 do
	print(i)
	task.wait(1)
end
print("¡Ya!")

💬 Cuenta hacia atrás de 10 a 1, un segundo cada número.

Parte de lava

Obby
local p = script.Parent
p.Touched:Connect(function(otro)
	local h = otro.Parent:FindFirstChild("Humanoid")
	if h then h.Health = 0 end
end)

💬 Si un personaje la toca, vuelve al checkpoint.

Curación

Poderes
local p = script.Parent
p.Touched:Connect(function(otro)
	local h = otro.Parent:FindFirstChild("Humanoid")
	if h then h.Health = h.MaxHealth end
end)

💬 Llena la vida al máximo.

Color al azar

Animación
local p = script.Parent
while true do
	p.Color = Color3.fromRGB(math.random(255), math.random(255), math.random(255))
	task.wait(1)
end

💬 Cambia de color cada segundo.

Crear una parte

Básico
local p = Instance.new("Part")
p.Size = Vector3.new(4, 1, 4)
p.Position = Vector3.new(0, 10, 0)
p.Anchored = true
p.Parent = workspace

💬 Crea un bloque nuevo desde el código.

Leaderstats

Economía
game.Players.PlayerAdded:Connect(function(j)
	local ls = Instance.new("Folder")
	ls.Name = "leaderstats"
	ls.Parent = j
	local m = Instance.new("IntValue")
	m.Name = "Monedas"
	m.Parent = ls
end)

💬 Muestra las monedas de cada jugador en la tabla.

Botón de GUI

GUI
local boton = script.Parent
boton.MouseButton1Click:Connect(function()
	boton.Text = "¡Pulsado!"
end)

💬 Un LocalScript dentro de un TextButton cambia su texto.

Sonido al tocar

Efectos
local p = script.Parent
local s = p:WaitForChild("Sound")
p.Touched:Connect(function()
	if not s.IsPlaying then s:Play() end
end)

💬 Reproduce el sonido solo si no está sonando.

Puerta con tween

Animación
local TS = game:GetService("TweenService")
local puerta = script.Parent
local abierta = { Position = puerta.Position + Vector3.new(0, 8, 0) }
TS:Create(puerta, TweenInfo.new(1), abierta):Play()

💬 La puerta sube suavemente en 1 segundo.

Teletransporte

Obby
local p = script.Parent
local destino = workspace.Destino
p.Touched:Connect(function(otro)
	local raiz = otro.Parent:FindFirstChild("HumanoidRootPart")
	if raiz then raiz.CFrame = destino.CFrame + Vector3.new(0, 3, 0) end
end)

💬 Mueve al jugador encima de la parte Destino.

Tabla de premios

Básico
local premios = {"Espada", "Escudo", "Poción"}
local elegido = premios[math.random(#premios)]
print("Ganaste: " .. elegido)

💬 Elige un premio al azar de la lista.

Enviar RemoteEvent

Multijugador
-- LocalScript
local RE = game.ReplicatedStorage:WaitForChild("Comprar")
RE:FireServer("Salto")

💬 El cliente pide comprar; el servidor decide.

Recibir RemoteEvent

Multijugador
-- Script
local RE = game.ReplicatedStorage.Comprar
RE.OnServerEvent:Connect(function(j, cosa)
	print(j.Name .. " quiere " .. cosa)
end)

💬 El servidor recibe quién pidió y qué pidió.

Guardar monedas

Datos
local DS = game:GetService("DataStoreService"):GetDataStore("Monedas")
game.Players.PlayerRemoving:Connect(function(j)
	pcall(function()
		DS:SetAsync(j.UserId, j.leaderstats.Monedas.Value)
	end)
end)

💬 Guarda las monedas cuando el jugador sale. pcall evita que un error rompa el juego.