Jump to content

Duda sobre script.


jeffry4

Recommended Posts

Buenas a todos. A ver, quiero hacer esto:

local ntest = 0000

local id = 32

local suma = id + ntest

local suma = tonumber(suma)

El problema es que al hacer eso, quiero que suma fuera 0032, y sin embargo, MTA me quita los 0 y me lo deja en 32.

Como numero, '0032' es igual a '32', por ende, se ignoran los cero. Si buscas añadir un cero en la izquierda del numero utiliza 'tostring' y manipulalo como un string.

function addZero( number, size ) 
  local number = tostring( number ) 
  local number = #number < size and ( ('0'):rep( size - #number )..number ) or number 
     return number 
end 

El primer argumento es el numero que quieras modificar, el segundo es el tamaño final del string, por ejemplo:

addZero( 58, 3 ) 
--OUTPUT: 058 
  
addZero( 1, 8 ) 
--OUTPUT: 00000001 
  
addZero( 854, 1 ) 
--OUTPUT: 854 

Edited by Guest
Link to comment

Primero. Para que usas tonumber? si estas sumando dos números, el resultado siempre va ser un numero. Incluso, si tu sumas un numero con un string, el resultado va a ser un numero también. Si quieres comprobarlo puedes hacer esto:

outputChatBox(type( 5 + 5 )) -- > esto te da numero 
outputChatBox(type( 5 + "10" )) -- > esto te da numero tambien 

okey, y para agregar los ceros puedes hacer algo así:

local ntest = "0000" -- aca pon los ceros que quieras 
local id = 32 
local ntest_digitos = string.len(ntest) -- con esto obtenemos el numero de ceros 
local id_digitos = string.len(id) -- y con esto el numero de digitos de la id 
  
if id_digitos < ntest_digitos then 
    id = string.sub(ntest, 1, ntest_digitos - id_digitos) .. id 
end 
  
outputChatBox(id) 

de esta forma puedes poner la cantidad de ceros que quieras, pero recuerda que al final te resultará un string, si lo conviertes de nuevo a numero se le borrarán esos ceros.

Link to comment
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...