Anuncios Google

Dudas con LUA.

Estoy evolucionando en este nuevo entorno y tengo varias dudas para seguir adelante.


Anuncios Google

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de Davidm16

Que en LuaDev nooooo.

Y compilarlos en .iso no puede ser porque sería un engorro. 'Encriptar' sería. Como el Fishell o BermudaCS9.

Imagen de NEKERAFA

Mmm...

Pues tendrás que currarte una función para encriptar los archivo...

Imagen de Davidm16

Pero seguro que hay un prograaaama.

Buff, si no lo han hecho los mejores códers, yo voy por el suelo.

Compilalo

Con luac

 

Saludos!

Imagen de Davidm16

???

???

Suponiendo que tienes Lua instalado en tu

pc puedes compilarlo usando el comando luac miarchivo.lua

 

Saludos!

Imagen de fran98

No, ya. Creo que hay otra

No, ya.

Creo que hay otra manera.

Sería juntar todos los archivos en una ISO, y después pasarlo por FAKE NP, pero no sé si funcionará, es cuestión de probar.


Imagen de NEKERAFA

Mmm...

Pero eso solo solo firma la aplicación, no la compila, y cualquiera puede extraer los archivos de una ISO

Imagen de fran98

Pero te la firma en un único

Pero te la firma en un único eboot.

Imagen de Davidm16

¿Hay algún string de HM que

¿Hay algún string de HM que imite al image:blend?

String? Supongo que te

String? Supongo que te referirás a una función (un String es una cadena de caracteres), en fin, HM no tiene blend, pero se puede simular parcialmente.

Imagen de Davidm16

No en LuaDev.

¿Cómo puedo hacer que una imagen vaya hacia la derecha y se repita? Simulando a las ondas.

Imagen de Andres_Ne

Con Algo de Pensar y Algunas

Con Algo de Pensar y Algunas imagenes para los efectos . :)

Imagen de Davidm16

Buff.

Pues no sé yo si podré hacer ondas de fondo con LuaDev R0 y el menú en LuaHM. Aunque 2 dofile seguidos me redireccionará al primero.


mundosupernova.mex.tl  El universo del homebrew y PSP.

Tres proyectos en progreso...

"Aunque 2 dofile seguidos me

"Aunque 2 dofile seguidos me redireccionará al primero."

A que te refieres?

Imagen de Davidm16

:(

Pues que si pongo un dofile después de otro: dofile("tupadre.lua"); dofile("aquetemeto.lua"), me llevará automáticamente a 'tupadre.lua', y yo necesito cargar dos luas a la vez. En 2 lenguajes. ¿Cómo te lo comes?


mundosupernova.mex.tl  El universo del homebrew y PSP.

Tres proyectos en progreso...

Si cuando haces un dofile no

Si cuando haces un dofile no encuentra ningún bucle, carga en ram todo lo que haya que cargar y vuelve a donde has hecho el dofile, por ejemplo esto es útil si usas un script para las funciones, le haces un dofile y ya las tienes cargadas es ram.

Imagen de Davidm16

Mucho trabajo.

Las ondas las tengo hechas, y el menú lo tengo aparte. ¡Necesito cargar 2 scripts!

¿A que te refieres con

¿A que te refieres con cargar? ¿Cargar en la RAM imágenes/sonidos/variables/funciones?

Imagen de Davidm16

...

Mandarme a dos scripts a la vez.

Imposible

Las instrucciones se ejecutan una por una, no puedes cargar/ejecutar dos scripts a la vez, debes encontrar una manera de mezclarlos (siempre la hay).

Imagen de Davidm16

Pues la última ya:

¿Cómo puedo ejecutar un eboot en luadev?

Con la función

os.runeboot(ruta)

Imagen de Davidm16

Gracias, de verdad, gracias.

Si no funciona, me pego un tiro. ¿Y la documentación está completa o no?

La de LuaDEV no (de HM ni

La de LuaDEV no (de HM ni idea).

Supuestamente

si... Creo que está incompleta... Pero supuestamente está completa...

Imagen de Andres_Ne

No se olviden que Tooxicoo

No se olviden que Tooxicoo esta Completando la documentacion (De LuaDev), creo que es la mas completa hasta ahora.

Imagen de Davidm16

...

¿Cómo te voy a pasar el script si lo hago desde PSP? Es el mismo quel tuyo. Trabajo con LuaPlayer v0.20.

Imagen de Davidm16

Veréis...

No me acuerdo de cómo hacer un cursor que se desplaze por la pantalla. La imagen ya la tengo, pero lo de pad controls.read() no me queda muy claro.


mundosupernova.mex.tl  El universo del homebrew y PSP.

Tres proyectos en progreso...

Imagen de AitorDB

By Aitor

Aquí te dejo un ejemplo de cómo se podría hacer:

 

cursor = image.load("cursor.png")
x = 240
y = 136
 
function mouse(cx,cy,cxx,cyy)
if x > cx and x < cxx and y > cy and y < cyy then return true else return false end
end
 
while true do
controls.read()
 
cursor:blit(x,y)
 
if controls.analogx > 60 then x = x +2 end
if controls.analogx < -60 then x = x -2 end
if controls.analogy > 60 then y = y +2 end
if controls.analogy < -60 then y = y -2 end
 
screen.flip()
end

 

PD: La función de mouse devuelve true o false si está entre las coordenadas que tu indiques, por ejemplo:

 

....
 
if mouse(50,25,100,75) and controls.press("cross") then
 
....
 
end
 
....

 

Aquí si las coordenadas del cursor están entre 50 y 100 para X y 25 y 75 para Y devolver´true, si no devolverá false.


Sígueme en Twitter: @Aitor_db

Imagen de Davidm16

Eso es exactamente lo que he hecho.

A lo meior era que me faltaba then return true. Gracias, lo probaré.

Imagen de AitorDB

By Aitor

No hay de qué, espero que te sea de utilidad y que aportes grandes HBs a esta comunidad.

Imagen de Davidm16

Problema:

Me dice 'unexpected symbol '+' en línea 22'. Bien, lo que yo quiero es un ratón que al dar cruz en un icono en el menú vaya a dofile("") y cargue otro script. Como en miniapple o cristal vista.


mundosupernova.mex.tl  El universo del homebrew y PSP.

Tres proyectos en progreso...

Imagen de AitorDB

By Aitor

Para lo del error pásame el script. Te dejo uno de ejemplo

 

cursor = image.load("cursor.png")
x = 240
y = 136
 
function mouse(cx,cy,cxx,cyy)
if x > cx and x < cxx and y > cy and y < cyy then return true else return false end
end
 
while true do
controls.read()
 
cursor:blit(x,y)
 
if controls.analogx > 60 then x = x +2 end
if controls.analogx < -60 then x = x -2 end
if controls.analogy > 60 then y = y +2 end
if controls.analogy < -60 then y = y -2 end
 
 
--Esto es lo que hace que vaya a otro script
--PD: Las coordenadas las he puesto al azar
if controls.press("cross") and mouse(50,70,60,80) then
dofile("script2.lua")
end
 
screen.flip()
end

 

Para saber que coordenadas hay que poner debes medir desde 0,0 hasta el primer punto del icono, y luego desde 0,0 hasta el segundo punto del icono.

PD: Con punto me refiero a las esquinas (1º-Superior-izquierda y 2º-Inferior-derecha)


Sígueme en Twitter: @Aitor_db

Imagen de Davidm16

Otra cosa:

¿Es verdad que LuaDev es capaz de interpretar dos bucles?

No entiendo exactamente que

No entiendo exactamente que quieres decir. ¿Dos bucles a la vez o como?

Imagen de Dioni0396

quiza quiere decir

un for dentro dentro de un while

Imagen de Davidm16

...

O creo que un if '' then.

Imagen de Dioni0396

un if " then

es una sentencia no un bucle.

No entender esa diferencia puede traerte problemas.

Un saludo.

Como todo lenguaje

Como siempre debe ser

Imagen de Davidm16

¡Yes!

Ya tengo hecha la introducción y poner las imágenes. Una duda: lo que sé es que dofile("") te manda a un archivo y sólo sé poner más scripts para cargar imágenes varias y si lo pongo en el bucle cargar más fotos, no hace nada.

El código es:

splash = Image.load("splash.png")

while true do

splash:blit("0,0,splash")

screen.waitVblankStart()

screen.flip()

dofile("script1.LUA")

end

Sí, ya sé que es en LuaHM y no LuaDev R0.


mundosupernova.mex.tl  El universo del homebrew y PSP.

Tres proyectos en progreso...

A ver, cargues una imagen en

A ver, cargues una imagen en un script o otro, a menos que la liberes, esta imágen estará cargada en la RAM, por lo tanto no hace falta cargarla mas de una vez. Lo que estas haciendo es una atrocidad, piensa que Lua lee les lineas UNA A UNA y las vas interpretando a medida que va leyendo, por lo que si en el script1.LUA no se encuentra otro bucle, una vez el intérprete llegue al final del archivo, saldrá del archivo y seguirá interpretando después del dofile("script1.LUA"). Una vez termine el while termine el ciclo, volverá a llegar al dofile("script1.LUA") y volverá a pasar lo mismo, así infinitamente...

Y qué tienes en el otro

Y qué tienes en el otro script? Porque con ese code como lo tienes sólo obtendrás un pantallazo (como un parpadeo) y después ejecutará el otro script.

Lo que quiero dar a entender es... que dependiendo de tus codes, es como funcionará el dofile. Por ejemplo, forma muy útil de usarlos es para cargar librerías, digamos...

libreria.lua:

function GUI(back)
  back:blit(0,0)
    draw.fillrect(0,0,480,20,color.new(0,0,0,125))
      screen.print(470-screen.textwidth(os.date("%I:%M %p")),5,os.date("%I:%M %p"))
end

script.lua

dofile("libreria.lua")  --cargo las funciones de la librería
img = image.load("una img xD.png")
while true do
  controls.read()
    GUI(img)  --usando una función de la librería
  screen.flip()
end

Como podrás notar, en mi librería tengo declarada una función (que dibuja una interfaz muy sencilla), que después de cargar la librería puedo usar como si fuera parte de mi script principal.
Ojo, que aquí yo he puesto sólo una, pero pueden ser las funciones que quieras, o variables ( tablas, imágenes, sonidos... lo que sea).

Otro uso muy común del dofile es en los menus. Por ejemplo, digamos que tengo estos scripts para mis créditos:

script.lua

if controls.press("cross") and seleccionado == 3 then
  dofile("creditos.lua")  
end
 
--es un code feo, ya sé, yo en realidad usaría tablas xD

creditos.lua
fondo = image.load("algo.png")
while true do
  controls.read()
    fondo:blit(0,0)
    screen.print(10,10,"Esto es un sample de los créditos\nGracias a X por su ayuda\nA Y por sus gráficos\nA Scenebeta por inducirme a programar...")
      if controls.press("circle") then
        fondo:free()
          dofile("script.lua")
      end
  screen.flip()
end

Nótese que el script creditos.lua es completamente independiente del principal, tiene su propio bucle, carga sus imágenes... incluso le puse un dofile para poder regresar al script principal (que se supone me estará bliteando el menu principal).

Imagen de Davidm16

:) No.

He hecho algo más complejo y a la cuenta la vieja. Con el script inicial he cargado una imagen cada una y con 8 scripts cargando pasando de uno a otro. Y con screen.waitVblankStart le doy tiempo. Me va de pm. Mira que inútil ese string...Hay que usar la cabeza y todo saldrá sin enterarse. ¡Dios, qué ilusión! Saludos a los códers.


mundosupernova.mex.tl  El universo del homebrew y PSP.

Tres proyectos en progreso...

Imagen de Davidm16

Ah, con controles.

¿Y si lo hago automático para cargar las imágenes nada más empezar y llegar al menú? ¿Cómo sería? [splash = Image.load("splash.png") ; while true do ; screen:blit(0,0,splash) ; screen.flip() ; end] Sería cargar una imagen, pero si con screen.waitVblankStart() puedo ponerle tiempo y no sé.


mundosupernova.mex.tl  El universo del homebrew y PSP.

Tres proyectos en progreso...

Cuidado, no debes mezclar

Cuidado, no debes mezclar funciones entre intérpretes. Si vas a usar LuaDEV, la función screen.blit NO EXISTE, se usa image.blit (revisa la documentación otras 3 veces).

El screen.waitvblankstart, depende mucho de cómo lo uses, pero casi siempre sólo sirve para alentar el script (una tontería en la mayoría de los casos). Un ejemplo de cómo NO DEBE USARSE:

img = image.load("una imagen.png")
 
while true do
  img:blit(0,0)  --También podría haber puesto image.blit(0,0,img), es lo mismo
    screen.waitvblankstart()  --Inútil...
  screen.flip()
end

Imagen de Dioni0396

luadev

no necesita que le pongas mayuscula al inicio de las funciones y en vez de : usa .

Imagen de Davidm16

¿Cómo...?

¿Cómo puedo cargar varias imágenes para la introducción de mi HB? Si fuera con algún efecto os lo agradecería.

Eso no es una duda, eso es

Eso no es una duda, eso es pedir que te hagan el código...

Imagen de Davidm16

Tío.

Si no sé hacerlo cómo quieres que lo haga.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.