[PSP] [LUA] Necesito ayuda con codigo LUA

Buenas gente. Este es mi primer mensaje en el foro y ya estoy pidiendo ayuda... xD

Bueno al grano. Estoy haciendo la base de un pequeño RPG en LUA y necesito ayuda con el.

De momento tiene dos personajes (pero solo juega uno, de momento) y cinco enemigos. El personaje tiene dos armas: espada y Dragon Slayer. La espada quita 5 y la otra quita 10. Tambien muestra las imagenes de las armas en la pantalla. De momento los enemigos aun no quitan vida y es la base! . El problema es que cuando lo inicio con el LuaPlayer for Windows va bien, pero una vez me he cargado a todos los enemigos me pone

error: "nombre del archivo".lua: 102: attempt to index field "?"


y yo no he puesto ningun interrogante! Os dejo el codigo para que lo descargueis y si alguien me puede decir el error... me haria un favor!

Tambien me gustaria mucho que (una vez solucionado el error) si le das a la redonda volviera a empezar...

PD:
si no quereis ir cargandoos todos los enemigos le dais al cuadrado y pasais de enemigo



Los controles son: X = atacar
[] = mirad spoiler
Triangulo = equipar DragonSlayer
L= equipar espada

Adjuntos

pues mira, no se mucho acerca de programar pero intentare ayudarte.. revise tu juego y solo pusiste 5 enemigos y pusiste que cuando presionaras cuadro se sumara +1 el enemigo actual
y entonces al llegar al numero 6 da error..


if pad:square() and oldpad:square() ~= pad:square() and Enemigo[EnemigoActual] ~= 5

then EnemigoActual = EnemigoActual + 1

end


podrias poner despues de esto

if EnemigoActual > 5 then
EnemigoActual = 1
end


espero haberte ayudado..
Pero si pongo

if EnemigoActual > 5 then
EnemigoActual = 1
end

Entonces la variable EnemigoActual será siempre 1. Osea que siempre lucharé contra el mismo enemigo. Gracias por intentarlo
Una solucion:
If pad:square() and oldpad:square() ~= pad:square() and Enemigo[EnemigoActual] < 5
then EnemigoActual = EnemigoActual + 1
end if


Con ese codigo al llegar a 5 la variable EnemigoActual no podran en juego ningun enemigo mas puesto que la comparacion es para valores menores de 5
Gracias por intentarlo Daggoth, pero si lo pongo me sale

:lua:72 attempt to compare table with number


Y respecto a lo de la redonda...... alguna idea??? Espero llegar a solucionar este codigo
intenta con el codigo que te puse,,,yo siempre uso ese codigo y si me da resultado por que cuando pulsas cuadro a Enemigoactual se le suma +1,, entonces si pones que Enemigoactual sea igual a 1, y pulsas cuadro este se seguira sumando,, intentalo y veras que si te funciona....(esto es solo si los demas enemigos siguen con puntos de vida y solo estas cambiando de enemigos)


respecto a lo de la redonda podria ser

function reset()
if pad:circle() and oldpad:circle() ~= pad:circle() then

for i = 1,5 do
Enemigo[i].salud = 100
end

EnemigoActual = 1

Jugador[1].arma = "espada"
Jugador[1].salud = 100
end
end

bueno, solo es una idea, espero y te funcione
Lo he probado todo. Lo de la redonda funciona, gracias huezo89.

Pero lo del cuadrado..... no hay manera. Si alguien puede subir el codigo reformado y que funcione.... me haria un enorme favor!
Por lo que veo comparas Enemigo[EnemigoActual] con 5 cuando deberias comparar EnemigoActual con 5 o Enemigo[EnemigoActual].numero con 5.
No he tocado LUA en mivida pero es lo unico que se me ocurre.
Saludos
7 respuestas