Ir para conteúdo

Featured Replies

Postado
  • Diretor

hqdefault.jpg

 

Tela Estendida para OTClient V8 (TFS 0.4)

Olá pessoal, hoje estou trazendo uma tela estendida para o OTClient V8 na versão mais recente. Espero que isso seja útil para vocês! Esta versão vem com atualizações de código que são fáceis de entender. Testado em TFS 0.4.

 

 

 

Passo 1: Modificações no const.h

Abra o arquivo const.h e encontre:

 

#define NETWORK_MAX_SIZE

 ou

#define NETWORKMESSAGE_MAXSIZE

 

Altere para:

 

#define NETWORK_MAX_SIZE 49180
ou, dependendo da sua source,
#define NETWORKMESSAGE_MAXSIZE 49180

 

 

Passo 2: Modificações no Protocollgame.cpp

Encontre:

((x >= myPos.x - 8 + offsetz) && (x <= myPos.x + 9 + offsetz) &&
        //(y >= myPos.y - 6 + offsetz) && (y <= myPos.y + 7 + offsetz));

 

Altere para:

 

((x >= myPos.x - Map::maxClientViewportX + offsetz) && (x <= myPos.x + (Map::maxClientViewportX+1) + offsetz) &&
     (y >= myPos.y - Map::maxClientViewportY + offsetz) && (y <= myPos.y + (Map::maxClientViewportY+1) + offsetz));

 

 

Passo 3: Atualizações nas descrições do mapa

Encontre:

 

GetMapDescription(pos.x - 8, pos.y - 6, pos.z, 18, 14, msg);

 

Altere para:

 

GetMapDescription(pos.x - Map::maxClientViewportX, pos.y - Map::maxClientViewportY, pos.z, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, msg);

 

 

Passo 4: Atualizações na movimentação do personagem

Encontre:

 

if(oldPos.y > newPos.y) // north, for old x
{
    msg->put<char>(0x65);
    GetMapDescription(oldPos.x - 8, newPos.y - 6, newPos.z, 18, 1, msg);
}
else if(oldPos.y < newPos.y) // south, for old x
{
    msg->put<char>(0x67);
    GetMapDescription(oldPos.x - 8, newPos.y + 7, newPos.z, 18, 1, msg);
}

if(oldPos.x < newPos.x) // east, [with new y]
{
    msg->put<char>(0x66);
    GetMapDescription(newPos.x + 9, newPos.y - 6, newPos.z, 1, 14, msg);
}
else if(oldPos.x > newPos.x) // west, [with new y]
{
    msg->put<char>(0x68);
    GetMapDescription(newPos.x - 8, newPos.y - 6, newPos.z, 1, 14, msg);
}

 

Altere para:

 

if (oldPos.y > newPos.y) { // north, for old x
    msg->put<char>(0x65);
    GetMapDescription(oldPos.x - Map::maxClientViewportX, newPos.y - Map::maxClientViewportY, newPos.z, (Map::maxClientViewportX+1)*2, 1, msg);
} 
else if (oldPos.y < newPos.y) { // south, for old x
    msg->put<char>(0x67);
    GetMapDescription(oldPos.x - Map::maxClientViewportX, newPos.y + (Map::maxClientViewportY+1), newPos.z, (Map::maxClientViewportX+1)*2, 1, msg);
}

if (oldPos.x < newPos.x) { // east, [with new y]
    msg->put<char>(0x66);
    GetMapDescription(newPos.x + (Map::maxClientViewportX+1), newPos.y - Map::maxClientViewportY, newPos.z, 1, (Map::maxClientViewportY+1)*2, msg);
} 
else if (oldPos.x > newPos.x) { // west, [with new y]
    msg->put<char>(0x68);
    GetMapDescription(newPos.x - Map::maxClientViewportX, newPos.y - Map::maxClientViewportY, newPos.z, 1, (Map::maxClientViewportY+1)*2, msg);
}

 

Passo 5: Atualizações na descrição dos pisos

Encontre:

 

GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, 5, 18, 14, 3, skip);
GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, 4, 18, 14, 4, skip);
GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, 3, 18, 14, 5, skip);
GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, 2, 18, 14, 6, skip);
GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, 1, 18, 14, 7, skip);
GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, 0, 18, 14, 8, skip);

 

Altere para:

 

GetFloorDescription(msg, oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, 5, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, 3, skip);
GetFloorDescription(msg, oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, 4, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, 4, skip);
GetFloorDescription(msg, oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, 3, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, 5, skip);
GetFloorDescription(msg, oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, 2, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, 6, skip);
GetFloorDescription(msg, oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, 1, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, 7, skip);
GetFloorDescription(msg, oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, 0, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, 8, skip);

 

 

Passo 6: Outras modificações

Encontre:

 

GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, oldPos.z - 3, 18, 14, 3, skip);

 

Altere para:

 

GetFloorDescription(msg, oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, oldPos.z - 3, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, 3, skip);

 

 

Passo 7: Modificações adicionais

Encontre:

 

GetMapDescription(oldPos.x - 8, oldPos.y + 1 - 6, newPos.z, 1, 14, msg);

 

Altere para:

 

GetMapDescription(oldPos.x - Map::maxClientViewportX, oldPos.y - (Map::maxClientViewportY-1), newPos.z, 1, (Map::maxClientViewportY+1)*2, msg);

 

 

Passo 8: Atualizações finais

Encontre:

 

GetMapDescription(oldPos.x - 8, oldPos.y - 6, newPos.z, 18, 1, msg);

 

ALTERE PARA

GetMapDescription(oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, newPos.z, (Map::maxClientViewportX+1)*2, 1, msg);

 

 

Passo 9: Mais modificações nas descrições de pisos

Encontre:

 

GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, newPos.z, 18, 14, -1, skip);
GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, newPos.z + 1, 18, 14, -2, skip);
GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, newPos.z + 2, 18, 14, -3, skip);

 

Altere para:

 

GetFloorDescription(msg, oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, newPos.z, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, -1, skip);
GetFloorDescription(msg, oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, newPos.z + 1, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, -2, skip);
GetFloorDescription(msg, oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, newPos.z + 2, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, -3, skip);

 

 

Passo 10: Últimas modificações

Encontre:

GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, newPos.z + 2, 18, 14, -3, skip);

 

Altere para:

 

GetFloorDescription(msg, oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, newPos.z + 2, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, -3, skip);

 

 

Passo 11: Ajustes finais

Encontre:

 

GetMapDescription(oldPos.x + 9, oldPos.y - 1 - 6, newPos.z, 1, 14, msg);

 

Altere para:

 

GetMapDescription(oldPos.x + Map::maxClientViewportX+1, oldPos.y - (Map::maxClientViewportY+1), newPos.z, 1, ((Map::maxClientViewportY+1)*2), msg);

 

Passo 12: Atualizações em MAP.H

Abra o arquivo MAP.H do servidor e encontre:

 

static const int32_t maxViewportX = 11; //min value: maxClientViewportX + 1
static const int32_t maxViewportY = 11; //min value: maxClientViewportY + 1
static const int32_t maxClientViewportX = 8;
static const int32_t maxClientViewportY = 6;

 

Altere para:

 

static const int32_t maxViewportX = 15; //min value: maxClientViewportX + 1
static const int32_t maxViewportY = 15; //min value: maxClientViewportY + 1
static const int32_t maxClientViewportX = 14;
static const int32_t maxClientViewportY = 12;

 

Pronto, agora é só compilar as sources do seu servidor no modo Rebuild para apagar o cache.

 

 

 

Parte 2: OTClient 0.6.6

Abra o arquivo map.cpp das sources do OTClient V8 e encontre:

 

void Map::resetAwareRange()
{
    AwareRange range;
    range.left = 8;
    range.top = 6;
    range.bottom = 7;
    range.right = 9;
    setAwareRange(range);
}

 

Altere para:

 

void Map::resetAwareRange()
{
    AwareRange range;
    range.left = 14; //Change this to = maxClientViewportX
    range.top = 12; //Change this to = maxClientViewportY 
    range.bottom = range.top+1; 
    range.right = range.left+1;
    setAwareRange(range);
}

 

Compile a source do OTClient também no modo Rebuild e pronto!

 

 

20230912_034613.png.cf49b650c34dd7d7b1f79bd49c70f53c.png

Eu sou um entusiasta da programação apaixonado por ajudar a comunidade open source a crescer. Sempre em busca de novos desafios e oportunidades para contribuir com meu código.  #OpenSource #Programação #Contribuição

 

  • L3K0T mudou o título para Tela Estendida para OTClient V8 (TFS 0.4)
  • 10 months later...

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo