RSS
Facebook
G+

Buscador de IntercambioSOS:


Retroceder   Foro de Ayuda IntercambiosvirtualeS > Soporte Sobre: Educación & Entretenimiento > Zona Académica > Programación

Tema Cerrado
 
Herramientas Desplegado
Antiguo 06-sep-2009     #1
Caluroso Programacion en LUA - Caps.1, 2, 3, 4, 5, 6 y 7

Hol@ a todos poco a poco voy a hacer una saga de tutoriales de Lua para que apreandais un poco , bueno creo que me esquivocado de categoria esto deberia ir en programacion
1. Introduccion

LUA es un Lenguaje de programacion compacto, que permite ser ejecutado en dispositivos portatiles(especialemte PSP). No necesita compilacion ya que programas como HM Lua Player (especialmente las versiones 7 y , lo ejecutan, tambien hay un lua player para windows.

2. Entorno

Necesitas:

Notepad++ o algun programa parecido
Este tutorial
Ganas de aprender


3. Hello World


Aqui os enseñare a hacer un Hello world bastante simple

1ªParte: Colores
Código PHP:
--Definimos colores
blanco 
Color.new (255255255
Bien, al poner "--" Delante de algo, lo convierte en una aclaracion o identificacion, es decir, algo que el programa no lee pero esta ahi para ayudarnos
Ahora vamos al color

"blanco" es el nombre que le emos dado a nuestro color, puede llamarlo, rojo, amarillo o cubata o azul, da igual el programa no hace caso de el nombre sino de el color que representa

"Color.new" es una instruccion que indica al programa que enter los parentesis siguientes va a haber un color

"(255, 255, 255)" es el blanco en colores RGB (Red, green, blue), en esos 3 numeros se encuentra cualquier color, a continuacion os mostrare una lista de algunos de los colores mas usados.

(255, 255, 255) = blanco
(255, 0, 0) = rojo
(0, 255, 0) = verde
(0, 0, 255) = azul
(0, 0, 0) = negro
(255, 255, 0) = amarillo

El "=" entre el nombre del color y Color.new sirve para vincular el nombre del color con el color en si

2ª Parte: Bucle del programa

Aqui va el cuerpo del programa, es decir lo que hara que se muestre en pantalla entre otras cosas
Código PHP:
--Bucle principal del programa
while true do 
screen:clear()
screen:print(11"Hola mundo"blanco)
screen.flip()
end 
"while true do" quiere decir que si lo de arriba es cierto se ejecute lo de abajo, pero en realidad que hace es mostrar que de ahi para abajo va el bucle principal del programa

"screen:clear()" limpia la pantalla, sin esto se deberia ver llena de codigos si entre los parentesis se pone un color declarado arriba borrara la pantalla y la pintara del color escrito

"screenrint" es una funcion que permite mostrar texto en la pantalla; entre los parentesis van "(1, 1, " estos numeros son las coordenadas de pixeles en las que tiene que empezar el texto, la pantalla de la PSP tiene 480 pixeles de larga y 272 de alta; despues de los numeros lo escrito entre comillas " "(texto)", " es el texto que se desea mostrar, si se hace muy largo el texto se sale de la pantalla por lo tanto no se puede leer, se recomienda escribir en varias lineas; el "blanco)" del final dice el color de los cargados arriba que se quiere aplicar el texto.

"screen.flip()" muestra en la pantalla todos los screenrint escritos en el bucle principal despues del screen:clear()

"end" cierra el bucle principal


Y ya esta hecho, ahora os enseñare a guardarlo en la PSP, bien suponiendo que habeis descargado el LUA player HM7 o 8 y puesto en PSP/Game y habeis escrito el programa con Notepad++, bien, le dais en el Notepad a Archivo y a Guardar como, en tipo le poneis, lua source file (*.lua), y de nombre le poneis script.lua, elegis la carpeta de PSP/GAME donde esta guardado el Lua player y guardais ahi, luego en la PSP vais a Juegos -> memory stick -> elegis el Lua player y lo ejecutais, y ya deberia funcionar vuestro programa


Última edición por Eloy58; 09-sep-2009 a las 17:21
Los siguientes 3 usuarios agradecen a jchierro por este mensaje:
Dianela (11-sep-2009), Eloy58 (11-sep-2009), SamelTk (18-dic-2009)
Antiguo 06-sep-2009     #2
Caluroso Capitulo 2

Funciones y pulsaciones

Llegamos a algo interesante, vamos a hacer que nuestro programa sepa que estamos pulsando, y de regalo a ver el % y el tiempo de la bateria, pero antes vamos a explicar que es una variable(hara falta para el tiempo, aunque tambien se puede activar sin variables)

1. Variables

Una variable es como un atajo ejemplo
Código PHP:
porcentagebateria System.powerGetBatteryLifePercent() 
"porcentagebateria" es el nombre de la variable podrias poner el que quisieras

"System.powerGetBatteryLifePercent()" es la instruccion que se usa para ver el % de la bateria

El "=" es para asignar la instruccion a la variable

2. Lectura de pulsaciones


Y llegamos a lo interesante, vamos a ver como hacer que la PSP nos entienda, o al menos sepa que estamos pulsando y responda de alguna manera. Para ello vamos a hacer un programa, el siguiente:
Código PHP:
--Definimos colores
blanco 
Color.new(255255255)
azul Color.new (00255
Esta parte ya la sabemos del capitulo 1, aqui usaremos 2 colores para que se vea mas bonito
Bueno vamos con lo nuevo(es un codigo largo pero luego lo analizaremos ):
Código PHP:
--Variables y Pulsaciones
porcentagebateria 
System.powerGetBatteryLifePercent()
tiempobateria System.powerGetBatteryLifeTime()  
function 
LeerPulsacion ()
pad Controls.read()if pad:right() then
screen
:print( 150130"Esta pulsando derecha"blanco)
screen.flip()
screen.waitVblankStart(100)
screen.flip()
end
if pad:up() then
screen
:print( 150130"Esta pulsando arriba"blanco)
screen.flip()
screen.waitVblankStart(100)
screen.flip()
end
if pad:down() then
screen
:print( 150130"Esta pulsando abajo"blanco)
screen.flip()
screen.waitVblankStart(100)
screen.flip()
end
if pad:left() then
screen
:print( 150130"Esta pulsando izquierda"blanco)
screen.flip()
screen.waitVblankStart(100)
screen.flip()
end
if pad:cross() then
screen
:print( 150130"Esta pulsando equis"blanco)
screen.flip()
screen.waitVblankStart(100)
screen.flip()
end
if pad:triangle() then
screen
:print( 150130"Esta pulsando triangulo"blanco)
screen.flip()
screen.waitVblankStart(100)
screen.flip()
end
if pad:circle() then
screen
:print( 150130"Esta pulsando circulo"blanco)
screen.flip()
screen.waitVblankStart(100)
screen.flip()
end
if pad:square() then
screen
:print( 150130"Esta pulsando cuadrado"blanco)
screen.flip()
screen.waitVblankStart(100)
screen.flip()
end
if pad:l() then
screen
:print(160140" "..porcentagebateriablanco)
screen:print( 150130"Porcentage"blanco)
screen.flip()
screen.waitVblankStart(100)
screen.flip()
end
if pad:r() then
screen
:print(160140" "..tiempobateriablanco)
screen:print( 150130"Tiempo"blanco)
screen.flip()
screen.waitVblankStart(100)
screen.flip()
end
if pad:start() then
screen
:print( 150130"Esta pulsando start"blanco)
screen.flip()
screen.waitVblankStart(100)
screen.flip()
end
if pad:select() then
screen
:print( 150130"Esta pulsando select"blanco)
screen.flip()
screen.waitVblankStart(100)
screen.flip()
end
end 
Bueno aqui esta lo nuevo como veis no es pequeño pero es k le e mos dado funciones a todos los botones (L, R, [], /\ , O, X, y el pad de direccion, start y select y home que siempre tiene; los demas no le emos asignado funcion). Ahora analizaremos el principio, derecha y L.
Código PHP:
porcentagebateria System.powerGetBatteryLifePercent()
tiempobateria System.powerGetBatteryLifeTime() 
Como podeis ver es que emos cargado las funciones de porcentage y tiempo de la bateria
Código PHP:
function LeerPulsacion ()
pad Controls.read() 
Bien estas 2 lineas se encargan de que la PSP reconozca los botones que pulsamos
Código PHP:
if pad:right() then 
Traducido a español seria " Si pulsas derecha entonces" y eso es lo que hace, si pulsamos el boton derecha entonces se ejecutara lo escrito entre eso y el siquiente end
Código PHP:
screen:print( 150130"Esta pulsando derecha"blanco)
screen.flip() 
Esto ya lo conocemos del primer tuto asi que no hace falta explicarlo solo decir que se ejecutara al pulsar derecha
Código PHP:
screen.waitVblankStart(100)
screen.flip() 
Estas 2 lineas son un retardo, es decir que el screenrint de encima se mantega en la pantalla el tiempo puesto entre los parentesis de screen.waitVblankStart()
Código PHP:
end 
Esto cierra la pulsacion para que solo haga lo indicado encima

Ahora describire la pulsacion de la L para enseñar como e usado la variable
Código PHP:
if pad:l() then 
Esto ya lo conoceis, la unica diferencia es que aqui esta refiriendose al L
Código PHP:
screen:print( 150130"Porcentage"blanco)
screen:print(160140" "..porcentagebateriablanco
Aqui estamos llamando a la variable, para que al pulsar L se muestre el % de la bateria tambien nos podriamos ahorrar la variable y ponerlo donde estamos ahora mismo en lugar del porcentagebateria, se quedaria asi:
Código PHP:
if pad:l() then
screen
:print(160140"Porcentage de la bateria: "..System.powerGetBatteryLifePercent(), blanco)
screen.flip()
screen.waitVblankStart(100)
screen.flip()
end 
Se quedaria como ahi arriba. Y ahora el resto de la pulsacion:
Código PHP:
screen.flip()
screen.waitVblankStart(100)
screen.flip()
end 
Ya sabeis para que sirve


Y ahora vamos con el bucle principal del programa
Código PHP:
--Bucle principal del programa
while true do
screen:clear()
screen:print(11"Pulsa L para ver el % de la bateria"azul)
screen:print(111"Pulsa R para ver el tiempo de la bateria"azul)
screen:print(121"Pulsa los demas botones para que se lea su pulsacion"azul)
screen.flip()
LeerPulsacion()
end 
Eso tambien sabeis para que sirve, con la diferencia del LeerPulsacion() que esta cargando la funcion.

Pues ya esta, hemos acabado el capitulo 2 de programacion en lua , guardar el archivo como script.lua y ejecutarlo del mismo modo que el otro

Los siguientes 3 usuarios agradecen a jchierro por este mensaje:
Dianela (11-sep-2009), Eloy58 (06-sep-2009), SamelTk (18-dic-2009)
Antiguo 07-sep-2009     #3
Caluroso Capitulo 3

Cargando imagenes


1. Cargar las imagenes

Vale, para mostar las imagenes primero hay que cargarlas asi que esto es lo primero
Código PHP:
Nombre_variable Image.load(“ruta de la imagen/imagen.extension”
No esta muy claro verdad, asi que mejor con ejemplos
Código PHP:
Ejemplo 1
fondo 
Imagen.load("ms0:/Pictures/Vivayo.png"

Ejemplo 2
imagen1 
Image.load("Imagenes/imagen1.png"
Explicacion, tomemos el ejemplo 1.
Bien "fondo" es el nombre que le emos asignado a la variable de la imagen, es decir, el nombre que tendra la imagen en el programa
"Imagen.load" es la instruccion que le dice al programa que ahi hay una imagen y no otra variable
Y " ("ms0:/Pictures/Vivayo.png") " indica al programa donde esta la imagen y su nombre, las imagenes tienen que ser en .png, si os fijais el ejemplo 2 es diferente, eso quiere decir que en vez de empezar en la MS0 empieza en el directorio donde esta el programa
Y como siempre el "=" es para unir imagen y variable

2. Mostrar las imagenes

Lo de antes no valia para nada sin esto, aqui esta lo bueno, la diversion, MOSTRAR LAS IMAGENES, y se hace asi:
Código PHP:
screen:blit(xyImagen_a_mostrar, [origen_imagen_xorigen_imagen_yanchoalto], [alpha true]) 
Mas que aclararos os ha liado verdad? Os habeis asustado de lo largo que es? Bueno pues la buena noticia, todo lo que esta entre [ ] es opcional.
Os pongo 2 ejemplos, con distintos grados de difcultad
Código PHP:
screen:blit(11fondo
Código PHP:
screen:blit(11fondo553030
Os explico el 2

"screen:blit" es la instruccion que muestra la imagen
"(1, 1, " son las coordenadas de origen de la imagen
"fondo, " es la variable anteriormente definida de la imagen

Hasta aqui ya vale para ver la imagen pero si nos gusta aventurarnos:

"5, 5, 30, 30)" aqui algo interesante, si quereis que la imagen no se muestre entera sino solo una parte, usar esto, el 5, 5 es el punto de origen a traves del cual empezara a verse y el 30, 30 es el que se dejara de ver, formando un cuadrado o rectangulo en este caso de 25 pixeles de alto y ancho

3. Vale, ahora un programilla de ejemplo
Código PHP:
--Definimos colores
blanco 
Color.new(255255255)
--
Cargamos imagenes
fondo 
Image.load("Imagenes/fondo.png")
--
Bucle principal
while true do
screen:clear()
screen:blit(00fondo)
screen:print(11"He mostrado un fondo"blanco)
screen:flip()
end 
Y recordad teneis que crear una carpeta llamada Imagenes y la imagen se tiene que llamar fondo.png para que vaya
Por cierto la pantalla tiene 480 pixeles de anch
o y 272 de alto


Última edición por jchierro; 07-sep-2009 a las 10:23
Los siguientes 4 usuarios agradecen a jchierro por este mensaje:
Dianela (11-sep-2009), Eloy58 (07-sep-2009), espartano320 (08-sep-2009), SamelTk (18-dic-2009)
Antiguo 08-sep-2009     #4
Caluroso Capitulo 4

Funciones interesantes y colores RGB


1. Colores RGB

Bien, pues los RGB estan compuestos por 3 colores rojo, verde y azul. Cada 1 tiene un valor entre 0 y 255.

Si recordais(a no ser que tengais amnesia) e el primer tuto os di estos colores

(255, 255, 255) = blanco
(255, 0, 0) = rojo
(0, 255, 0) = verde
(0, 0, 255) = azul
(0, 0, 0) = negro
(255, 255, 0) = amarillo

Pues ahora os dare mas y los explicare

El primero es la R, el rojo(red), cualquier numero del 0 al 255 es un tono de rojo mas claro o mas oscuro
El de enmedio es la G, el verde(green) al igual que el de arriba va de 0 a 255 y cada numero es un tono
Y el ultimo es la B , el azul(blue) y como los otrs va de 0 a 255 y cada numero es un tono

Vale, pues solo usando 255 y 0 entre los 3 se pueden hacer muchas combinaciones

A partir de ahora los que ponga estan sacados de una paleta de colores de internet, asi que no estoy muy seguro de ellos, podeis probarlos y si no son corregirme

255, 0, 255 = ¿Lila?
0, 255, 255 = ¿Cyan?

No tiene por que ser solo 255 y 0, Tambien se podria conseguir colores como el gris asi:

100, 100, 100 = ¿gris oscuro?
200, 200, 200 = ¿gris claro?

o Algun tono claro asi:

200, 200, 255 = ¿Azul muy claro?
255, 150, 150 = ¿Rosa?
255, 40, 0 = ¿Naranja oscuro o rojo claro?

Podeis probar combinaciones, y si quereis que añada todos los colores que vayais probando aqui decirlos

Asi se van formando colores, variando entre los numeros


2. Funciones interesantes

Ahora vamos con algunas funciones que tiene LUA para la PSP interesantes.

2.1 Botones

pad:home() -- Home tiene la funcion de salir por defecto, hay que desactivarsela (solo posible en Lua Player HM
pad:hold()
pad:note()
pad:analogX() -- Rango de -127 a 128.
pad:analogY() -- Rango de -127 a 128.

2.2 Mensajes, Textos e imagenes

System.message()

Imprime un mensaje a la pantalla con las opciones: "Sí, no, y volver". Es decir un mensaje del sistema.

System.message("Hola",0) -- muestra solo la opcion de "volver".
System.message("Hola",1) -- muestra las opciones: "Sí, no, y volver".

Por si solo esto de arriba no sirve de nada, necesita esto:

System.buttonPressed()

Retorna la acción de la opción seleccionada en la función System.message(). Utilice "1" para que nos devulva "Yes/No" o "0" para que devuelva "1/0".

button = System.buttonPressed(1)
If button == "yes" then
System.Quit()
end

button = System.buttonPressed(0)
If button == 1 then
System.Quit()
end


Otra funcion interesante es

System.startOSK( string_defecto , string_mensaje ) -- Muestra el teclado en pantalla.

isoname = System.startOSK( "ms0:/ISO/*.ISO", "Enter Name and Path" )
screenrint( 1, 1, isoname, red )


Ahora alguna de fuentes

Font.init()

Inicializa la nueva libreria de fuentes de texto "TTF".

Font.term()

Termina y cierra la libreria de fuentes de texto "TTF".

font = Font.load( path/filename.ttf )

fuente = Font.load( "./fuentes/font.ttf" ) -- Carga una fuente de texto formato "TTF"
fuente:setPixelSizes(0, 20) -- Altura de la fuente 20 pixeles.
blanco = Color.new( 255, 255, 255 )
screen:fontPrint( fuente, x, y, "Script de Ejemplo", blanco )
screen.flip()

Font.unload( fontslot ) Borra una fuente "TTF" de un "slot".
Ejemplo: Font.unload( 1 )

Font.color( Rojo, Verde, Azul, Alpha ) Retorna un valor Hexadecimal de los componentes de un color.
Ejemplo: rojo = Font.color( 255, 0, 0, 255 ) -- "0xFF0000FF

Font.print( x, y, var, color, fontslot ) Escribe en la pantalla "screen" con una fuente de texto "TTF".
Ejemplo:
Font.init()
Font.load( "ms0/font.ttf", 1 )
blanco = Font.color( 255, 255, 255, 255 )
Font.print( 10, 10, "Hola Betapeseperos.", blanco, 1 )
screen.flip()
Font.unload(1)
Font.term()

IntraFont.init() Inicializa la nueva libreria de las IntraFont o fuentes propias de la PSP "PGF".

IntraFont.term() Termina y cierra la libreria IntraFont.

IntraFont.load( "flash0:/font/ltn8.pgf", opcion ) Carga una fuente texto "PGF" y una opción de las cuatro:
opcion: 1 = Normal 2 = Calidad Rápida 3 = Calidad Buena 4 = Japaniese
Ejemplo: IntraFont.load( "flash0:/font/ltn8.pgf", 2 )

IntraFont.color( Rojo, Verde, Azul, Alpha ) Retorna un valor Hexadecimal de los componentes de un color.
Ejemplo: rojo = IntraFont.color( 255, 0, 0, 255 ) -- "0xFF0000FF

IntraFont.print( x, y, var, Size, Color, Glow ) Escribe en pantalla con un Color y una Sombra.
Ejemplo:
IntraFont.init()
IntraFont.load( "flash0:/font/ltn8.pgf", 2 )
red = IntraFont.color( 255, 0, 0, 255 )
yellow = IntraFont.color( 0, 255, 255, 255 )
screen:clear()
Gu.start3d()
IntraFont.print( 1, 35, "WARNING", 3, yellow, red )
IntraFont.print( 1, 90, "PELIGRO", 1, red, 0 )
Gu.end3d()
screen.flip()
IntraFont.term()

image:drawLine( x , y , x1, y1, color ) -- Dibuja una línea.

nil image:fillRect( x , y , ancho , alto , color ) -- Dibuja un rectángulo.


nil imageixel( x , y , color ) -- Pinta un pixel o punto.

imagen = Image.createEmpty( 50 , 50 )
blanco = Color.new( 255, 255, 255 )
imagenixel( 10, 10, blanco )
screen:blit( 0, 0, imagen, true )
screen.flip()


color = imagenixel( x , y ) -- Obtiene el color de un punto o pixel.


1.3 Tiempo

System.getDate( opción )

Retorna la fecha de la consola PSP, no funciona en el PC al ser una función específica. Solo una opción a la vez: año = 1, mes = 2, día = 3
anno = System.getDate(1) -- Retorna el año.



System.getTime( opción )

Devuelve la hora de la consola PSP, no funciona en el PC al ser una función específica. Solo una opción: hora = 1, minutos = 2, segundos = 3, microseg = 4, pm-am = 5.
hora = System.getTime(1) -- Retorna la hora de la PSP.


1.4 Otros

dofile( path/file.lua )

Carga y ejecuta código LUA que esté en un archivo. Es útil para organizar el programa en partes, en un archivo los colores e imágenes, en otro los sonidos, en otro las funciones, etc... Es util para descomponer un programa en módulos para su mejor extructuración evitando un único archivo demasiado extenso.

Ejemplo:
dofile("./archivos/variables.lua")



lo***ile( path/file.lua )

Carga código LUA que esté en un archivo. Es util para descomponer un programa en módulos que se ván ha ejecutar varias veces, como presentaciones, animaciones, tutoriales, etc... En definitiva ejecuta código similar a una función solo que es externa y sin argumentos de entrada ni salida.

_tutorial = lo***ile("./System/tutorial.lua") -- Carga el código.
_tutorial() -- Ejecuta el código como una función.



System.createDirectory( path )
Crea un nuevo directorio.
Ejemplo:
System.createDirectory("LuaPlayerHM")


System.doesDirExist( path )
Retorna 1 si existe el Directorio, 0 si no existe.
Ejemplo:
ok = System.doesDirExist("ms0:/psp")


System.doesFileExist( path/file )
Retorna 1 si existe el archivos, 0 si no existe.
Ejemplo:
ok = System.doesFileExist("ms0:/psp/eboot.pbp")


System.copyFile( oldpath/file , newpath/file , 1-0 )
Copia un archivo a otro lugar, 1 Borra archivo viejo, 0 no lo borra.
Ejemplo:
System.copyFile("oldfiledir.lol","newfiledir.lol", 1) -- Mueve el archivo.
System.copyFile("oldfiledir.lol","newfiledir.lol", 0) -- Copia el archivo.


System.removeDirectory( path )
Borra un directorio.
Ejemplo:
System.removeDirectory("SonyOFW")

System.removeFile( path/file )
Borra un archivo. Solo válida para PSP no para PC.
Ejemplo:
System.removeFile("Sonyrestrictions.lol")


System.nickName() -- Retorna el Nickname de la PSP. name = System.nickName()


System.playerVer() -- Retorna la versión del LuaPlayerHM: ver = System.playerVer()


string System.cfwVersion() -- Retorna la versión del Custom FirmWare de la PSP.
Muestra la versión del FirmWare de la PSP, seguido de "M33" si es un CFw de Dax o "???" si es de otro. Ahora actualizado a CFW Gen.
CFver = System.cfwVersion() -- Retorna "3.90M33-3"


System.getModel()
Retorna el modelo de consola PSP, Clasica o Slim. El modelo Slim tiene el doble de memoria. Usa (1) para que retorne un string o (0) para que retorne un "number":
PSP Clasica string = "PHAT" number = 1000
PSP Slim string = "SLIM" number = 2000

PSPtype = System.getModel(1) -- Retorna "PHAT"
PSPtype = System.getModel(0) -- Retorna "1000"


System.madeby() -- Muestra la versión LuaPlayerHM y los creadores, ejemplo: System.madeby()
Muestra la versión entre parentesis así: ( 1 para "sí / no", o 0 "para volver" ) : System.madeby(0)


System.getTotalSize() -- Tamaño total del dispositivo: size = System.getTotalSize("ms0:/")


System.getFreeSpace() -- Espacio libre del dispositivo: size = System.getFreeSpace("ms0:/")


System.getFileSize() -- Tamaño en bytes de un archivo: size = System.getFileSize("ms0:/hello.txt")


System.getDirSize() -- Tamaño en bytes de un directorio: size = System.getFileSize("ms0:/PSP")


System.powerIsPowerOnline() -- Comprueba si está conectada a un sistema de alimentación externo.


System.powerIsBatteryExist() -- Comprueba si la batería está conectada.


System.powerIsBatteryCharging() -- Comprueba si la batería está cargando.


System.powerGetBatteryChargingStatus() -- Comprueba el estado de carga de la batería.


System.powerIsLowBattery() -- Comprueba si la batería está baja.


System.powerGetBatteryLifePercent() -- Devuelve el porcentaje de carga de la batería.


System.powerGetBatteryLifeTime() -- Devuelve el tiempo restante de la batería.


System.powerGetBatteryTemp() -- Devuelve la temperatura de la batería.


System.powerGetBatteryVolt() -- Devuelve el voltaje de la batería.


System.powerTick()
Envía un " power tick" a la PSP. Detiene la psp va a al modo de espera y powersaving mode.


System.LCDTimerEnable() -- Activa que la pantalla LCD se apague después de no actividad.


System.LCDTimerDisable() -- Desactiva que la pantalla LCD se apague después de no actividad.


System.LCDTimerGet() -- Devuelve el tiempo del powersave.


System.suspend() -- Pone la PSP en modo suspendido.


System.shutdown() -- Apaga la consola PSP.


System.Quit() -- Termina la ejecución LuaPlayer y sale al XMB.


System.getBusSpeed() -- Returns the Bus speed.


System.getCpuSpeed() -- Retorna la velocidad de la CPU.


System.setLow() -- Pone la Cpu a 133Mhz


System.setReg() -- Pone la Cpu a 266Mhz


System.setHigh() -- Pone la Cpu a 333Mhz


System.memclean()
Limpia la memoria y borra los archivos no usados en la memoria. "Úsala para conseguir memoria libre."


number System.getFreeMemory() -- Retorna los bytes de memoria libres.
screenrint(0,0, System.getFreeMemory() / 1024 / 1024 .. " megabytes memoria libre." , color )


UMD.init()
Inicia la unidad UMD y comprueba si hay disco. Si no hay disco muestra un mensaje y no carga la unidad UMD "disk0:”


UMD.term() -- Para la unidad UMD.


UMD.checkDisk() -- Comprueba si hay un disco UMD en la unidad.


UMD.ripISO( path/file.iso )
Guarda la imagen ISO de un UMD en el path dado de la tarjeta de memoria.
UMD.ripISO("ms0:/ISO/Game.ISO")


UMD.getSize() -- Retorna el tamaño en bytes de un UMD.
UMDSize = UMD.getSize()


System.startUMD()
Carga y arranca un UMD de la unidad UMD. Si no hay un UMD insertado muestra un mensaje “no UMD in the Drive”


System.startISO() -- Carga y arranca un juego PSP de una imagen ISO de la tarjeta de memoria.
System.startISO("ms0:/ISO/game.iso") -- UMD MODE PUESTO A” OE isofs”


System.startPSX() -- Carga y arranca una juego de PSX de la tienda playstation store.


System.getEboot( "Eboot.pbp_path" , number_opcion )
Obtiene las imágenes que incorpora un Eboot.pbp:
number_opcion: 1 para "ICON0.PNG" 2 para "PIC0.PNG” 3 para "PIC1.PNG"
image = System.getEboot("ms0:/150.pbp",1)
screen.blit(1,1,image)


System.loadElf( "filepath" ) -- Carga un fichero ELF solo kernel 1.50.
System.loadElf("ms0:/hi.elf")


System.loadPrx( "filepath" )
Carga un fichero PRX y comienza la misma. Advertencia de que podría provocar que el jugador que no funcione correctamente o crask el sistema.


System.loadPrxKernel( filename )
Carga un archivo PRX en la memoria del Kernel. Permite al Kernel las funciones a ser usadas.


System.stopPRX( name )
Se detendrá y descargar un archivo PRX que ha sido cargado. Es necesario el nombre único de archivo de la PRX dado en el momento del PRX está cargado. LuaPlayerHM8.
Ejemplo: name = System.loadPrxKernel( filename ) ; System.stopPRX( name )


System.runeboot( ./path/EBOOT.PBP )
Carga y arranca un archivo *.PBP en el kernel con el que se arrancó el LuaPlayerHM, normalmente 3.xx.El Kernel 1.50 soloes válido para PSP PAHT, conocidas como PSP tochas, Classic, etc.
System.runeboot("ms0:/Eboot.PBP") -- 3.xx and 1.50 (in corosponding kernel)


System.startGameSave() -- Guarda una partida o game data:
System.startGameSave("Nombre_savegame","Nombre_gam e","Detalles/mesaje", datos_a_guardar )
System.startGameSave("Nombre_savegame","Nombre_gam e","Detalles/mesaje", datos_a_guardar, "Nombre od del juego*usado para identificar el save data”)


System.startGameLoad() -- Carga una partida o game data:
data = System.startGameLoad(”Nombre od del juego*usado para identificar el save data”)


System.startUpdate() -- Carga un archivo update.pbp para actualizar la PSP a” m33 updates” .


ZIP.extract( zipdirectory , extractdirectory , " [ password ] " ) -- Usado para extraer archivos zip.
ZIP.extract("ms0:/hi.zip","ms0:/psp/hi","") -- usa "" cuando no tenga clave o password.


System.usbDiskModeActivate() -- Hace una conexión USB.


System.usbDiskModeDeactivate() -- Desconecta la conexión USB.


System.usbDevFlash0() -- Establece el acceso a la Flash0 a través del USB.


System.usbDevFlash1() -- Establece el acceso a la Flash1 a través del USB.


System.usbDevFlash2() -- Establece el acceso a la Flash2 a través del USB.


System.usbDevFlash3() -- Establece el acceso a la Flash3 a través del USB.


System.usbDevUMD()
Establece el dispositivo USB para acceder a la unidad UMD. Si no hay disco insertado en la unidad te lo dirá y usará la tarjeta de memoria insertada. El UMD será leido como una imagen ISO.


System.webbrowser( Pathofwebbrowser.pbp , url )
Cargará el webbrowser con la url entrada. Si no hay url cargará el “google.com”.


Los siguientes 4 usuarios agradecen a jchierro por este mensaje:
Dianela (11-sep-2009), Eloy58 (08-sep-2009), espartano320 (08-sep-2009), SamelTk (18-dic-2009)
Antiguo 09-sep-2009     #5
Caluroso Capitulo 5

Vamos ha aprender a hacer menus de seleccion.

Lo explicare con un programilla
Código PHP:
--Definimos colores
blanco 
Color.new(255255255)
azul Color. new(00255)
--
Variables
current 
"espanol"
--Bucle
while true do
pad Controls.read()
if 
pad:down() and current == "espanol" and pad~=prevpad then
current 
"ingles"
prevpad=pad
end
if pad:down() and current == "ingles" and pad~=prevpad then
current 
"espanol"
prevpad=pad
end
if pad:up() and current == "ingles" and pad~=prevpad then
current 
"espanol"
prevpad=pad
end
if pad:up() and current == "espanol" and pad~=prevpad then
current 
"ingles"
prevpad=pad
end
if pad:cross() and current == "espanol" and pad~=prevpad then
screen
:print(140150"Hola, este es el menu español"blanco)
screen.flip()
screen.waitVblankStart(100)        
end
if pad:cross() and current == "ingles" and pad~=prevpad then
screen
:print(140150"Hello, this is the english menu"blanco)
screen.flip()
screen.waitVblankStart(100)
end
prevpad
=pad
screen
:clear()
if 
current=="espanol" then
screen
:print(11"Español"azul)
screen:print(121"Ingles"blanco)
elseif 
current=="ingles" then
screen
:print(11"Español"blanco)
screen:print(121"Ingles"azul)
end
screen
:print(1200"Pulsa arriba y abajo para seleccionar la opcion deseada(azul)"blanco)
screen:print(1212"Pulsa X para ejecutar la Opcion"blanco)
screen.waitVblankStart()
screen.flip()
end 
Código PHP:
--Variables
current 
"espanol" 
Esa variable es la que nos va a ayudar a que funcione el menu, atentos a ella.
Código PHP:
if pad:down() and current == "espanol" and pad~=prevpad then
current 
"ingles"
prevpad=pad
end 
Bien aqui dice, si pulsas abajo y la variable current es español y pad es difetente a prevpad entonces
current pasa a llamarse ingles y prevpad pasa a llamarse pad
Código PHP:
if pad:cross() and current == "espanol" and pad~=prevpad then
screen
:print(140150"Hola, este es el menu español"blanco)
screen.flip()
screen.waitVblankStart(100)        
end 
Y aqui nos dice si pulsas equis y la variable es español y prevpad es diferente a pad, muestra el texto de debajo

Los siguientes 3 usuarios agradecen a jchierro por este mensaje:
Dianela (11-sep-2009), Eloy58 (09-sep-2009), SamelTk (18-dic-2009)
Antiguo 10-sep-2009     #6
Caluroso Capitulo 6

Menus Avanzados

Os pongo un codigo pero lo voy a encoger, el original tiene 9 funciones y os explixo
Código PHP:
  --colores
  blanco 
Color.new(255255255)
  
verde Color.new(02550)
  
azul Color.new(00255)
  --
Funciones y variables
  current 
6
  
--Lectura pulsaciones
  
function LeerPulsacion ()
  
pad Controls.read()
  if 
pad:down() and pad~=prevPad then
  
if current<4 then
  current
=current+1
  
else
  
current=1
  end
  
elseif pad:up() and pad~=prevPad then
  
if current>1 then 
  current
=current-1
  
else
  
current=4
  end
  end
  prevPad
=pad
  
if pad:cross() and pad~=prevpad then
  
if current == 1 then
  screen
:clear(blanco)
  
screen:print(150150,  "USB mode - Flash0"verde)
  
screen.flip()
  
screen.waitVblankStart(150)
  
System.usbDiskModeDeactivate()  
  
System.usbDevFlash0() 
  
System.usbDiskModeActivate()
  
end
  
if current == 2 then
  screen
:clear(blanco)
  
screen:print(150150,  "USB mode - Flash1"verde)
  
screen.flip()
  
screen.waitVblankStart(150)
  
System.usbDiskModeDeactivate()  
  
System.usbDevFlash1() 
  
System.usbDiskModeActivate()
  
end
  
if current == 3 then
  screen
:clear(blanco)
  
screen:print(150150,  "USB mode - Flash2"verde)
  
screen.flip()
  
screen.waitVblankStart(150)
  
System.usbDiskModeDeactivate()  
  
System.usbDevFlash2() 
  
System.usbDiskModeActivate()
  
end
  
if current == 4 then
  screen
:clear(blanco)
  
screen:print(150150,  "USB mode - flash3"verde)
  
screen.flip()
  
screen.waitVblankStart(150)
  
System.usbDiskModeDeactivate()  
  
System.usbDevFlash3() 
  
System.usbDiskModeActivate()
  
end
  end
  end 
  
while true do
  
prevpad=pad
  LeerPulsacion
()
  
screen:clear()
  
screen:print(1101">USB menu<"blanco)
  if 
current==1 then  
  screen
:print(121"USB flash0"verde)
  
screen:print(131"USB flash1"azul)
  
screen:print(141"USB flash2"azul)
  
screen:print(151"USB flash3"azul)
  elseif 
current==2 then
  screen
:print(1101">USB menu<"blanco)
  
screen:print(121"USB flash0"azul)
  
screen:print(131"USB flash1"verde)
  
screen:print(141"USB flash2"azul)
  
screen:print(151"USB flash3"azul)
  elseif 
current==3 then
  screen
:print(1101">USB menu<"blanco)
  
screen:print(121"USB flash0"azul)
  
screen:print(131"USB flash1"azul)
  
screen:print(141"USB flash2"verde)
  
screen:print(151"USB flash3"azul)
  elseif 
current==4 then
  screen
:print(1101">USB menu<"blanco)
  
screen:print(121"USB flash0"azul)
  
screen:print(131"USB flash1"azul)
  
screen:print(141"USB flash2"azul)
  
screen:print(151"USB flash3"verde)
  
end
  screen
:print(1200"Pulsa arriba y abajo para seleccionar la opcion deseada(verde)"blanco)
  
screen:print(1212"Pulsa X para ejecutar la Opcion"blanco)
  
screen.flip()
  
screen.waitVblankStart()
  
end 
Ahora os explico por partes. Bueno antes decir que como habreis apreciado este va con numeros
Código PHP:
if pad:down() and pad=prevPad then
  
if current<4 then
  current
=current+1
  
else
  
current=1
  end
  
elseif pad:up() and pad~=prevPad then
  
if current>1 then 
  current
=current-1
  
else
  
current=4
  end
  end 
pad~=prevpad hace que al soltar la tecla no se vuelva otra vez a su estado inicial
If current<4 then sirve para si la variable current es menor a 4 se ejecute lo siguiente que es
current=current+1 esto suma 1 a la variable current
else significa, de lo contrario
current = 1 significa convertir la variable current en 1
elseif es una mezcla entre else e if

y lo demas es practicamente igual

Código PHP:
if pad:cross() and pad~=prevpad then
  
if current == 1 then 
if current == 1 then significa que si la variable current significa 1 en ese momento entonces...
Código PHP:
elseif current==4 then
  screen
:print(1101">USB menu<"blanco
Y aqui pues lo mismo pero para mostrar el texto diferente cada vez que se sube o se baja

Los siguientes 3 usuarios agradecen a jchierro por este mensaje:
Dianela (11-sep-2009), Eloy58 (11-sep-2009), SamelTk (18-dic-2009)
Antiguo 11-sep-2009     #7
Caluroso Capitulo 7 y ultimo

Menus Con cursor(joystick)


Necesitais usar la imaginacion, luego vereis porque
Código PHP:
-- Colores --
azul Color.new(0,0,255)
blanco Color.new(255,255,255)
-- 
Imagenes --
fondo Image.load("ms0:/PSP/GAME/Programa/Imagenes/fondo.png")
cursor Image.load("ms0:/PSP/GAME/Programa/Imagenes/cursor.png")
icono1 Image.load("ms0:/PSP/GAME/Programa/Imagenes/icono1.png")
icono1sel Image.load("ms0:/PSP/GAME/Programa/Imagenes/icono1sel.png")
icono2 Image.load("ms0:/PSP/GAME/Programa/Imagenes/icono2.png")
icono2sel Image.load("ms0:/PSP/GAME/Programa/Imagenes/icono2sel.png"
Lo de siempre carga de imagenes y colores. Supongamos que tenemos esas imagenes con esos nombres. Fondo es el fondo, cursor es la flechita

Código PHP:
-- Variables --
0
x0 
235
y0 
193
x1 
0
y1 
0
nombreiso 
" " 
Esto dice donde tiene que empezar el cursor al iniciar el programa
Código PHP:
-- Controles --
function 
LeerPulsacion()
pad Controls.read()
dy pad:analogY()
dx pad:analogX()
if 
math.abs(dx) > 64 then
  x0 
x0 dx 24
end
if math.abs(dy) > 64 then
  y0 
y0 dy 24
end
if pad:up() then
  y0 
y0 8
end
if pad:down() then
  y0 
y0 8
end
if pad:right() then
  x0 
x0 8
end
if pad:left() then
  x0 
x0 8
end
if x0 >= 10 and x0 <= 200 and y0 >= 20 and y0 <= 250 and pad:cross() then
screen
:clear()
 
screen:print(11"Menu Ingles"blanco)
screen.flip()
screen:waitVblanckStart(200)
screen.flip()
end
if x0 >= 210 and x0 <= 400 and y0 >= 20 and y0 <= 250 and pad:cross() then
  screen
:clear()
screen:print(11"Menu Español"blanco)
screen.flip()
screen:waitVblanckStart(200)
screen.flip()
end
if pad:circle() then
dofile
("ms0:/PSP/GAME/MultiR-evolutionLUA/script.lua"
end
if pad:start() then
break
end
end 
Lectura de pulsaciones, analizamos por partes
Código PHP:
dy pad:analogY()
dx pad:analogX()
if 
math.abs(dx) > 64 then
  x0 
x0 dx 24
end
if math.abs(dy) > 64 then
  y0 
y0 dy 24
end 
Esto controla el movimiento del cursor con el joy stick
Código PHP:
if pad:up() then
  y0 
y0 8
end
if pad:down() then
  y0 
y0 8
end
if pad:right() then
  x0 
x0 8
end
if pad:left() then
  x0 
x0 8
end 
Esto el movimiento por los botones normales
Código PHP:
if x0 >= 10 and x0 <= 200 and y0 >= 20 and y0 <= 250 and pad:cross() then
screen
:clear()
 
screen:print(11"Menu Ingles"blanco)
screen.flip()
screen:waitVblanckStart(200)
screen.flip()
end
if x0 >= 210 and x0 <= 400 and y0 >= 20 and y0 <= 250 and pad:cross() then
  screen
:clear()
screen:print(11"Menu Español"blanco)
screen.flip()
screen:waitVblanckStart(200)
screen.flip()
end 
Esto son las pulsaciones de X si las haces dentro de las coordenada que pone se ejecuta, sino, pues no
Código PHP:
-- Bucle Principal --
while 
true do
if 
x0<0 then 
x0
=
end
if x0>478 then 
x0
=478 
end
if y0<0 then 
y0
=
end
if y0>270 then 
y0
=270 
end
x1 
x0
y1 
y0
-- Menu --
screen:blit(0,0,fondo)
screen:blit(10,20,icono1)
screen:blit(210,20,icono2)
-- 
Damos Efecto al pasar el Cursor Encima --
if 
x0 >= 10 and x0 <= 200 and y0 >= 20 and y0 <= 250 then
  screen
:blit(32,81,icono1sel)
end
if x0 >= 210 and x0 <= 400 and y0 >= 20 and y0 <= 250 then
  screen
:blit(190,81,icono2sel)
end
screen
:blit(x1,y1,cursor)
screen.waitVblankStart()
screen.flip()
end 
Analizamos
Código PHP:
if x0<0 then 
x0
=
end
if x0>478 then 
x0
=478 
end
if y0<0 then 
y0
=
end
if y0>270 then 
y0
=270 
end 
Esto es para que no se salga el cursor de la pantalla
Código PHP:
x1 x0
y1 
y0 
Esto cambia el nombre a las variables para no liarse
Código PHP:
screen:blit(0,0,fondo)
screen:blit(10,20,icono1)
screen:blit(210,20,icono2)
-- 
Damos Efecto al pasar el Cursor Encima --
if 
x0 >= 10 and x0 <= 200 and y0 >= 20 and y0 <= 250 then
  screen
:blit(32,81,icono1sel)
end
if x0 >= 210 and x0 <= 400 and y0 >= 20 and y0 <= 250 then
  screen
:blit(190,81,icono2sel)
end
screen
:blit(x1,y1,cursor)
screen.waitVblankStart()
screen.flip()
end 
Esto muestra las imagenes y hace que si se pasa por encima de las imagenes, se cambien a las seleccionadas




Los siguientes 4 usuarios agradecen a jchierro por este mensaje:
Dianela (11-sep-2009), Eloy58 (11-sep-2009), SamelTk (18-dic-2009), valientes (14-sep-2009)
Tema Cerrado


(0 miembros y 1 visitantes)
 
Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder mensajes
No puedes subir archivos adjuntos
No puedes editar tus mensajes

Los Códigos BB están Activado
Las Caritas están Activado
[IMG] está Activado
El Código HTML está Desactivado

Ir al Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
pido consejo para aprender programación hilbert69 Programación 24 17-mar-2019 11:25
Programación con Visual Basic .NET en Visual Studio 2005 VideoTutoriales.es rix180 Programación 29 28-jul-2011 02:14
Programacion Neurolinguistica piesdescalzos AudioLibros, Manuales, Libros & Revistas 2 19-ago-2010 20:57
computacion informatica y programacion dan-75 Programación 6 22-jun-2010 01:50
Ayuda En programacion Miguel Angel Tobon Peticiones 2 25-feb-2010 04:52


Desarrollado por: vBulletin® Versión 3.8.1
Derechos de Autor ©2000 - 2024, Jelsoft Enterprises Ltd.
Ad Management by RedTyger