Mazynho 2 Postado Abril 19, 2014 Share Postado Abril 19, 2014 Galera como que faço para descobrir o "uid" de um certo item que o player possui. Ex: QntItem = getPlayerItemCount(cid, itemID_X) Digamos que o player possua o itemID_X que coloquei no método. Por exemplo o retorno dessa função foi 3, então preciso saber o "uid" desses 3 itens, pois em outra função ele precisa do "uid" do item. Lembrando que este "uid" não é o unique id que coloco em algum item do mapa e sim o código que é gerado, não sei como, dos itens players e etc. Se puderem min dizer como esse código é gerado também será de grande valia. Link para o comentário https://xtibia.com/forum/topic/232057-descobrir-o-uid-de-um-certo-item-que-o-player-possui/ Compartilhar em outros sites More sharing options...
0 Slicer 1070 Postado Abril 19, 2014 Share Postado Abril 19, 2014 se ele uso getPlayerItemCount ele deve ta querendo pegar os uids da bag do player... achu q oq ele quer eh essa funçao... function getItemsInContainerById(container, itemid) -- Function By Kydrai local items = {} if isContainer(container) and getContainerSize(container) > 0 then for slot=0, (getContainerSize(container)-1) do local item = getContainerItem(container, slot) if isContainer(item.uid) then local itemsbag = getItemsInContainerById(item.uid, itemid) for i=0, #itemsbag do table.insert(items, itemsbag[i]) end else if itemid == item.itemid then table.insert(items, item.uid) end end end end return items end exemplo de uso: local uids = getItemsInContainerById(getPlayerSlotItem(cid, 3).uid, itemid) for _, uid in ipairs(uids) do doRemoveItem(uid, 1) end nesse caso vai remover todos os itens com o 'itemid' do player... Link para o comentário https://xtibia.com/forum/topic/232057-descobrir-o-uid-de-um-certo-item-que-o-player-possui/#findComment-1638975 Compartilhar em outros sites More sharing options...
0 DuuhCarvalho 327 Postado Abril 19, 2014 Share Postado Abril 19, 2014 (editado) não entendi direito mais creio que essa duvida seja pq vc quer usar uma função e não sabe chamar o item por uid vou te dar um exemplo com a função doRemoveItem(uid, pos) uid = item pos = posição você pode definir o item(uid) numa variável e chamar a variável na função , exemplo : local item1 = getTileItemById({x = 1, y = 2, z = 3}, 1015) if item1.uid > 0 then return doRemoveItem(item1.uid, 1) end no caso a função vai removeur um item(uid) que está na posição X. ou function onUse(cid, item, fromPosition, itemEx, toPosition) na função contém os valores de armazenamento do item e do itemEx item = item que o player está usando itemEx = item(local) onde o player está usando o item no caso você define os valores na variável, ou no caso do item você define na própria tag doRemoveItem(item.uid, 1) -- vai remover o item que o player "usou" . doRemoveItem(itemEx.uid, 1) -- vai remover o itemEx . Abraços . Editado Abril 19, 2014 por DuuhCarvalho Link para o comentário https://xtibia.com/forum/topic/232057-descobrir-o-uid-de-um-certo-item-que-o-player-possui/#findComment-1638965 Compartilhar em outros sites More sharing options...
0 Mazynho 2 Postado Abril 19, 2014 Autor Share Postado Abril 19, 2014 não entendi direito mais creio que essa duvida seja pq vc quer usar uma função e não sabe chamar o item por uid vou te dar um exemplo com a função doRemoveItem(uid, pos) uid = item pos = posição você pode definir o item(uid) numa variável e chamar a variável na função , exemplo : local item1 = getTileItemById({x = 1, y = 2, z = 3}, 1015) if item1.uid > 0 then return doRemoveItem(item1.uid, 1) end no caso a função vai removeur um item(uid) que está na posição X. ou function onUse(cid, item, fromPosition, itemEx, toPosition) na função contém os valores de armazenamento do item e do itemEx item = item que o player está usando itemEx = item(local) onde o player está usando o item no caso você define os valores na variável, ou no caso do item você define na própria tag doRemoveItem(item.uid, 1) -- vai remover o item que o player "usou" . doRemoveItem(itemEx.uid, 1) -- vai remover o itemEx . Abraços . Valeu pela ajuda, mas não é isso, da forma que você disse sei como pegar o uid do item, mas quero pegar o uid de um item que o player possua. Como tinha dito com a função getPlayerItemCount que irá retornar a quantidade de um item X, sabendo da quantidade iria fazer um for e pegar o uid de cada item. Apenas ressaltando o player não irá clicar em algo ou o item estará em uma pos no mapa, ele está na bp/slots do player se ele uso getPlayerItemCount ele deve ta querendo pegar os uids da bag do player... achu q oq ele quer eh essa funçao... function getItemsInContainerById(container, itemid) -- Function By Kydrai local items = {} if isContainer(container) and getContainerSize(container) > 0 then for slot=0, (getContainerSize(container)-1) do local item = getContainerItem(container, slot) if isContainer(item.uid) then local itemsbag = getItemsInContainerById(item.uid, itemid) for i=0, #itemsbag do table.insert(items, itemsbag[i]) end else if itemid == item.itemid then table.insert(items, item.uid) end end end end return items end exemplo de uso: local uids = getItemsInContainerById(getPlayerSlotItem(cid, 3).uid, itemid) for _, uid in ipairs(uids) do doRemoveItem(uid, 1) end nesse caso vai remover todos os itens com o 'itemid' do player... É isso mesmo que estou querendo. Muito Obrigado! Agora você pode fazer uma adaptação para verificar em todo o player, digo nos demais slots, pois pelo que entendi ele só irá verificar os itens que estão na BP. Link para o comentário https://xtibia.com/forum/topic/232057-descobrir-o-uid-de-um-certo-item-que-o-player-possui/#findComment-1638978 Compartilhar em outros sites More sharing options...
0 Slicer 1070 Postado Abril 19, 2014 Share Postado Abril 19, 2014 function getItemsInContainerById(container, itemid) -- Function By Kydrai local items = {} if isContainer(container) and getContainerSize(container) > 0 then for slot=0, (getContainerSize(container)-1) do local item = getContainerItem(container, slot) if isContainer(item.uid) then local itemsbag = getItemsInContainerById(item.uid, itemid) for i = 0, #itemsbag do table.insert(items, itemsbag[i]) end else if itemid == item.itemid then table.insert(items, item.uid) end end end end return items end function getPlayerItemsById(cid, itemid) if not isCreature(cid) or type(itemid) ~= "number" then return {} end local items = {} for i = 1, 10 do --passar por todos os slots local item = getPlayerSlotItem(cid, i) if i == 3 then --slot da bag local itemsbag = getItemsInContainerById(item.uid, itemid) for _, itemBag in ipairs(itemsbag) do table.insert(items, itemBag) end else if item.itemid == itemid then table.insert(items, item.uid) end end end return items end bota essas duas funçoes na tua lib e dai usa a 2* pra pegar os itens... exemplo: local uids = getPlayerItemsById(cid, itemid) for _, uid in ipairs(uids) do doRemoveItem(uid, 1) end soh uma duvida... vais usar essas funçoes para procurar por bags? se for, vai ter q alterar elas um bucadin... ;p Link para o comentário https://xtibia.com/forum/topic/232057-descobrir-o-uid-de-um-certo-item-que-o-player-possui/#findComment-1639039 Compartilhar em outros sites More sharing options...
0 Mazynho 2 Postado Abril 19, 2014 Autor Share Postado Abril 19, 2014 function getItemsInContainerById(container, itemid) -- Function By Kydrai local items = {} if isContainer(container) and getContainerSize(container) > 0 then for slot=0, (getContainerSize(container)-1) do local item = getContainerItem(container, slot) if isContainer(item.uid) then local itemsbag = getItemsInContainerById(item.uid, itemid) for i = 0, #itemsbag do table.insert(items, itemsbag[i]) end else if itemid == item.itemid then table.insert(items, item.uid) end end end end return items end function getPlayerItemsById(cid, itemid) if not isCreature(cid) or type(itemid) ~= "number" then return {} end local items = {} for i = 1, 10 do --passar por todos os slots local item = getPlayerSlotItem(cid, i) if i == 3 then --slot da bag local itemsbag = getItemsInContainerById(item.uid, itemid) for _, itemBag in ipairs(itemsbag) do table.insert(items, itemBag) end else if item.itemid == itemid then table.insert(items, item.uid) end end end return items end bota essas duas funçoes na tua lib e dai usa a 2* pra pegar os itens... exemplo: local uids = getPlayerItemsById(cid, itemid) for _, uid in ipairs(uids) do doRemoveItem(uid, 1) end soh uma duvida... vais usar essas funçoes para procurar por bags? se for, vai ter q alterar elas um bucadin... ;p É queria que ele verificasse se tem o item em todas as bps e slots do player. Link para o comentário https://xtibia.com/forum/topic/232057-descobrir-o-uid-de-um-certo-item-que-o-player-possui/#findComment-1639081 Compartilhar em outros sites More sharing options...
0 Slicer 1070 Postado Abril 19, 2014 Share Postado Abril 19, 2014 isso ela vai fazer... oq to perguntando eh se tu vai procurar por BPs usando as funçoes? -como itemid- pq a funçao vai entrando nas bps do player mas n olha o id delas... dai se for procurar por bps tem q editar a funçao pra verificar o id das bps antes de 'entrar' nelas para procurar pelo item... Link para o comentário https://xtibia.com/forum/topic/232057-descobrir-o-uid-de-um-certo-item-que-o-player-possui/#findComment-1639103 Compartilhar em outros sites More sharing options...
0 Mazynho 2 Postado Abril 20, 2014 Autor Share Postado Abril 20, 2014 isso ela vai fazer... oq to perguntando eh se tu vai procurar por BPs usando as funçoes? -como itemid- pq a funçao vai entrando nas bps do player mas n olha o id delas... dai se for procurar por bps tem q editar a funçao pra verificar o id das bps antes de 'entrar' nelas para procurar pelo item... Não, o que estou procurando não é uma bp. Obrigado. Agora uma duvida estou verificando com 3 itens, e estou colocando para exibir os uid's e todos os 3 ganham o mesmo uid então como faço para diferencia-los? Link para o comentário https://xtibia.com/forum/topic/232057-descobrir-o-uid-de-um-certo-item-que-o-player-possui/#findComment-1639128 Compartilhar em outros sites More sharing options...
0 Slicer 1070 Postado Abril 20, 2014 Share Postado Abril 20, 2014 n intendi muito bem oq tu quis dizer... tas tentando verificar varios ids ao ms tempo? Link para o comentário https://xtibia.com/forum/topic/232057-descobrir-o-uid-de-um-certo-item-que-o-player-possui/#findComment-1639212 Compartilhar em outros sites More sharing options...
0 Mazynho 2 Postado Abril 20, 2014 Autor Share Postado Abril 20, 2014 n intendi muito bem oq tu quis dizer... tas tentando verificar varios ids ao ms tempo? Não, estou verificando apenas um item. No player que estou verificando ele possui uma quantia equivalente a 3 unidades desse item, o problema que estou tendo é que utilizo essa função para pegar o uid desses 3 itens, e ele min retorna uma tabela com 3 elementos. Ex: {4395, 4395, 4395}, ou seja está min retornando um mesmo uid para os 3 itens, então queria saber como faço para obter um código uid diferente para cada um desses 3? Link para o comentário https://xtibia.com/forum/topic/232057-descobrir-o-uid-de-um-certo-item-que-o-player-possui/#findComment-1639305 Compartilhar em outros sites More sharing options...
0 Slicer 1070 Postado Abril 20, 2014 Share Postado Abril 20, 2014 engraçado.. fiz varios testes aki e todos retornaram UIDs diferentes... como q tas fazendo pra printar o resultado da tabela? e tpw, ele vai retornar soh o uid de itens distintos... por exemplo: tenhu 3 pizzas stackadas na minha bp... vai retornar 1 uid soh... tenhu 3 pizzas na minha bp mas elas tao sepadas, cada uma com 1 stack, vai retornar 3 uids... Link para o comentário https://xtibia.com/forum/topic/232057-descobrir-o-uid-de-um-certo-item-que-o-player-possui/#findComment-1639318 Compartilhar em outros sites More sharing options...
0 Killua 389 Postado Abril 20, 2014 Share Postado Abril 20, 2014 uids não são valores fixos, ele ficam mudando sempre... Link para o comentário https://xtibia.com/forum/topic/232057-descobrir-o-uid-de-um-certo-item-que-o-player-possui/#findComment-1639321 Compartilhar em outros sites More sharing options...
0 Mazynho 2 Postado Abril 20, 2014 Autor Share Postado Abril 20, 2014 engraçado.. fiz varios testes aki e todos retornaram UIDs diferentes... como q tas fazendo pra printar o resultado da tabela? e tpw, ele vai retornar soh o uid de itens distintos... por exemplo: tenhu 3 pizzas stackadas na minha bp... vai retornar 1 uid soh... tenhu 3 pizzas na minha bp mas elas tao sepadas, cada uma com 1 stack, vai retornar 3 uids... Mas o item que estou testando não é agrupável, e ele retorna uma tabela com 3 uids iguais. Estou colocando para exibir com um for: local msg = "" for X = 1, #uids do msg = msg ..", ".. uids[X] end ai coloco para exibir essa msg para o player. Da uma olhada nesse meu post aqui: http://www.xtibia.com/forum/topic/228906-projeto-tutores-de-scripting/?p=1639134 Estou modificando meu script para ficar mais facil, mas se puder ajudar nesse também agradeço. Link para o comentário https://xtibia.com/forum/topic/232057-descobrir-o-uid-de-um-certo-item-que-o-player-possui/#findComment-1639327 Compartilhar em outros sites More sharing options...
Pergunta
Mazynho 2
Galera como que faço para descobrir o "uid" de um certo item que o player possui.
Ex:
QntItem = getPlayerItemCount(cid, itemID_X)
Digamos que o player possua o itemID_X que coloquei no método.
Por exemplo o retorno dessa função foi 3, então preciso saber o "uid" desses 3 itens, pois em outra função ele precisa do "uid" do item.
Lembrando que este "uid" não é o unique id que coloco em algum item do mapa e sim o código que é gerado, não sei como, dos itens players e etc.
Se puderem min dizer como esse código é gerado também será de grande valia.
Link para o comentário
https://xtibia.com/forum/topic/232057-descobrir-o-uid-de-um-certo-item-que-o-player-possui/Compartilhar em outros sites
12 respostass a esta questão
Posts Recomendados