Ir para conteúdo
Propaganda

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
https://tibiadevs.com/forums/topic/66-c-otclient-color-name/
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
https://tibiadevs.com/forums/topic/66-c-otclient-color-name/#findComment-319
Compartilhar em outros sites

1 hora atrás, TioBagas disse:

é no v8?

Esse ai foi testado no otclient normal

Link para o comentário
https://tibiadevs.com/forums/topic/66-c-otclient-color-name/#findComment-362
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
  • Criar Novo...