Ir para conteúdo

Featured Replies

Postado

Bom galera aí vai minha duvida:

Utilizo atualmente um TFS 0.4 e implantei o AUTO LOOT recentemente.
Fiz diversas modificações e agora esse sistema me atende.

Porem, há um problema - Ele assim como outros do mercado, trabalha com essa função onDeath:
 

Citar

function onDeath(cid, corpse, deathList)
local killer,pos = deathList[1],getCreaturePosition(cid)
addEvent(loot,1,killer,pos)
return true
end


Isso faz com que o jogador a dar o ultimo hit na criatura fique com o loot da lista, mesmo que nao seja o "dono do corpo morto" ou corpseOwner.


Obviamente nem preciso dizer que isso esta errado e vai gerar muitos problemas no meu servidor.

A questao é: existe alguma função no TFS 0.4 que verifica o dono do corpo morto para eu implantar uma regra nessa função? Ou entao que diga o jogador que deu mais dano e apenas ele possa "lootear"?!

Aguardo amigos.

@WooX

  • Respostas 14
  • Visualizações 1.2k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • 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 = lastHitKil

  • 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ên

  • 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

Postado

@Guizek69 do mesmo jeito q existe a função do cara não poder abrir o corpo de um bixo q ele n matou vc deve poder implementar isso no script tb, eu lembro q tinha visto aqui no tibiaking um post de um cara ensinando como ver todas as funcoes do seu tfs, mas enfim, provavelmente nas suas sources deve ter algo relacionado a owner, vc vai ter q transformar isso em função lua (caso já não exista) e dai adicionar no seu script, tipo um if not isOwner(cid) then return false end

Postado
  • Autor

Na source, a função em actions.cpp é essa:
 

Citar

Line 523:         if(container->getCorpseOwner() && !player->canOpenCorpse(container->getCorpseOwner())
    Line 523:         if(container->getCorpseOwner() && !player->canOpenCorpse(container->getCorpseOwner())
    Line 524:             && g_config.getBool(ConfigManager::CHECK_CORPSE_OWNER))
    Line 525:             return RET_YOUARENOTTHEOWNER;
    Line 599:         creatureId) || action->hasOwnErrorHandler());

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.

Postado

@Guizek69 n sei nada de tfs 1.x mas acho que eh convertível sim, vc provavelmente já tentou mas ainda assim vale apontar, tenta colocar esse getCorpseOwner() no seu script e ve se resolve

Postado

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

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

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Conteúdo Similar

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo