Error Lua Dev[Se aglutinan los print][CERRAR][SOLUCIONADO]

game = files.list("ms0:/PSP/GAME/")
ms0 = files.listdirs("ms0:/")
blanco = color.new(255,255,255)
negro = color.new(0,0,0)
 
function efecto()
	for i=1,#ms0 do
		screen.print(10,15*i,ms0[i].name)
	end	
	      if VM == i then
         screen.print(10,15,ms0[VM].name,0.8,negro,blanco)
      else 
         screen.print(10,15,ms0[VM].name,0.8,negro,blanco)
	end	
end
 
function navegador()
	   if controls.press("down") and VM ~= #ms0 then
      VM = VM + 1
   elseif controls.press("down") and VM >= #ms0 then 
      VM = 1
   end
   if controls.press("up") and VM > 1 then  
      VM = VM - 1
   elseif  controls.press("up") and VM == 1 then 
      VM = #ms0
   end
end
VM = 1
 
 
while true do
controls.read()
navegador()
efecto()
if controls.press("cross") then
	for i=1,#game do
	screen.print(10,15*i,game[i].name)
end
end
screen.flip()
end

EDITO: Pues sigue igual, pero, bueno, cierren el post, ya le encontrare solucion :/.

Gracias!

EDITO: Ya lo solucione.


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.

Contesto acá... para no

Contesto acá... para no descuadrar la web.

Tal y como dejaste ese código, no va cambiar y. La razón, es que no has puesto alguna línea que modifique su valor DENTRO del bucle infinito.

Necesitas hacer que cambie su valor dentro del while, y también que no se pase de cierto valor, dependiendo de tus necesidades.

Imagen de barney77

Ok,

Ok, vale entonces, intentaré

EDITO: LO hise asi:

game = files.list("ms0:/PSP/GAME/")
ms0 = files.listdirs("ms0:/")
blanco = color.new(255,255,255)
negro = color.new(0,0,0)
 
function efecto()
	      if VM == i then
         screen.print(x,y,ms0[VM].name,0.8,negro,blanco)
      else 
         screen.print(x,y,ms0[VM].name,0.8,blanco,0x0)
      end
 
end
 
function navegador()
	   if controls.press("down") and VM ~= #ms0 then
      VM = VM + 1
   elseif controls.press("down") and VM >= #ms0 then 
      VM = 1
   end
   if controls.press("up") and VM > 1 then  
      VM = VM - 1
   elseif  controls.press("up") and VM == 1 then 
      VM = #ms0
   end
end
 
VM = 1
x = 10
y = 15
 
 
while true do
controls.read()
navegador()
efecto()
if controls.press("up") then
	y = y + 15
end
if controls.press("down") then
	y = y - 15
end
for i=1,#ms0 do
		screen.print(10,15*i,ms0[i].name)
end	
if controls.press("cross") then
	for i=1,#game do
	screen.print(10,15*i,game[i].name)
end
end
screen.flip()
end
}

Y ahora no produce ningun efecto, nada de nada.

Vale gracias por la ayuda, pero creo que es mucho para mí, creo que tendré que dejarlo.

Gracias!.

Imagen de NauTiluS1

Tu error

Declaras bucle for así "VM = i then" y en screen.print pones ms0[i] lo cual esta muy mal, tiene que ir así "VM = 1, #ms0 then" y en print así "ms0[VM]" ... creo que es así xD estoy en la psp y no veo bien.


Follow me twitter nautilus1_jmccu!!
Sony, ya a nadie le interesa tus UMD si alguien compra una psp es por nosotros los coders. Madura y has un FW que haga la diferencia y anime a las personas en comprar un PSP

Imagen de barney77

mm..

mmm..

Probe con esto:

function efecto()
	      if VM == i #ms0  then
         screen.print(10,15,ms0[VM].name,0.8,negro,blanco)
      else 
         screen.print(10,15,ms0[VM].name,0.8,blanco,0x0)
      end
end
 

Y me marca then expeted near #, y si le quito ese gato, me marca then expected near ms0...

Y le pongo la coma y me marca then expected near ,

:(.

Imagen de NauTiluS1

Sigues poniendo "i" y es 1 y

Sigues poniendo "i" y es 1 y es así for VM = 1, #ms0 then

Imagen de barney77

Espera

Espera, croe que estas mal, lo he echo así, y funciona, solo que se aglutina en la coordenada 10 y 15, ese es el problema, mira:

function efecto()
x = 10
y = 15
	      if VM == i then
         screen.print(x,y,ms0[VM].name,0.8,negro,blanco)
      else 
         screen.print(x,y,ms0[VM].name,0.8,blanco,0x0)
      end
y = y + 15	 
end
 

Imagen de Chimecho

?

Lo que tienes que hacer es convertirte en el intérprete (y no estoy flipando), mira línea a línea que va haciendo, coge un papel y anota los valores si es que no puedes hacerlo mentalmente, así tendrás una idea de que mismo hace tu code, sabrás el porqué se aglutina todo (pista: la variable y no cambia ya que se reemplaza cada que llamas a la función), etc.. etc.. etc.. Así solucionas muchos bugs que te salen a diario...

Saludos! y no lo tomes a mal, es mi punto de vista...



PSP FAT [5.00 M33-6] [6.60 ME] [Hard Moded] / Nintendo Wii [4.1U] [cIOS Hermes] [D2X cIOS] / iPhone 3G [4.2.1] [BB 05.13.04] [redsn0w] / iPod Touch 4 [6.1] [evasi0n]

07/05/10: Tuve el placer de llamarle con todo derecho "N00B" a molotovi xDDD

Recuerda: Sé el intérprete -_-

Imagen de barney77

Gracias,

Gracias, pero la variable VM si cambia, mira:

function navegador()
	   if controls.press("down") and VM ~= #ms0 then
      VM = VM + 1
   elseif controls.press("down") and VM >= #ms0 then 
      VM = 1
   end
   if controls.press("up") and VM > 1 then  
      VM = VM - 1
   elseif  controls.press("up") and VM == 1 then 
      VM = #ms0
   end
end

Claro cambia si presiono abaja o arriba, pero lo que quiero decir esque si presiono abajo o arriba el texto cambia pero solo el texto no la coordenada(para que haga el efecto).

Si quieres ver el code completo, está ariba.

Salu2 y gracias.

Imagen de Chimecho

VM?

lee bien... xD

Na, modifiqué justo antes de que comentaras, me había equivocado, lee de nuevo...

Imagen de barney77

Ja

Jaja, ya leí, entonces hago la variable y fuera de la funcion para que así no se reeemplase ?

Imagen de Chimecho

no se

yo no se, coge el papel y mira si así funcionaría ;)

Imagen de barney77

Ok,

Ok, gracias =D.

EDITO: Vale, no me ha salido, sigue igual S:, leere la documentacion  y uno que otro script.

Creeme... haz lo que te dice

Creeme... haz lo que te dice Chime (papelito xD). Ayuda muchísimo tener una visión tangible de lo que hace tu code línea por línea ;)

Imagen de barney77

Es que

Esque si funciona, solo que no entiendo porque no se mueve :S, de verdad he intentado con miles de maneras, pero sigo intentando xD.

Muy bien... aquí va la

Muy bien... aquí va la explicación:

Tu función, cada que la ejecutes, lo primero que hará será darle valores a x,y. Después, ejecutará las instrucciones de bliteo. Al final le suma 15 a y.

Pero... que pasa cuando la vuelves a llamar? Pues exactamente lo mismo que arriba. No importa cuántas veces modifiques y, si al inicio de tu función le vuelves a dar el mismo valor (de esta manera, jamás cambiará el valor inicial de y dentro de la función)

Imagen de barney77

Sí, eso creo que lo entendí con lo que me dijo Chime, y por eso puse los valores fuera de la funcion pero sigue igual.

EDITO: Te dejo el code:

game = files.list("ms0:/PSP/GAME/")
ms0 = files.listdirs("ms0:/")
blanco = color.new(255,255,255)
negro = color.new(0,0,0)
 
function efecto()
	      if VM == i then
         screen.print(x,y,ms0[VM].name,0.8,negro,blanco)
      else 
         screen.print(x,y,ms0[VM].name,0.8,blanco,0x0)
      end
 
end
 
function navegador()
	   if controls.press("down") and VM ~= #ms0 then
      VM = VM + 1
   elseif controls.press("down") and VM >= #ms0 then 
      VM = 1
   end
   if controls.press("up") and VM > 1 then  
      VM = VM - 1
   elseif  controls.press("up") and VM == 1 then 
      VM = #ms0
   end
end
 
VM = 1
x = 10
y = 15
y = y + 15	 
 
while true do
controls.read()
navegador()
efecto()
for i=1,#ms0 do
		screen.print(10,15*i,ms0[i].name)
	end	
if controls.press("cross") then
	for i=1,#game do
	screen.print(10,15*i,game[i].name)
end
end
screen.flip()
end

y como hago que el valor cambie?

Esque así está mal de eso estoy seguro, pero como hago que cambie, lo hize con un if.

así

if controls.press("up") then

  y = y + 15

end

Y nada, sigue igual =(.

Imagen de Chimecho

es que... es que...

es que no es de intentar, es tener una idea clara de lo que se va a hacer, osea... coge el papelito!! ._.

Imagen de barney77

Beuno,

Bueno, no cogi un papel, pero, si un .txt...

 

Imagen de Chimecho

te falto

el papel... xD

Imagen de NauTiluS1

Estoy confundido...

Estoy confundido...

Imagen de barney77

POr que?

Por qué?

EDITO: También ya he intentado con lo que me habías dicho, pero no marca errores de que son argumentos no validos, creo que el mio es el que está bien, solo que no se porque s eaglutina S:

Imagen de cam-maker

perdon :S

que no explique el navegador se me olvido xD

pero hare un tuto para hacer una explorador :) alli lo explico ^^

Imagen de barney77

Ok

Ok,¿me lo podrías explicar?xD..

Imagen de Dioni0396

Bien!

Bien!

Te faltó ponerle el name:

Te faltó ponerle el name: ms0[i].name

Imagen de barney77

Pff..

Pff.. con razón, creí que no tenía que ponerlo :(, ahora pruebo.

EDITO: Marca attemp to index field? (a nill value)

aqui el code:

game = files.list("ms0:/PSP/GAME/")
ms0 = files.listdirs("ms0:/")
blanco = color.new(255,255,255)
function navegador()
	   if controls.press("down") and VM ~= #ms0 then
      VM = VM + 1
   elseif controls.press("down") and VM >= #ms0 then 
      VM = 1
   end
   if controls.press("up") and VM > 1 then  
      VM = VM - 1
   elseif  controls.press("up") and VM == 1 then 
      VM = #ms0
   end
end
VM = 1
function efecto()
	      if VM == i  then
         screen.print(x,y,ms0[i].name,0.8,negro,blanco)
      else 
         screen.print(x,y,ms0[i],name,0.8,blanco,0x0)
      end
end
 
while true do
controls.read()
navegador()
for i=1,#ms0 do
	screen.print(10,15*i,ms0[i].name,blanco)
end
efecto()
if controls.press("cross") then
	for i=1,#game do
	screen.print(10,15*i,game[i].name,blanco)
end
end
screen.flip()
end

Imagen de NauTiluS1

Ejemmmm

Ejemmmm

screen.print(x,y,ms0[i],name,0.8,blanco,0x0)
end
end

ms0[i],name
EPIC FAIL xD
Imagen de barney77

mm

mm... pues ayer yo corregi ese error, peor no era ese, marca lo mismo..

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.