Anuncios Google

Duda: Hay algun argumento que pueda eliminar un texto ya impreso? y zip.extract(Solucionado)

Hola, Como veran trato de hacer un instalador, haciendo en el codigo que cuando cumpla la funcion imprima "Instalar". Y cuando se presione X en el texto ya impreso que se elimine y se imprima "Instalando" y empiece a extraer el archivo .zip.

 

Aprovheando. Cuando  trato de extraer el archivo .zip no se extrae, coloco bien los argumentos pero no pasa nada.

He aqui el codigo (Si hay manera de simplificar el codigo, porfavor comente como hacerlo):

 

function Instalador()
dofile("System/Cursor.lua")
controls.read()
if not files.exists("Setup.zip") then screen.print(50,170,"Error: El archivo |Setup.zip| no existe.",Blanco) end
if not files.exists("Setup.zip") then screen.print(50,185,"No se podra continuar con la instalación.",Blanco) end
if not files.exists("Setup.zip") then screen.print(50,200,"Presione L/R para activar/Desactivar el modo USB",Blanco) end
if not files.exists("Setup.zip") then screen.print(50,215,"Despues de verificar, por favor reinicie la instalación.",Blanco) end
            if controls.l() then sound.play(USBon) end
            if controls.l() then usb.on() end
            if controls.r() then sound.play(USBoff) end
            if controls.r() then usb.off() end
if files.exists("Setup.zip") then screen.print(180,155,"Instalar",Blanco) end
if files.exists("Setup.zip") then image.blit(Siguiente,295,153) end
            if controls.cross() then sound.play(Click) end
if Cursor:on(0,0,0,0) and controls.cross() then os.message("Comenzará la instalación, esto puede tardar varios minutos. Por favor no suspenda ni apague la consola") end ---No es necesario
if Cursor:on(0,0,0,0) and controls.cross() then zip.extract("Setup.zip","MiHB","",true) end
end	
 
while true do
draw.fillrect(0,0,480,272,Blanco)
image.blit(Fondo,0,0)
Instalador()
screen.flip()
end
 
 
-----LuaDEV-----


--[NO EXISTEN LOS LIMITES =D]--


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 sting18

Demonios :S.

Si que vas empezando xD, pero no te preocupes aqui estamos para ayudar, sugerencias...

No abuses de los "if" ya que a la larga eso daña tu programa, recuerda que existe tambien "else" y "elseif" aunque en tu codigo se pueden usar unos cuantos nada mas por ejemplo si pones muchas veces "if not" y a todo le das texto y todos los textos son en X=50 entonces puedes usar un solo "if not" ya sea poniendo "/n" despues de cada texto algo asi "texto1 /n texto2 /n texto3" y se te imprimiran en tres lineas cada texto, otra opcion seria poner los textos en el mismo "if not", solo deja el primer "if not" y borra los otros tres y quita los primeros tres "end" y deja solo el ultimo,y lo mismo para lo de presionar "L,R" y pues todo lo demas xD, espero te sirva saludos amigo.


Imagen de PerezRE

XD

Gracias, tomo todas las sugerencias, cualquier es bienvenido :). Solo una pequeña duda: se usa "\n" ó "/n" abajo en m.rr pusó \n y tu me muestras que es /n. No es por ofender a nadie, lo digo con todo el debido respeto.


--[NO EXISTEN LOS LIMITES =D]--

Imagen de sting18

Nunca he probado con \n xD y

Nunca he probado con \n xD y programo en C ya desde hace rato y nunca he tenido problemas entonces creo es lo mismo :D.

Imagen de Arbër

En C desde luego la funcion

En C desde luego la funcion para saltar de linea es \n si usas la stdlib.h, si usas otras librerias ya no lo se.

Imagen de Chimecho

EJEM...

Ninguna función, es una secuencia de escape.

Imagen de Dioni0396

Pues \n

tambien funciona en C. ;)

Imagen de m.rr

Yo creo que funciona de las

Yo creo que funciona de las dos maneras. A mi me va \n

Imagen de PerezRE

\n

Me funciona solo con \n

Imagen de m.rr

Es que creo que en Lua es \n

Es que creo que en Lua es \n pero en C se puede de las dos formas.

Imagen de sting18

Tal vez si tengas razon ya

Tal vez si tengas razon ya que en lua casi no uso textos xD.

Mmm...

  • En las condiciones puedes meter más de una línea (las líneas que gustes, de hecho):
    if <condición> then
      --aquí un print
      --aquí un blit
      --aquí otra cosa
      --más code... xD
    end

    De manera que no es necesario que repitas las condiciones:
    --esto:
    if controls.l() then sound.play(USBon) end
      if controls.l() then usb.on() end
     
    --lo puedes cambiar por esto:          
    if controls.l() then 
      sound.play(USBon)
        usb.on() 
    end
     
  • El dofile no es necesario ponerlo dentro de una función, con ponerlo al inicio del code basta y sobra (podrás usar su contenido en todo momento).
  • controls.read es recomendable que lo pongas en tu while true do y no en la función, por si necesitas hacer otra operación con botones, con uno bastará ;)
  • Revisa la función de colisión que usas (cursor.on) me parece que está incorrecta.
  • Para el error de zip.extrac, necesitas asegurarte que el nombre del archivo es correcto (http.get suele bajar el archivo con el nombre en mayúsculas) y que la ruta donde se extraerá es correcta también (prueba una ruta completa si no te funciona, tipo ms0:/bla/bla/bla).
Imagen de PerezRE

By PerezRE

Estube mejorando el codigo antes de checar el foro. Y si, creo que es mejor cargar el dofile al inicio, controls.read() ponerlo en el bucle. Tambien separe las condiciones if not e if en dos funciones, para que si el archivo no estubiera tenga la posibiliadad de activar y desactivar el modo usb y no tener la posibilidad de activarlo cuando se extraiga el archivo.

Sobre el cursor, creo que tendre que reprogramarlo, tuve muchos fallos. Ya que me no se muy bien mover una imagen por la pantalla. (Vere un tuto para esto).

Respecto al error de zip.extract. Tengo entendido que los argumentos son así: zip.extract("Archivo.zip","Ruta","Contraseña"). Si coloco bien los argumentos, creo que intentare de varias formas.

Gracias Rober Galarga por la ayuda.

EDITADO: Listo, despues de varios intentos. Por fin pude lograrlo, creo que era por que había carpetas vacías y no era del todo .zip (el error fue haberlo creado con winrar y no con el metodo; enviar a... carpeta comprimida (en zip) y colocar la ruta del .zip y ruta del destino.

entonces seria así:

if <condicion> then zip.extract("ms0:/PSP/GAME/MIHB/Setup.zip","ms0:/PSP/GAME/MIHB",true) end


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


--[NO EXISTEN LOS LIMITES =D]--

Imagen de -DjB

Hay una manera de que

Hay una manera de que extraiga un zip en cualquier parte de la memoria??

Justamente en el segundo

Justamente en el segundo argumento tu especificas la ruta de extracción que prefieras (si, en cualquier parte de la memoria).

Imagen de -DjB

K.o y también se podría un

K.o y también se podría un ejemplo si una carpeta está en la raíz como puedo hacer que el usuario ponga donde quiera extraerlo.

Pues... una de dos: o abres

Pues... una de dos: o abres el teclado para pedir la ruta directamente (podrías checar si la ruta existe y crearla si no) o pones un selector de carpetas (esta sería la forma más cómoda de cara al user, y se resuelve con la magia de files.list)

Imagen de -DjB

Entendí más o menos me lo

Entendí más o menos me lo podrías explicar con un ejemplo de cada. Por favor.

Imagen de User170294

¿Sabes que puedes meter mas

¿Sabes que puedes meter mas de una función o sentencia dentro de una sentencia, verdad? xD

Imagen de PerezRE

No XD

La verdad no lo sabía XD jaja. Se que aun me falta aprender, pero no cuesta nada aceptar ayuda de los demas. Gracias

Imagen de m.rr

function

function Instalador()
dofile("System/Cursor.lua")
controls.read()
Setup == false
if not files.exists("Setup.zip") then screen.print(50,170,"Error: El archivo |Setup.zip| no existe.\nNo se podra continuar con la instalación.\nPresione L/R para activar/Desactivar el modo USB\nDespues de verificar, por favor reinicie la instalación.",Blanco) end --\n es para hacer un salto de línea.
            if controls.l() then sound.play(USBon) end
            if controls.l() then usb.on() end
            if controls.r() then sound.play(USBoff) end
            if controls.r() then usb.off() end
if files.exists("Setup.zip") then screen.print(180,155,"Instalar",Blanco) end
if files.exists("Setup.zip") then image.blit(Siguiente,295,153) end
            if controls.cross() then sound.play(Click) end
if Cursor:on(0,0,0,0) and controls.cross() then os.message("Comenzará la instalación, esto puede tardar varios minutos. Por favor no suspenda ni apague la consola") end ---No es necesario
if Cursor:on(0,0,0,0) and controls.cross() then zip.extract("Setup.zip","MiHB","",true)
Setup = true end ---No lo entiendo, estás diciendo que si el cursor está en x = 0, y = 0, el w = 0 y el h = 0 haga algo. ¿y cómo lo va a hacer si no tiene altura ni ancho? 
end	
--Luego..
if Setup == true then
screen.print(5,5,"Instalando")
end
 
while true do
draw.fillrect(0,0,480,272,Blanco)
image.blit(Fondo,0,0)
Instalador()
screen.flip()
end
 
 
-----LuaDEV-----

Imagen de PerezRE

Cursor:on(0,0,0,0)

Lo se no puse las coordenadas, alto y ancho. Puesto que olvide mencionar no haber puesto una imagen cargada xD... aun así gracias.


--[NO EXISTEN LOS LIMITES =D]--

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.