Yori

Funcion puntos de miles

Wenas a todos!!

esta seccion esta un poco muerta la verdad, asique he decidido compartir una funcion para no tener que dejarse la vista en ver cuantos ceros o cifras tiene un numero cuando lo vemos en una quest, ad+ de que queda como mas profesional xD.

 

Weno, dejo una imagen del resultado. para que si os parece una tonteria os ahorreis seguir leyendo xD

 

Imagen enviada

 

captura para que veais como se usa la funcion, aunque tmb se puede usar asignando el valor a otra variable y despues mostrando esa variable, aunque es desaconsejable, ya que esto es simplemente visual, ya uqe en el momento que se le añaden los puntos el numero deja de ser un integer(numero) y se transforma en string(letras) por lo que no podreis sumarle nada ni cosas de esas.

Imagen enviada

 

para implementar esta funcion solo debeis añadirla a vuestro questlib.lua, no importa si es arriba o abajo o en el centro, siempre que no la metais dentro de otra funcion que este por alli xD.

 

function puntosMiles(a)
local b =""
local c
local d =""
if a < 1000 then return a end
for h=3,string.len(a),3 do
	if a >= 1000 then
		b=math.floor(a/1000)
		c=math.mod(a,1000)
		a=b
		if c == 0 then d=".000"..d
		elseif c <= 9 then d = ".00"..c..d
		elseif c <= 99 then d = ".0"..c..d
		else d = "."..c..d end
	else
		break
	end
end
return (b..""..d)
end

 

Nota: recordad que debeis añadir el nombre de la funcion al "quest_function" , y si no teneis añadidas las funciones "math.floor","math.mod" y "string.len" añadirlas tambien, ya que son parte de las librerias de lua que tienen todos los servers.

 

 

Pues creo que eso es todo, si teneis alguna duda... preguntar!!! xD

 

Saludos, Yori

Compartir esta publicación


Enlace a la publicación
Compartir en otros sitios

tambien puedes poner numeros, pero lo normal es que el valor que quieres mostrar ya lo tengas en alguna variable, como es mi caso, pero tambien podrias poner en la funcion envez de una variable un numero, y quedaria asi  "puntosMiles(123345)" ,  pero recuerda que la funcion no muestra en pantalla, es decir devuelve el valor, si quieres mostrarlo en pantalla tienes que hacerlo con un say, como he hecho en la imagen o de esta otra forma, pero es peor, porque declaras una variable innecesaria: 

 

local a = puntosMiles(1234567)
say(a)
 

 

Saludos

Compartir esta publicación


Enlace a la publicación
Compartir en otros sitios

Creo que no me he explicado bien sorry, digo por ejemplo si haces esto

 

say("El item te costara 1000000 de Yang")

 

En la quest saldría 

El item te costara 1.000.000 de Yang

o saldría

El item te costara 1000000 de Yang

Compartir esta publicación


Enlace a la publicación
Compartir en otros sitios

tendrias que hacerlo asi

 

say("El item te costara "..puntosMiles(100000000).." de yang")

 

Pero no tiene sentido usarlo asi, porque para eso lo pones directamente con puntos y ya sta

Compartir esta publicación


Enlace a la publicación
Compartir en otros sitios

tendrias que hacerlo asi

 

say("El item te costara "..puntosMiles(100000000).." de yang")

 

Pero no tiene sentido usarlo asi, porque para eso lo pones directamente con puntos y ya sta

También es verdad, me lié yo solo coño... xd

Compartir esta publicación


Enlace a la publicación
Compartir en otros sitios

Esa función ya existe, por Mijago.

function numtomoney(num)    local num,out,x = tostring(num),'',0    while string.len(num)-3 > 0 do        out = string.gsub(num,'.-(%d%d%d)$','.%1')..out        num = string.sub(num,0,string.len(num)-3)    end    return num..outend
Salu2.

Compartir esta publicación


Enlace a la publicación
Compartir en otros sitios

@pepineitor

 

la funcion de mijago no es perfecta, esa funcion no revisa a errores, ise una similar q captura errores si das algo mal

function num(a)	if type(tonumber(a))~='number' then		error('bad argument in function')	end	local function reverse(a)		str=''		for letter in string.gfind(a,'.') do			str = letter.. str		end		return str	end	res= reverse(reverse(a):gsub('(%d%d%d)','%1.')):gsub('^%.','')	return tonumber(a) > 0 and res or error('value more than 0 [value+1]')end

Compartir esta publicación


Enlace a la publicación
Compartir en otros sitios

Crear una cuenta o conéctate para comentar

Tienes que ser miembro para dejar un comentario

Crear una cuenta

Regístrese para obtener una cuenta nueva en nuestra comunidad. ¡Es fácil!


Registrar una nueva cuenta

Conectar

¿Ya tienes una cuenta? Conéctate aquí.


Conectar ahora

  • Recientemente navegando por este tema   0 miembros

    No hay usuarios registrados visitando esta página.