Ir para conteúdo

Featured Replies

Postado

Bom dia :)

 

Eu peguei esse tutorial e fiz igualzinho

http://www.tibiaking.com/forum/topic/41693-pda-autoloot-igual-pxg/

 

Ae o autoloot funciona direitinho só que quando dropa 2 itens diferentes ou + (ex: 20 screws e 1 magnet) tem que clicar 2x pra pegar os 2 loots e aparece esse erro:

Mostrar conteúdo oculto

 

[04/01/2015 14:22:10] [Error - Action Interface] 
[04/01/2015 14:22:10] data/actions/scripts/Autoloot.lua:onUse
[04/01/2015 14:22:10] Description: 
[04/01/2015 14:22:10] (luaDoRemoveItem) Item not found
 
[04/01/2015 14:22:10] [Error - Action Interface] 
[04/01/2015 14:22:10] data/actions/scripts/Autoloot.lua:onUse
[04/01/2015 14:22:10] Description: 
[04/01/2015 14:22:10] (luaDoPlayerAddItem) Item not found
 
[04/01/2015 14:22:10] [Error - Action Interface] 
[04/01/2015 14:22:10] data/actions/scripts/Autoloot.lua:onUse
[04/01/2015 14:22:10] Description: 
[04/01/2015 14:22:10] data/lib/050-function.lua:226: attempt to index a boolean value
[04/01/2015 14:22:10] stack traceback:
[04/01/2015 14:22:10] data/lib/050-function.lua:226: in function 'getItemNameById'
[04/01/2015 14:22:10] data/actions/scripts/Autoloot.lua:21: in function <data/actions/scripts/Autoloot.lua:2>

Resolvido por zipter98

Ir para solução
  • Respostas 7
  • Visualizações 2k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • Antes de tudo: Não deve-se fazer isso em situações em que são checados os items de um container: for x=0, (getContainerSize(item.uid)) do Supondo que o container tenha 8 slots, o looping será execu

  • Curioso. Essa correção que enviei funcionou perfeitamente aqui. Sobre o aid, o processo é o seguinte: no arquivo pokeexp.lua, de data/creaturescripts/scripts, você seta uma actionid na corpse do poké

Postado

Pena que não estou mais brincando com ot. Se quiser pra o erro parar de aparecer, procure por:

for x=0, (getContainerSize(item.uid)) do
local itens = getContainerItem(item.uid, x)
--if isInArray(toloot, itens.itemid) then
table.insert(items, {i=itens.itemid, q=itens.type})
doRemoveItem(itens.uid)
--break
--end
end

E substitua por:

for x=0, (getContainerSize(item.uid)) do
local itens = getContainerItem(item.uid, x)
--if isInArray(toloot, itens.itemid) then
if itens.uid ~= 0 then
table.insert(items, {i=itens.itemid, q=itens.type})
doRemoveItem(itens.uid)
end
--break
--end
end

Não vai ser surpresa se não funcionar, to meio "aereo".

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

Att. Featzen.

Postado
  Em 06/01/2015 em 10:19, Gabrielbsales disse:

Não vai ser surpresa se não funcionar, to meio "aereo".

 

irei testar aki , aereo sei ....

Minhas Gambiarras :rock:

 

Mostrar conteúdo oculto

 

[PDA] Pokedex Mostrando o Catch

 

http://www.tibiaking.com/forum/topic/54998-pda-arrumando-a-dex/?view=findpost&p=323041

 

Postado
  • Solução

Antes de tudo:

Não deve-se fazer isso em situações em que são checados os items de um container:

for x=0, (getContainerSize(item.uid)) do

Supondo que o container tenha 8 slots, o looping será executado 9 vezes (por começar no 0). Assim, seria verificado um slot que não existe, ocasionando um erro.

Obs.: Os slots começam a ser contados no 0, e não no 1.

O correto seria:

for x=0, getContainerSize(item.uid) - 1 do

A propósito, acho mais viável colocar um simples actionid na tag da action, ao invés dos ids das corpses dos pokémons. Aí, num onDeath, bastaria setar este aid na corpse.

 

@topic

O problema é o seguinte: ao remover um item da corpse, o seguinte passa a ocupar o slot do que foi removido.

Por exemplo, na corpse de um Charizard encontra-se, no slot 0, 33 essences of fire, e no slot 1, 1 nail. Com este código de autoloot, ao remover as 33 essences of fire, o nail passa a ocupar o antigo slot das essences of fire (no caso, o slot 0). Assim, na próxima execução do looping, não haverá item algum no slot 1, causando o erro. 

Há algumas maneiras de corrigir isso. A que lhe recomendo seguir é a seguinte:

Troque:

for x=0, (getContainerSize(item.uid)) do
local itens = getContainerItem(item.uid, x)
--if isInArray(toloot, itens.itemid) then
table.insert(items, {i=itens.itemid, q=itens.type})
doRemoveItem(itens.uid)
--break
--end
end

por:

for x=0, getContainerSize(item.uid) - 1 do
local itens = getContainerItem(item.uid, 0)
--if isInArray(toloot, itens.itemid) then
table.insert(items, {i=itens.itemid, q=itens.type})
doRemoveItem(itens.uid)
--break
--end
end

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

não respondo pms solicitando suporte em programação/scripting

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