Yori Posted June 20, 2013 Report Share Posted June 20, 2013 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 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. 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 Quote Link to comment Share on other sites More sharing options...
Rafa23Alzira Posted June 20, 2013 Report Share Posted June 20, 2013 Muy buena Yori, pero no me quedo muy claro como sería para usarla, tienes que hacer un local obligado o poniendo numeros ya sale solo? Quote Link to comment Share on other sites More sharing options...
Yori Posted June 20, 2013 Author Report Share Posted June 20, 2013 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 Quote Link to comment Share on other sites More sharing options...
Rafa23Alzira Posted June 20, 2013 Report Share Posted June 20, 2013 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 Quote Link to comment Share on other sites More sharing options...
Yori Posted June 20, 2013 Author Report Share Posted June 20, 2013 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 Quote Link to comment Share on other sites More sharing options...
Sneidder Posted June 20, 2013 Report Share Posted June 20, 2013 sistema de subastas esta bueno. yo lo tenia en web usando un cms de subastas , Quote Link to comment Share on other sites More sharing options...
Rafa23Alzira Posted June 20, 2013 Report Share Posted June 20, 2013 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 Quote Link to comment Share on other sites More sharing options...
pepineitor Posted June 20, 2013 Report Share Posted June 20, 2013 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..outendSalu2. Quote Link to comment Share on other sites More sharing options...
Croqueta Posted August 26, 2013 Report Share Posted August 26, 2013 @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 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.