Jump to content

Detectar un espacio vacío en una tabla


aka Blue

Recommended Posts

Me he puesto a aportar sistemas de almacenamiento en el foro y estoy creando algo más 'innovador'. La duda que tengo es de como hacer que automáticamente detecte si hay un slot disponible (ya que uso objeto[obj][slot]) mediante un loop y automáticamente también, guarde el arma en ese slot.

Tengo esto, obviamente está mal, guarda el arma en todos los slots. ¿Cómo podría arreglarlo?

function boxClick( theButton, theState, player ) 
    local caja = caja_objeto[ source ] 
    if theButton == "right" and theState == "down" then 
        if caja then 
            local arma = getPedWeapon( player ) 
            local ammo = getPedTotalAmmo( player ) 
            if arma and tonumber( arma ) > 0 then 
                for i=1, slots_disponibles do 
                    if contenido_caja[ caja ][ i ] == nil then 
                        contenido_caja[ caja ][ i ] = { arma = arma, ammo = ammo } 
                        takeWeapon( player, arma ) 
                        outputChatBox( "Has guardado un arma en la caja", player, 0, 255, 0 ) 
                    else 
                        outputChatBox( "Todos los slots están ocupados", player, 255, 0, 0 ) 
                    end 
                end 
            else 
                outputChatBox( "Debes tener un arma en la mano para guardarla en la caja.", player, 255, 145, 0 ) 
            end 
        end 
    end 
end 

Gracias de antemano

Link to comment
Me he puesto a aportar sistemas de almacenamiento en el foro y estoy creando algo más 'innovador'. La duda que tengo es de como hacer que automáticamente detecte si hay un slot disponible (ya que uso objeto[obj][slot]) mediante un loop y automáticamente también, guarde el arma en ese slot.

Tengo esto, obviamente está mal, guarda el arma en todos los slots. ¿Cómo podría arreglarlo?

function boxClick( theButton, theState, player ) 
    local caja = caja_objeto[ source ] 
    if theButton == "right" and theState == "down" then 
        if caja then 
            local arma = getPedWeapon( player ) 
            local ammo = getPedTotalAmmo( player ) 
            if arma and tonumber( arma ) > 0 then 
                for i=1, slots_disponibles do 
                    if contenido_caja[ caja ][ i ] == nil then 
                        contenido_caja[ caja ][ i ] = { arma = arma, ammo = ammo } 
                        takeWeapon( player, arma ) 
                        outputChatBox( "Has guardado un arma en la caja", player, 0, 255, 0 ) 
                    else 
                        outputChatBox( "Todos los slots están ocupados", player, 255, 0, 0 ) 
                    end 
                end 
            else 
                outputChatBox( "Debes tener un arma en la mano para guardarla en la caja.", player, 255, 145, 0 ) 
            end 
        end 
    end 
end 

Gracias de antemano

  
                for i=1, slots_disponibles do 
                    if contenido_caja[ caja ][ i ] == nil then 
                        contenido_caja[ caja ][ i ] = { arma = arma, ammo = ammo } 
                        takeWeapon( player, arma ) 
                        outputChatBox( "Has guardado un arma en la caja", player, 0, 255, 0 ) 
                        break 
                    end 
                   outputChatBox( "Todos los slots están ocupados", player, 255, 0, 0 ) 
                end 
  

Link to comment

Gracias Tomas, justo estaba buscando el uso de break jaja. Ahora el problema me lo da aquí:

                    if contenido_caja[ caja ][ i ] == nil then 
                        contenido_caja[ caja ][ i ] = { arma = arma, ammo = ammo } 
                        takeWeapon( player, arma ) 
                        outputChatBox( "Has guardado un arma en la caja", player, 0, 255, 0 ) 
                    else 
                        outputChatBox( "Todos los slots están ocupados", player, 255, 0, 0 ) 
                    end 

Cada vez que le doy click me sale el mensaje de 'Todos los slots están ocupados', quiero hacer que salga unicamente si no hay ningún slot en nil.

Link to comment
Gracias Tomas, justo estaba buscando el uso de break jaja. Ahora el problema me lo da aquí:
                    if contenido_caja[ caja ][ i ] == nil then 
                        contenido_caja[ caja ][ i ] = { arma = arma, ammo = ammo } 
                        takeWeapon( player, arma ) 
                        outputChatBox( "Has guardado un arma en la caja", player, 0, 255, 0 ) 
                    else 
                        outputChatBox( "Todos los slots están ocupados", player, 255, 0, 0 ) 
                    end 

Cada vez que le doy click me sale el mensaje de 'Todos los slots están ocupados', quiero hacer que salga unicamente si no hay ningún slot en nil.

El código que te dejé arriba hace eso.

Link to comment
  • Recently Browsing   0 members

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