Ir para conteúdo
  • 0

Resolvido ajudem a retirar bug desse script??


wevertonvrb

Pergunta

boa noite gente eu estou com um script de autoloot e vou posta-lo
primeiramente ele esta funcionando 100% o unico problema é que mesmo funcionando gera erro e quero remover esse erro e peço a ajuda de vocês com esse erro

ERRO
 

Spoiler

Error - Action Interface] 
[17/04/2017 01:38:58] data/actions/scripts/Autoloot.lua:onUse
[17/04/2017 01:38:58] Description: 
[17/04/2017 01:38:58] (luaDoRemoveItem) Item not found

[17/04/2017 01:38:58] [Error - Action Interface] 
[17/04/2017 01:38:58] data/actions/scripts/Autoloot.lua:onUse
[17/04/2017 01:38:58] Description: 
[17/04/2017 01:38:58] (luaDoPlayerAddItem) Item not found

[17/04/2017 01:38:58] [Error - Action Interface] 
[17/04/2017 01:38:58] data/actions/scripts/Autoloot.lua:onUse
[17/04/2017 01:38:58] Description: 
[17/04/2017 01:38:58] data/lib/050-function.lua:227: attempt to index a boolean value
[17/04/2017 01:38:58] stack traceback:
[17/04/2017 01:38:58]     data/lib/050-function.lua:227: in function 'getItemNameById'
[17/04/2017 01:38:58]     data/actions/scripts/Autoloot.lua:14: in function <data/actions/scripts/Autoloot.lua:1>
 



 

 

 

Autoloot.lua

Spoiler

function onUse(cid, item, frompos, item2, topos)
    if getItemAttribute(item.uid, "corpseowner") ~= cid then
        doPlayerSendCancel(cid, "You're not the owner.")
        return true
    end
    local items = {}
    for x=0, (getContainerSize(item.uid)) do
        local itens = getContainerItem(item.uid, X):
        table.insert(items, {i=itens.itemid, q=itens.type})
        doRemoveItem(itens.uid)
    end
    for y=1, #items do
        doPlayerAddItemStacking(cid, items[y].i, items[y].q)
        doPlayerSendTextMessage(cid, 20, "Looted "..items[y].q.."x "..getItemNameById(items[y].i)..".")
    end
    if #items > 0 then
        return true
    else
        return false
    end
end


050-function.lua

Spoiler

function getItemNameById(itemid)
    return getItemDescriptionsById(itemid).name ---essa é a linha citada no erro
end


 

Editado por wevertonvrb
Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0

Eu não sei como é que funciona pokelixo, mas como está mechendo com monstros, não deveria por o evento no xml do monstro?

Link para o comentário
Compartilhar em outros sites

  • 0

Adicione essa função:

Citar

doRemoveItem(itens.uid)

 

Dentro desse bloco condicional:

Citar

if itens.uid then

--aqui fica a função 

end

 

 

Link para o comentário
Compartilhar em outros sites

  • 0
Em 17/04/2017 at 09:10, Poccnn disse:

Adicione essa função:

 

Dentro desse bloco condicional:

 

 

continua o mesmo erro 

ERRO

Spoiler

[Error - Action Interface] 

[18/04/2017 21:00:11] data/actions/scripts/Autoloot.lua:onUse

[18/04/2017 21:00:11] Description: 

[18/04/2017 21:00:11] (luaDoRemoveItem) Item not found

[18/04/2017 21:00:11] [Error - Action Interface] 

[18/04/2017 21:00:11] data/actions/scripts/Autoloot.lua:onUse

[18/04/2017 21:00:11] Description: 

[18/04/2017 21:00:11] (luaDoPlayerAddItem) Item not found

[18/04/2017 21:00:11] [Error - Action Interface] 

[18/04/2017 21:00:11] data/actions/scripts/Autoloot.lua:onUse

[18/04/2017 21:00:11] Description: 

[18/04/2017 21:00:11] data/lib/050-function.lua:227: attempt to index a boolean value

[18/04/2017 21:00:11] stack traceback:

[18/04/2017 21:00:11]     data/lib/050-function.lua:227: in function 'getItemNameById'

[18/04/2017 21:00:11]     data/actions/scripts/Autoloot.lua:17: in function <data/actions/scripts/Autoloot.lua:1>

 

 

deixei o script assim

Spoiler

function onUse(cid, item, frompos, item2, topos)

    if getItemAttribute(item.uid, "corpseowner") ~= cid then

        doPlayerSendCancel(cid, "You're not the owner.")

        return true

    end

    local items = {}

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

        local itens = getContainerItem(item.uid, X):

        table.insert(items, {i=itens.itemid, q=itens.type})

            if itens.uid then

    doRemoveItem(itens.uid)

end

        

    end

    for y=1, #items do

        doPlayerAddItemStacking(cid, items[y].i, items[y].q)

        doPlayerSendTextMessage(cid, 20, "Looted "..items[y].q.."x "..getItemNameById(items[y].i)..".")

    end

    if #items > 0 then

        return true

    else

        return false

    end

end

 

mesmo com o erro o script continua funcionando

Link para o comentário
Compartilhar em outros sites

  • 0
Em 19/04/2017 at 09:47, Poccnn disse:

Substitui o a condição do if por este:

itens.uid > 1000

consegui resolver e foi mt facil rsrsrsrs apenas mudei o

x=0 para x=1

se eu criar outro topco voce pode me ajudar fazer esse script ficar automatico?

eu gostaria que ele funcionasse em todos os items que tenha o atributo (containerSize) que tenha o no nome a palavra(fainted)

do jeito que esta eu tenho que adicionar todos os itens no actions.xml e são mais de 500 items 

Editado por wevertonvrb
Link para o comentário
Compartilhar em outros sites

  • 0
13 horas atrás, Poccnn disse:

Seleciona a pasta do seu servidor, clica em ctrl + delete. Pronto, resolvido seu problema. 

wtf?

 

3 horas atrás, kaleudd disse:

uehauehauhe

Evite comentários que não agregam nada à comunidade.

 

Link para o comentário
Compartilhar em outros sites

  • 0

Pokelixo é sempre uma bosta.

@wevertonvrb faz o seguinte: adicione isso abaixo da variavel de mesmo nome.

print(itens.uid)

 

11 horas atrás, wevertonvrb disse:

consegui resolver e foi mt facil rsrsrsrs apenas mudei o
x=0 para x=1
se eu criar outro topco voce pode me ajudar fazer esse script ficar automatico?
eu gostaria que ele funcionasse em todos os items que tenha o atributo (containerSize) que tenha o no nome a palavra(fainted)
do jeito que esta eu tenho que adicionar todos os itens no actions.xml e são mais de 500 items 

Parabéns, mas o conselho para resolver seus problemas ainda está de pé. 

E qual é o problema desse script?

Link para o comentário
Compartilhar em outros sites

  • 0
12 horas atrás, Poccnn disse:

Pokelixo é sempre uma bosta.

@wevertonvrb faz o seguinte: adicione isso abaixo da variavel de mesmo nome.

print(itens.uid)

 

Parabéns, mas o conselho para resolver seus problemas ainda está de pé. 

E qual é o problema desse script?

agora ele esta 100% funcionando sem erro 

porem ele esta por action e para que ele funcione eu preciso adicionar todos os ids dos corpos no actions.xml e são muito + de 500 itens 
ficando mais ou menos assim
 

Spoiler

<action itemid="11826-11837;11737-11748;10975-10977;12621-12623;12826-12831;12861-13781;13797-13823;13836-13861;13902-13904;13919-13930;13933-13935;13937-13939;14020-14022;14015-14017;14033-14035;14038-14040;14043-14045;14141-14143;14157-14159;14163-14165;14173-14175;14081-14083;14190-14192;14178-14180;14193-14195;14086-14088;14091-14093;14096-14098;14121-14123;14131-14133;14136-14138;14200-14202;14206-14208;14210-14212;14106-14108;14111-14113;14116-14118;14234-14248;14076-14078;14066-14068;14061-14063;14056-14058;14071-14073;14168-14170;14101-14103;14285-14305;14310-14318;14343-14402;14617-14925;14927-14935;14942-14944;15000-15128;15224-15232;15508-15525;2260-2280" event="script" value="goback.lua"/>
 

eu gostaria de saber se tem como adicionar algo no script para que ele funcione em todos os itens que tenha o atributo conteinerSize e a palavra fainted no nome para q eu n tenha que adicionar tantos itens no actions.xml
exemplo

 <item id="14144" article="a" name="fainted absol"> --- palavra fainted
        <attribute key="containerSize" value="10" />  ----atributo conteinerSize
        <attribute key="decayTo" value="0" />
        <attribute key="duration" value="55" />
 </item>

Editado por wevertonvrb
Link para o comentário
Compartilhar em outros sites

  • 0
2 horas atrás, Poccnn disse:

getItemAttribute(item.uid, "name"):find("fainted absol")

ok mas como eu aplico isso em uma action se tenho que registrar o id do item em actions.xml para que o script seja ativada?

isso faria o script funcionar apenas nos itens que tenha o nome no id do item já pre registrado no action.xml eu gostaria de n precisar registar nenhum id no action.xml 

queria que esse script foce automatico

talvez creaturescript n sei.

isso talvez sirva se em action.xml eu registrar de uma forma que pegue todos os itens existentes algo mais ou menos assim

<action itemid="100-19563" event="script" value="autoloot.lua"/>

acredito que talvez ate possa funcionar pois essa condição que voce passou faria ao script executar apenas nos itens que tenha a condição fainted no nome

mas tb acredito que geraria vários erros de duplicate pois varios itens entre o primeiro e o ultimo tem seus ids registrados para outras actions

Editado por wevertonvrb
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...