Este é um tutorial que mostra como adicionar mais azulejos na janela do Otclient (criando uma tela maior) Este é realmente um problema maior do que deveria ser, porque TFS não usa "maxViewPort" em todos os lugares que deveria. Então vamos mudar isso primeiro! eu irei fazer isso para o tfs 1.0 que é basicamente parecido com o Tfs 0.3.6 e talvez eu irei aprender algo mais fazendo para o TFS 1.0
A maioria de nossas ediçoes estara em "protocalgame.cpp"
Primeiro nos precisamos editar:
bool ProtocolGame::canSee(int32_t x, int32_t y, int32_t z) const
altere isso:
"if ((x >= myPos.getX() - 8 + offsetz) && (x <= myPos.getX() + 9 + offsetz) &&
(y >= myPos.getY() - 6 + offsetz) && (y <= myPos.getY() + 7 + offsetz)) {
"
por isso:
"if ((x >= myPos.getX() - MapmaxClientViewportX + offsetz) && (x <= myPos.getX() + (MapmaxClientViewportX+1) + offsetz) &&
(y >= myPos.getY() - MapmaxClientViewportY + offsetz) && (y <= myPos.getY() + (MapmaxClientViewportY+1) + offsetz)) {"
então localize isso em seu codigo:
void ProtocolGame::sendMapDescription(const Position& pos)
e altere por isso:
GetMapDescription(pos.x - 8, pos.y - 6, pos.z, 18, 14, msg);
para isso:
GetMapDescription(pos.x - MapmaxClientViewportX, pos.y - MapmaxClientViewportY, pos.z, (MapmaxClientViewportX+1)*2, (MapmaxClientViewportY+1)*2, msg);
encontre esse codigo abaixo:
void ProtocolGame::sendMoveCreature(const Creature* creature, const Position& newPos, int32_t newStackPos, const Position& oldPos, int32_t oldStackPos, bool teleport)
e altere por isso:
if (oldPos.y > newPos.y) { // north, for old x msg.AddByte(0x65); GetMapDescription(oldPos.x - 8, newPos.y - 6, newPos.z, 18, 1, msg); } else if (oldPos.y < newPos.y) { // south, for old x msg.AddByte(0x67); GetMapDescription(oldPos.x - 8, newPos.y + 7, newPos.z, 18, 1, msg); } if (oldPos.x < newPos.x) { // east, [with new y] msg.AddByte(0x66); GetMapDescription(newPos.x + 9, newPos.y - 6, newPos.z, 1, 14, msg); } else if (oldPos.x > newPos.x) { // west, [with new y] msg.AddByte(0x68); GetMapDescription(newPos.x - 8, newPos.y - 6, newPos.z, 1, 14, msg); }
por isso:
if (oldPos.y > newPos.y) { // north, for old x msg.AddByte(0x65); GetMapDescription(oldPos.x - MapmaxClientViewportX, newPos.y - MapmaxClientViewportY, newPos.z, (MapmaxClientViewportX+1)*2, 1, msg); } else if (oldPos.y < newPos.y) { // south, for old x msg.AddByte(0x67); GetMapDescription(oldPos.x - MapmaxClientViewportX, newPos.y + (MapmaxClientViewportY+1), newPos.z, (MapmaxClientViewportX+1)*2, 1, msg); } if (oldPos.x < newPos.x) { // east, [with new y] msg.AddByte(0x66); GetMapDescription(newPos.x + (MapmaxClientViewportX+1), newPos.y - MapmaxClientViewportY, newPos.z, 1, (MapmaxClientViewportY+1)*2, msg); } else if (oldPos.x > newPos.x) { // west, [with new y] msg.AddByte(0x68); GetMapDescription(newPos.x - MapmaxClientViewportX, newPos.y - MapmaxClientViewportY, newPos.z, 1, (MapmaxClientViewportY+1)*2, msg); }
va em :
void ProtocolGame::MoveUpCreature(NetworkMessage& msg, const Creature* creature, const Position& newPos, const Position& oldPos)
procure esse codigo:
if (newPos.z == 7) { int32_t skip = -1; GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, 5, 18, 14, 3, skip); //(floor 7 and 6 already set) 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);
e altere ele por esse :
if (newPos.z == 7) {
int32_t skip = -1; GetFloorDescription(msg, oldPos.x - MapmaxClientViewportX, oldPos.y - MapmaxClientViewportY, 5, (MapmaxClientViewportX+1)*2, (MapmaxClientViewportY+1)*2, 3, skip); //(floor 7 and 6 already set) GetFloorDescription(msg, oldPos.x - MapmaxClientViewportX, oldPos.y - MapmaxClientViewportY, 4, (MapmaxClientViewportX+1)*2, (MapmaxClientViewportY+1)*2, 4, skip); GetFloorDescription(msg, oldPos.x - MapmaxClientViewportX, oldPos.y - MapmaxClientViewportY, 3, (MapmaxClientViewportX+1)*2, (MapmaxClientViewportY+1)*2, 5, skip); GetFloorDescription(msg, oldPos.x - MapmaxClientViewportX, oldPos.y - MapmaxClientViewportY, 2, (MapmaxClientViewportX+1)*2, (MapmaxClientViewportY+1)*2, 6, skip); GetFloorDescription(msg, oldPos.x - MapmaxClientViewportX, oldPos.y - MapmaxClientViewportY, 1, (MapmaxClientViewportX+1)*2, (MapmaxClientViewportY+1)*2, 7, skip); GetFloorDescription(msg, oldPos.x - MapmaxClientViewportX, oldPos.y - MapmaxClientViewportY, 0, (MapmaxClientViewportX+1)*2, (MapmaxClientViewportY+1)*2, 8, skip);
tambem altere isso:
else if (newPos.z > 7) { int32_t skip = -1; GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, oldPos.getZ() - 3, 18, 14, 3, skip);
--so postei pra nao perder onde parei,, dps termino de traduzir, editando esse post... tenho um trampo pra fazer agora, se der ainda hj termino---