Roblox GuidebookBase de conocimiento
Español ⌄

Desarrollo / ROBLOX

Texto de progreso en Luau: conserva el valor numérico

Construye una etiqueta clara, convierte una cadena numérica de forma explícita y evita ordenar cantidades como texto.

Actualizado:

Empieza con un contador de entregas #

Imagina una ruta de práctica con veinte paquetes y siete entregados. El valor útil para calcular es el número 7; la etiqueta legible es una representación independiente. Decide primero qué variable conserva el trabajo completado y qué expresión produce el texto. Esa decisión permite revisar el ejemplo antes de conectar cualquier objeto real de la interfaz.

Los valores del ejercicio son elegidos por el autor. No se leen mensajes de jugadores, no se conceden premios y no se guarda progreso. La consola permite demostrar operaciones con cadenas sin afirmar que una interfaz de Roblox ya está conectada. Escribe de antemano el resultado completo, con espacios y signos, para poder reconocer una ejecución correcta.

Forma la etiqueta desde números #

Ejecuta el primer ejemplo en un intérprete de Luau o en un script de práctica separado. completed y total siguen siendo números. tostring obtiene su representación textual y los dos puntos consecutivos unen las partes. Los espacios pertenecen a las cadenas indicadas. La primera salida debe ser exactamente Parcels: 7 / 20, con espacios alrededor de la barra.

La segunda salida utiliza string.format y los marcadores %d para los mismos valores enteros. Produce la misma etiqueta y no modifica completed. Cuando aumentes el contador numérico, construye otra etiqueta desde el nuevo valor. Un texto guardado anteriormente no se actualiza por sí solo: podría seguir mostrando siete aunque el trabajo completado ya haya cambiado.

Número y etiquetaAbrir imagen a tamaño completo ↗
Diagrama original: conservar el número y crear la etiqueta desde su valor actual.
local completed = 7
local total = 20
local caption = "Parcels: " .. tostring(completed) .. " / " .. tostring(total)
print(caption)
print(string.format("Parcels: %d / %d", completed, total))

Elige palabras y espacios deliberadamente #

La concatenación no introduce un separador entre dos piezas. Unir Parcels directamente con una cifra, sin dos puntos ni espacio, dificulta la lectura. Conserva la puntuación en una plantilla visible en lugar de repartirla entre instrucciones sin relación. Compara toda la salida con la línea esperada, incluidos los espacios que parecen pequeños detalles visuales.

Los marcadores enteros son adecuados porque este ejercicio cuenta paquetes completos. Una fracción necesita una regla de presentación elegida aparte; %d no promete conservar todos los decimales. Mostrar porcentajes, redondear o cambiar la unidad son decisiones posteriores. Define la salida deseada para ese nuevo caso y compruébala, sin atribuirle la verificación realizada para cantidades enteras.

Convierte una cadena conocida con comprobación #

El segundo ejemplo empieza con la cadena "7", fijada por el autor. tonumber intenta obtener un número y devuelve nil cuando la conversión falla. La rama explícita para nil informa de progreso inválido y devuelve una etiqueta alternativa. La conversión correcta produce la etiqueta normal. Así el error no se disfraza silenciosamente de un progreso igual a cero.

El caso negativo utiliza "seven". Las dos líneas resultantes son Invalid progress y Parcels: unavailable. Convertir no constituye una regla completa del juego: una futura aceptación de valores puede requerir límites y una comprobación de cantidad entera. Este ejercicio no incluye entradas de jugadores ni presentación de mensajes del chat; esos sistemas no quedan probados por estas salidas.

Comprobar conversiónAbrir imagen a tamaño completo ↗
Diagrama original de conversión: nil sigue una rama de fallo explícita.
local function progressCaption(raw)
    local completed = tonumber(raw)
    if completed == nil then
        print("Invalid progress")
        return "Parcels: unavailable"
    end
    return string.format("Parcels: %d / %d", completed, 20)
end
print(progressCaption("7"))
print(progressCaption("seven"))

No compares etiquetas como cantidades #

Comparar "100" y "20" como cadenas solicita orden textual, no magnitud numérica. El primer carácter puede decidir el resultado antes de considerar el resto de cifras. En este ejemplo, la comparación textual devuelve true aunque el número 100 sea mayor que 20. Esa diferencia ayuda a reconocer un tipo incorrecto antes de conectar un contador real.

Para comparar cantidades, conserva números o convierte cadenas conocidas y trata nil antes de realizar la operación. Añadir ceros iniciales a la etiqueta no sustituye esa separación, salvo que el orden textual de ancho fijo sea realmente tu objetivo. La presentación elegida para leer no debe determinar cuánto trabajo está terminado ni cuál de dos cantidades es mayor.

Separa conversión y reglas del juego #

Una conversión correcta indica que el texto puede interpretarse como número. No indica que sea una cantidad válida de paquetes. Un valor negativo, una fracción o una cantidad superior a total pueden ser numéricos y aun así infringir la regla prevista. Describe esas decisiones antes de diseñar la comprobación definitiva o entregar el ejemplo a otra persona.

La demostración comprueba intencionadamente una cadena numérica conocida y una palabra claramente inválida. Las afirmaciones ejecutables comprueban también la diferencia entre orden textual y numérico. No certifican todas las entradas, todos los idiomas ni una experiencia publicada. Anota el alcance limitado y enumera las comprobaciones de dominio que un siguiente desarrollador todavía tendrá que añadir.

Traduce la etiqueta sin cambiar los datos #

La explicación puede describir la etiqueta en español, pero los ejemplos conservan una salida inglesa fija para que todas las versiones repitan la misma comprobación. En una interfaz localizada real, coloca palabras y puntuación en una plantilla traducida adecuada. El significado numérico del progreso debe permanecer separado de su idioma y del orden de las palabras.

Cuando conectes una interfaz auténtica, revisa por separado una traducción más larga y una disposición de derecha a izquierda. Este artículo no muestra esa conexión ni demuestra que el texto quepa en un teléfono. La separación transferible es clara: un número sirve para calcular y una cadena localizada para leer. Tamaño, dirección y actualización visible requieren observaciones propias.

EntradaSalida esperada
Números 7 y 20Parcels: 7 / 20
Cadena 7Parcels: 7 / 20
Palabra sevenError y etiqueta alternativa
Cadenas 100 y 20Comparación textual: true

Entrega un resultado reproducible #

Guarda los dos ejemplos fuente, sus salidas esperadas y el archivo de afirmaciones en el mismo conjunto. Registra qué intérprete los ejecutó y si terminó correctamente. Otra persona debería repetir la etiqueta y la rama inválida sin una cuenta, servidor o acceso a tu juego publicado. El nombre del archivo no sustituye la revisión del contenido realmente ejecutado.

Antes de ampliar el ejercicio, revisa si los cálculos siguen usando números, si una conversión fallida tiene su rama explícita y si la etiqueta incluye todos los separadores previstos. Especifica después la integración real como un paso independiente. La consola confirma estas operaciones con cadenas; no demuestra progreso guardado, texto mostrado a jugadores ni cambios en una experiencia existente.

RegistroQué entregar
Datoscompleted y total numéricos
EtiquetaPlantilla y salida completa
FalloRama nil y texto alternativo
ComprobaciónIntérprete y salida real

Fuentes originales

Roblox — Official documentation