M
Description
Free cosmetics Go to the equipment menu, then in the script choose your appearance and tap run with the flags button, choose the language
GAMEBlood and Iron
UPDATEDOct 18, 2026
ACCESSKeyless
PLATFORMDesktop
Script source Luau
-- [[ BloxScripts Risk Notice ]]
-- This script has not been verified by BloxScripts.fun. Deal with caution.
--
-- Stay safe:
-- • Never log in on unofficial Roblox sites or lookalike domains.
-- • Real Roblox links use roblox.com (check the .com ending).
-- • Treat fake Roblox login / "claim reward" pages as phishing.
-- [[ End BloxScripts Risk Notice ]]
-- =========================================================
-- SELECTOR DE APARIENCIA - BLOOD & IRON
-- Idiomas: Español, English, Português, Русский, 中文
-- =========================================================
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local player = Players.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")
local FACCION = "Infantry"
local RANGO = "Ranker"
-- Códigos de los equipos
local EQUIPOS = {
["French Empire"] = "1eRdI",
["French Republic"] = "16eDBdB",
["Spanish Empire"] = "RdIC",
["Brunswick Ducal Corps"] = "1.LB",
["Kingdom of Westphalia"] = "1.IR",
["Kingdom of the Netherlands"] = "1.BI",
["Austrian Empire"] = "IRn1",
["Russian Empire"] = "PPP",
["Duchy of Nassau"] = "1.IR",
["Kingdom of Prussia"] = "8.IR",
["United Kingdom"] = "1stRoF",
["Duchy of Warsaw"] = "1.PP",
["Kingdom of Bavaria"] = "1.IR",
}
-- =========================================================
-- COSMÉTICOS
-- =========================================================
local COSMETICOS = {
"None",
"Stubble",
"Black Eye",
"Freckles",
"Monocle",
"Eyepatch",
"Spectacles",
"Scarred",
"Old Scars",
"Flower",
"Earrings",
"Bushy Brows",
"One-eyed",
"Burnt",
"Smile",
"Farmer",
"Bandages",
"Muddy",
}
-- =========================================================
-- PELO Y BARBA
-- =========================================================
local PELO = {
"Brown Haired",
"Dark Haired",
"Fair Haired",
"Grey Haired",
"Red Haired",
"Auburn Haired",
"Old Man",
"Long Hair",
"Ponytail",
"English",
"Horseshoe",
"Chin Puff",
"Beard",
"Handlebar",
"Franz Josef",
"French Fork",
"Dali",
"Full Beard",
"Napoleon III",
"Curly",
"Dutch",
"Fancy",
"Pancho Villa",
"Scarred",
"Droopy",
"Souvarov",
"Professor",
"Long Chin",
"Ginger Beard",
"Braided Beard",
"Flaxen Beard",
"Auburn Beard",
"Mutton Chops",
"Darwin",
"Pencil",
"Golden Stash",
"Orange Stash",
"Circle",
"Blucher",
"Poniatowski",
"El Empecinado",
"Sharpe",
-- Opciones añadidas
"Braid",
"Black Bun",
"Golden Locks",
"Bald",
"Curtain",
"Fu Manchu",
"Ney",
"William II",
"Bismarck",
"Twirl",
"George III",
"Alexander I",
"Anchor",
"Jourdan",
"Colonel",
"Sparrow",
"Blake y Joyes",
"Walrus",
}
-- =========================================================
-- TONOS DE PIEL
-- =========================================================
local TONOS_PIEL = {
"SkinTone1",
"SkinTone2",
"SkinTone3",
"SkinTone4",
"SkinTone5",
"SkinTone6",
"SkinTone7",
"SkinTone8",
}
-- =========================================================
-- IDIOMAS
-- =========================================================
local IDIOMAS = {
{
codigo = "es",
bandera = "🇪🇸",
nombre = "Español",
textos = {
titulo = "SELECTOR DE APARIENCIA",
cosmeticos = "COSMÉTICOS",
pelo = "PELO / BARBA",
tono = "TONO DE PIEL",
estado = "Elige cosmético, pelo/barba y tono de piel.",
ejecutar = "EJECUTAR SCRIPT",
abrir = "☰ APARIENCIA",
cerrar = "X",
idioma = "IDIOMA",
seleccionado = " seleccionado: ",
solicitud = "Solicitud enviada: ",
equipo = "Equipo no reconocido: ",
error = "Error: ",
aviso = "Selecciona tu apariencia y pulsa EJECUTAR",
},
},
{
codigo = "en",
bandera = "🇺🇸",
nombre = "English",
textos = {
titulo = "APPEARANCE SELECTOR",
cosmeticos = "COSMETICS",
pelo = "HAIR / BEARD",
tono = "SKIN TONE",
estado = "Choose a cosmetic, hair/beard and skin tone.",
ejecutar = "RUN SCRIPT",
abrir = "☰ APPEARANCE",
cerrar = "X",
idioma = "LANGUAGE",
seleccionado = " selected: ",
solicitud = "Request sent: ",
equipo = "Unrecognized team: ",
error = "Error: ",
aviso = "Choose your appearance and tap RUN",
},
},
{
codigo = "pt",
bandera = "🇵🇹",
nombre = "Português",
textos = {
titulo = "SELETOR DE APARÊNCIA",
cosmeticos = "COSMÉTICOS",
pelo = "CABELO / BARBA",
tono = "TOM DE PELE",
estado = "Escolha cosmético, cabelo/barba e tom de pele.",
executar = "EXECUTAR SCRIPT",
abrir = "☰ APARÊNCIA",
cerrar = "X",
idioma = "IDIOMA",
seleccionado = " selecionado: ",
solicitud = "Solicitação enviada: ",
equipo = "Equipe não reconhecida: ",
error = "Erro: ",
aviso = "Escolha sua aparência e toque em EXECUTAR",
},
},
{
codigo = "ru",
bandera = "🇷🇺",
nombre = "Русский",
textos = {
titulo = "ВЫБОР ВНЕШНОСТИ",
cosmeticos = "АКСЕССУАРЫ",
pelo = "ВОЛОСЫ / БОРОДА",
tono = "ТОН КОЖИ",
estado = "Выберите аксессуар, волосы/бороду и тон кожи.",
ejecutar = "ЗАПУСТИТЬ СКРИПТ",
abrir = "☰ ВНЕШНОСТЬ",
cerrar = "X",
idioma = "ЯЗЫК",
seleccionado = " выбрано: ",
solicitud = "Запрос отправлен: ",
equipo = "Неизвестная команда: ",
error = "Ошибка: ",
aviso = "Выберите внешность и нажмите запуск",
},
},
{
codigo = "zh",
bandera = "🇨🇳",
nombre = "中文",
textos = {
titulo = "外观选择器",
cosmeticos = "装饰",
pelo = "头发 / 胡须",
tono = "肤色",
estado = "请选择装饰、头发/胡须和肤色。",
ejecutar = "执行脚本",
abrir = "☰ 外观",
cerrar = "X",
idioma = "语言",
seleccionado = "已选择:",
solicitud = "已发送请求:",
equipo = "无法识别的队伍:",
error = "错误:",
aviso = "选择外观后点击执行",
},
},
}
local idiomaActual = IDIOMAS[1]
local function T(clave)
return idiomaActual.textos[clave] or clave
end
local function traducirNombre(nombre)
return nombre
end
-- =========================================================
-- ELIMINAR INTERFAZ ANTERIOR
-- =========================================================
local old = playerGui:FindFirstChild("SelectorCosmeticos")
if old then
old:Destroy()
end
-- =========================================================
-- INTERFAZ PRINCIPAL
-- =========================================================
local gui = Instance.new("ScreenGui")
gui.Name = "SelectorCosmeticos"
gui.ResetOnSpawn = false
gui.DisplayOrder = 10
gui.Parent = playerGui
local toggle = Instance.new("TextButton")
toggle.Size = UDim2.fromOffset(145, 42)
toggle.Position = UDim2.new(0, 12, 0, 12)
toggle.BackgroundColor3 = Color3.fromRGB(35, 85, 145)
toggle.TextColor3 = Color3.new(1, 1, 1)
toggle.TextSize = 15
toggle.Font = Enum.Font.GothamBold
toggle.Parent = gui
Instance.new("UICorner", toggle).CornerRadius = UDim.new(0, 8)
local panel = Instance.new("Frame")
panel.Size = UDim2.new(0.82, 0, 0.68, 0)
panel.Position = UDim2.new(0.09, 0, 0.17, 0)
panel.BackgroundColor3 = Color3.fromRGB(24, 27, 34)
panel.Visible = false
panel.Parent = gui
Instance.new("UICorner", panel).CornerRadius = UDim.new(0, 12)
local limit = Instance.new("UISizeConstraint")
limit.MinSize = Vector2.new(260, 300)
limit.MaxSize = Vector2.new(420, 540)
limit.Parent = panel
local title = Instance.new("TextLabel")
title.Size = UDim2.new(1, -50, 0, 42)
title.Position = UDim2.fromOffset(12, 0)
title.BackgroundTransparency = 1
title.TextColor3 = Color3.new(1, 1, 1)
title.TextSize = 16
title.Font = Enum.Font.GothamBold
title.TextXAlignment = Enum.TextXAlignment.Left
title.Parent = panel
local close = Instance.new("TextButton")
close.Size = UDim2.fromOffset(36, 34)
close.Position = UDim2.new(1, -42, 0, 4)
close.TextColor3 = Color3.new(1, 1, 1)
close.BackgroundColor3 = Color3.fromRGB(150, 55, 55)
close.Parent = panel
local aviso = Instance.new("TextLabel")
aviso.Name = "AvisoEquipamiento"
aviso.Size = UDim2.new(0.82, 0, 0, 38)
aviso.Position = UDim2.new(0.09, 0, 0.17, -42)
aviso.BackgroundColor3 = Color3.fromRGB(45, 75, 115)
aviso.TextColor3 = Color3.new(1, 1, 1)
aviso.TextSize = 12
aviso.Font = Enum.Font.GothamBold
aviso.TextWrapped = true
aviso.Visible = false
aviso.Parent = gui
Instance.new("UICorner", aviso).CornerRadius = UDim.new(0, 6)
-- =========================================================
-- LISTA DESPLAZABLE
-- =========================================================
local content = Instance.new("ScrollingFrame")
content.Position = UDim2.fromOffset(10, 48)
content.Size = UDim2.new(1, -20, 1, -150)
content.BackgroundColor3 = Color3.fromRGB(32, 36, 45)
content.BorderSizePixel = 0
content.ScrollBarThickness = 5
content.AutomaticCanvasSize = Enum.AutomaticSize.Y
content.CanvasSize = UDim2.new()
content.Parent = panel
local layout = Instance.new("UIListLayout")
layout.Padding = UDim.new(0, 5)
layout.SortOrder = Enum.SortOrder.LayoutOrder
layout.Parent = content
local padding = Instance.new("UIPadding")
padding.PaddingTop = UDim.new(0, 6)
padding.PaddingBottom = UDim.new(0, 6)
padding.Parent = content
-- =========================================================
-- ESTADO
-- =========================================================
local status = Instance.new("TextLabel")
status.Size = UDim2.new(1, -20, 0, 38)
status.Position = UDim2.new(0, 10, 1, -43)
status.BackgroundTransparency = 1
status.TextColor3 = Color3.fromRGB(190, 210, 230)
status.TextSize = 12
status.Font = Enum.Font.Gotham
status.TextWrapped = true
status.Parent = panel
local seleccion = {
Accessory = "None",
Hair = "Brown Haired",
SkinTone = "SkinTone3",
}
local datosBotones = {}
local secciones = {}
local function actualizarBotones()
for _, dato in ipairs(datosBotones) do
dato.button.Text = traducirNombre(dato.valor)
if seleccion[dato.clave] == dato.valor then
dato.button.BackgroundColor3 = Color3.fromRGB(45, 115, 85)
else
dato.button.BackgroundColor3 = Color3.fromRGB(48, 52, 62)
end
end
end
-- =========================================================
-- CREAR SECCIONES
-- =========================================================
local function crearSeccion(nombreClave, lista, clave)
local header = Instance.new("TextLabel")
header.Size = UDim2.new(1, -8, 0, 32)
header.BackgroundColor3 = Color3.fromRGB(45, 75, 115)
header.TextColor3 = Color3.new(1, 1, 1)
header.Font = Enum.Font.GothamBold
header.TextSize = 14
header.TextXAlignment = Enum.TextXAlignment.Left
header.Parent = content
secciones[nombreClave] = header
for _, nombreItem in ipairs(lista) do
local b = Instance.new("TextButton")
b.Size = UDim2.new(1, -8, 0, 36)
b.BackgroundColor3 = Color3.fromRGB(48, 52, 62)
b.TextColor3 = Color3.new(1, 1, 1)
b.Text = traducirNombre(nombreItem)
b.TextSize = 14
b.Font = Enum.Font.Gotham
b.Parent = content
table.insert(datosBotones, {
button = b,
clave = clave,
valor = nombreItem,
})
b.Activated:Connect(function()
seleccion[clave] = nombreItem
actualizarBotones()
status.Text = traducirNombre(nombreItem)
.. T("seleccionado")
end)
end
end
crearSeccion("cosmeticos", COSMETICOS, "Accessory")
crearSeccion("pelo", PELO, "Hair")
crearSeccion("tono", TONOS_PIEL, "SkinTone")
-- =========================================================
-- BOTÓN DE EJECUCIÓN
-- =========================================================
local runButton = Instance.new("TextButton")
runButton.Size = UDim2.new(1, -20, 0, 40)
runButton.Position = UDim2.new(0, 10, 1, -98)
runButton.BackgroundColor3 = Color3.fromRGB(60, 120, 60)
runButton.TextColor3 = Color3.new(1, 1, 1)
runButton.TextSize = 15
runButton.Font = Enum.Font.GothamBold
runButton.Parent = panel
Instance.new("UICorner", runButton).CornerRadius = UDim.new(0, 8)
-- =========================================================
-- SELECTOR DE IDIOMA
-- =========================================================
local languageBall = Instance.new("TextButton")
languageBall.Name = "LanguageBall"
languageBall.Size = UDim2.fromOffset(48, 48)
languageBall.Position = UDim2.new(1, -62, 0.5, -24)
languageBall.BackgroundColor3 = Color3.fromRGB(45, 75, 115)
languageBall.TextSize = 27
languageBall.Visible = false
languageBall.Parent = gui
Instance.new("UICorner", languageBall).CornerRadius = UDim.new(1, 0)
local languageMenu = Instance.new("Frame")
languageMenu.Name = "LanguageMenu"
languageMenu.Size = UDim2.fromOffset(170, 220)
languageMenu.Position = UDim2.new(1, -182, 0.5, 32)
languageMenu.BackgroundColor3 = Color3.fromRGB(24, 27, 34)
languageMenu.Visible = false
languageMenu.Parent = gui
Instance.new("UICorner", languageMenu).CornerRadius = UDim.new(0, 8)
local languageLayout = Instance.new("UIListLayout")
languageLayout.Padding = UDim.new(0, 4)
languageLayout.Parent = languageMenu
local languagePadding = Instance.new("UIPadding")
languagePadding.PaddingTop = UDim.new(0, 5)
languagePadding.PaddingLeft = UDim.new(0, 5)
languagePadding.PaddingRight = UDim.new(0, 5)
languagePadding.Parent = languageMenu
local function actualizarIdioma()
toggle.Text = T("abrir")
title.Text = T("titulo")
close.Text = T("cerrar")
aviso.Text = T("aviso")
runButton.Text = T("ejecutar")
languageBall.Text = idiomaActual.bandera
secciones.cosmeticos.Text = " " .. T("cosmeticos")
secciones.pelo.Text = " " .. T("pelo")
secciones.tono.Text = " " .. T("tono")
actualizarBotones()
end
for _, idioma in ipairs(IDIOMAS) do
local b = Instance.new("TextButton")
b.Size = UDim2.new(1, 0, 0, 38)
b.BackgroundColor3 = Color3.fromRGB(48, 52, 62)
b.TextColor3 = Color3.new(1, 1, 1)
b.TextSize = 13
b.Font = Enum.Font.Gotham
b.Text = idioma.bandera .. " " .. idioma.nombre
b.Parent = languageMenu
b.Activated:Connect(function()
idiomaActual = idioma
languageMenu.Visible = false
actualizarIdioma()
end)
end
-- =========================================================
-- ABRIR Y CERRAR MENÚ
-- =========================================================
local function cambiarPanel()
panel.Visible = not panel.Visible
aviso.Visible = panel.Visible
languageBall.Visible = panel.Visible
if not panel.Visible then
languageMenu.Visible = false
end
end
toggle.Activated:Connect(cambiarPanel)
close.Activated:Connect(function()
panel.Visible = false
aviso.Visible = false
languageBall.Visible = false
languageMenu.Visible = false
end)
languageBall.Activated:Connect(function()
languageMenu.Visible = not languageMenu.Visible
end)
-- =========================================================
-- ENVIAR SOLICITUDES
-- =========================================================
local ejecutando = false
runButton.Activated:Connect(function()
if ejecutando then
return
end
ejecutando = true
runButton.Active = false
runButton.AutoButtonColor = false
local ok, err = pcall(function()
local team = player.Team
local extra = team and EQUIPOS[team.Name]
if not extra then
status.Text = T("equipo")
.. (team and team.Name or "None")
return
end
local requests = ReplicatedStorage:WaitForChild("Requests")
local remote = requests:WaitForChild(
"RequestPreparationToSpawn"
)
local equipmentRemote = requests:WaitForChild(
"RequestEquipmentSelectionGUI"
)
remote:FireServer(
FACCION,
extra,
RANGO,
{
Accessory = seleccion.Accessory,
SkinTone = seleccion.SkinTone,
Hair = seleccion.Hair,
}
)
status.Text = T("solicitud")
.. seleccion.Accessory .. " / "
.. seleccion.Hair .. " / "
.. seleccion.SkinTone
task.wait()
equipmentRemote:FireServer()
end)
if not ok then
status.Text = T("error") .. tostring(err)
end
ejecutando = false
runButton.Active = true
runButton.AutoButtonColor = true
end)
-- =========================================================
-- INICIALIZAR
-- =========================================================
actualizarIdioma()
status.Text = T("estado")
Review the source before using it. Executions count successful copies, capped at 10 per user and network per script in 24 hours.
Community discussion
0Start the conversation.


Your community, in one place