Ir para conteúdo

[C++] [TFS 1.X] Player (Mestre) Não Pode Atacar Seus Summons e Seus Summons Não Atacam Outros Players


Posts Recomendados

Olá pessoal!

 

Esse é um tutorial bem simples para o player(master) não poder atacar seus summons e o summon do player(master) não atacar outros players.

 

Esse tutorial é muito útil principalmente para quem está desenvolvendo derivados.

 

*OBS: Esse tutorial só funciona para TFS 1.X (1.0+)

 

Vamos ao tutorial!!!

 

Siga os passos à seguir:

 

1-  Abra sua source e procure o arquivo combat.cpp

2- Procure pela função: 

ReturnValue Combat::canTargetCreature(Player* attacker, Creature* target)

3- Insira o código à seguir dentro da função encontrada no passo anterior:

// BLOCO QUE O PLAYER (MASTER) NÃO PODE ATACAR O SUMMON //
if (target->isSummon())
{
	return RETURNVALUE_YOUMAYNOTATTACKTHISCREATURE;
}

// BLOCO QUE O SUMMON DO PLAYER (MASTER) NÃO PODE ATACAR OUTRO JOGADOR //
if (attacker->isSummon() && target->getPlayer())
{
	return RETURNVALUE_YOUMAYNOTATTACKTHISPLAYER;
}

 

4- Compile a source

 

Pronto! Agora está terminado e você pode jogar!

 

Um recurso simples, mas bem útil.

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

  • Yan Oliveira changed the title to [C++] [TFS 1.X] Player (Mestre) Não Pode Atacar Seus Summons e Seus Summons Não Atacam Outros Players

Essa condição:

attacker->getPlayer()

é sempre verdadeira, então vc pode remover do if

 

---

 

target->getCreature()

target já é uma Creature, então isso sempre retorna o mesmo valor de target, vc pode escrever somente

target

---

 

Essa condição:

attacker->getCreature()->isSummon()

é sempre falsa e o if nunca vai ser executado

 

Link para o comentário
Compartilhar em outros sites

8 horas atrás, Lordfire disse:

Essa condição:


attacker->getPlayer()

é sempre verdadeira, então vc pode remover do if

 

---

 


target->getCreature()

target já é uma Creature, então isso sempre retorna o mesmo valor de target, vc pode escrever somente


target

---

 

Essa condição:


attacker->getCreature()->isSummon()

é sempre falsa e o if nunca vai ser executado

 

 

Entendi! Obrigado pelo conselho e pelas dicas, estou aprimorando meu C++ (que ainda é básico).

 

No caso da última condição que você disse que será sempre false, é porque o attacker (atacante) sempre será o player? Mesmo que ele tenha summons?

 

 

Link para o comentário
Compartilhar em outros sites

1 hora atrás, Lordfire disse:

@Yan18sim. Essa função só é executada com um player como `attacker`, então nunca vai acontecer de `isSummon` ser `true`

Entendi, interessante. Ai no caso para o meu summon não atacar outro summon de outro player ou outro player, eu faço verificação no arquivo creatures.lua da pasta Data/Events correto?

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...