KI

[c++] passive system

Por Kilowog, 10 de jun. de 2016 em Linguagens de Programação

tfs 0.4
147
18.2k
RefeR
12 de junho de 2016 às 11:08
12 minutos atrás, Drazyn1291 disse:

Testei em TFS 0.4, compilou normalmente e está funcionando quase perfeitamente! Só está com um problema,

 

Tipo, se ele for passivo, só te ataca se tu atacar ele

Dai em ots de pokemon, a gente ataca com o summon, dai se a gente ataca o bixo com summon e depois puxa ele (remove) e coloca ele denovo (adicionar outro summon), pra os players não fazem diferença isso de "remover e adicionar" mas para o monsters eles pega o cid do monster, e toda vez que remove e adiciona denovo, cria um cid diferente, dai é como se não tive-se atacada o monster, tlg? dai eu acho que seria melhor, pra tipo, registrar no monster que é passivo, o cid do player e não do summon, se não iria acontecer isso que expliquei

 

Entendeu? Tenta fazer essa modificação ae :D

Vou mudar aqui e te envio, ok ? :}

(Para te ajudar antes do cara entrar)

Editado Junho 12 por Danny0

boxxer321B
12 de junho de 2016 às 11:48
57 minutos atrás, Ceetros disse:

Valeu mano, dei uma adaptada para 0.3.6.

 

Quer créditos no meu servidor ? :P:

faz uma adaptação pra 0.3.6 ai :D

RefeR
12 de junho de 2016 às 11:49
Agora, boxxer321 disse:

faz uma adaptação pra 0.3.6 ai :D

Já fiz, agora tô tentando resolver um problema para ele pegar o GUID do player e não o ID do monstro.

boxxer321B
12 de junho de 2016 às 11:50
Agora, Ceetros disse:

Já fiz, agora tô tentando resolver um problema para ele pegar o GUID do player e não o ID do monstro.

ahh ta.. vc vai fazer um disponibilizar ?

RefeR
12 de junho de 2016 às 11:57

Talvez eu faça.

boxxer321B
12 de junho de 2016 às 12:02
4 minutos atrás, Ceetros disse:

Talvez eu faça.

beleza, ve ai! é um sistema q todos nós precisamos 

 

nociamN
12 de junho de 2016 às 12:05
15 minutos atrás, Ceetros disse:

Já fiz, agora tô tentando resolver um problema para ele pegar o GUID do player e não o ID do monstro.

tb to com esse erro.

dalvorsnD
12 de junho de 2016 às 13:18
1 hour ago, nociam said:

tb to com esse erro.

E so criar uma similar ao hasBeenAttacked porem tu tem que usar outro nome pra saber que é o guid que ta sendo passado como param

RefeR
12 de junho de 2016 às 13:59
38 minutos atrás, dalvorsn disse:

E so criar uma similar ao hasBeenAttacked porem tu tem que usar outro nome pra saber que é o guid que ta sendo passado como param

 

Eu consegui fazer, mas ele dá erro no luascripts.cpp, dizendo que não tem "target" em isTarget

Luga03L
12 de junho de 2016 às 14:02
1 minuto atrás, Ceetros disse:

 

Eu consegui fazer, mas ele dá erro no luascripts.cpp, dizendo que não tem "target" em isTarget

Sim eu fui tentar fazer e percebi, tem que por na função que seta target tipo, assim que o summon atacar o monster, registrar o guid do player no targetList do monster

Luga03L
12 de junho de 2016 às 14:03

Vai no privado do fb pra te falar oq eu consegui fazer

nociamN
12 de junho de 2016 às 15:13
1 hora atrás, dalvorsn disse:

E so criar uma similar ao hasBeenAttacked porem tu tem que usar outro nome pra saber que é o guid que ta sendo passado como param

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;

}

Editado Junho 12 por nociam

JosegvbJ
12 de junho de 2016 às 15:48

tomara que o autor do topico volte aki e ajude nos ja que, quem tem conhecimento em c++ duvido ajudar os outros ^^ aguardando por você @Kilowog 

RefeR
13 de junho de 2016 às 12:43

PARA PEGAR O ID DO MASTER:

Monster.cpp:

Vai ter uma parte parecida com essa, não lembro como é, deixa assim:

 

if((isHostile() || isSummon() || isTarget(creature) && !isSummon() && isPassive()) && setAttackedCreature(creature) && !isSummon())		Dispatcher::getInstance().addTask(createTask(			boost::bind(&Game::checkCreatureAttack, &g_game, getID() && creature->getMaster())));

 

Editado Junho 13 por Danny0

boxxer321B
13 de junho de 2016 às 12:47
2 minutos atrás, Ceetros disse:

PARA PEGAR O ID DO MASTER:

Monster.cpp:

Vai ter uma parte parecida com essa, não lembro como é, deixa assim:

 

if((isHostile() || isSummon() || isTarget(creature) && !isSummon() && isPassive()) && setAttackedCreature(creature) && !isSummon())		Dispatcher::getInstance().addTask(createTask(			boost::bind(&Game::checkCreatureAttack, &g_game, getID() && creature->getMaster())));

 

faz uma versão 0.3.6 prfv e dps o cara atualiza o tópico c a versão 0.3.6