Anuncios Google

Ayuda[BUCLE FOR][SOLUCIONADO]

Hola, bien, estoy ahorrando DEMASIADO code con esto:

for i=1,10 do
salto(smell[i]);
dt(smell[i]);
smell[i].img:blit(smell[i].x,smell[i].y);
smell[i].x=smell[i].x-smell[i].Asb
if smell[i].d==true and smell[i].Asb==0 and smell[i].x<=0 then smell[i].x=10 end
if smell[i].d==true and smell[i].Asb==0 and controls.press("cross") then p="nada xD" end
if controls.press("cross") and colision(smell[i],dardo) then smell[i].salt=false smell[i].d=true smell[i].estado="aire" smell[i].Asb=0 end
end

Pero me marca error en la linea de salto(smell[i]); y es que segun es un valor nulo, bien, salto es está funcion:

function salto(object)
if object.salt==true and object.estado=="suelo" then object.estado="aire" end
if object.estado=="aire" then object.vel=object.vel-0.5 object.gravedad=object.gravedad-object.vel end
if object.vel<0 then object.estado="cayendo" end
if object.gravedad<219 and object.estado=="cayendo" then object.vel=object.vel+0.5 object.gravedad=object.gravedad+object.vel end
if object.gravedad==219 then object.vel=14 object.estado="suelo" end
if object.gravedad>219 then object.gravedad=219 end
object.y=object.gravedad
end

Y smell son 10 tablas, pero les dejo la primera:

smell1={img=smellimagen,x=math.random(600,800),y=0,h=50,w=50,gravedad=219,vel=14,estado="suelo",Asb=7,salt=true,d=false}

Que es lo que está mal, segun yo esta bien lo del uso de corchetes. he intentado concatenando pero me amrca error de concatenacion, no se como solucionarlo, ayuda t_T

Y al parecer todo el for está mal ya que si borro la linea esa marca en la siguiente t_t ayyudaaaaa, xDD


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 iRVing_Prog

posibilidad

dentro del bucle la tabla que le pasas es "smell" y la tabla que nos dejas es "smelll".

Por cierto las tablas estan asi:

smell[1] = {img=smellimagen,x=math.random(600,800),y=0,h=50,w=50,gravedad=219,vel=14,estado="suelo",Asb=7,salt=true,d=false}
 
smell[2] = {img=smellimagen,x=math.random(600,800),y=0,h=50,w=50,gravedad=219,vel=14,estado="suelo",Asb=7,salt=true,d=false}
 
???

???



 

Imagen de barney77

No, estan así.. smell1,

No, estan así.. smell1, smell2, pero intentare como tu dices.

PD: La tabla que tengo es smell1 confundes el 1 con una l, probare con la forma que me dices.

EDITO: LO he echo como me dices, pero ahora me marca error en la primera tabla(smell[1]), que segun es nula, aqui el code:

for i=1,10 do
salto(smell[i]);
dt(smell[i]);
smell[i].img:blit(smell[i].x,smell[i].y);
smell[i].x=smell[i].x-smell[i].Asb
if smell[i].d==true and smell[i].Asb==0 and smell[i].x<=0 then smell[i].x=10 end
if smell[i].d==true and smell[i].Asb==0 and controls.press("cross") then p="nada xD" end
if controls.press("cross") and colision(smell[i],dardo) then smell[i].salt=false smell[i].d=true smell[i].estado="aire" smell[i].Asb=0 end
end

Tablas:

smell[1]={img=smellimagen,x=math.random(600,800),y=0,h=50,w=50,gravedad=219,vel=14,estado="suelo",Asb=7,salt=true,d=false}
smell[2]={img=smellimagen,x=math.random(500,1000),y=0,h=50,w=50,gravedad=219,vel=14,estado="suelo",Asb=4,salt=true,d=false}
smell[3]={img=smellimagen,x=math.random(800,1000),y=0,h=50,w=50,gravedad=219,vel=14,estado="suelo",Asb=3.7,salt=true,d=false}
smell[4]={img=smellimagen,x=math.random(500,800),y=0,h=50,w=50,gravedad=219,vel=14,estado="suelo",Asb=5,salt=true,d=false}
smell[5]={img=smellimagen,x=math.random(700,1000),y=0,h=50,w=50,gravedad=219,vel=14,estado="suelo",Asb=8,salt=true,d=false}
smell[6]={img=smellimagen,x=math.random(500,560),y=0,h=50,w=50,gravedad=219,vel=14,estado="suelo",Asb=9,salt=true,d=false}
smell[7]={img=smellimagen,x=math.random(500,600),y=0,h=50,w=50,gravedad=219,vel=14,estado="suelo",Asb=2.3,salt=true,d=false}
smell[8]={img=smellimagen,x=math.random(1000,1400),y=0,h=50,w=50,gravedad=219,vel=14,estado="suelo",Asb=9.8,salt=true,d=false}
smell[9]={img=smellimagen,x=math.random(600,1000),y=0,h=50,w=50,gravedad=219,vel=14,estado="suelo",Asb=10,salt=true,d=false}
smell[10]={img=smellimagen,x=math.random(700,800),y=0,h=50,w=50,gravedad=219,vel=14,estado="suelo",Asb=2.3,salt=true,d=false}

PD: smellimagen es una variable que tiene la imagen del smell.

EDITO2: Ya esta solucionado, el error era poque jamas abria la tabla smell, solo fue cosa de poner smell={}

 

Gracias por la ayuda :)

Todas esas lineas las puedes

Todas esas lineas las puedes cambiar por eso(si no cambia nada de la tabla):

for i = i, 10 do
smell[i]={img=smellimagen,x=math.random(600,800),y=0,h=50,w=50,gravedad=219,vel=14,estado="suelo",Asb=7,salt=true,d=false}
end

Luego te dije que no pusieras variables en cada funcíon, que se quedan en la memoria RAM (tenéis un mal concepto de dofile), luego te recomiendo usar 3 o 4 scrips (si el juego es muy complejo), al script le haces dofile a un que tenga las variables, luego a un que tenga las funciones y si quieres un que sea el juego (el while y eso)que quede algo así,( usar dofiles para lo considero como usar gotos en C si no es para cargar variables y funciones) :

dofile("vars.lua")
dofile("functions.lua")
 
 
 
while true do
 
blabla
 
end

Imagen de barney77

Lo malo esque si cambian las

Lo malo esque si cambian las cordenadas de la tabla, y eso de los dofiles, pues ya vere, gracias xerpi.

Imagen de iRVing_Prog

solucionado

si lo has solucionado podrias editar el titulo y añadir "Solucionado" o algo por el estilo.

Salu2 :)

Imagen de barney77

Si se me había olvivado, lo

Si se me había olvivado, lo siento, gracias por recordarmelo.

Saludos :).

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.