Ir para conteúdo
  • Cadastre-se

(Resolvido)Autoloot poketibia help


Ir para solução Resolvido por zipter98,

Posts Recomendados

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:

 

[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>

Link para o post
Compartilhar em outros sites

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.

Link para o post
Compartilhar em outros sites

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

 

irei testar aki , aereo sei ....

Minhas Gambiarras :rock:

 

 

[PDA] Pokedex Mostrando o Catch

 

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

 

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

Link para o post
Compartilhar em outros sites

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émon. Aí, na tag desse script de autoloot, ao invés de colocar isso:

<action itemid="id_das_corpses" event="script" value="arquivo.lua"/>

você colocaria isso:

<action actionid="aid_setado_em_pokeexp" event="script" value="arquivo.lua"/>

Pra setar um actionid você usa a função doItemSetAttribute com os seguintes parâmetros:

doItemSetAttribute(item, "aid", actionid_desejado)
Editado por zipter98 (veja o histórico de edições)

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

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.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo