Ir para conteúdo
  • Cadastre-se

(Resolvido)[Resolvido] existe função pra checar se algum item é ring ou colar?


Ir para solução Resolvido por FeeTads,

Posts Recomendados

  • Moderador

.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)
Link para o post
Compartilhar em outros sites
  • Moderador

Em seu arquivo 000-constant.lua, verifica se tem essas condition:

CONDITIONID_NECKLACE = 2
CONDITIONID_RING = 9
CONST_SLOT_NECKLACE = 2
CONST_SLOT_RING = 9

 

Meu Curso sobre Programação para OTServer

Programando OTServer

 

Peça o seu script! Entre agora mesmo no grupo

Developing

 

Conteúdos:

 

Discord: Belmont#7352

Não esqueça do REP+ :)     

Link para o post
Compartilhar em outros sites
  • Moderador
3 minutos atrás, Belmont disse:

Em seu arquivo 000-constant.lua, verifica se tem essas condition:

 

sim, existe as 4 condições, porém não manjo usar as 

CONDITIONID_NECKLACE = 2
CONDITIONID_RING = 9

 

Link para o post
Compartilhar em outros sites
  • Moderador
  • 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**

Link para o post
Compartilhar em outros sites
  • FeeTads mudou o título para [Resolvido] existe função pra checar se algum item é ring ou colar?

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)
Link para o post
Compartilhar em outros sites
  • Moderador
19 minutos atrás, xMonkey disse:

itemInfo.slotPosition

não sabia que existia essa função, eu procurei por item.slotype kkkkk, mas isso ja vai ser de grande ajuda mano que isso, perfeito, obrigado <3

Link para o post
Compartilhar em outros sites

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

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo