Ir para conteúdo

Posts Recomendados

  Em 12/06/2016 em 18:13, nociam disse:

Vc acha que pode ajudar com a solução porque não manjo muito de c++, claro se não for pedir demais.

 

achei ela em creature.cpp?

 

bool Creature::hasBeenAttacked(uint32_t attackerId) const

{

 CountMap::const_iterator it = damageMap.find(attackerId);

 if(it != damageMap.end())

  return (OTSYS_TIME() - it->second.ticks) <= g_config.getNumber(ConfigManager::PZ_LOCKED);

 
 return false;

}

Expand  

No monster.cpp no select target tu deixa assim:

    uint32_t id = creature->getID();    if(creature->getMaster() && creature->getMaster()->getPlayer())        id = creature->getMaster()->getPlayer()->getGUID();    else if(creature->getPlayer())        id = creature->getPlayer()->getGUID();    if (isPassive() && !hasBeenAttacked(id)) {            return false;    }

E o no creature.cpp no addDamagePoints tu deixa assim:

void CreatureaddDamagePoints(Creature* attacker, int32_t damagePoints){	if(damagePoints < 0)		return;	uint32_t attackerId = 0;    if(attacker){        if(attacker->getPlayer())            attackerId = attacker->getPlayer()->getGUID();        else if(attacker->getMaster() && attacker->getMaster()->getPlayer())            attackerId = attacker->getMaster()->getPlayer()->getGUID();        else            attackerId = attacker->getID();    }

 

Agora se atenta a uma coisa, quando fizer isso, ele vai sempre que houver um master e ele for um player, ou quando for um player salvar o guid. Então outros lugares que esteja usando o hasBeenAttacked deve ter essa logica também, caso contrário não irão encontrar

Link para o comentário
https://xtibia.com/forum/topic/241040-c-passive-system/page/4/#findComment-1696088
Compartilhar em outros sites

  Em 13/06/2016 em 19:00, dalvorsn disse:

No monster.cpp no select target tu deixa assim:

    uint32_t id = creature->getID();    if(creature->getMaster() && creature->getMaster()->getPlayer())        id = creature->getMaster()->getPlayer()->getGUID();    else if(creature->getPlayer())        id = creature->getPlayer()->getGUID();    if (isPassive() && !hasBeenAttacked(id)) {            return false;    }

E o no creature.cpp no addDamagePoints tu deixa assim:

void CreatureaddDamagePoints(Creature* attacker, int32_t damagePoints){	if(damagePoints < 0)		return;	uint32_t attackerId = 0;    if(attacker){        if(attacker->getPlayer())            attackerId = attacker->getPlayer()->getGUID();        else if(attacker->getMaster() && attacker->getMaster()->getPlayer())            attackerId = attacker->getMaster()->getPlayer()->getGUID();        else            attackerId = attacker->getID();    }

 

Agora se atenta a uma coisa, quando fizer isso, ele vai sempre que houver um master e ele for um player, ou quando for um player salvar o guid. Então outros lugares que esteja usando o hasBeenAttacked deve ter essa logica também, caso contrário não irão encontrar

Expand  

Nossa mano, q foda vlw ae :D

 

Recomendo o @Kilowog Atualizar o tópico, adicionei isso ao meu server e funcionou perfeitamente :D

Link para o comentário
https://xtibia.com/forum/topic/241040-c-passive-system/page/4/#findComment-1696128
Compartilhar em outros sites

  Em 13/06/2016 em 19:00, dalvorsn disse:

No monster.cpp no select target tu deixa assim:

    uint32_t id = creature->getID();    if(creature->getMaster() && creature->getMaster()->getPlayer())        id = creature->getMaster()->getPlayer()->getGUID();    else if(creature->getPlayer())        id = creature->getPlayer()->getGUID();    if (isPassive() && !hasBeenAttacked(id)) {            return false;    }

E o no creature.cpp no addDamagePoints tu deixa assim:

void CreatureaddDamagePoints(Creature* attacker, int32_t damagePoints){	if(damagePoints < 0)		return;	uint32_t attackerId = 0;    if(attacker){        if(attacker->getPlayer())            attackerId = attacker->getPlayer()->getGUID();        else if(attacker->getMaster() && attacker->getMaster()->getPlayer())            attackerId = attacker->getMaster()->getPlayer()->getGUID();        else            attackerId = attacker->getID();    }

 

Agora se atenta a uma coisa, quando fizer isso, ele vai sempre que houver um master e ele for um player, ou quando for um player salvar o guid. Então outros lugares que esteja usando o hasBeenAttacked deve ter essa logica também, caso contrário não irão encontrar

Expand  

Bom, eu ia comentar para ter um concerto nessa parte, porém vi o seu, mas vou dar outra idéia de como fazer isso, que foi na forma que eu fiz o meu.

Você pode fazer no selectTarget (assim como pede o código citado), e verificar se o target escolhido pelo monstro possui um summon, caso sim, retornar ao summon 0 (no caso, primeiro) da tabela de summons.

 

O Código fica mais simples kkkk, porém, só a minha idéia ^^

Link para o comentário
https://xtibia.com/forum/topic/241040-c-passive-system/page/4/#findComment-1696143
Compartilhar em outros sites

  Em 13/06/2016 em 19:00, dalvorsn disse:

No monster.cpp no select target tu deixa assim:

    uint32_t id = creature->getID();    if(creature->getMaster() && creature->getMaster()->getPlayer())        id = creature->getMaster()->getPlayer()->getGUID();    else if(creature->getPlayer())        id = creature->getPlayer()->getGUID();    if (isPassive() && !hasBeenAttacked(id)) {            return false;    }

E o no creature.cpp no addDamagePoints tu deixa assim:

void CreatureaddDamagePoints(Creature* attacker, int32_t damagePoints){	if(damagePoints < 0)		return;	uint32_t attackerId = 0;    if(attacker){        if(attacker->getPlayer())            attackerId = attacker->getPlayer()->getGUID();        else if(attacker->getMaster() && attacker->getMaster()->getPlayer())            attackerId = attacker->getMaster()->getPlayer()->getGUID();        else            attackerId = attacker->getID();    }

 

Agora se atenta a uma coisa, quando fizer isso, ele vai sempre que houver um master e ele for um player, ou quando for um player salvar o guid. Então outros lugares que esteja usando o hasBeenAttacked deve ter essa logica também, caso contrário não irão encontrar

Expand  

Não sei o que fiz de errado mais não foi o pokemon nao sei do passive eterno

 

monster.cpp

 

  Mostrar conteúdo oculto

 

creature.cpp

 

  Mostrar conteúdo oculto

 

xml

  Mostrar conteúdo oculto

 

Editado por nociam
Link para o comentário
https://xtibia.com/forum/topic/241040-c-passive-system/page/4/#findComment-1696149
Compartilhar em outros sites

Ahh, daolvorson, isso meio q bugou o sistema de loot, percebi que o player n estava mais enviando a msg, então quando fui printar a tabela de deathlist do onDeath, diz q quem matou o pokemon foi o "fire", e eu estava usando magia de tipo fire... mas antes eu usava essa magia eu e recebia o loot normal...

Link para o comentário
https://xtibia.com/forum/topic/241040-c-passive-system/page/4/#findComment-1696178
Compartilhar em outros sites

  Em 13/06/2016 em 19:00, dalvorsn disse:

No monster.cpp no select target tu deixa assim:

    uint32_t id = creature->getID();    if(creature->getMaster() && creature->getMaster()->getPlayer())        id = creature->getMaster()->getPlayer()->getGUID();    else if(creature->getPlayer())        id = creature->getPlayer()->getGUID();    if (isPassive() && !hasBeenAttacked(id)) {            return false;    }

E o no creature.cpp no addDamagePoints tu deixa assim:

void CreatureaddDamagePoints(Creature* attacker, int32_t damagePoints){	if(damagePoints < 0)		return;	uint32_t attackerId = 0;    if(attacker){        if(attacker->getPlayer())            attackerId = attacker->getPlayer()->getGUID();        else if(attacker->getMaster() && attacker->getMaster()->getPlayer())            attackerId = attacker->getMaster()->getPlayer()->getGUID();        else            attackerId = attacker->getID();    }

 

Agora se atenta a uma coisa, quando fizer isso, ele vai sempre que houver um master e ele for um player, ou quando for um player salvar o guid. Então outros lugares que esteja usando o hasBeenAttacked deve ter essa logica também, caso contrário não irão encontrar

Expand  

 

Opa, muito obrigado amigo. Tinha reparado nisso ao testar melhor, só que fiquei sem tempo essa semana para ver como iria corrigir, mas acho que não faria melhor. Vou editar o tópico e colocar os devidos créditos =):

  Em 13/06/2016 em 15:50, Ceetros disse:

Posto aqui só com devida permissão da administração/criado do topico.

Expand  

Pode postar amigo, sem problema nenhum. O importante é o bem da comunidade =):

Link para o comentário
https://xtibia.com/forum/topic/241040-c-passive-system/page/4/#findComment-1696181
Compartilhar em outros sites

  Em 14/06/2016 em 12:12, Kilowog disse:

 

Opa, muito obrigado amigo. Tinha reparado nisso ao testar melhor, só que fiquei sem tempo essa semana para ver como iria corrigir, mas acho que não faria melhor. Vou editar o tópico e colocar os devidos créditos =):

Pode postar amigo, sem problema nenhum. O importante é o bem da comunidade =):

Expand  

Lembrando que o code do Dalvorso está bugando o Loot System, pois ele está pegando o creature id diferente do nescessário para adicionar no corpse owner, dai não envia a mensagem para o player que matou

Link para o comentário
https://xtibia.com/forum/topic/241040-c-passive-system/page/4/#findComment-1696186
Compartilhar em outros sites

  Em 14/06/2016 em 12:35, Drazyn1291 disse:

Lembrando que o code do Dalvorso está bugando o Loot System, pois ele está pegando o creature id diferente do nescessário para adicionar no corpse owner, dai não envia a mensagem para o player que matou

Expand  

 

Posta o código do AutoLoot. Acredito que seja melhor atacar o problema do autoloot, já que é só alterar o servidor e não a source.

Link para o comentário
https://xtibia.com/forum/topic/241040-c-passive-system/page/4/#findComment-1696187
Compartilhar em outros sites

  Em 14/06/2016 em 12:39, Kilowog disse:

 

Posta o código do AutoLoot. Acredito que seja melhor atacar o problema do autoloot, já que é só alterar o servidor e não a source.

Expand  

Autoloot? Não carinha, você não entendeu, o Loot mesmo, que envia mensagem com os nome dos itemids etc, não está chegando, testei o onDeath, o deathList está retornando uma tabela com o elemento da spell e uso e não o cid do player '-'

 

 

Além disso, sem o onDeath funcionando corretamente iria acarreta vários problemas...

 

Obs: Não uso o DXP não!

Editado por Drazyn1291
Link para o comentário
https://xtibia.com/forum/topic/241040-c-passive-system/page/4/#findComment-1696189
Compartilhar em outros sites

  Em 14/06/2016 em 12:42, Drazyn1291 disse:

Autoloot? Não carinha, você não entendeu, o Loot mesmo, que envia mensagem com os nome dos itemids etc, não está chegando, testei o onDeath, o deathList está retornando uma tabela com o elemento da spell e uso e não o cid do player '-'

Expand  

 

Há kkkkk Saquei, só tenho como pegar em código a noite, mas no código do Dalvorso, deixe de fora as alterações esta alteração:

void CreatureaddDamagePoints(Creature* attacker, int32_t damagePoints){	if(damagePoints < 0)		return;	uint32_t attackerId = 0;    if(attacker){        if(attacker->getPlayer())            attackerId = attacker->getPlayer()->getGUID();        else if(attacker->getMaster() && attacker->getMaster()->getPlayer())            attackerId = attacker->getMaster()->getPlayer()->getGUID();        else            attackerId = attacker->getID();    }

 

Ver ai.

 

Editado por Kilowog
Link para o comentário
https://xtibia.com/forum/topic/241040-c-passive-system/page/4/#findComment-1696192
Compartilhar em outros sites

  Em 14/06/2016 em 12:47, Kilowog disse:

 

Há kkkkk Saquei, só tenhoc omo pegar em código a noite, mas no código do Dalvorso, deixe de fora as alterações esta alteração:

void CreatureaddDamagePoints(Creature* attacker, int32_t damagePoints){	if(damagePoints < 0)		return;	uint32_t attackerId = 0;    if(attacker){        if(attacker->getPlayer())            attackerId = attacker->getPlayer()->getGUID();        else if(attacker->getMaster() && attacker->getMaster()->getPlayer())            attackerId = attacker->getMaster()->getPlayer()->getGUID();        else            attackerId = attacker->getID();    }

 

Ver ai.

 

Expand  

Fiz isso, agora o monster nem atacando está mais, e o loot message voltou!

Editado por Drazyn1291
Link para o comentário
https://xtibia.com/forum/topic/241040-c-passive-system/page/4/#findComment-1696195
Compartilhar em outros sites

  Em 14/06/2016 em 13:03, Drazyn1291 disse:

Fiz isso, agora nem atacando está mais o summon

Expand  

 

Vou ver com calma hoje a noite e posto se consigo algo. Provavelmente tem que fazer uma cadeia de if igual foi feita, só que no LootSystem.

Link para o comentário
https://xtibia.com/forum/topic/241040-c-passive-system/page/4/#findComment-1696196
Compartilhar em outros sites

  Em 14/06/2016 em 13:05, Kilowog disse:

 

Vou ver com calma hoje a noite e posto se consigo algo. Provavelmente tem que fazer uma cadeia de if igual foi feita, só que no LootSystem.

Expand  

ceetros pode postar a versão 0.3.6?

Link para o comentário
https://xtibia.com/forum/topic/241040-c-passive-system/page/4/#findComment-1696206
Compartilhar em outros sites

×
×
  • Criar Novo...