Hola a todos ^^
Vereís. Me he dado cuenta de que ha causa de que el manual de LuaDev está desactualizado, hay funciones en LuaDev recientemente implementadas que se desconocen. Por ello, haré un listado de las funciones de LuaDev que ya conozco y que no aparecen en el manual. A ver si me podeís indicar cuales faltan y así por lo menos tener una referencia para las funciones de LuaDev que no aparecen en el manual pero que aún así también podremos utilizar con el Eboot de LUADev más moderno. Te dejo también el manual de LUADev más reciente. Tienes al final del post todos los archivos para descarga directa desde el servidor privado de Scenebeta ;)
Por si acaso lo prefieres te dejo aquí las descargas desde mi cuenta de Ubuntu One (también son de descarga directa):
model.load( "ruta" ) --carga un archivo .obj con su respectivo mtl (texturas y colores) model.position( x, y, z ) --coordenadas x, y, z model.rotation( x, y, z ) --ángulo de rotación x, y, z en radianes (math.rad para convertir de grados a radianes) model.blit() --blitea el modelo en pantalla (no necesita ningún parametro)
Notas:
Transparencia: Para usar modelos 3D transparentes hay que crear primero el modelo 3D con partes transparentes. Luego exportarlo desde Sketchup y añadir este código: Modelo:alpha().
Cargar un modelo: Al cargar un modelo este debe estar dentro de una carpeta, de lo contrario crashea.
Las funciones position, rotation y blit necesitan que especifiquemos el modelo sobre el que queremos trabajar. Su uso es parecido al de las funciones para imágenes, a saber:
--Cargar modelo: modelo = model.load( "carpeta/modelo.obj" ) --Para usarlo: modelo:position( x, y, z ) modelo:rotation( x, y, z ) modelo:blit()
El origen está en el centro de la pantalla de la PSP. Los sentidos positivos de cada eje son: X hacia la derecha, Y hacia arriba y Z hacia atrás (hacia fuera de la pantalla de la PSP).
Las rotaciones son respecto al eje de coordenadas original del objeto (cuando lo creamos MUCHO cuidado con esto).
files.encrypt( archivo, contraseña ) --encripta un archivo files.decrypt( archivo, contraseña ) --desencripta un archivo
Notas:
Contraseña: Si no se especifica la contraseña, el archivo se encriptará con la contraseña interna de LUADev. Un archivo encriptado con la contraseña interna de LUADev no se puede desencriptar. Un archivo encriptado con una contraseña personalizada no se puede usar directamente en LUADev (se debe desencriptar antes de usarlo).
world.lightenabled( N, ENABLED ) -- enciende apaga luz. N = 1-4. ENABLED = true / false. (4 luces) world.lightambient( N, COLOR ) -- color de la componente "ambiental" de la luz numero N. world.lightdiffuse( N, COLOR ) -- color de la componente "difusa" de la luz numero N. world.lightspecular( N, COLOR ) -- color de la componente "specular" de la luz numero N. world.lightype( N, TIPO ) -- Cambiar tipo de luz numero N. Tipos: 1, direccional. 2, punto de luz. 3, foco. world.lightcomponent( N, COMPONENTES ) -- Cambiar componentes de luz. 1, amb + dif. 2, dif + spec. 3, desconocida. world.lightspotlight( N, EXPONENTE, CORTE) -- Solo focos. Cambia potencia y angulo de corte del foco. world.lightdirection( 4, X, Y, Z ) --Direccion de la luz N. (Sólo direccional o foco). (Vector UNITARIO) world.lightposition( N, X, Y, Z ) --Posicion de la luz N. world.ambient( COLOR ) -- Cambia el color ambiental. world.specular( COLOR ) -- Cambia el color specular. world.viewat( TAB1, TAB2, TAB3 ) -- Cambia la posicion de la cámara. world.perspective( fovy, ratio, near, far ) -- 3D Modo perspectiva (por defecto). world.ortho( left, right, bottom, top ) -- 3D modo ortogonal. world.fog( cerca, lejos, color ) -- Niebla. world.update() -- actualiza cambios en las luces / otros cambios en el modul
Notas:
Vector UNITARIO quiere decir que: raiz( X^2+Y^2+Z^2 ) == 1.
TAB1 = { x, y, z } (posicion de la camara)
TAB2 = { x, y, z } (punto al que miramos)
TAB3 = { x, y, z } (donde está el techo, (rotacion de la camara)). ( Normalmente { 0, 1, 0 } )
Cuando salga cerca / lejos quiere decir unidades. Por ejemplo en la
niebla, cerca y lejos es donde se empieza a ver niebla, y donde no se vé
un pimiento. (y el color de la niebla claro ). Con lejos = 0, niebla
off.
Para todos los comandos, SIN argumentos (excepto los que tengan
numero de luz, que en estos, sólo se pasará el argumento N ), devolverán
el valor actual. O sease: world.fog(); devolverá 3 valores.
world.lighttype(1) devolverá el tipo de luz de la luz numero 1.
world.ambient() devolverá el color de ambiente actual.
Para jugar con el 3D hay que tener las matemáticas algo claritas...
por ejemplo, normalizar un vector... (X,Y,Z). (hacerlo unitario)
( 34.21, 224.23, 12.45 ) seria... elevamos al cuadrado... (
1170.3241, 50279.0929, 155.0025 ) ... sumando ... 51604,4195 ... raiz
cuadrada... 227,16606150567474237336239880841, dividiendo cada
componente por separado por este valor... daria:
( 0.15, 0.98, 0.05 ) <- ahora ya es un vector normalizado, apunta hacia el mismo sitio, pero tiene módulo = 1.
math.vector.polar( x, y ) math.poly.testxy() math.poly.testlist() math.round( número_decimal ) -- Devuelve una aproximación de un número decimal, con lo que math.round(1.2) devolvería 1 y math.round(2.8) devolvería 3. tonumber( string ) --convierte un dato del tipo string al tipo number
zip.extract( directorio_del_zip, directorio_a_extraer, int_recursivo )
wlan.connected() --devuelve true o false según si estamos conectados a una red o no wlan.getconfigs() --devuelve una tabla con las conexiones configuradas. la tabla contiene los campos name y ssid para cada red wlan.init() --devuelve 1 si se realizó correctamente la conexión y otro valor si falló --[[ * Se puede llamar sin argumentos, en tal caso aparece el diálogo de selección de redes del XMB, bloqueando la ejecución del programa hasta que la conexión se realice (o surja un error xD). * Se puede llamar con un número como argumento, en tal caso se conectaría a la red especificada (1 para la 1ra conexión, 2 para la 2da y así) sin bloquear el ciclo del programa (digamos que es el modo avanzado de conexión). * Por último, se puede llamar con dos argumentos (ambos números). El 1er argumento indica la red a la que se va conectar y el 2do indica una espera máxima en segundos antes de que deje de intentar conectarse (en el XMB cuando se acaba el tiempo dice "Tiempo de espera agotado", sería algo parecido). Este modo muestra el diálogo de conexión del XMB, pero se conecta automáticamente a la red especificada (bloquea la ejecución del script) ]]-- wlan.ip() --devuelve la IP que nos asignaron wlan.mac() --devuelve nuestra direción MAC física de la PSP wlan.scan() --devuelve una tabla con las conexiones activas. --[[ ssid: ssid la conexión dtim: ?? bssid: bssid de la conexión rate: Información de la conexión bsstype: Tipo de conexión rssi: intensidad de la conexión info: información de la conexión channel: canal por el que emite atim: ?? localtime: ?? timestamp: ?? beacon: ?? ]]-- wlan.status() --según el estado de la red devuelbe un número --[[ 0 desconectado 1 escaneando 2 conectando 3 obteniendo IP 4 conectado 5 autorizando 6 intercambiando clave ]]-- wlan.statustext() --lo mismo que wlan.status() pero en vez de devolber números devuelbe los strings de arriba wlan.strength() --de 0 a 100 el nivel de la señal
tostring( cualquier_parametro ) --convierte un dato de cualquier tipo al tipo string
socket socket.connect(servidor, puerto par, puerto local) -- Crea un nuevo objeto Socket con protocolo TCP/IP. Si no se especifica el puerto local, abre un puerto aleatoriamente. socket socket.udp(servidor, puerto par, puerto local) -- Crea un nuevo objeto Socket con protocolo UDP. Si no se especifica el puerto local, abre un puerto aleatoriamente. nil socket.free(socket) -- Cierra y elimina el objeto Socket. boolean socket.isconnected(socket) -- Comprueba que el socket esta conectado. number socket.localport(socket) -- Devuelve el puerto local. number socket.peerport(socket) -- Devuelve el puerto par. number socket.packetslost(socket) -- Devuelve el número de paquetes perdidos. string socket.recv(socket, bytes) -- Lee los datos recibidos desde el socket. El numero de bytes es opcional number socket.send(socket, string) -- Envía un string mediante la conexión socket. Devuelve el numero de bytes enviados
os.sleep( segundos ) os.luadevsplash() --muestra el splash de LUADev os.luasplash() --muestra el splash de LUA
image.chipload() --sería un load de la imagen interna del logo de chipmunks image.gearload() --idem de arriba, rueda que usa la sphash de LUADev image.logoload() idem arriba logo de LUADev image.luaload() --logo de LUA logoload:zblit( x, y, z, angX, angY, angZ ) --blit en 3D (experimental, falla bastante)
chipmunk body mass new position cursor grab move new release init moment box circle polygon segment shape elasticity friction getbody newcircle newpoly newsegment space addbody addshape addstaticshape damping free gravity idlespeedthreshold iterations new pointqueryfirst pointqueryfirst_body resizeactivehash resizestatichash sleeptimethreshold staticbody step wiredraw debugmode debugprint debugset dump error fx add alpha color default none rgba sub gcinfo getfenv getfullmodulefunction getmetatable iif image chipload fastblit fxadd fxsub fxtint gearload logoload luaload zblit include ipairs lightstation load loadfile loadstring math bbox clamp inrect int poly rotate testlist testxy round vector cartesian magnitude polar model alpha buffer lshf mat stat module newproxy next debug debug getfenv gethook getinfo getlocal getmetatable getregistry getupvalue setfenv sethook setlocal setmetatable setupvalue traceback particles blit count enabled free init intensity limit new rand start stop socket connect free isconnected localport packetslost peerport recv send udp table foreach foreachi getn setn sort umd present video free info load wlan connected getconfigs init ip mac scan status statustext strength term world ambient envmapcolor envmapfx fog lightambient lightattenuation lightcomponent lightdiffuse lightdirection lightenabled lightposition lights lightspecular lightspotlight lighttype lookat ortho perspective shademodel specular update
O.o
Uff, eso de animaciones 3D promete... También puedes añadirle que muestre texturas (Imagenes) en los objetos y sería la bomba
P.D: Yo tenia un fichero con documentación que iva obteniendo...
NekeOS, el nuevo shell para PSP
PS4 500GB OFW, PS3 320GB OFW, PS3 500GB OFW, PSP 6.39 PRO-C Fix4.
Sony Xperia Z1 Compact con Android 5.1.1
Portatil Lenovo z50-70 Intel® Core™ i7-4510U y NVIDIA GeForce 840M con Elementary OS 0.3.2 Freya (64 bits) y Windows 10 (64 bits).
.
Ahora estaba empezando con el 3D y me encuentro esto xD
.
La pagina web de Deviante ya funciona !!!!!
es posible que la nueva version ya este a la vuelta... xDDD
EDITADO: Cada vez hay mas cosas en la web de DEV !!
Editado: Crear hilos y comentarios duplicados incumple las Normas de la Comunidad, si necesita cambiar su comentario puede usar la opción de Editar. Antes de volver a postear por favor revise las Normas.| Rober Galarga
-> Creaciones <-
Os invito a probar el lol xD
http://signup.leagueoflegends.com/?ref=50814a20894be236637679
Se agradece que avises ;)
Se agradece que avises ;)
EDITO: No puedo acceder a ninguna sección del menú...
Deviante está diseñando la
Deviante está diseñando la web, dependiendo de las capacidades de tu navegador, será la web que verás.
En otras palabras, no está operativa la web ahora mismo xD
OK, gracias.
OK, gracias.
yo tengo una pregunta, y para
yo tengo una pregunta, y para posicionar la camara, como se hace?
Cámara?
A qué te refieres? Perspectiva en 3D? escenario 2D, como los juegos RPG? A la cámara de fotos? xD
Una más. rezisewin() Para
Una más.
rezisewin()
Para que sirve, aún no se no he mirado bien el code de donde la saque, se los dejo.
Es un tuto ya viejo de Dev sobre un minivideojuego xD
ehm....
Línea 15: se define la función resizewin, no es una función propia de LuaDEV, es una función personalizada que Deviante ideó para ese ejemplo en específico.
JAJAJA! me he estado riendo
JAJAJA! me he estado riendo un rato
Jajaja, lo siento, esque la
Jajaja, lo siento, esque la verdad lei el code de muy encima.
Tengo una idea, invito a
Tengo una idea, invito a todos con la función _VERSION, que se enteren de que versión de ebot tienen, y el que tenga la más avanzada pues que lo postee y así tendremos el ebot más nuevo lanzado al aire.
PD: Creo que eso no sirve para la versión de Ebot, ya que me ha dado Lua 5.1 xDD.
Jajajaja
_VERSION es la version del interprete de Lua, no la del eboot...
Otra cosa... no me digais que no sabeis las funciones básicas de Lua... ¬¬ ... Pasaros por aquí: http://www.lua.org/manual/5.1/es/, todas las funciones básicas de lua funcionan en todos los LuaPlayers (LuaDEV, HM, PGE, ect...)
NekeOS, el nuevo shell para PSP
PS4 500GB OFW, PS3 320GB OFW, PS3 500GB OFW, PSP 6.39 PRO-C Fix4.
Sony Xperia Z1 Compact con Android 5.1.1
Portatil Lenovo z50-70 Intel® Core™ i7-4510U y NVIDIA GeForce 840M con Elementary OS 0.3.2 Freya (64 bits) y Windows 10 (64 bits).
Pues efectivamente, las
Pues efectivamente, las basicas no me las se, le daré una leida extensa a el manual, gracias. Otra cosa, me parece que no sería tan mala idea que deviante hiciera algo así para el Ebot de Lua Dev, así si se podra hacer lo que propongo.
Ese 5.1 no es la versión de
Ese 5.1 no es la versión de LuaDEV, es la version del Lua que por cierto ya hay una beta de la versión 5.2 de Lua.-
La versión más moderna es la
La versión más moderna es la del G.D.P. ( creo... )
Seria bueno que le pusieran
Seria bueno que le pusieran extractor de rar xD
Una pregunta del modulo model
no lo puedo usar asi?
jugador = model.load("x")
while true do
jugador:blit(50,50,0)
?
Follow me twitter nautilus1_jmccu!!
Sony, ya a nadie le interesa tus UMD si alguien compra una psp es por nosotros los coders. Madura y has un FW que haga la diferencia y anime a las personas en comprar un PSP
Te sugiero leer este
Te sugiero leer este comentario ;)
No es necesario especificar luces, niebla ni nada de eso. Con especificar la posición del modelo es suficiente (en el coment al que linkeo viene un ejemplito, como ya es costumbre).
La rotación también la pueden omitir (les sugiero jugar un poco con esos valores, es divertido xD)
Es necesario tener el mtl
Es necesario tener el mtl alado del obj, verdad?
Si
Si
Sí, creo que sil, pero no se
Sí, creo que sil, pero no se si le necesitas poner las luces
No necesitas poner luces.
No necesitas poner luces. Solo la la posicion ( x, y, z )
Gracias, eso me alivia
Gracias, eso me alivia mucho,pense que era muy lioso pero con lo que me dices se me hace menos lioso.
Saludos.
Aún asi, yo estoy probando ha
Aún asi, yo estoy probando ha hacer algun jueguillo tipo Air Hockey y no te creas que es nada facil...
Si, lo se, no es nada facil,
Si, lo se, no es nada facil, pero con imaginación todo se puede.
¡Suerte!
Pero tu tienes un pong
Pero tu tienes un pong digamos que lo unico que ahy que cambiar serian las imagenes y varias funciones y
Air hockey listo
Hace no mucho chime dijo que
Hace no mucho chime dijo que _G es una tabla, es la tabla global de lúa dev.
Aquí más explicación
Lua nativo: http://www.lua.org/manual/5.1/es/manual.html#pdf-_G
Edito: Ahora que lo veo... si ya tenemos la documentación de algunas funciones de LuaDEV y tenemos las de Lua, podiamos hacer una recompilacion y así se reducirian las que no sabemos...
Ya toy en ello... ¿Sabiais que si se hace tostring te dice de que objeto se trata? Asi que si pone una funcion te retorna function y la zona de memoria donde esta almacenada...
NekeOS, el nuevo shell para PSP
PS4 500GB OFW, PS3 320GB OFW, PS3 500GB OFW, PSP 6.39 PRO-C Fix4.
Sony Xperia Z1 Compact con Android 5.1.1
Portatil Lenovo z50-70 Intel® Core™ i7-4510U y NVIDIA GeForce 840M con Elementary OS 0.3.2 Freya (64 bits) y Windows 10 (64 bits).
Si sólo necesitas saber el
Si sólo necesitas saber el tipo de objeto que tienes, usas type(objeto) ;)
Recopilación de funciones de LuaDEV
Soy idiota jajajaja... después en funciones utilizo el type un mogollón de veces y no me acuerdo de utilizarlo en esto... XDD
Edito: aquí va algunas que ya tengo.
Saludos ^-^.
P.D: Siento que no se muestren de la misma forma, porque en el editor salia bien
NekeOS, el nuevo shell para PSP
PS4 500GB OFW, PS3 320GB OFW, PS3 500GB OFW, PSP 6.39 PRO-C Fix4.
Sony Xperia Z1 Compact con Android 5.1.1
Portatil Lenovo z50-70 Intel® Core™ i7-4510U y NVIDIA GeForce 840M con Elementary OS 0.3.2 Freya (64 bits) y Windows 10 (64 bits).
OK. En cuanto pueda lo
OK. En cuanto pueda lo actualizo ;)
Ok
Pero me he guiado por la info de xerpi...
Esas son las funciones
Esas son las funciones "desconocidad" (que no sabemos los parámetros):
Post actualizado ;) Un
Post actualizado ;)
Un saludo.
Queeee en realidad existe un
Queeee en realidad existe un modulo cursor del puntero del navegador!
Estas aburrido deviante? XD
Demasiadas funciones y quien sabe sus parámetros :p
Follow me twitter nautilus1_jmccu!!
Sony, ya a nadie le interesa tus UMD si alguien compra una psp es por nosotros los coders. Madura y has un FW que haga la diferencia y anime a las personas en comprar un PSP
Sobre LuaDEV
He esta mirarndo y he de decir que la función
os.runeboot()
solo funciona en CFW, y en OFW si el eboot esta firmado. Lo probe en OFW 3.69 con el eboot de GPD 2.0 firmado. Tambien la funcióncontrols.homepopup()
para desactivar el boton home no funciona en OFW.Haber si encuentro algo más.
NekeOS, el nuevo shell para PSP
PS4 500GB OFW, PS3 320GB OFW, PS3 500GB OFW, PSP 6.39 PRO-C Fix4.
Sony Xperia Z1 Compact con Android 5.1.1
Portatil Lenovo z50-70 Intel® Core™ i7-4510U y NVIDIA GeForce 840M con Elementary OS 0.3.2 Freya (64 bits) y Windows 10 (64 bits).
Ok
Ya que poneis todas las funciones tambien poner para que sirver y los argumentos que se le pasan, que así no esque se haga mucha cosa XDD
NekeOS, el nuevo shell para PSP
PS4 500GB OFW, PS3 320GB OFW, PS3 500GB OFW, PSP 6.39 PRO-C Fix4.
Sony Xperia Z1 Compact con Android 5.1.1
Portatil Lenovo z50-70 Intel® Core™ i7-4510U y NVIDIA GeForce 840M con Elementary OS 0.3.2 Freya (64 bits) y Windows 10 (64 bits).
según vaya habiendo aportes
según vaya habiendo aportes se irá actualizando la informacion... :(
Pues cuando tenga tiempo, me
Pues cuando tenga tiempo, me pondre a experimentar xD
BINGO!
Es por eso que no quería liberar el script de todas las funciones... precisamente por eso.
Hale, ya tienen toda la lista, ahora mátense averiguando los parámetros (que muy difícilmente lo lograrán, si es que lo logran) y las mil (o más xD) variantes que puede tener cada función www.myfacewhen.com/109/
Ah, y me faltó añadir que no todas son funciones, algunas son constantes... como os.kernel que es una variable booleana por ejemplo, que quiere decir este valor? ni idea, averigüen (xD)
PSP FAT [5.00 M33-6] [6.60 ME] [Hard Moded] / Nintendo Wii [4.1U] [cIOS Hermes] [D2X cIOS] / iPhone 3G [4.2.1] [BB 05.13.04] [redsn0w] / iPod Touch 4 [6.1] [evasi0n]
07/05/10: Tuve el placer de llamarle con todo derecho "N00B" a molotovi xDDD
Recuerda: Sé el intérprete -_-
vaya chorro de funciones :'(
vaya chorro de funciones :'( xDDD (y las que quedan...)
Pues...
screen.print(10, 10, os.kernel) XDDDD
amm
screen.print(10, 10, tostring(os.kernel)) xDD
No
No hace falta el tostring, print imprime cualquier valor... bueno, al menos en Lua básico
ejem...
Sí, print imprime cualquier valor, pero si te fijas arribita tiene un "screen." antes xD
XDDDD
Pues menuda forma de liarlo, en Lua ya lo hacia sin poner tostring o tonumber
y
Que sale?!
xDDD
pues... si para nosotros es difícil, para DeViaNTe documentarlo ni me lo imagino (creo que ahora lo comprendo).
Por cierto, os.kernel()? xDDD...
Un saludo a tós, suerte con la tarea que tenéis por delante (*risa malévola* xD)
http://www.mhypnok.blogspot.com/
Gracias a Dark_AleX, Total_Noob, VirtuousFlame, Coldbird, Codestation...
constantes sin paréntesis
puse os.kernel como ejemplo de constante, no de función, por lo tanto va así tal cual, sin paréntesis...