Ir para conteúdo
  • 0

converter código em uma função ajuda


Bennyhappy

Pergunta

 		local slots = {
        ['head'] = CONST_SLOT_HEAD,
        ['armor'] = CONST_SLOT_ARMOR,
        ['legs'] = CONST_SLOT_LEGS,
        ['feet'] = CONST_SLOT_FEET,
        ['left'] = CONST_SLOT_LEFT,
        ['right'] = CONST_SLOT_RIGHT
    }	             
			   
			   local itemSlots, total = {}, 0
			   
                for slot, const in pairs(slots) do
                    local hasItemOn = getPlayerSlotItem(cid, const).uid
                    if hasItemOn ~= 0  then
                        itemSlots[slot] = hasItemOn
                    end
                end

				
                for slot, slottedItem in pairs(itemSlots) do
                local temp = getItemAttribute(slottedItem, 'IceProtec')
                total = total + (temp ~= nil and temp or 0 )
                end

Eu quero converter este código em uma função como esta:

 

//

getPlayerProtection(cid, 'IceProtec')

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0
local slots = {
        ['head'] = CONST_SLOT_HEAD,
        ['armor'] = CONST_SLOT_ARMOR,
        ['legs'] = CONST_SLOT_LEGS,
        ['feet'] = CONST_SLOT_FEET,
        ['left'] = CONST_SLOT_LEFT,
        ['right'] = CONST_SLOT_RIGHT
    }            
    
      local itemSlots, total = {}, 0

function getPlayerProtection(cid, param)

     
                for slot, const in pairs(slots) do
                    local hasItemOn = getPlayerSlotItem(cid, const).uid
                    if hasItemOn ~= 0  then
                        itemSlots[slot] = hasItemOn
                    end
                end
   
                for slot, slottedItem in pairs(itemSlots) do
                local temp = getItemAttribute(slottedItem, param)
                total = total + (temp ~= nil and temp or 0 )
                end
	end

Transformando somente em function é isto...

Link para o comentário
Compartilhar em outros sites

  • 0

Error em consola:

 

attempt to concatenate a nil value

 

 

você não está devolver qualquer valor na função, não é tão simples quanto você pensa.

 

 

yo modifique para:

function getPlayerProtection(cid, param)

     
                for slot, const in pairs(slots) do
                    local hasItemOn = getPlayerSlotItem(cid, const).uid
                    if hasItemOn ~= 0  then
                        itemSlots[slot] = hasItemOn
                    end
                end
   
                for slot, slottedItem in pairs(itemSlots) do
                local temp = getItemAttribute(slottedItem, param)
               return total + (temp ~= nil and temp or 0 )
                end
	end

mas eu tenho alguns erros, então eu pedi ajuda

Link para o comentário
Compartilhar em outros sites

  • 0

Na verdade, eu só botei return total no final, antes do último end e deu certo... deste seu jeito vai retornar apenas o valor do primeiro item porque você deixou o return dentro do loop.

local slots = {
        ['head'] = CONST_SLOT_HEAD,
        ['armor'] = CONST_SLOT_ARMOR,
        ['legs'] = CONST_SLOT_LEGS,
        ['feet'] = CONST_SLOT_FEET,
        ['left'] = CONST_SLOT_LEFT,
        ['right'] = CONST_SLOT_RIGHT
    }            
    
      local itemSlots, total = {}, 0

function getPlayerProtection(cid, param)

     
                for slot, const in pairs(slots) do
                    local hasItemOn = getPlayerSlotItem(cid, const).uid
                    if hasItemOn ~= 0  then
                        itemSlots[slot] = hasItemOn
                    end
                end
   
                for slot, slottedItem in pairs(itemSlots) do
                local temp = getItemAttribute(slottedItem, param)
                total = total + (temp ~= nil and temp or 0 )
                end
return total
	end

No TFS 0.3.7 funcionou...

Editado por Antharaz
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...