Hola.. ya estamos por aqui con otra duda..
A ver, estoy haciendo un Homebrew, bastante chapucero, pero para ser el primero no esta nada mal, aqui lo podeis ver, descargar, criticar, etc..
http://www.elotrolado.net/hilo_homebrew-vita-emulators-insta...
Bien, ahora viene la duda, el caso es que ya estoy preparando una nueva version eliminando algo de codigo inutil y para añadir mas homebrews.. hasta aqui bien.
La cosa es que teniendo en cuenta el caracter del mismo, me gustaria poder crear un sistema de actualizacion, para asi poder ir añadiendo nuevos contenido descargable y que solo haya que actualizar el homebrew para diponer de lo que haya nuevo.
Entonces, mi plan es, crear un nuevo script que bautizare instalaciones.lua en cual metere los sub-menus y todas las funcciones que hay para cada homebrew, quedando 4 scripts:
script.lua --> basicamente es una intro y declaracion de alguna cosillas como colores imagenes y etc..
menu.lua --> seria solo el menu principal y nada mas
instalaciones.lua --> que llevaria los sub menus y funciones para instalacion de los contenidos (este es el que hay que actualizar, obviamente)
cretido.lua --> sobra las palabras de lo que es, XD
Bien, el tema es que tengo ya todo mas o menos hecho, pense en un sencillo sub menu dentro del menu.lua que se encargue de las actualizaciones, algo asi:
function menu_actualizacion() actualizacion= 1 while true do screen.clear() controls.read() fondo:blit(0,0) screen.print(245,30,"Sistema de Actualizaciones",1.5,blanco,grisoscuro,"center") screen.print(15,80," Buscar actualizacion",0.7,blanco,grisoscuro) screen.print(15,250," Atras",0.6,blanco,grisoscuro) if controls.press("down") then actualizacion = actualizacion+ 1 sound.play(tic) end if controls.press("up") then actualizacion = actualizacion- 1 sound.play(tic) end if actualizacion == 1 then screen.print(15,80,">Buscar actualizacion",0.7,blanco,azul2) end if games == 2 then screen.print(15,250,">Atras",0.6,blanco,azul2) end if controls.press("cross") then if actualizacion== 1 then --Aqui la llamada a la funcion que se encarga de las actualizaciones elseif actualizacion== 2 then break end end if actualizacion== 0 then actualizacion= 2 end if actualizacion== 3 then actualizacion= 1 end screen.flip() end end
(ignorar pequeños errores en este codigo que lo hice asi corriendo solo para os hagais una idea)
Bien hasta aqui voy mas o menos bien, se como descargar un archivo de mi dropbox y sustituir el instalaciones.lua por otro, que seria la actualizacion en si, ahora viene mi duda, (si, despues de todo el tocho)
¿Como hago para que verifique el archivo que tengo online y solo lo descargue si es mas reciente? Vamos, lo que viene a ser una comprobacion de actualizacion de toda la vida.. eso es lo que no tengo ni idea de como hacerlo..
Un saludo y gracias por adelantado.
Ps Vita 3g/wifi - 16gb // Ps3-Slim White - 320gb // Psp 3004 - 8gb // Xperia Play - 32gb // Ps2
GameBoy Color // Nds-L 8gb // Nds-I Black Pokemon Edition 8gb // Wii 4.2E - 80gb
¨Intentemos hacer facil lo dificil, no dificil lo facil.¨
Estoy casi ahi..
Pero tengo un problema.. que tengo que poner dentro del txt?
A ver.. eh probado poner dentro del TXT:
newversion=1
1
"1"
Y siempre me da el mismo error, que es, "atempt to compare number with user data" ...
El codigo es ese, lo hice a modo de prueba: (asi tambien hechais una risa) XDD
Ps Vita 3g/wifi - 16gb // Ps3-Slim White - 320gb // Psp 3004 - 8gb // Xperia Play - 32gb // Ps2
GameBoy Color // Nds-L 8gb // Nds-I Black Pokemon Edition 8gb // Wii 4.2E - 80gb
¨Intentemos hacer facil lo dificil, no dificil lo facil.¨
prueva
prueva haci.
newvercion=newvercion:read()
edito tienes que usar otra variable para poder cerrar el newversion
newversion_abrir=io.open()
nueva version=nuevaversion_abrir:read()
Humm
Me he perdido...
Voy a probar a ver que saco..
Y dentro del TXT? Pongo un 1 a secas?
Te refieres a eso?
Ps Vita 3g/wifi - 16gb // Ps3-Slim White - 320gb // Psp 3004 - 8gb // Xperia Play - 32gb // Ps2
GameBoy Color // Nds-L 8gb // Nds-I Black Pokemon Edition 8gb // Wii 4.2E - 80gb
¨Intentemos hacer facil lo dificil, no dificil lo facil.¨
si, otra forma puedes
si, otra forma puedes utilizar mejor un dofile y asi la variable se actualiza.
no,no me refiero a eso me
no,no me refiero a eso me refiero ala variable que estas usando en el io.open()
Vale..
Entonces dentro del txt tendria que poner newversion=1 ?
sip.
sip.
en el caso del io.open si
en el caso del io.open si, pones el numero de la version, tendrias que poner :read("*n"), de esta forma te devuelve un numero.
Eureka!!
Me ha salido con el dofile..
Ahora a adaptarlo al homebrew..
Gracias a ambos por la mano..
Ps Vita 3g/wifi - 16gb // Ps3-Slim White - 320gb // Psp 3004 - 8gb // Xperia Play - 32gb // Ps2
GameBoy Color // Nds-L 8gb // Nds-I Black Pokemon Edition 8gb // Wii 4.2E - 80gb
¨Intentemos hacer facil lo dificil, no dificil lo facil.¨
mejor. if
mejor.
como http.get devuelve un string , si no lo encuentra me imagino que devuelve nil, tambien puedes utilizar este metodo if http.get()~="" then .
Eso..
Lo probare luego a ver que ocurre y comento algo.. muchas gracias
..
pues , puedes hacerlo de varias formas, checando el contenido del archivo, por ejemplo en el archivo de actualizasion pones la version entonces ya nomas checas la version del archivo, otra forma seria cambiando el nombre al archivo por ejemplo actualizasion_1.1, checar el nombre y lo comparas con el que tienes y si es diferente entonces lo descargas o mas bien lo guardas.
Vale, lo segundo me parece
Vale, lo segundo me parece mas sencillo..
Pero la duda es como hacer esa comprobacion? Se puede hacer online mirando el archivo que hay en el dropbox o hay que descargarlo para luego comprobar?
Y en ambos casos, como lo hago...
Por ejemplo, supongamos que descargo el archivo blablabla_1.1.1.lua, y quiero que si es mayor o menor a blablabla.1.1.0.lua haga una cosa u otra.. mi duda es como hacer esa comparacion.. si se pudiera hacer online antes de descargar mejor todavia, pero me da a mi que no no?
Ps Vita 3g/wifi - 16gb // Ps3-Slim White - 320gb // Psp 3004 - 8gb // Xperia Play - 32gb // Ps2
GameBoy Color // Nds-L 8gb // Nds-I Black Pokemon Edition 8gb // Wii 4.2E - 80gb
¨Intentemos hacer facil lo dificil, no dificil lo facil.¨
Se me ocurre una forma bien
Se me ocurre una forma bien sencilla: Subir un archivo txt que contenga la versión que está en el server (digamos que dentro sólo contenga "3" o la versión que sea), lo descargas, lo lees y lo comparas con alguna variable en tu script (puedes poner v=loquesea en algún script, para comparar). Si es mayor, pues bajas el archivo de actualización y lo instalas. Fácil no?
Depende..
Para quien sabeo que hace seguramente si, pero para un noob como yo es algo asi como.. que???!!.. jajaja
Va, en serio, seguramente sea la manera mas correcta, pero no doy para tanto de momento... ;(
Ps Vita 3g/wifi - 16gb // Ps3-Slim White - 320gb // Psp 3004 - 8gb // Xperia Play - 32gb // Ps2
GameBoy Color // Nds-L 8gb // Nds-I Black Pokemon Edition 8gb // Wii 4.2E - 80gb
¨Intentemos hacer facil lo dificil, no dificil lo facil.¨
Pues yo de tí empezaría a
Pues yo de tí empezaría a practicar, porque eso lo más sencillo que se puede hacer (hay otra forma más correcta, pero debes saber de sockets y peticiones, y es algo más difícil que sólo bajar un txt y leerlo xD).
Vale..
A ver si te he entendido..
Pongamos un ejemplo... pongo una variable en el scritp, algo si como version = 1... cuando haga una actualizacion subo el nuevo scritp con dicha variable actualizada y un txt que ponga 2.. entonces hago que descargue el txt y lo compare con la variable version, y si es mayor descargue el script, y si no break end y santas pascuas..
Eso supondria dos descargas no? Descargar el txt y luego la actualizacion.
Podrias poner un ejemplo sencillo de como leer un archivo y comparar el contenido con alguna variante? Si no es abusar mucho.. XD
Ps Vita 3g/wifi - 16gb // Ps3-Slim White - 320gb // Psp 3004 - 8gb // Xperia Play - 32gb // Ps2
GameBoy Color // Nds-L 8gb // Nds-I Black Pokemon Edition 8gb // Wii 4.2E - 80gb
¨Intentemos hacer facil lo dificil, no dificil lo facil.¨
Así es, dos descargas. Lo
Así es, dos descargas. Lo bueno es que el txt no ocupa casi nada, asi que la revisión se hace rápido y sin descargar el resto de archivos.
Ejemplo de cómo leer archivos aquí (y también está la web oficial de Lua, que no hace daño leer jeje).
Guay..
Con saber que la funcion se llama io ya investigo.
Casi mejor lo hago en un sola descarga, que descargue ambos en zip, lo desempaquete, lea el txt y si procede sustituya el script, y en ambos casos borro los temporales, es factible a que si?
Gracias.
Ps Vita 3g/wifi - 16gb // Ps3-Slim White - 320gb // Psp 3004 - 8gb // Xperia Play - 32gb // Ps2
GameBoy Color // Nds-L 8gb // Nds-I Black Pokemon Edition 8gb // Wii 4.2E - 80gb
¨Intentemos hacer facil lo dificil, no dificil lo facil.¨
talves esto funcione. if
talves esto funcione.
solo falta checar que devuelve http.get() cuando no encuentra el archivo, si no lo encuentra quiere decir que hay una nueva actualizasion.