Ir para conteúdo
  • 0

Ajuda para terminar meu script Por favor


Bennyhappy

Pergunta

HI Este código funciona perfeitamente
retornado bons valores.
mas ....

 

 

Só tenho esse erro no console:

63rfyv.png

 

Este erro acontece quando o personagem não tem nenhum artigo na respectiva ranhura.
Aqui, o código:

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  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
//
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Ice: "..total..".")

 

 

E eu tento criar esta função, mas só me retorna o valor de um slot:

function getPlayerProtection(cid, attribute)   
        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  then
                        itemSlots[slot] = hasItemOn
                    end
                end
  
                for slot, slottedItem in pairs(itemSlots) do
                    local temp = getItemAttribute(slottedItem, attribute)
                   return  total + (temp ~= nil and temp or 0 )
                end
                end

para uso:

getPlayerProtection(cid, 'IceProtec')

e mesmo erro no valor de nulo em consola :(

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Você disse que ele retorna o valor que você solicita, que o problema mesmo é este erro no console, para tirar isto basta substituir:

if hasItemOn  then

Por:

if hasItemOn ~= 0  then

Senão ele irá fazer a busca mesmo você não tendo o item e resultará neste erro em seu console. Caso ainda precise de mais ajuda, solicito que poste o link do tópico com download do servidor que você está usando.

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

  • 0

Você disse que ele retorna o valor que você solicita, que o problema mesmo é este erro no console, para tirar isto basta substituir:

if hasItemOn  then

Por:

if hasItemOn ~= 0  then

Senão ele irá fazer a busca mesmo você não tendo o item e resultará neste erro em seu console. Caso ainda precise de mais ajuda, solicito que poste o link do tópico com download do servidor que você está usando.

 

Obrigado amigo, que a linha simplesmente meu erro resolvido :D

 

Você poderia me ajudar a criar uma função com esse código?

  		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

para uso:

getPlayerProtection(cid, 'IceProtec') ?

 

I Use TFS 0.4

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

  • 0

A dúvida deste usuario já foi sanada em outro tópico igual que ele criou, segue link abaixo:

 

http://www.xtibia.com/forum/topic/237624-converter-codigo-em-uma-funcao-ajuda/#entry1674506

 

Não postei como link porque estou no celular, algum responsável por favor feche.

Link para o comentário
Compartilhar em outros sites

  • 0

@, por favor, não poste uma mesma duvida em posts diversos.

 

@@Antharaz, amigo, quando vc ver uma situação que fuja das regras, por favor, apenas reporte para a nossa equipe. Vc não precisa comentar no topico que o membro X está agindo fora das regras.

 

Agradeço a compreensão. Abraços.

 

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

×
×
  • Criar Novo...