Postado Julho 20, 2020 4 anos Autor Em 19/07/2020 em 19:45, WooX disse: A resposta é não, pelo menos não uma função Lua. Tenta buscar pelo atributo "corpseowner" com a função getItemAttribute, pode ser que funcione. Eu não me recordo da existência dos parâmetros lastHitKiller e mostDamageKiller, pelo menos não no TFS 0.4. Mas se o callback realmente retornar estes valores, a solução pro problema ta ai, só utilizar o mostDamageKiller que vai retornar quem deu mais dano. Edit: me lembrei que um conhecido estava passando por este mesmo problema a algum tempo atrás, eu cheguei a postar a solução que ele encontrou em outro tópico, pode dar uma olhada. A solução foi MUITO mais simples do que eu pensei, agradeço a ajuda de todos vocês, vocês são fod@!! Segue enredo: A função onDeath tem duas matrizes: lastHitKiller e mostDamageKiller. Quando voce usa deathList[1] aplica-se a matriz lastHitKiller, o jogador que causou o hit kill. Quando voce usa deathList[2] aplica-se a matriz mostDamageKiller ou seja, o maior causador de dano. Na onPrepareDeath, mesma regra etc.. Citar function onPrepareDeath(cid, deathList) lastHitKiller = deathList[1] mostDamageKiller = deathList[2] Logo minha função ficou assim: Citar function onDeath(cid, corpse, deathList) local killer1 = deathList[1] local killer2 = deathList[2] local pos = getCreaturePosition(cid) if killer2 == nil then addEvent(corpseRetireItems,1,killer1,pos) else addEvent(corpseRetireItems,1,killer2,pos) end return true end Vale a pena lembrar que voce deve criar verificaçoes basicas como if isPlayer(cid) and isMonster(target). No meu caso, nao foi necessario porque a verificação é feita num evento "combat" e ele joga os players determinado para o onDeath. RESOLVIDO. Editado Julho 22, 2020 4 anos por Guizek69 info (veja o histórico de edições)
Postado Julho 23, 2020 4 anos Era mais facil fazer uma tabela que não executasse nesse tipo de boss... BlockMonsters = {"Demon","Hydra"} -- nome dos mobs if isMonster(cid) and not isInArray(BlockMonsters, getCreatureName(cid)) then -- sua função do autoLoot end [*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*] DISCORD: vodkart#6090
Postado Julho 23, 2020 4 anos Mas se o evento onDeath só ativa em monstros cujo tiveram a tag da script registrada (me corrija se eu estiver errado), não seria 1 tanto quanto desnecessário adicionar uma checagem pra ver se o monstro morto deve ou não ativar a script de autoloot, sendo que bastaria não registrar a tag nos monstros que você não quer que ative a script. Claro que a situação mudaria se a função fosse de onKill.
Postado Julho 23, 2020 4 anos Autor 22 minutos atrás, Vodkart disse: Era mais facil fazer uma tabela que não executasse nesse tipo de boss... BlockMonsters = {"Demon","Hydra"} -- nome dos mobs if isMonster(cid) and not isInArray(BlockMonsters, getCreatureName(cid)) then -- sua função do autoLoot end Olá grande mestre! Perdoe-me minha ignorancia, mas nao entendi bem sua colocação. Meu problema não está relacionado a criatura x ou y e sim ao fato do lastHitKiller ficar com o loot da tabela mesmo se desse apenas 1 de dano em determinada criatura. Sendo assim, ele não seria o dono do corpo morto mas ficaria com o loot "rare" de outro consequentemente. Isso é resolvido buscando a matriz deathList[2] no onDeath - que certifica de dar o loot ao jogador certo ( o que deu mais dano ). Ficou 100% perfeito agora. 7 minutos atrás, Tottin disse: Mas se o evento onDeath só ativa em monstros cujo tiveram a tag da script registrada (me corrija se eu estiver errado), não seria 1 tanto quanto desnecessário adicionar uma checagem pra ver se o monstro morto deve ou não ativar a script de autoloot, sendo que bastaria não registrar a tag nos monstros que você não quer que ative a script. Claro que a situação mudaria se a função fosse de onKill. É o inverso amigo. O evento ativa em todas as criaturas, exceto as que estao em block list (bosses).
Postado Julho 24, 2020 4 anos @Guizek69 Ah, entendi o que quis dizer!! Desculpa amigo, abraços! [*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*] DISCORD: vodkart#6090
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.