Ir para conteúdo

Featured Replies

Postado

.Qual servidor ou website você utiliza como base? 

OTX2 - mattyx

 

Qual o motivo deste tópico? 

existe alguma função pra checar se algum item é ring?
exemplo: isRing(item) ?

 

Salve rapaziada.

alguém sabe se existe alguma função pra checar se algum item é ring ou necklace?

 

atualmente tenho uma "gambiarra"

 

itemEx.itemid == getPlayerSlotItem(cid, 9).itemid

 

isso é redundante pq checa se o itemID que estou tentando usar a pedra, é o mesmo ID do slot em uso do ring, porém se ele estiver na BP não vai retornar um true pra isso

alguém manja como faz pra checar o value do slotType do item? não achei nada que me de essa mão :(

Editado por FeeTads (veja o histórico de edições)

Resolvido por FeeTads

Ir para solução
  • Respostas 5
  • Visualizações 558
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • Boa tarde, @FeeTads! Não estou entendendo muito bem como você gostaria de utilizar a função no script. Pelo seu último tópico, ví que seria um sistema de upgrade? Você não precisa fazer o

Postado
  • Autor
  • Solução
function getItemType(itemid)
   local slottypes = {"head", "body", "legs", "feet", "ring", "necklace"}
   local consts = {
   ["head"] = CONST_SLOT_HEAD,
   ["armor"] = CONST_SLOT_ARMOR,
   ["legs"] = CONST_SLOT_LEGS,
   ["feet"] = CONST_SLOT_FEET,
   ["ring"] = CONST_SLOT_RING,
   ["necklace"] = CONST_SLOT_NECKLACE
   } 
   local arq = io.open("data/items/items.xml", "r"):read("*all")
   local attributes = arq:match('<item id="' .. itemid .. '".+name="' .. getItemNameById(itemid) ..'">(.-)</item>')
   local slot = ""
   for i,x in pairs(slottypes) do
       if attributes:find(x) then
               slot = x
                   break
           end
   end
   if slot == "body" then
       slot = "armor"
   end
return consts[slot]
end

 

a solução foi essa kkkkk, achei algumas funções de como pegar no items.xml e arrumei a função, ela retorna exatamente o slot que o item vai, porém items sem slot definido bugam kkkkk

ex: usar pedra de refine na armor > 

            print(getItemType(itemEx.itemid))

a saida do console será: 4

e então você pode escolher se o player pode ou não usar o refine na armor

ex:

        if getItemType(itemEx.itemid) == 4 then

                doPlayerSendTexTMessage(cid, 22, "não pode usar refina na armor")

                return true

        end

 

ex: getItemType(2160) --id do crystal coin

vai bugar pq o gold não tem slotType, porém pra evitar bugs desse estilo, nos scripts junto com getItemType eu uso " not isStackable(itemid) " pq ai se o item não for stackavel ele não buga kkkkkk

 

tmj <3 

esse script não sei quem começou ele pois tava banido do forum que peguei, e como arrumei uns 30% dele vou disponibilizar sem créditos
**não sei quem é o dono desse script e se tem 100% funcional, mas tmj <3**

  • FeeTads mudou o título para [Resolvido] existe função pra checar se algum item é ring ou colar?
Postado

Boa tarde, @FeeTads!

Não estou entendendo muito bem como você gostaria de utilizar a função no script.
Pelo seu último tópico, ví que seria um sistema de upgrade?

Você não precisa fazer o script checar todo o item.xml apenas para saber se o item que você quer é ou não um RING ou NECKLACE.

Tente usar a função abaixo:

-- By: xMonkey

local itemInfo = getItemInfo(itemEx.itemid)
if(itemInfo.slotPosition == CONST_SLOT_RING) or (itemInfo.slotPosition == CONST_SLOT_NECKLACE) then
	... retorna oq vc quer fazer se for ring ou necklace ...
end

 

A função acima checa se o item pertence a determinado slot :)

OBS: Coloquei itemEx.itemid, caso seja o contrário, basta modificar para item.itemid

 

Editado por xMonkey
pequenas correções no português Xd (veja o histórico de edições)

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo