Jump to content
×
×
  • Create New...

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


Recommended Posts

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.

Edited by Yan18
Link to post
Share on other 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 to post
Share on other 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 to post
Share on other 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 to post
Share on other sites

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
  • Recently Browsing   0 members

    No registered users viewing this page.


    Administrador |  Diretor |  Coordenador |  Moderador |  Suporter |  Estagiário |  Herói
  • Similar Content

    • By Haka
      Versão do Servidor: TFS - 0.3.5 Tipo de Script: Código: Quando eu tento compilar o fts aparece essse erro
       
        In constructor 'ODBCResult::ODBCResult(void*)': 
      351 databaseodbc.cpp 'res' was not declared in this scope
      351 databaseodbc.cpp *** [Obj/databaseodbc.o] Error 1  
       
      se alguem puder me ajudar, agradeceria muito
       
    • By Yan Liima
      Limite máximo de players em guild in-game 😜

      Bom galera estou postando esse conteúdo como complemento do limite em WEBSITE
      Ao utilizar !joinguild esse code verifica se a guilda já atingiu o limite máximo de membros(configurado)
      Eu estarei disponibilizando de duas maneiras:
      1º Será um valor configurado no proprio config.lua, onde determinará o limite máximo de todas as guild.(já incluido na 0.4 rev3996)
      2º A verificação será feita por DB, onde terá um valor padrão para cada guilda criada, podendo ser alterado o valor de membros maximo.
      Ou seja, a guilda número UM pode ter máximo de 50 players, e a guilda número DOIS pode ter o máximo de 100.
      Vocês pode ser criativos e vender items que aumenta o limite ou fazer eventos/sorteios para aumentar...

      Enfim, vamos lá...
      Primeira maneira:

       
      Segunda maneira:

       
      Prontinho galera, espero que ajude algumas pessoas xD
    • By StrikersBR12
      Alguem me ajuda com esse erro?

    • By Senju uchira
      oiee tou com esses pobleminhas ao compila uns codigo ,alguém consegue me ajuda ou solucionar rsrsrs dou REP+++++++++


      up
    • By Senju uchira
      como aumentar o doSendAnimatedText de 9 letras para 12 é possível se sim, como?