Dextrok Publicado 22 de Septiembre del 2013 Reportar Compartir Publicado 22 de Septiembre del 2013 Buenas Metineros, muchas veces nosotros queremos hacer menus bien grandes y nos resulta un problema como este: Por lo que en el código nos vemos limitados a algo como esto: local r = select("valor1", "valor2", "valor3", "valor4", "valor5", "Ay ya no cabe mas") Y la solución que le damos es crear menus anidados: local r = select("valor1", "valor2", "valor3", "valor4", "valor5", "Más")if r == 6 then local otromenu = select("valor6", "valor7", "valor8", "valor9", "valor10", "Más") if otromenu == 6 then local otromenumas = select("valor11", "valor12", "valor13", "valor14", "valor15", "Más") endend Lo cuál resulta muy tedioso y casi nadie lo hace. Yo he creado una función de ayuda tremenda para hacer estas cosas (no se si sea el único que vea esta necesidad) pero bueno. consiste en lo siguiente: local x = select2(5, "valor1", "valor2", "valor3", "valor4", "valor5", "valor6", "valor7","valor8", "valor9", "valor10", "valor11", "valor12", "valor13", "valor14", "valor15", "valor16","valor17", "valor18", "valor19", "valor20", "valor21", "valor22", "valor23", "valor24", "valor25","valor26", "valor27") --etc etc etc El primer valor, SIEMPRE va a ser la limitación de cuantos quieres que te aparezcan cada vez, o sea en este caso los valores se van a mostarar de 5 en 5, no importa la cantidad que les pongas, si cambias el 5 por un 3 se van a mostarr de 3 en 3 y así sucesivamente. Fijense bien. Si seleccionan "valor1" , x = 1 Si seleccionan "valor2", x = 2 Si seleccionan "valor15", x = 15 Lo cuál quedaría algo así, pero ya la verán con más detalle cuando la prueben: Y finalmente con ustedes dejamos la mágica: --Do not change this is magic function select2(limit, ...) if limit < 1 then limit = 1 end local cicle, val = 0, 0 local next, cancel = "Mas", "Cancelar" while true do t = {} for i = 1, limit do if arg[1] ~= nil then table.insert(t, arg[1]) table.remove(arg, 1) end end if arg[1] ~= nil then table.insert(t, next) end table.insert(t, cancel) val = select_table(t) if val == table.getn(t) then break elseif val == table.getn(t) - 1 and arg[1] ~= nil then cicle = cicle + limit else return (cicle+val) end val = 0 endend Esa es la función, la colocan dentro del questlib, y ya en todas sus quest la podrán utilizar, llamandola como en el ejemplo de arriba. Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
Frank Arkero Publicado 22 de Septiembre del 2013 Reportar Compartir Publicado 22 de Septiembre del 2013 amigo no veo el imagen cambialo la imagen a tinypic.com es mejor!! Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
izaviona Publicado 22 de Septiembre del 2013 Reportar Compartir Publicado 22 de Septiembre del 2013 Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
Dextrok Publicado 22 de Septiembre del 2013 Author Reportar Compartir Publicado 22 de Septiembre del 2013 Ya las cambié. Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
pepineitor Publicado 22 de Septiembre del 2013 Reportar Compartir Publicado 22 de Septiembre del 2013 Por si lo desconocias:www.inforge.net/community/metin2-howto-addon-server-privati/295096-release-navigazione-tra-i-select-extra.htmlSirve para hacer menus, infinitos si los deseas, sin necesidad de funciones nuevas ni nada. Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
Serex Publicado 22 de Septiembre del 2013 Reportar Compartir Publicado 22 de Septiembre del 2013 Muy buena y útil la función, +1 Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
PACI Publicado 22 de Septiembre del 2013 Reportar Compartir Publicado 22 de Septiembre del 2013 Select2 es de Mijago. Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
Dextrok Publicado 22 de Septiembre del 2013 Author Reportar Compartir Publicado 22 de Septiembre del 2013 Me disculpan si esta función tiene coincidencia IDENTICA con otras, tal vez estuvo mal de mi parte no haberme informado sobre la existencia de estas en otros lugares, pero la verdad no la había visto antes, por eso me decidí a crearla. Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
Dextrok Publicado 22 de Septiembre del 2013 Author Reportar Compartir Publicado 22 de Septiembre del 2013 Bueno, luego de investigar un poco estuve buscando la de Mijago y es esta: function select2(tab,...) arg.n = nil if type(tab) ~= "table" and type(tab) == 'number' then table.insert(arg,1,tab) tab = arg elseif type(tab) ~= "table" and type(tab) == 'string' then table.insert(arg,1,tab) table.insert(arg,1,8) tab = arg elseif type(tab) == "table" and type(tab[1]) == 'string' then table.insert(tab,1,8) end local max = tab[1]; table.remove(tab,1) local tablen,outputstr,outputcount,nextc,incit = table.getn(tab),"",0,0,0 table.foreach(tab, function(i,l) outputcount = outputcount + 1 if outputcount == 1 then outputstr=outputstr..'sel = select("'..l..'"' elseif outputcount == max and tablen > outputcount+incit then if tablen ~= outputcount+incit+1 then outputstr=outputstr..',"'..l..'","Nächste Seite") + '..incit..' ' if nextc > 0 then outputstr = outputstr..'end ' end outputstr=outputstr..'; if sel == '..(incit+max+1)..' then ' -- Anfangen der neuen Abfrage nextc, outputcount, incit= nextc+1,0,incit+max else outputstr=outputstr..',"'..l..'"' end else outputstr=outputstr..',"'..l..'"' end end ) outputstr = outputstr..') + '..incit if nextc > 0 then outputstr = outputstr..' end' end outputstr= outputstr.. '; return sel' print(outputstr) local sel = assert(loadstring(outputstr))() tablen,outputstr,outputcount,nextc,incit = nil,nil,nil,nil,nil -- Speicher freimachen return selend Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
fuuton97 Publicado 22 de Septiembre del 2013 Reportar Compartir Publicado 22 de Septiembre del 2013 Muy eficaz, +1. Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
Mensajes recomendados
Unirse a la conversación
Puedes publicar ahora y registrarte más tarde. Si tienes una cuenta, regístrate para publicar con su cuenta.