Publicidad

Anuncios Google

Sample Code Lua (Menu)

Hola, aqui os dejo un ejemplo de codigo en LUA para ps3 hecho por mi, lo unico que hace es cambiar entre 3 imagenes casi identicas que simulan un menu muy basico. Espero que a alguien le sirva de algo de ayuda. Sobra decir que cualquiera puede usar este codigo y modificarlo como quiera pero no apropiarselo mejor que sea libre jaja.

InitGFX(720,480);
initPads(7);
setsixaxis(0,1);
UpPress1 = 0;--variable que vale 1 si se presiona la flecha arriba
DownPress1 = 0;--variable que vale 1 si se presiona la flecha abajo
 
screenx, screeny = screenRes();
menu = { };
menu[1] = surface();menu[1]:LoadIMG("menu/menu1.bmp"); -- cargamos en la superficie una imagen 
menu[2] = surface();menu[2]:LoadIMG("menu/menu2.bmp"); -- cargamos en la superficie una imagen 
menu[3] = surface();menu[3]:LoadIMG("menu/menu3.bmp"); -- cargamos en la superficie una imagen 
--cada imagen es de 720x480 pixels, como la resolucion de la pantalla elegida
menuActual = 1;
 
function actualizarBotones()
     if up(0) < 1 then--si no esta presionado arriba             
          UpPress1 = 0;
     end
     if down(0) < 1 then--si no esta presionado abajo             
          DownPress1 = 0;
     end
end
 
function moverMenu()
     if up(0) >= 1 and UpPress1 == 0 then--si arriba y no esta presionad
          UpPress1 = 1;--ya esta presionada
          if menuActual == 2 then
               menuActual = 1;
          end
          if menuActual == 3 then
               menuActual = 2;
          end
	end
     if down(0) >= 1 and DownPress1 == 0 then--si abajo y no esta presionada
          DownPress1 = 1;--ya esta presionada
          if menuActual == 2 then
               menuActual = 3;
          end
          if menuActual == 1 then
               menuActual = 2;
          end
     end    
end
 
function mostrarMenu()--Creamos una funcion llamada screen_imagenes
     menu[menuActual]:setRectPos(0, 0);
     BlitToScreen(menu[menuActual]);
end
 
function acciones()
     if cross(0) >= 1 and menuActual == 1 then -- si presiona
		--Aqui codigo del juego
	end
	if cross(0) >= 1 and menuActual == 2 then -- si presiona
		--Aqui codigo de las opciones
	end
     if cross(0) >= 1 and menuActual == 3 then -- si presiona
		exit();--Terminamos la aplicacion
	end
end
 
while true do --Empezamos el bucle 
     beginGFX() -- Iniciamos los graficos
     mostrarMenu();
     moverMenu();
     actualizarBotones();
     acciones();
     endGFX() -- Terminamos la seccion de graficos
end

 

PD: No se como subir las imagenes que he usado como menu por si alguien quiere probarlo por si mismo lo unico que tiene que hacer es crearse 3 imagenes llamadas menu1.bmp,menu2.bmp,menu3.bmp y meterlas dentro de una carpeta llamada menu situada en el mismo sitio que el codigo y el ejecutable del emulador.

 

 


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.

IO tengo el mio avanzadicimo pero

no lo e publicado aquí y no creo que estaría bien eso, ya ustedes están en esto, bien.

 

P.D quiero hablar algo con ustedes, es de otra opción en LuaPS3



Imagen de Pana

Buenas, Eres libre de querer

Buenas,

Eres libre de querer publicar tu código fuente o no. Desde Scenebeta.com te animamos a que lo hagas. Compartir conocimiento hace que todos crezcamos más. Además, siempre es interesante ver como tu proyecto lo avanzan otros, qué implementan y cómo evoluciona. Pero ya te digo, el código es tuyo y harás igualmente bien en no publicarlo.

Respecto a lo que quieres hablar con nosotros, puedes mandarme un MP (click en mi nick y, en mi ficha, abajo de todo sale la opción de enviar un mensaje).

Un saludo!

Buen tuto aunque como me

Buen tuto aunque como me gustaría un LuaDEV, sería la ostia en homebrew.

Imagen de Pana

A portada! Gracias por el

A portada! Gracias por el aporte (a los 2).

De paso, he creado unos contenedores para tener un sitio donde ir guardando estos fragmentos de código. El tuyo es el primero (y el único de momento XD). A ver si la gente se anima y aporta su trocito de código :).

Yo si encuentro mi homebrew que hice para PSP en LUA, subiré el fragmento de cronómetro que hice :).

Un saludo!

Imagen de Pana

Entonces, cuál es el código

Entonces, cuál es el código más correcto? el más deuprado, el más limpio...?

Saludos.

Imagen de NEKERAFA

Mmm

No se, en teoria seria el mio porque loren1 tenía un error, pero prueba los dos y mira el que no falle

Imagen de Pana

qué fallo?

qué fallo?

Imagen de NEKERAFA

Segun lo que vi, la funcion

Segun lo que vi, la funcion exit(), que en PS3LuaPlayer no existe y la funcion setsixasis() que si no se esta usando, pues se comenta para que no de error


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).

Imagen de NEKERAFA

Unas cosillas

Creo que si no hay ninguna funcion  que utilice el sixasis, no se necesita la funcion setsixasis(0,1), aunque se puede poner como comentario por si alguien la necesita, y en lua ni hace falta poner ; despues de cada comando, es decir, el código seria así:

InitGFX(720,480)
initPads(7)
-- setsixaxis(0,1) ## Si neceistas utilizar el sixasis mas adelante, el comentario y los --, ##
UpPress1 = 0 --variable que vale 1 si se presiona la flecha arriba
DownPress1 = 0 --variable que vale 1 si se presiona la flecha abajo
 
screenx, screeny = screenRes()
menu = { }
menu[1] = surface(); menu[1]:LoadIMG("menu/menu1.bmp") -- cargamos en la superficie una imagen 
menu[2] = surface(); menu[2]:LoadIMG("menu/menu2.bmp") -- cargamos en la superficie una imagen 
menu[3] = surface(); menu[3]:LoadIMG("menu/menu3.bmp") -- cargamos en la superficie una imagen 
-- cada imagen es de 720x480 pixels, como la resolucion de la pantalla elegida
menuActual = 1
 
function actualizarBotones()
     if up(0) < 1 then -- si no esta presionado arriba             
          UpPress1 = 0
     end
     if down(0) < 1 then -- si no esta presionado abajo             
          DownPress1 = 0
     end
end
 
function moverMenu()
     if up(0) >= 1 and UpPress1 == 0 then -- si arriba y no esta presionad
          UpPress1 = 1 -- ya esta presionada
          if menuActual == 2 then
               menuActual = 1
          end
          if menuActual == 3 then
               menuActual = 2
          end
	end
     if down(0) >= 1 and DownPress1 == 0 then -- si abajo y no esta presionada
          DownPress1 = 1 -- ya esta presionada
          if menuActual == 2 then
               menuActual = 3
          end
          if menuActual == 1 then
               menuActual = 2
          end
     end    
end
 
function mostrarMenu() -- Creamos una funcion llamada screen_imagenes
     menu[menuActual]:setRectPos(0, 0)
     BlitToScreen(menu[menuActual])
end
 
function acciones()
     if cross(0) >= 1 and menuActual == 1 then -- si presiona
		--Aqui codigo del juego
	end
	if cross(0) >= 1 and menuActual == 2 then -- si presiona
		--Aqui codigo de las opciones
	end
     if cross(0) >= 1 and menuActual == 3 then -- si presiona
		break -- Terminamos la aplicacion ## Creo que te referias a os.exit(), pero este comando solo esta para PC
	end
end
 
while true do --Empezamos el bucle 
     beginGFX() -- Iniciamos los graficos
     mostrarMenu()
     moverMenu()
     actualizarBotones()
     acciones()
     endGFX() -- Terminamos la seccion de graficos
end

Te he corregido algunas cosas. Para subir imagenes, puedes utilizar servidios como imageshack o photobucket


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).

Gracias

Hola, lo de exit() en el emulador por lo menos (Uso la version para Mac OS X) no da ningun error, lo que no puedes usar es un break ahi en la funcion acciones() ya que no hay ningun bucle que "romper" y daria un error de compilacion (de hecho a mi en el emulador no me ejecuta). Si no esta implementado en la ps3 eso ya lo desconozco, no tengo la suerte de poseer una ps3 xD, pero el break ahi esta mal ponerlo. Otra opcion es sacarlo de la funcion y meterlo dentro del while true, donde el break si se puede utilizar.

Lo de poner ";" despues de cada comando ya lo sabia jeje, pero como no molesta y vengo de otros lenguajes de programacion, prefiero no mal acostumbrarme a no poner ; xD

 

PD: Es dificil programar cuando cometes algun error y no te sale nada al respecto, a vosotros tambien os pasa?? Se puede hacer algo para saber por lo menos la linea del error? xD

Imagen de NEKERAFA

Yo tambien estoy aprendiendo

Yo tambien estoy aprendiendo a programar y en lua estoy acustumbrado a no poner ; , pero en C si, bueno, esque si no lo pongo me va mal xddd.

Por lo del break, si que se puede poner, ya sea en el emulador o en la PS3, ya que la funcion la usas en un bucle, asi que el break romperia el bucle


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).

Muy raro

jaja esque yo poniendo el break dentro de la funcion me da error, ya te digo que es muy raro si me dices que a ti te funciona y siendo el mismo codigo debe ser cosa del emulador que funciona diferente, supongo que tu usaras el de windows y yo uso la version de Mac OS X, aunque no deberia haber ninguna diferencia en su uso. Tambien no he encontrado la manera de que se quede parado en el emulador el mensaje de error cuando te has equivocado al escribir codigo, la solucion de windows de hacer un .bat que llame al emulador y luego haga pause no funciona(adaptandolo claro a la sintaxis de Unix) y no he encontrado la manera de hacerlo xddd, supongo que hasta que no haya otro usuario que use el emulador en este SO me sentire solo xD.

Imagen de NEKERAFA

Es verdad, yo utilizo

Es verdad, yo utilizo Windows, asi que puede que halla alguna diferencia

Imagen de Pana

Bueno... y en definitiva...

Bueno... y en definitiva... cual funciona correctamente en PS3? que es lo que nos interesa :P.

Saludos.

Imagen de Pana

Yo en windows, cuando

Yo en windows, cuando programaba en LUA para PS3 lo que hacía era crear un archivo .cmd que me ejecutase el emulador, y después de la línea del archivo cmd que ejecutaba el emulador le metia un "pause".

De esta forma, si encontraba un error el emulador no se cerraba, marcando la línea donde encontró el error. No sé si a ti te funcionará.

Un saludo.

PD: Si queires edita el codigo de aquí y cuando este corregido en su totalidad lo actualizo en el tutorial que he pasado a portada ;).

Un saludo.

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.