castaño Posted January 9, 2014 Share Posted January 9, 2014 hola tengo problemas con lo arreglos en lua en el siguiente código necesito destruir unos objectos pero no me funciona: function createDynamites(marker)--esta función es llamada cuatro veces creando 4 elementos de dinamitas y markers local x,y,z = getElementPosition(marker) dynamites = {} mar2 = createMarker(x, y, z, "corona", 0.50, 255, 0, 0) --cada ves que se llama esta función osea 4 veces me crea cuatro veces estos objectos dy2 = createObject( 1654, x, y, z, 270, 0, 0, true) moveObject(dy2, 1000, x, y, z, 0, 360, 0) for k, v in ipairs(dynamites) do -- aca es donde no estoy seguro si esta bien echo dynamites[k].m = mar2 dynamites[k].d = dy2 end if options.finishType == "all" then if allObjectivesReached() == true then for k, v in ipairs(dynamites) do destroyElement(dynamites[k].m) destroyElement(dynamites[k].d) end end elseif options.finishType == "objective" and objectiveId == options.finishObjective then for k, v in ipairs(dynamites) do destroyElement(dynamites[k].m) destroyElement(dynamites[k].d) end end end --[[el problema es este, cuando se crean los cuatro objetos no se destruyen al acabar una ronda lo que necesito es que desaparezcan pero no desparecen , estos objetos continúan de nuevo en la siguiente ronda, lo he echo de esta manera :]]-- if options.finishType == "all" then if allObjectivesReached() == true then destroyElement(mar2) destroyElement(dy2) end elseif options.finishType == "objective" and objectiveId == options.finishObjective then destroyElement(mar2) destroyElement(dy2) end --[[y se me funciona pero solo me destruye el ultimo elemento osea el que sea crea de ultimo el numero 4, pero los anteriores tres elementos que ya se habían creado siguien apareciendo, necesito una solución que me destruya todos los elementos cuando la ronda finalise, cuando la función es llama por cuarta vez es donde se finaliza la ronda]]-- Link to comment
Bc# Posted January 10, 2014 Share Posted January 10, 2014 1- No se si esto te valla a solucionar tu problema, pero no uses palabras reservadas como "marker" para asignarles variables, aveces hace que tu código no funcione, reemplaza marker por element o alguna otra variable. 2- Has una función que cree objetos y una que los destrulla, así te ahorras el tiempo de tener que escribir lo mismo una y otra vez. 3- Pasa este arreglo fuera de la función, has que sea una variable global. dynamites = {} 4- Podrías reemplazar esto: for k, v in ipairs(dynamites) do --Linea 9 en adelante. dynamites[k].m = mar2 dynamites[k].d = dy2 end por esto: dynamites[#dynamites+1].m = mar2 dynamites[#dynamites+1].d = dy2 PD: Espero que te sirva, recuerda optimizar tus codigos. Link to comment
MTA Team 0xCiBeR Posted January 10, 2014 MTA Team Share Posted January 10, 2014 Exactamente lo que dice Bc# en el punto 4, porque estas loopeando una tabla vacia y no tiene sentido, al menos en tu script. Link to comment
Recommended Posts