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
14 horas atrás, wevertonvrb disse:

talvez uma creaturescript

 

pode ser, não sei se entendi direito...

mas você pode criar uma creaturescript para adicionar uma uniqueid ou actionid, em todo corpse..

e em action colocar a tag com a mesm actionid que é adicionado nos corpse, e dentro do codigo lua a condição do nome... 

 

entendeu?

Link para o comentário
Compartilhar em outros sites

  • 0
7 horas atrás, Ed'Specter disse:

 

pode ser, não sei se entendi direito...

mas você pode criar uma creaturescript para adicionar uma uniqueid ou actionid, em todo corpse..

e em action colocar a tag com a mesm actionid que é adicionado nos corpse, e dentro do codigo lua a condição do nome... 

 

entendeu?

sim entendi mas não tenho conhecimento suficiente para criar tal script

Link para o comentário
Compartilhar em outros sites

  • 0
Em 26/04/2017 at 17:29, wevertonvrb disse:

sim entendi mas não tenho conhecimento suficiente para criar tal script

 

function onDeath(cid, corpse, deathList)  if corpse.uid > 0 then    doItemSetAttribute(corpse.uid, "aid", 12526)  endreturn trueend

fiz essa base pra você, coloca em creaturescripts

e em action coloca a mesma action id que está ai na parte

doItemSetAttribute(corpse.uid, "aid", 12526)

se quiser pode mudar.

Link para o comentário
Compartilhar em outros sites

  • 0
13 horas atrás, Ed'Specter disse:

 

function onDeath(cid, corpse, deathList)  if corpse.uid > 0 then    doItemSetAttribute(corpse.uid, "aid", 12526)  endreturn trueend

fiz essa base pra você, coloca em creaturescripts

e em action coloca a mesma action id que está ai na parte

doItemSetAttribute(corpse.uid, "aid", 12526)

se quiser pode mudar.

ok entendido mas surgiu uma duvida

 eu tenho q adicionar essa tag em todos os corpos??

<attribute key="corpseType" value="blood" />

pois os corpos dos pokes não tem isso 

<item id="9867" article="a" name="fainted magcargo">

        <attribute key="containerSize" value="10" />

        <attribute key="decayTo" value="0" />

        <attribute key="duration" value="55" />

    </item>

oque faz o corpo ser identificado como corpo é a palavra fainted no nome

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

  • 0
Em 28/04/2017 at 18:55, wevertonvrb disse:

ok entendido mas surgiu uma duvida

 eu tenho q adicionar essa tag em todos os corpos??

<attribute key="corpseType" value="blood" />

pois os corpos dos pokes não tem isso 

<item id="9867" article="a" name="fainted magcargo">

        <attribute key="containerSize" value="10" />

        <attribute key="decayTo" value="0" />

        <attribute key="duration" value="55" />

    </item>

oque faz o corpo ser identificado como corpo é a palavra fainted no nome

 

não mano, nem sei da onde você tirou essa tag..

esse script ai que respondi, vai adicionar uma actionid para todo corpse 

e em actions vc usa o mesmo actionid para rodar o script..

não estou mais entendendo oq vc quer

Link para o comentário
Compartilhar em outros sites

  • 0
Em 03/05/2017 at 10:52, Ed'Specter disse:

 

não mano, nem sei da onde você tirou essa tag..

esse script ai que respondi, vai adicionar uma actionid para todo corpse 

e em actions vc usa o mesmo actionid para rodar o script..

não estou mais entendendo oq vc quer

desisto, n estou conseguindo Man o script q tu passou n funcionou de nenhuma forma também n gerou erro

eu queria que esse script funcionasse em todos os corpos ou items que tenha a palavra fainted no nome

sem a necessidade de fazer algo assim no action.xml

 

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="script.lua"/>

 

sim eu quero que eles funcionem em corpos mas como eu defino se o item é um corpo ou não?

como o script vai saber definir se o item é um corpo??

aquela tag eu tirei no item.xml

<item id="7926" article="a" name="dead troll champion">

        <attribute key="containerSize" value="10" />

        <attribute key="decayTo" value="7927" />

        <attribute key="duration" value="10" />

        <attribute key="corpseType" value="blood" />

        <attribute key="fluidSource" value="blood" />

    </item>

 

o meu corpo não tem essa tag em outra paravras os corpos do meu é como se foce uma backpack com decay & oque define se é corpo é a palavra fainted no nome

a não ser que o xml do monstro registre o item como corpise

<item id="9867" article="a" name="fainted magcargo">
        <attribute key="containerSize" value="10" />
        <attribute key="decayTo" value="0" />
        <attribute key="duration" value="55" />
    </item>

 

o script que voce me passou não funcionou nem deu erro

em um outro script tenho isso

if getTopCorpse(topos) == null then 

return true

end

talvez sirva para algo

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

  • 0
53 minutos atrás, wevertonvrb disse:

desisto, n estou conseguindo Man

Desistir é para os fracos, os fortes vão a luta.

 

Tu já testou o script que o ed postou?

Link para o comentário
Compartilhar em outros sites

  • 0
Em 03/05/2017 at 21:57, wevertonvrb disse:

 

sim testei mas não acontece nada, sem erro tambem

 

o script que eu te enviei é em creaturesctips, você colocou a tag em creaturescripts.xml e registro em onlogin?

pq dessa forma ai, com o script que te postei, todo player ou monster que morrer, ao criar o corpse, o script vai adicionar uma actionid no corpse.

dai você só vai ter que colocar essa actionid em action.xml e pronto..

 

entendeu?

Link para o comentário
Compartilhar em outros sites

  • 0
Em 03/05/2017 at 21:14, Poccnn disse:

Desistir é para os fracos, os fortes vão a luta.

 

Tu já testou o script que o ed postou?

sim testei mas não acontece nada, sem erro tambem

Agora, Ed'Specter disse:

 

o script que eu te enviei é em creaturesctips, você colocou a tag em creaturescripts.xml e registro em onlogin?

pq dessa forma ai, com o script que te postei, todo player ou monster que morrer, ao criar o corpse, o script vai adicionar uma actionid no corpse.

dai você só vai ter que colocar essa actionid em action.xml e pronto..

 

entendeu?

sim fiz tudo isso aee e não deu erro mas também n funcionou

Link para o comentário
Compartilhar em outros sites

  • 0
Agora, wevertonvrb disse:

sim testei mas não acontece nada, sem erro tambem

sim fiz tudo isso aee e não deu erro mas também n funcionou

 

é pokemon né?

 

talvez o parametro corpse não retorne nada ;s

vamos para os teste..

quando alguém morre, e o corpse ta no chão, vc da look com o god e não tem nenhuma actionid no corpse? o correto é aparecer a actionid

 

substitui por esse...

function onDeath(cid, corpse, deathList)print("morreu")  if corpse.uid > 0 then	print("entrou no if do corpse")    doItemSetAttribute(corpse.uid, "aid", 12526)  endreturn trueend

e vê oq printa na distro quando alguém morre

Link para o comentário
Compartilhar em outros sites

  • 0
21 horas atrás, Ed'Specter disse:

 

é pokemon né?

 

talvez o parametro corpse não retorne nada ;s

vamos para os teste..

quando alguém morre, e o corpse ta no chão, vc da look com o god e não tem nenhuma actionid no corpse? o correto é aparecer a actionid

 

substitui por esse...

function onDeath(cid, corpse, deathList)print("morreu")  if corpse.uid > 0 then	print("entrou no if do corpse")    doItemSetAttribute(corpse.uid, "aid", 12526)  endreturn trueend

e vê oq printa na distro quando alguém morre

não printou nada na distro

em creaturescript

<event type="death" name="autoloot" event="script" value="autoloot.lua"/> 

autoloot.lua

Spoiler

function onDeath(cid, corpse, deathList)

print("morreu")

  if corpse.uid > 0 then

    print("entrou no if do corpse")

    doItemSetAttribute(corpse.uid, "aid", 12526)

  end

return true

end

em loguin.lua

registerCreatureEvent(cid, "autoloot")

 

em actions.xml

<action actionid="12526" event="script" value="autoloot.lua"/>

 

 

OBS: essa função é usada para verificar se é um corpse

 

Spoiler

function getTopCorpse(position)

local pos = position

for n = 1, 255 do

    pos.stackpos = n

    local item = getTileThingByPos(pos)

    if item.itemid >= 2 and (string.find(getItemNameById(item.itemid), "fainted ") or string.find(getItemNameById(item.itemid), "defeated ")) then

       return getTileThingByPos(pos)

    end

end

return null

end

 

 

 

 

quando morre um player

22:58 You see a dead human. (Vol:10).

ItemID: [3058]

Position: [X: 990][Y: 1042][Z: 7]

 

quando morre um monstro

22:57 You see a fainted abra. (Vol: 10) It is genderless.

23:00 You see a fainted kadabra. (Vol: 10)

It is genderless.

 

acredito q seria melhor adicionar essa aid em todos os itens que tenha a palavra fainted no nome pois o catch funciona assim

 

isso esta presente no catch

local name = string.lower(getItemNameById(item2.itemid))

      name = string.gsub(name, "fainted ", "")

      name = string.gsub(name, "defeated ", "")

      name = doCorrectPokemonName(name)

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

  • 0
16 horas atrás, wevertonvrb disse:

 

em creaturescript

<action actionid="12526" event="script" value="autoloot.lua"/>

 

Eu entendi errado ou você colocou a mesma tag do xml da action em creaturescript? :AreYouSerious-min:

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...