Ir para conteúdo

Guizek69

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Curtir
    Guizek69 recebeu reputação de Vodkart em [Ajuda] função onDeath   
    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.
    É o inverso amigo.

    O evento ativa em todas as criaturas, exceto as que estao em block list (bosses).
  2. Curtir
    Guizek69 recebeu reputação de luanluciano93 em [Ajuda] função onDeath   
    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..
    Logo minha função ficou assim:
     
    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.
     
  3. Curtir
    Guizek69 recebeu reputação de Lurk em [Ajuda] função onDeath   
    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..
    Logo minha função ficou assim:
     
    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.
     
  4. Gostei
    Guizek69 deu reputação a WooX em [Ajuda] função onDeath   
    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.
     
     
  5. Curtir
    Guizek69 recebeu reputação de fezeRa em (Resolvido)Usar potion e abrir corpos mortos/puxar ring   
    @WooX agradeço muito a ajuda!

    Meus problemas foram solucionados.
    Segue enredo para quem tem o mesmo problema para compilar:

    Vá ate a pasta de sua source e abra o arquivo Makefile
    Procure por:
     
    Substitua por:
    Isso resolve o problema da compilação.

    Após isso, você terá que adicionar exaustao a cada potion que foi adicionada a função na source.
    Vá até a pasta Actions de seu OT.
    Abra o script de cada potion adicionada e procure por:
     
    Logo abaixo, adicione:
     
    Sendo:
    23006 = storage para exaustar (fica a seu criterio, mas tem que ser o mesmo para todas as potions adicionadas)
    0.95 = tempo de exaustao (sempre em segundos! No meu caso, 0.95 milesimos de segundo)

    Boa sorte a todos,
  6. Curtir
    Guizek69 recebeu reputação de Mecianosz em Push com exhaust com outras actions   
    Nesse caso você teria que ir a fundo e pesquisar o erro apresentado no terminal para ter a certeza do que se trata, mas creio que ja estamos fugindo muito do assunto relacionado ao topico kkk
    De qualquer modo, eu nao deixaria meu "between" em 0 mesmo sendo enforced. 
    Abraços 
  7. Curtir
    Guizek69 recebeu reputação de Mecianosz em Push com exhaust com outras actions   
    Primeira coisa: Eu lhe aconselharia fortemente a não baixar o between no config.lua por que isso vai afetar muitas outras ações no servidor, nao somente as potions.
    O recomendado por grande conhecedores do assunto, é que se mantenha actions e exactions entre 1000 e 1200 para evitar dor de cabeça.
    Essa mudança é uma porta aberta para nuckers se aproveitaram de alguma brecha e derrubarem seu ot (esgotamento de memoria, por exemplo).
    Daí a necessidade de alterar somente na source e para itens especificos.
    Referente as storages, é simples: baixe algum editor de xml/lua como o notepad++ e faça uma pesquisa pelo storage desejado na pasta do seu ot.
    Ele vai mostrar se aquele storage ou numero já está sendo usado por algum outro script.
  8. Curtir
    Guizek69 recebeu reputação de Mecianosz em Push com exhaust com outras actions   
    Esqueça o config. lua nobre colega.

    Vá até a pasta actions e procure pelo script de cada potion adicionada a função na source.
    Ao encontrar, procure por:
     
    Logo abiaxo, adicione:
     
    23006 = storage da exhausted que usei (fica a seu criterio, mas tem que ser o mesmo em todas as potions)
    0.95 = tempo de exaustao (Sempre em segundos! No meu caso, 0.95 milesimos de segundo)

    Boa sorte.
  9. Curtir
    Guizek69 recebeu reputação de WooX em Push com exhaust com outras actions   
    Esqueça o config. lua nobre colega.

    Vá até a pasta actions e procure pelo script de cada potion adicionada a função na source.
    Ao encontrar, procure por:
     
    Logo abiaxo, adicione:
     
    23006 = storage da exhausted que usei (fica a seu criterio, mas tem que ser o mesmo em todas as potions)
    0.95 = tempo de exaustao (Sempre em segundos! No meu caso, 0.95 milesimos de segundo)

    Boa sorte.
  10. Curtir
    Guizek69 recebeu reputação de WooX em (Resolvido)Usar potion e abrir corpos mortos/puxar ring   
    @WooX agradeço muito a ajuda!

    Meus problemas foram solucionados.
    Segue enredo para quem tem o mesmo problema para compilar:

    Vá ate a pasta de sua source e abra o arquivo Makefile
    Procure por:
     
    Substitua por:
    Isso resolve o problema da compilação.

    Após isso, você terá que adicionar exaustao a cada potion que foi adicionada a função na source.
    Vá até a pasta Actions de seu OT.
    Abra o script de cada potion adicionada e procure por:
     
    Logo abaixo, adicione:
     
    Sendo:
    23006 = storage para exaustar (fica a seu criterio, mas tem que ser o mesmo para todas as potions adicionadas)
    0.95 = tempo de exaustao (sempre em segundos! No meu caso, 0.95 milesimos de segundo)

    Boa sorte a todos,
  11. Curtir
    Guizek69 deu reputação a WooX em (Resolvido)Usar potion e abrir corpos mortos/puxar ring   
    Procure pela função bool Actions::useItemEx e onde estiver assim:
    player->setNextActionTask(NULL); player->stopWalk(); player->setNextAction(OTSYS_TIME() + g_config.getNumber(ConfigManager::EX_ACTIONS_DELAY_INTERVAL) - SCHEDULER_MINTICKS); Altere para:
    int32_t potions[] = {7620, 7589, 7590}; // IDs potions int16_t potionID = item->getID(); if(std::find(std::begin(potions), std::end(potions), potionID) == std::end(potions)) { player->setNextAction(OTSYS_TIME() + g_config.getNumber(ConfigManager::EX_ACTIONS_DELAY_INTERVAL)); } player->stopWalk();  
    Lembrando que isso vai retirar o exausted exActions de todas os items adicionados ali, terá que ser adicionado exausted no script lua das poções.

Informação Importante

Confirmação de Termo