Administrador gutinha 1.287 Postado 31 de Julho 2023 Administrador Compartilhar Postado 31 de Julho 2023 Salve galera, mais um tutorial ai. Vou ensinar a como extender a tela do otclient. Nas sources do servidor: 1° Passo Spoiler No arquivo const.h Procure por #define NETWORKMESSAGE_MAXSIZE E substitua por // Se o seu estiver maior que 24590, não precisa alterar #define NETWORKMESSAGE_MAXSIZE 24590 Por padrão o valor vem menor, em alguns casos aumentar esse valor resolve alguns problemas. 2° Passo Spoiler No arquivo protocolgame.cpp Procure na função bool ProtocolGame::canSee(int32_t x, int32_t y, int32_t z) const if ((x >= myPos.getX() - 8 + offsetz) && (x <= myPos.getX() + 9 + offsetz) && (y >= myPos.getY() - 6 + offsetz) && (y <= myPos.getY() + 7 + offsetz)) { E substitua por if ((x >= myPos.getX() - Map::maxClientViewportX + offsetz) && (x <= myPos.getX() + (Map::maxClientViewportX+1) + offsetz) && (y >= myPos.getY() - Map::maxClientViewportY + offsetz) && (y <= myPos.getY() + (Map::maxClientViewportY+1) + offsetz)) { Procure na função void ProtocolGame::sendMapDescription(const Position& pos) GetMapDescription(pos.x - 8, pos.y - 6, pos.z, 18, 14, msg); E substitua por GetMapDescription(pos.x - Map::maxClientViewportX, pos.y - Map::maxClientViewportY, pos.z, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, msg); Procure na função void ProtocolGame::sendMoveCreature(const Creature* creature, const Position& newPos, int32_t newStackPos, const Position& oldPos, int32_t oldStackPos, bool teleport) 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); } E substitua por if (oldPos.y > newPos.y) { // north, for old x msg.AddByte(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.AddByte(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.AddByte(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.AddByte(0x68); GetMapDescription(newPos.x - Map::maxClientViewportX, newPos.y - Map::maxClientViewportY, newPos.z, 1, (Map::maxClientViewportY+1)*2, msg); } Procure na função void ProtocolGame::MoveUpCreature(NetworkMessage& msg, const Creature* creature, const Position& newPos, const Position& oldPos) 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 substitua por if (newPos.z == 7) { int32_t skip = -1; GetFloorDescription(msg, oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, 5, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, 3, skip); //(floor 7 and 6 already set) 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); Procure por else if (newPos.z > 7) { int32_t skip = -1; GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, oldPos.getZ() - 3, 18, 14, 3, skip); Substitua por else if (newPos.z > 7) { int32_t skip = -1; GetFloorDescription(msg, oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, oldPos.getZ() - 3, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, 3, skip); Procure por //moving up a floor up makes us out of sync //west msg.AddByte(0x68); GetMapDescription(oldPos.x - 8, oldPos.y - 5, newPos.z, 1, 14, msg); //north msg.AddByte(0x65); GetMapDescription(oldPos.x - 8, oldPos.y - 6, newPos.z, 18, 1, msg); Substitua por //moving up a floor up makes us out of sync //west msg.AddByte(0x68); GetMapDescription(oldPos.x - Map::maxClientViewportX, oldPos.y - (Map::maxClientViewportY-1), newPos.z, 1, (Map::maxClientViewportY+1)*2, msg); //north msg.AddByte(0x65); GetMapDescription(oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, newPos.z, (Map::maxClientViewportX+1)*2, 1, msg); Procure na função void ProtocolGame::MoveDownCreature(NetworkMessage& msg, const Creature* creature, const Position& newPos, const Position& oldPos) //going from surface to underground if (newPos.z == 8) { int32_t skip = -1; 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); Substitua por //going from surface to underground if (newPos.z == 8) { int32_t skip = -1; 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); Procure por //going further down else if (newPos.z > oldPos.z && newPos.z > 8 && newPos.z < 14) { int32_t skip = -1; GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, newPos.z + 2, 18, 14, -3, skip); Substitua por //going further down else if (newPos.z > oldPos.z && newPos.z > 8 && newPos.z < 14) { int32_t skip = -1; GetFloorDescription(msg, oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, newPos.z + 2, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, -3, skip); Procure por //moving down a floor makes us out of sync //east msg.addByte(0x66); GetMapDescription(oldPos.x + 9, oldPos.y - 7, newPos.z, 1, 14, msg); //south msg.addByte(0x67); GetMapDescription(oldPos.x - 8, oldPos.y + 7, newPos.z, 18, 1, msg); Substitua por //moving down a floor makes us out of sync //east msg.addByte(0x66); GetMapDescription(oldPos.x + Map::maxClientViewportX+1, oldPos.y - (Map::maxClientViewportY+1), newPos.z, 1, ((Map::maxClientViewportY+1)*2), msg); //south msg.addByte(0x67); GetMapDescription(oldPos.x - Map::maxClientViewportX, oldPos.y + (Map::maxClientViewportY+1), newPos.z, ((Map::maxClientViewportX+1)*2), 1, msg); Se você estiver usando TFS 0.3.6, procure por void ProtocolGame::AddMapDescription(NetworkMessage_ptr msg, const Position& pos) { msg->put<char>(0x64); msg->putPosition(player->getPosition()); GetMapDescription(pos.x - 8, pos.y - 6, pos.z, 18, 14, msg); } Substitua por void ProtocolGame::AddMapDescription(NetworkMessage_ptr msg, const Position& pos) { msg->put<char>(0x64); msg->putPosition(player->getPosition()); GetMapDescription(pos.x - Map::maxClientViewportX, pos.y - Map::maxClientViewportY, pos.z, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, msg); } Agora finalizamos a parte do protocolgame.cpp 3° Passo Spoiler Agora no map.h você pode alterar esses números para o que desejar: 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; Geralmente: O maxClientViewport é até onde o cliente pode ver. O maxViewport é até onde os monstros enxergam. 4° Passo Spoiler Agora nas sources do otclient, em map.cpp Procure por void Map::resetAwareRange() { AwareRange range; range.left = 8; range.top = 6; range.bottom = 7; range.right = 9; setAwareRange(range); } Substitua por { AwareRange range; range.left = 8; //Change this to = maxClientViewportX range.top = 6; //Change this to = maxClientViewportY range.bottom = range.top+1; range.right = range.left+1; setAwareRange(range); } Se você estendeu sua tela e precisa que as criaturas te vejam e "reajam" para você com a nova distância, siga esse passo Passo extra Spoiler Na source do servidor, em creature.cpp Procure por bool Creature::canSee(const Position& myPos, const Position& pos, int32_t viewRangeX, int32_t viewRangeY) { if (myPos.z <= 7) { //we are on ground level or above (7 -> 0) //view is from 7 -> 0 if (pos.z > 7) { return false; } } else if (myPos.z >= 8) { //we are underground (8 -> 15) //view is +/- 2 from the floor we stand on if (Position::getDistanceZ(myPos, pos) > 2) { return false; } } const int_fast32_t offsetz = myPos.getZ() - pos.getZ(); return (pos.getX() >= myPos.getX() - viewRangeX + offsetz) && (pos.getX() <= myPos.getX() + viewRangeX + offsetz) && (pos.getY() >= myPos.getY() - viewRangeY + offsetz) && (pos.getY() <= myPos.getY() + viewRangeY + offsetz); } Substitua por bool Creature::canSee(const Position& myPos, const Position& pos, int32_t viewRangeX, int32_t viewRangeY) { if (myPos.z <= 7) { //we are on ground level or above (7 -> 0) //view is from 7 -> 0 if (pos.z > 7) { return false; } } else if (myPos.z >= 8) { //we are underground (8 -> 15) //view is +/- 2 from the floor we stand on if (Position::getDistanceZ(myPos, pos) > 2) { return false; } } const int_fast32_t offsetz = myPos.getZ() - pos.getZ(); return (pos.getX() >= myPos.getX() - Map::maxViewportX + offsetz) && (pos.getX() <= myPos.getX() + Map::maxViewportX + offsetz) && (pos.getY() >= myPos.getY() - Map::maxViewportY + offsetz) && (pos.getY() <= myPos.getY() + Map::maxViewportY + offsetz); } 21 8 Link para o comentário https://tibiadevs.com/forums/topic/28-tutorial-como-extender-a-tela-do-otclient-e-otcv8-tfs-1x-e-036/ Compartilhar em outros sites Mais opções de compartilhamento...
Liu 13 Postado 31 de Julho 2023 Compartilhar Postado 31 de Julho 2023 AEE GUTINHA BORA SER TOP 1 REPUTAÇÃO NESSA BAGAÇA muito bom tutorial :D 1 1 Link para o comentário https://tibiadevs.com/forums/topic/28-tutorial-como-extender-a-tela-do-otclient-e-otcv8-tfs-1x-e-036/#findComment-150 Compartilhar em outros sites Mais opções de compartilhamento...
Administrador TELASKO 2.949 Postado 31 de Julho 2023 Administrador Compartilhar Postado 31 de Julho 2023 Obrigado pela contribuição 🤌🏼 Link para o comentário https://tibiadevs.com/forums/topic/28-tutorial-como-extender-a-tela-do-otclient-e-otcv8-tfs-1x-e-036/#findComment-151 Compartilhar em outros sites Mais opções de compartilhamento...
Baia 67 Postado 31 de Julho 2023 Compartilhar Postado 31 de Julho 2023 Brabissimo o tópico!!! Link para o comentário https://tibiadevs.com/forums/topic/28-tutorial-como-extender-a-tela-do-otclient-e-otcv8-tfs-1x-e-036/#findComment-155 Compartilhar em outros sites Mais opções de compartilhamento...
Dark 1 Postado 17 de Agosto 2023 Compartilhar Postado 17 de Agosto 2023 fiz todo o tutorial e a tela do meu otclient continua original (pequena) -- edit 2: Rapaziada é o seguinte, mexendo aqui e descobri a seguinte informação, se você possui um mapa muito grande, provavelmente você vai ter problemas caso coloque um valor de NETWORKMESSAGE_MAXSIZE baixo, por exemplo, eu usei o mapa global e simplesmente o cliente crashava ou ficava preto qnd ia pra locais muito distante. Pra isso vc precisa colocar um valor alto, eu recomendo colocar o limite que é de 65535 -- edit 1: consegui resolver o problema, eu desativei o classic view em options > interface no otcv8. uma dica, na ultima parte pra configurar o viewport, eu sofri um pouco pra entender como funciona, pq se colocar um número errado o negocio vai bugar, então segue um exemplo pra vocês utilizarem. Cliente: AwareRange range; range.left = 16; //Change this to = maxClientViewportX range.top = 10; //Change this to = maxClientViewportY range.bottom = range.top+1; range.right = range.left+1; setAwareRange(range); Servidor: static constexpr int32_t maxViewportX = 17; //min value: maxClientViewportX + 1 static constexpr int32_t maxViewportY = 10; //min value: maxClientViewportY + 1 static constexpr int32_t maxClientViewportX = 16; static constexpr int32_t maxClientViewportY = 10; Link para o comentário https://tibiadevs.com/forums/topic/28-tutorial-como-extender-a-tela-do-otclient-e-otcv8-tfs-1x-e-036/#findComment-332 Compartilhar em outros sites Mais opções de compartilhamento...
OTFantasyWorld 9 Postado 2 de Setembro 2023 Compartilhar Postado 2 de Setembro 2023 as vezes pode ser uma pergunta burra ou não kk...mas precisa compilar para saber se funcionou ? Link para o comentário https://tibiadevs.com/forums/topic/28-tutorial-como-extender-a-tela-do-otclient-e-otcv8-tfs-1x-e-036/#findComment-512 Compartilhar em outros sites Mais opções de compartilhamento...
Dark 1 Postado 2 de Setembro 2023 Compartilhar Postado 2 de Setembro 2023 34 minutos atrás, OTFantasyWorld disse: as vezes pode ser uma pergunta burra ou não kk...mas precisa compilar para saber se funcionou ? Sim, você precisa realizar as alterações no código fonte do servidor, compilar e testar. Link para o comentário https://tibiadevs.com/forums/topic/28-tutorial-como-extender-a-tela-do-otclient-e-otcv8-tfs-1x-e-036/#findComment-513 Compartilhar em outros sites Mais opções de compartilhamento...
OTFantasyWorld 9 Postado 2 de Setembro 2023 Compartilhar Postado 2 de Setembro 2023 4 minutos atrás, Dark disse: Sim, você precisa realizar as alterações no código fonte do servidor, compilar e testar. obrigado kk agora vou procurar aprender como compilar kkk Link para o comentário https://tibiadevs.com/forums/topic/28-tutorial-como-extender-a-tela-do-otclient-e-otcv8-tfs-1x-e-036/#findComment-514 Compartilhar em outros sites Mais opções de compartilhamento...
kingolaf 0 Postado 19 de Outubro 2023 Compartilhar Postado 19 de Outubro 2023 funciona na base canary? Link para o comentário https://tibiadevs.com/forums/topic/28-tutorial-como-extender-a-tela-do-otclient-e-otcv8-tfs-1x-e-036/#findComment-803 Compartilhar em outros sites Mais opções de compartilhamento...
Administrador gutinha 1.287 Postado 27 de Outubro 2023 Autor Administrador Compartilhar Postado 27 de Outubro 2023 Em 19/10/2023 em 04:36, kingolaf disse: funciona na base canary? Mano, não foi testado no canary. Então não sei te informar. Link para o comentário https://tibiadevs.com/forums/topic/28-tutorial-como-extender-a-tela-do-otclient-e-otcv8-tfs-1x-e-036/#findComment-825 Compartilhar em outros sites Mais opções de compartilhamento...
onark007 0 Postado 13 de Dezembro 2023 Compartilhar Postado 13 de Dezembro 2023 O meu ficou assim alguém pode me ajudar? Link para o comentário https://tibiadevs.com/forums/topic/28-tutorial-como-extender-a-tela-do-otclient-e-otcv8-tfs-1x-e-036/#findComment-1199 Compartilhar em outros sites Mais opções de compartilhamento...
Sukuna 0 Postado 23 de Abril Compartilhar Postado 23 de Abril Fiz passo a passo igual o tutorial, refiz novamente 3x, e o erro é o mesmo, alguem consegue me da um help sobre isso? Link para o comentário https://tibiadevs.com/forums/topic/28-tutorial-como-extender-a-tela-do-otclient-e-otcv8-tfs-1x-e-036/#findComment-2073 Compartilhar em outros sites Mais opções de compartilhamento...
lucaskiba3 0 Postado 10 de Junho Compartilhar Postado 10 de Junho o meu não tem esse arquivo map.cpp no otc, o que pode ser ? Link para o comentário https://tibiadevs.com/forums/topic/28-tutorial-como-extender-a-tela-do-otclient-e-otcv8-tfs-1x-e-036/#findComment-2456 Compartilhar em outros sites Mais opções de compartilhamento...
andreoam 1 Postado 29 de Julho Compartilhar Postado 29 de Julho faz esse tutorial pra Canary server. pls 1 Link para o comentário https://tibiadevs.com/forums/topic/28-tutorial-como-extender-a-tela-do-otclient-e-otcv8-tfs-1x-e-036/#findComment-2761 Compartilhar em outros sites Mais opções de compartilhamento...
Nemysis 5 Postado 26 de Setembro Compartilhar Postado 26 de Setembro oi alguem sabe como compilar essa base ai ? eu tentei estender a tela, mas nao sei compilar , alguem sabe algum tutorial ou me ensine ? Link para o comentário https://tibiadevs.com/forums/topic/28-tutorial-como-extender-a-tela-do-otclient-e-otcv8-tfs-1x-e-036/#findComment-3393 Compartilhar em outros sites Mais opções de compartilhamento...
PokeXTibia 70 Postado 17 de Outubro Compartilhar Postado 17 de Outubro Em 17/08/2023 em 15:00, Dark disse: fiz todo o tutorial e a tela do meu otclient continua original (pequena) -- edit 2: Rapaziada é o seguinte, mexendo aqui e descobri a seguinte informação, se você possui um mapa muito grande, provavelmente você vai ter problemas caso coloque um valor de NETWORKMESSAGE_MAXSIZE baixo, por exemplo, eu usei o mapa global e simplesmente o cliente crashava ou ficava preto qnd ia pra locais muito distante. Pra isso vc precisa colocar um valor alto, eu recomendo colocar o limite que é de 65535 -- edit 1: consegui resolver o problema, eu desativei o classic view em options > interface no otcv8. uma dica, na ultima parte pra configurar o viewport, eu sofri um pouco pra entender como funciona, pq se colocar um número errado o negocio vai bugar, então segue um exemplo pra vocês utilizarem. Cliente: AwareRange range; range.left = 16; //Change this to = maxClientViewportX range.top = 10; //Change this to = maxClientViewportY range.bottom = range.top+1; range.right = range.left+1; setAwareRange(range); Servidor: static constexpr int32_t maxViewportX = 17; //min value: maxClientViewportX + 1 static constexpr int32_t maxViewportY = 10; //min value: maxClientViewportY + 1 static constexpr int32_t maxClientViewportX = 16; static constexpr int32_t maxClientViewportY = 10; me ajuda mn n consegui no 0.3.6 Link para o comentário https://tibiadevs.com/forums/topic/28-tutorial-como-extender-a-tela-do-otclient-e-otcv8-tfs-1x-e-036/#findComment-3574 Compartilhar em outros sites Mais opções de compartilhamento...
Posts Recomendados
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 contaEntrar
Já tem uma conta? Faça o login.
Entrar Agora