Você está desconectado.

Conecte-se e veja nossos conteúdos exclusivos!

AVISO: As regras foram atualizadas recentemente! (25/08)

Compartilhe
Ir em baixo
avatar
Administrador
Administrador
King Carteira King Carteira : 2
Reputação : 11734
Eu sou : Scripter
Tópicos : 312
Data de Cadastro : 26/09/2015
Idade : 20
Ver perfil do usuáriohttp://pokeking7.forumeiros.com

Name Displacement

em 15/6/2018, 10:33
Título: Name Displacement
Descrição: Reposicionar barra de vida de criaturas de acordo com outfit.
Autor: @Porai.


OBS.: Testado em TFS 0.3.6


Como tinha dito em outro tópico, estou aqui postando, até pq eu acabei que fiz pra usar em um servidor meu também, rs. De qualquer forma, esse é um código para reposicionar o nome quando uma criatura está com X outfit de forma fácil pelo arquivo OTML. É necessário editar as sources do otclient e compila-lo.



No arquivo thingtype.cpp, adicione abaixo de:

Spoiler:
        if(node2->tag() == "opacity")
            m_opacity = node2->value();

Isso:
Spoiler:
        else if(node2->tag() == "name-displacement")
            m_name_displacement = node2->value();



No arquivo thingtype.h, adicione acima de:

Spoiler:
float getOpacity() { return m_opacity; }



Adicione isso:

Spoiler:
Point getNameDisplacement() { return m_name_displacement; }



Acima de:

Spoiler:
float m_opacity;



Adicione isso:

Point m_name_displacement;:



No arquivo creatures.cpp, troque isso:

Spoiler:
    // calculate main rects
    Rect backgroundRect = Rect(point.x-(13.5), point.y, 27, 4);
    backgroundRect.bind(parentRect);


    Size nameSize = m_nameCache.getTextSize();
    Rect textRect = Rect(point.x - nameSize.width() / 2.0, point.y-12, nameSize);
    textRect.bind(parentRect);




Por isso:

Spoiler:
    // calculate main rects
    const ThingTypePtr& thingType = getThingType();


    Rect backgroundRect = Rect(point.x - (13.5) + thingType->getNameDisplacement().x, point.y + thingType->getNameDisplacement().y, 27, 4);
    backgroundRect.bind(parentRect);


    Size nameSize = m_nameCache.getTextSize();
    Rect textRect = Rect(point.x - (nameSize.width() / 2.0) + thingType->getNameDisplacement().x, point.y - 12 + thingType->getNameDisplacement().y, nameSize);
    textRect.bind(parentRect);




Pronto. Para configurar, basta editar o arquivo .otml do seu otclient, exemplo:

Spoiler:
creatures
  10
    name-displacement: 2 -12
  11
    name-displacement: 5 10
  12
    name-displacement: -4 3




No caso, alterei a outfit 10 para um displacement no eixo X + 2 e no eixo Y - 12, a outfit 11 para um displacement no eixo X + 5 e no eixo Y + 10 e a outfit 12 para um displacement no eixo X - 4 e no eixo Y + 3. O código foi testado e está funcionando perfeitamente.
Voltar ao Topo
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum