Anuncios Google

(Duda en lua) Las tablas, se ejecutan igual que las variables? (Solucionado. Gracias a todos!)

Bueno, pues aqui va mi duda, o mejor dicho mi error:

Tabla = { }
Tabla.accion[1] = nil
Tabla.accion[2] = draw.line(0,0,480,272,color.new(255,255,255))
while true do
Tabla.accion[2]
end
//Porque no puedo ejecutar esa orden en el while?

El error esta en que da error expected near =.

Si no puedo asi, como lo hago?


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 Dioni0396

Gracias a todos!

Gracias a todos! Me habeis quitado un peso de encima!

Os doy 50 scenebitos a todos!

Imagen de jorge_97

By Jorge_97

:o Indeciso

y los mios??

Da igual quedatelos tu...

Imagen de Dioni0396

ya los tienes

xD

Se me olvido dartelos.

Imagen de jorge_97

By Jorge_97

LOL era broma Dioni!!

De todos modos se los mande a Sting!!

Salu2 te debo 50!!

Imagen de Chimecho

Um...

No funciona debido a que lo que tienes dentro de la tabla, no es una función, es un resultado, me explico:

Cuando tu ejecutas una función esta puede o no devolver un valor, en el caso de hacer algo como:

resultado = suma(2,3)

En resultado tendrías el resultado de la función, mas no el como llamarla, ya que en resultado tienes un valor, no una función.

 

Para hacer lo que tu dices, deberías hacer algo del tipo:

Tabla = {}
Tabla.accion = {} -- otro error, que esta tabla no existía
 
Tabla.accion[1] = function()
	-- devuelve nil, porque no devuelve nada... o también podrías poner return nil
end
 
Tabla.accion[2] = function()
	draw.line(0,0,480,272,color.new(255,255,255)) -- aquí el return es opcional, pues draw.line no devuelve nada (nil)
end
 
-- una vez hecho esto, se podría hacer lo siguiente para llamarla
 
while true do
	Tabla.accion[2]() -- estoy casi seguro de que funciona... casi...
	screen.flip() -- nunca olvides esto, o no verás nada
end

 

También existe otra forma, pero no recuerdo muy bien como va, creo que era algo así:

Tabla = { }
Tabla.accion[1] = "return nil"
Tabla.accion[2] = "draw.line(0,0,480,272,color.new(255,255,255))"
 
while true do
	assert(loadstring(Tabla.accion[2]))()
end

Lo que hace es cargar un trozo de código Lua con loadstring, y luego ejecutarlo.

 

Saludos!



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 sting18

Veo que lo haces estilo C ,

Veo que lo haces estilo C , pero lo mejor seria hacerlo estilo 100% LUA o sea usando la mayor simplicidad de el mundo que para eso es ese lenguaje digamos lo que tu estas aciendo seria algo asi.

Tabla = { }
Tabla[1] = {accion1 = nil , accion2 = draw.line(0,0,480,272,color.new(255,255,255)}

y para usar tu accion1 seria

Tabla[1].accion1 -- esto te retornara a nil todo lo que pongas

Un ejemplo de tu tabla accion1 en accion seria.

imagen = Tabla[1].accion1

Lo mismo seria hacer con la accion2 asta puedes modificar todo dentro de las tablas y poner el nombre a las acciones que tu quieras aunque poner "nil" en una tabla es digamos inservible.

Te recomiedo usar las tablas para cosas ya grandes como cargar animaciones algo tipo asi.

Imagen = {};
for f = 1,10 do table.insert(Imagen,image.load("Imagenes/"..f..".png")); end

eso te cargara 10 imagenes del tamaño que quieras nombradas con numeros "1.png,2.png etc.." (no exediendo los limites de el lua que uses) y para usarlas seria.

image.blit(368,123,Imagen[1]) -- dentro de las tilde sera la imagen que quieras en este caso ---la imagen "1.png"

no es dificil ya a la hora de la animacion solo tendrias que poner.

Tiempo = 0
A = 1
 
function Animacion()
Tiempo = Tiempo+0.5 -- esta linea junto con la de abajo ponen lo rapido de tu animacion
if Tiempo > 20 then A = A+1 Tiempo = 0 end
if A > 10 then A = 1 end -- esto dice que si usas la imagen 10 al pasar tiempo se regrese a la primera
image.blit(0,0,Imagen[A]) -- muestras animacion
end

y a la hora de limpiar RAM que es importantisimo tambien vatallas menos seria algo asi.

for L = 1,10 do Imagen[L] = nil end collectgarbage("collect")

Con solo eso limpias todas las imagenes de tu animacion espero te aya aclado algo con este mini tutorial xD saludos.


Imagen de jorge_97

By Jorge_97

Y los parentesis de la funcion??

Salu2

Imagen de User170294

Hola. Estás utilizando mal

Hola.

Estás utilizando mal las tablas... Lua te tiene mal acostumbrado.

Espero que esto te ayude:

miTabla = {
 
	miFuncion_1 = function()
 
		nil;
	end,
 
	miFuncion_2 = function()
 
		draw.line(0, 0, 480, 272, color.new(255,255,255));
	end,
}
 
 
while true do
 
	controls.read();
 
	screen.clear();
 
	miTabla:miFuncion_2();
 
	if(controls.start()) then broke(); end
 
	screen.flip();
end

No lo he probado pero creo que te sirve.

Saludos.

 


Creo que sería algo así,

Creo que sería algo así, aunque no se si funciona:

Tabla = { }
Tabla.accion[1] = nil
Tabla.accion[2] = draw.line(0,0,480,272,color.new(255,255,255))
while true do
Tabla.accion[2]()
end

 

 

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.