converter código em uma função ajuda

Bennyhappy
em Scripts

Bennyhappy

avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 10/11/11Posts: 118

 		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')

Antharaz

avatar
Cavaleiro
Cavaleiro

INFOS

Grupo: CavaleiroRegistrado: 05/01/08Posts: 153Char no Tibia: nenhum
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...

Atenciosamente,

Antharaz

HwmBLEb.jpg

Bennyhappy

avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 10/11/11Posts: 118

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

Antharaz

avatar
Cavaleiro
Cavaleiro

INFOS

Grupo: CavaleiroRegistrado: 05/01/08Posts: 153Char no Tibia: nenhum

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...

Atenciosamente,

Antharaz

HwmBLEb.jpg

Bennyhappy

avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 10/11/11Posts: 118

Funcionou perfeitamente. obrigado :)

 

pequenos detalhes que fazem grandes erros kkk

 

testado em tfs 0.4

Danihcv

I'm Coordenador, Bitch!
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 08/04/15Posts: 926Gênero: Masculino

Tópico movido para dúvidas / pedidos resolvidos.

Te ajudei?? REP+ e ficamos quites... happyy.png

Atenciosamente,
                    Danihcv.
                           Abraços!