Jump to content

Buffs Em Grupo


tierrilopes
 Share

Recommended Posts

O que fará?

Caso uma buffer esteja em grupo e esta utilize uma skill de buff (por exemplo Benção), todos os membros que estejam no seu grupo e no alcance da skill ficaram sob o seu efeito também (o alvo pode ser qualquer um e inclusive a própria personagem).

 

Ficheiro skill.h

 

Procurar por:

 

SKILL_FLAG_FIRE = (1 << 26),

 

Adicionar por baixo:

 

SKILL_FLAG_PARTY = (1 << 27),

 

Ficheiro char_skill.cpp

 

Procurar por:

 

SKILL_RESIST_PENETRATE

};

 

Adicionar por baixo:

 

struct FPartyPIDCollector

{

std::vector <DWORD> vecPIDs;

FPartyPIDCollector()

{

}

void operator () (LPCHARACTER ch)

{

vecPIDs.push_back(ch->GetPlayerID());

}

};

 

Procurar por:

 

if (IS_SET(pkSk->dwFlag, SKILL_FLAG_SELFONLY))

ComputeSkill(dwVnum, this);

 

Adicionar por baixo:

 

else if (IS_SET(pkSk->dwFlag, SKILL_FLAG_PARTY) && GetParty())

{

FPartyPIDCollector f;

GetParty()->ForEachOnMapMember(f, GetMapIndex());

for (std::vector <DWORD>::iterator it = f.vecPIDs.begin(); it != f.vecPIDs.end(); it++)

{

LPCHARACTER ch = CHARACTER_MANAGER::instance().FindByPID(*it);

ComputeSkill(dwVnum, ch);

}

}

 

Como na imagem:

 

Clipboardimage2015-12-02030257.png

 

 

Ficheiro guild.cpp

 

Procurar por:

 

if ((pkSk->dwFlag & SKILL_FLAG_SELFONLY))

{

// 이미 걸려 있으므로 사용하지 않음.

if (ch->FindAffect(pkSk->dwVnum))

return;

 

victim = ch;

}

 

Adicionar por baixo:

 

if ((pkSk->dwFlag & SKILL_FLAG_PARTY))

{

if (ch->FindAffect(pkSk->dwVnum))

return;

 

victim = ch;

}

 

Navicat-->Player-->Skill_Proto em Design table (clique lado direito) e adicionar PARTY em ultimo lugar (na posição 27 da set_Flag).

 

Nota: Caso tenham a opção 27 ocupada no ficheiro skill.h, atribuam o número a seguir (se o vosso for por exemplo 32, adicionam a linha do tutorial com o número 33).

O número no skill.h equivale à posição do set_flag do skill_proto, estes devem ser iguais para que funcione correctamente.

 

Para definir que skill funcionará para o grupo inteiro, vão a Navicat-->Player-->Skill_Proto-->ID da skill e adicionem o set_Flag party.(Ver post abaixo com skill_proto de exemplo)

 

 

Exemplo:

 

Clipboardimage2015-12-02030638.png

 

  • Like 2
Link to comment
Share on other sites

tierrilopes obrigado por o skill_proto assim funcionou perfeito mas acho que também descobri o meu erro xD. No meu skill_proto tinha de ir a tabela e nos buffs adicionar PARTY no setFlag correcto?

 

Exemplo: http://prntscr.com/9a2poi

 

 

Se sim o meu erro é que eu tinha só desenhado ela e não tinha ido dentro do skill fazer a alteração :p

 

 

:1:

Link to comment
Share on other sites

 

tierrilopes obrigado por o skill_proto assim funcionou perfeito mas acho que também descobri o meu erro xD. No meu skill_proto tinha de ir a tabela e nos buffs adicionar PARTY no setFlag correcto?

 

Exemplo: http://prntscr.com/9a2poi

 

 

Se sim o meu erro é que eu tinha só desenhado ela e não tinha ido dentro do skill fazer a alteração :p

 

 

:1:

 

Sim é :p Vou adicionar isso também no tutorial
Link to comment
Share on other sites

  • 5 months later...

 

C++ não precisa de TAB's, só fica mais organizado...

 

Coloca aqui o erro sff...

 

 

 

Que erro dá?

 

Apesar de não ser uma boa prática, no c++ não interessa os tabs

 

Thanks, era apenas um erro meu como sempre. Já funciona perfeitamente.
Link to comment
Share on other sites

  • 10 months later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...