Postado Julho 13, 2022 2 anos .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 Julho 14, 2022 2 anos por FeeTads (veja o histórico de edições)
Postado Julho 13, 2022 2 anos 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
Postado Julho 13, 2022 2 anos Autor 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
Postado Julho 14, 2022 2 anos 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 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**
Postado Julho 20, 2022 2 anos 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 Julho 20, 2022 2 anos 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.