Ir para conteúdo
Propaganda

[C++ OTCLIENT] Color Name


Posts Recomendados

Bom, essas alterações permitem que você possa mudar a cor do nome de um jogador devido a alguma condição que você quiser impor. Nesse tópico irei ensinar a mudar a cor em duas condições diferentes.

 

NOME ESPECÍFICO

Spoiler

Bom, caso você queira que a cor diferente seja aplicada a um player ou monstro ESPECÍFICO você pode fazer da seguinte forma. Na source do seu servidor você irá no arquivo "Creature.cpp" e irá procurar a função:

void Creature::setHealthPercent(uint8 healthPercent)
{
    if(healthPercent > 92)
        m_informationColor = Color(0x00, 0xBC, 0x00);
    else if(healthPercent > 60)
        m_informationColor = Color(0x50, 0xA1, 0x50);
    else if(healthPercent > 30)
        m_informationColor = Color(0xA1, 0xA1, 0x00);
    else if(healthPercent > 8)
        m_informationColor = Color(0xBF, 0x0A, 0x0A);
    else if(healthPercent > 3)
        m_informationColor = Color(0x91, 0x0F, 0x0F);
    else
        m_informationColor = Color(0x85, 0x0C, 0x0C);

    m_healthPercent = healthPercent;
    callLuaField("onHealthPercentChange", healthPercent);

    if(healthPercent <= 0)
        onDeath();
}

Bom em uma explicação breve o "healthPercent" é a porcentagem de vida do monstro/player então se você quiser que a cor vá escurecendo/esclarecendo de acordo com a porcentagem de vida você deverá modificar da seguinte forma:

void Creature::setHealthPercent(uint8 healthPercent)
{
    if(healthPercent > 92){
        if (m_name == "Otomeuhugo"){            
            m_informationColor = Color(0xB2, 0x22, 0x22);        
        }else{       
            m_informationColor = Color(0x00, 0xBC, 0x00); 
        }
    }else if(healthPercent > 60){
        if (m_name == "Otomeuhugo"){            
            m_informationColor = Color(0xB2, 0x22, 0x22);        
        }else{       
            m_informationColor = Color(0x50, 0xA1, 0x50);
        }
    }else if(healthPercent > 30){
        if (m_name == "Otomeuhugo"){            
            m_informationColor = Color(0xB2, 0x22, 0x22);        
        }else{       
            m_informationColor = Color(0xA1, 0xA1, 0x00);
        }
    }else if(healthPercent > 8){
        if (m_name == "Otomeuhugo"){            
            m_informationColor = Color(0xB2, 0x22, 0x22);        
        }else{       
            m_informationColor = Color(0xBF, 0x0A, 0x0A);
        }
    }else if(healthPercent > 3){
        if (m_name == "Otomeuhugo"){            
            m_informationColor = Color(0xB2, 0x22, 0x22);        
        }else{       
            m_informationColor = Color(0x91, 0x0F, 0x0F);
        }
    }else{
        m_informationColor = Color(0x85, 0x0C, 0x0C);
    }
  
    m_healthPercent = healthPercent;
    callLuaField("onHealthPercentChange", healthPercent);

    if(healthPercent <= 0)
        onDeath();
}

A variável "m_name" é referente ao nome do player/monstro que você quer, logo embaixo de cada linha "if (m_name == "Otomeuhugo"){" existe uma variável m_informationColor, é importante que você somente modifique a m_informationColor que está abaixo dessas linhas "if (m_name == "Otomeuhugo"){". Essas cores estão no código hexadecimal, então você irá pegar uma cor hexadecimal e dividir em três partes. Exemplo:

#FFFF00 -> FF FF 00 -> Color(0xFF, 0xFF, 0x00)

 

EXTRA

Caso você não queira que a coloração do nome não mude de acordo com a porcentagem de vida basta substituir pelo seguinte código:

void Creature::setHealthPercent(uint8 healthPercent)
{
    if(m_name == "Otomeuhugo")
        m_informationColor = Color(0xFF, 0xFF, 0x00);
    else if(healthPercent > 92)
        m_informationColor = Color(0x00, 0xBC, 0x00);
    else if(healthPercent > 60)
        m_informationColor = Color(0x50, 0xA1, 0x50);
    else if(healthPercent > 30)
        m_informationColor = Color(0xA1, 0xA1, 0x00);
    else if(healthPercent > 8)
        m_informationColor = Color(0xBF, 0x0A, 0x0A);
    else if(healthPercent > 3)
        m_informationColor = Color(0x91, 0x0F, 0x0F);
    else
        m_informationColor = Color(0x85, 0x0C, 0x0C);

    m_healthPercent = healthPercent;
    callLuaField("onHealthPercentChange", healthPercent);

    if(healthPercent <= 0)
        onDeath();
}

E segue a mesma lógica, você irá mudar o m_informationColor que está abaixo da linha "if(m_name == "Otomeuhugo")".

 

TAG NAME

Spoiler

Nesse caso funciona da seguinte forma, imagine que você queira que todos os nomes continue com a cor padrão mas que alguém que tenha a tag [ADM] no seu nome fique com ele inteiro vermelho, você poderá aplicar isso pra infinitas tags que quiser. Ainda no arquivo "Creature.cpp" procure pela função:

void Creature::setHealthPercent(uint8 healthPercent)
{
    if(healthPercent > 92)
        m_informationColor = Color(0x00, 0xBC, 0x00);
    else if(healthPercent > 60)
        m_informationColor = Color(0x50, 0xA1, 0x50);
    else if(healthPercent > 30)
        m_informationColor = Color(0xA1, 0xA1, 0x00);
    else if(healthPercent > 8)
        m_informationColor = Color(0xBF, 0x0A, 0x0A);
    else if(healthPercent > 3)
        m_informationColor = Color(0x91, 0x0F, 0x0F);
    else
        m_informationColor = Color(0x85, 0x0C, 0x0C);

    m_healthPercent = healthPercent;
    callLuaField("onHealthPercentChange", healthPercent);

    if(healthPercent <= 0)
        onDeath();
}

Nela você fará a seguinte modificação adaptando para o seu contexto:

void Creature::setHealthPercent(uint8 healthPercent)
{
    if(m_name.find("[ADM]")!=std::string::npos)
        m_informationColor = Color(0x00, 0x2a, 0xff);
    else if(healthPercent > 92)
        m_informationColor = Color(0x00, 0xBC, 0x00);
    else if(healthPercent > 60)
        m_informationColor = Color(0x50, 0xA1, 0x50);
    else if(healthPercent > 30)
        m_informationColor = Color(0xA1, 0xA1, 0x00);
    else if(healthPercent > 8)
        m_informationColor = Color(0xBF, 0x0A, 0x0A);
    else if(healthPercent > 3)
        m_informationColor = Color(0x91, 0x0F, 0x0F);
    else
        m_informationColor = Color(0x85, 0x0C, 0x0C);

    m_healthPercent = healthPercent;
    callLuaField("onHealthPercentChange", healthPercent);

    if(healthPercent <= 0)
        onDeath();
}

Bom no caso usei a tag [ADM] mas você pode mudar pra qual você quiser, e é só mudar o m_informationColor abaixo da linha "if(m_name.find("[ADM]")!=std::string::npos)" para a cor que desejar.

 

Créditos:

BananaFight

Refe

Eu

  • Like 15
  • Thanks 5
Link para o comentário
Compartilhar em outros sites

  • Administrador

Tópico Aprovado!
Somos gratos por sua contribuição, com certeza será útil para toda a comunidade! ❤️  REP+

Link para o comentário
Compartilhar em outros sites

Participe da Conversa

Você pode postar agora e se cadastrar mais tarde. Cadastre-se Agora para publicar com Sua Conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.

×
  • Criar Novo...