Jump to content

Arreglos


castaño

Recommended Posts

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

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
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...