KI

[c++] passive system

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

tfs 0.4
147
18.3k
Luga03L
17 de junho de 2016 às 20:27
6 horas atrás, Josegvb disse:

acho que o @Ceetros tb deberia falar, pidiu permiçao do autor do topico pra postar, ele deu mas o ceetros nao respondeu mais

Eu falei com o Ceetros um dia desses (uns 2 dias dps de ele pedir permisão) ele disse q tava viajando

18 de junho de 2016 às 09:08

@Drazyn1291 Ainda estou viajando, mano =/

Luga03L
19 de junho de 2016 às 14:21

@dalvorsn ou @Kilowog ou qual quer outro programador experiente ae vê se está certo o code:

 

http://hastebin.com/yegeqaqeqe.coffee

 

Vi oq o Kilowog disse e tentei usar a ideia dele, só não sei se está correto, teria como vcs dizerem se está correto? se não, oq tem q fazer para corrigir?

dalvorsnD
19 de junho de 2016 às 15:36
1 hour ago, Drazyn1291 said:

@dalvorsn ou @Kilowog ou qual quer outro programador experiente ae vê se está certo o code:

 

http://hastebin.com/yegeqaqeqe.coffee

 

Vi oq o Kilowog disse e tentei usar a ideia dele, só não sei se está correto, teria como vcs dizerem se está correto? se não, oq tem q fazer para corrigir?

Mas isso foi o que eu fiz na primeira, o unico problema ai é que em outros lugares onde ele usa o damage map vai ter que adaptar também, até a nivel de script, a deathlist por exemplo vai ta passando  o guid quando for player

Luga03L
19 de junho de 2016 às 15:39
Agora, dalvorsn disse:

Mas isso foi o que eu fiz na primeira, o unico problema ai é que em outros lugares onde ele usa o damage map vai ter que adaptar também, até a nivel de script, a deathlist por exemplo vai ta passando  o guid quando for player

Não tem como fazer tipo, na hora de setar o lasthit repetir o processo só que ao invés de usar o guid usar o uid, dai iria enviar o guid (só pra dizer que atacou) e o uid (como lasthit) para o deathList funfar normalmente

dalvorsnD
19 de junho de 2016 às 15:52
12 minutes ago, Drazyn1291 said:

Não tem como fazer tipo, na hora de setar o lasthit repetir o processo só que ao invés de usar o guid usar o uid, dai iria enviar o guid (só pra dizer que atacou) e o uid (como lasthit) para o deathList funfar normalmente

Ah sim, agora que notei, pode sim, mas não muda a lista do onDeath ainda

Luga03L
19 de junho de 2016 às 20:17
4 horas atrás, dalvorsn disse:

Ah sim, agora que notei, pode sim, mas não muda a lista do onDeath ainda

Então iria contiuar sem sem mandar a msg de loot neh

dalvorsnD
19 de junho de 2016 às 21:12
54 minutes ago, Drazyn1291 said:

Então iria contiuar sem sem mandar a msg de loot neh

Provavelmente, chegou a testar?

Luga03L
20 de junho de 2016 às 07:11
9 horas atrás, dalvorsn disse:

Provavelmente, chegou a testar?

A minha teoria não, pq não sei fazer codes muito complexos, eu sei o basico de C então consigo entender e modificar algumas coisas em C++, caso você possa ajudar nisso T.T

KilowogK
20 de junho de 2016 às 20:29

@Drazyn1291 Infelizmente fiquei sem tempo por conta do trabalho para ver isto, estou doido para ver, mas ta osso. @dalvorsn será muito complicado adaptar onde usa o damageMap?

2 semanas depois...
AlayenA
29 de junho de 2016 às 04:08

Seria interessante se o autor do código original pudesse vir aqui ajudar, tenho certeza que conseguiria resolver

:grin-min:

JosegvbJ
29 de junho de 2016 às 10:22

ou o @Ceetros que disse q ia compartilhar se o autor permitia e ainda nao compartilhou nd ;/: sera q ainda ta vialhando?

30 de junho de 2016 às 17:31
Em 29/06/2016 at 10:22, Josegvb disse:

ou o @Ceetros que disse q ia compartilhar se o autor permitia e ainda nao compartilhou nd ;/: sera q ainda ta vialhando?

 

0.3.6:

 

Em  monster.cpp acha:

bool Monster::canUseAttack(const Position& pos, const Creature* target) const

E deleta a parte que tem

!isHostile()

Não lembro como é

JosegvbJ
30 de junho de 2016 às 19:02
2 hours ago, Ceetros said:

 

0.3.6:

 

Em  monster.cpp acha:

bool Monster::canUseAttack(const Position& pos, const Creature* target) const

E deleta a parte que tem

!isHostile()

Não lembro como é

 

eliminei oq vc falou:

Spoiler

bool Monster::canUseAttack(const Position& pos, const Creature* target) const

{

    if(!isHostile())

        return true;

    const Position& targetPos = target->getPosition();

    for(SpellList::iterator it = mType->spellAttackList.begin(); it != mType->spellAttackList.end(); ++it)

    {

        if((*it).range != 0 && std::max(std::abs(pos.x - targetPos.x), std::abs(pos.y - targetPos.y)) <= (int32_t)(*it).range)

            return g_game.isSightClear(pos, targetPos, true);

    }

    return false;

}

ficando assim:

Spoiler

bool Monster::canUseAttack(const Position& pos, const Creature* target) const

{

    const Position& targetPos = target->getPosition();

    for(SpellList::iterator it = mType->spellAttackList.begin(); it != mType->spellAttackList.end(); ++it)

    {

        if((*it).range != 0 && std::max(std::abs(pos.x - targetPos.x), std::abs(pos.y - targetPos.y)) <= (int32_t)(*it).range)

            return g_game.isSightClear(pos, targetPos, true);

    }

    return false;

}

 

porem o bixo ainda fica andando sem atacar  quando é targetado nem qndo leva dano...

01 de julho de 2016 às 12:41
17 horas atrás, Josegvb disse:

 

eliminei oq vc falou:

  Ocultar conteúdo

bool Monster::canUseAttack(const Position& pos, const Creature* target) const

{

    if(!isHostile())

        return true;

    const Position& targetPos = target->getPosition();

    for(SpellList::iterator it = mType->spellAttackList.begin(); it != mType->spellAttackList.end(); ++it)

    {

        if((*it).range != 0 && std::max(std::abs(pos.x - targetPos.x), std::abs(pos.y - targetPos.y)) <= (int32_t)(*it).range)

            return g_game.isSightClear(pos, targetPos, true);

    }

    return false;

}

ficando assim:

  Ocultar conteúdo

bool Monster::canUseAttack(const Position& pos, const Creature* target) const

{

    const Position& targetPos = target->getPosition();

    for(SpellList::iterator it = mType->spellAttackList.begin(); it != mType->spellAttackList.end(); ++it)

    {

        if((*it).range != 0 && std::max(std::abs(pos.x - targetPos.x), std::abs(pos.y - targetPos.y)) <= (int32_t)(*it).range)

            return g_game.isSightClear(pos, targetPos, true);

    }

    return false;

}

 

porem o bixo ainda fica andando sem atacar  quando é targetado nem qndo leva dano...

 

Cola a sua função

bool Monster::selectTarget(Creature* creature)