Postado Julho 19, 2020 4 anos Autor 1 hora atrás, Tottin disse: Se você quer trabalhar somente com o player que pegou o loot você pode utilizar a função da seguinte forma: function onDeath(cid, corpse, lastHitKiller, mostDamageKiller) local killer = lastHitKiller[1] --- a atribuição em uma variável do player que pegou o frag é totalmente opcional. Dai caso queira realizar alguma ação em cima desse player pode fazer da seguinte forma: if isPlayer(killer) then --- Não lembro ao certo se tem monstros entram na lista (lastHitKiller) então só por precaução eu recomendaria fazer uma checagem se quem fragou é 1 player. doPlayerAddItem(killer, 13981, 1) end O problema é exatamente esse. O auto loot nao avalia todos os jogadores que participaram no combate para x criatura. Ele determina que o loot é de quem deu o ultimo hit e acabou. Se EU der 99% do dano em um dl e alguem der hit kill e dropar dsm: EU fico como dono do corpo, mas o a dsm é retirada automaticamente pelo sistema e concedida ao jogador do "ks". Por isso preciso de uma função que determine se sou ou nao o dono do corpo ou se sou ou nao quem deu mais dano para dai proceder com todo o resto.
Postado Julho 19, 2020 4 anos Meu querido, eu acabei de te mandar exatamente isso, ele vai enviar o loot pra quem fragou o monstro. Se o jogo te reconheceu como "dono do loot" então o loot vai ser enviado pra você, Vou ser gente boa e vou montar a função pra tu. Isso possivelmente vai resolver o seu problema, se não funcionar, então seu servidor reconhece o "dono do loot" de outra forma. Seria interessante descobrir qual.function onDeath(cid, corpse, lastHitKiller, mostDamageKiller) local killer = lastHitKiller[1]pos = getCreaturePosition(cid)addEvent(loot,1,killer,pos)return trueend
Postado Julho 19, 2020 4 anos Autor 4 minutos atrás, Tottin disse: Meu querido, eu acabei de te mandar exatamente isso, ele vai enviar o loot pra quem fragou o monstro. Se o jogo te reconheceu como "dono do loot" então o loot vai ser enviado pra você, Vou ser gente boa e vou montar a função pra tu. Isso possivelmente vai resolver o seu problema, se não funcionar, então seu servidor reconhece o "dono do loot" de outra forma. Seria interessante descobrir qual.function onDeath(cid, corpse, lastHitKiller, mostDamageKiller) local killer = lastHitKiller[1]pos = getCreaturePosition(cid)addEvent(loot,1,killer,pos)return trueend O corpseOwner para criaturas é sempre quem deu mais dano em tal, nao quem deu o hit final. Acho que esta confundindo com o frag player system.
Postado Julho 19, 2020 4 anos É, bem provável que eu esteja confundindo, são sistemas "bem similares" né, mas td bem.
Postado Julho 19, 2020 4 anos 7 horas atrás, Guizek69 disse: existe alguma função no TFS 0.4 que verifica o dono do corpo morto para eu implantar uma regra nessa função? A resposta é não, pelo menos não uma função Lua. 4 horas atrás, Guizek69 disse: Encontrei uma função lua para TFS 1.2 feita pelo @luanluciano93: Citar local corpse = Tile(target:getPosition()):getTopDownItem() if not corpse or not corpse:isContainer() then return false end if corpse:getType():isCorpse() and corpse:getAttribute(ITEM_ATTRIBUTE_CORPSEOWNER) == player:getId() then return true end Vou tentar converter para TFS 0.4. Se alguem puder ajudar, eu agradeço. Tenta buscar pelo atributo "corpseowner" com a função getItemAttribute, pode ser que funcione. 2 horas atrás, Tottin disse: function onDeath(cid, corpse, lastHitKiller, mostDamageKiller) 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. Editado Julho 19, 2020 4 anos por WooX (veja o histórico de edições) Nós somos aquilo que fazemos repetidamente. Excelência, não é um modo de agir, mas um hábito. Aristóteles
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.