Ir para conteúdo

[c++] passive system


Posts Recomendados

1 hora atrás, boxxer321 disse:

ceetros pode postar a versão 0.3.6?

Pode sim, sem problema nenhum. A ideia do topico é ajudar a todos, não ganhar +rep.

Link para o comentário
Compartilhar em outros sites

Eu alertei que ocorreriam problemas por usar o guid, o deathlist passou a salvar o guid ao invez do uid, logicamente onde mais ele acessa deve tentar encontrar pelo uid alternativamente. Para fazer sem ser assim, teria que criar um outro array, talvez seja até mais trabalhoso.

Link para o comentário
Compartilhar em outros sites

11 minutos atrás, dalvorsn disse:

Eu alertei que ocorreriam problemas por usar o guid, o deathlist passou a salvar o guid ao invez do uid, logicamente onde mais ele acessa deve tentar encontrar pelo uid alternativamente. Para fazer sem ser assim, teria que criar um outro array, talvez seja até mais trabalhoso.

 

em vez de usar o guid será que não consigo usar o uid não? No função do target ou do addDamage?

Link para o comentário
Compartilhar em outros sites

8 minutes ago, Kilowog said:

 

em vez de usar o guid será que não consigo usar o uid não? No função do target ou do addDamage?

Não adiantaria, porque o uid é temporario, quando o player deslogar esse uid perde referencia.

Link para o comentário
Compartilhar em outros sites

Agora, dalvorsn disse:

Não adiantaria, porque o uid é temporario, quando o player deslogar esse uid perde referencia.

 

Mas ele só deslogaria quando saisse de Battle não? Come seria a ideia da lista?

Link para o comentário
Compartilhar em outros sites

Just now, Kilowog said:

 

Mas ele só deslogaria quando saisse de Battle não? Come seria a ideia da lista?

A lista permanece enquanto o monstro estiver vivo, te dar um exemplo de algo que aconteceria, se eu ataco o pokemon e corro, espero o battle e deslogo, e eu volto perto dele novamente, ele ja nao vai mais reconhecer que esse player atacou ele porque ele relogou. Caso ele morra aconteceria a mesma coisa.

Se isso que foi citado acima não é problema, então basta modificar para:

 

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

 

e

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

 

Link para o comentário
Compartilhar em outros sites

2 minutos atrás, dalvorsn disse:

A lista permanece enquanto o monstro estiver vivo, te dar um exemplo de algo que aconteceria, se eu ataco o pokemon e corro, espero o battle e deslogo, e eu volto perto dele novamente, ele ja nao vai mais reconhecer que esse player atacou ele porque ele relogou. Caso ele morra aconteceria a mesma coisa.

Se isso que foi citado acima não é problema, então basta modificar para:

 

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

 

e

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

 

Entendi, seria como eu pretendia fazer inicialmente quando vi o problema, com lista.

Porém meu conhecimento é bom em Java e não tanto em C++, são linguagens parecidas porém as lib são diferentes. Vou dá uma estudada nesse conceito da lista e ver o que consigo fazer, mas sua solução é uma boa também.

Link para o comentário
Compartilhar em outros sites

  • Diretor
6 minutos atrás, dalvorsn disse:

A lista permanece enquanto o monstro estiver vivo, te dar um exemplo de algo que aconteceria, se eu ataco o pokemon e corro, espero o battle e deslogo, e eu volto perto dele novamente, ele ja nao vai mais reconhecer que esse player atacou ele porque ele relogou. Caso ele morra aconteceria a mesma coisa.

Se isso que foi citado acima não é problema, então basta modificar para:

 

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

 

e

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

 

 

Como isso seria um problema? na verdade esse seria o modo correto, na minha opinião é bem melhor.

Link para o comentário
Compartilhar em outros sites

5 minutes ago, Kilowog said:

@dalvorsn eu consigo pegar um uid pelo guid? Digamos, tem uma função facil que dá isso e tal?

Sim, facilmente.

 

C++

g_game.getPlayerByGUID(guid)

Lua

getPlayerByGUID(guid)

 

Editado por dalvorsn
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...