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:
if(node2->tag() == "opacity")
m_opacity = node2->value<float>();
isso:
else if(node2->tag() == "name-displacement")
m_name_displacement = node2->value<Point>();
No arquivo thingtype.h, adicione acima de:
float getOpacity() { return m_opacity; }
adicione isso:
Point getNameDisplacement() { return m_name_displacement; }
acima de:
float m_opacity;
adicione isso:
Point m_name_displacement;
No arquivo creatures.cpp, troque isso:
// 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:
// 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:
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.