Ir para conteúdo

Adventure

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Obrigado
    Adventure recebeu reputação de koyotestark em Como colocar som no mapa no OTClient   
    Olá pessoal.
    Venho trazer para vocês um novo mod já que nenhum outro esta funcionando.
    Oque você fez ?
    '' Bom simplesmente peguei uma base.
     A base só tinha umas 5 linhas '-' foi dureza fazer o resto kkkk.
     Ai compilei no OT Cliente para funcionar só no meu cliente para ninguém roubar ! ''
     
    Mas um amiguinho aqui do Tibia King e também uma galera estava com o mesmo problema que eu , então tive de refazer e tirar a proteção do script para disponibilizar para vocês.
     
    Para vocês não precisar copiar os script eu montei tudo bonitinho e deixei em uma pasta.
     
    Basta apenas: Entra na pasta do seu otclient e na pasta Mod você colocar a pasta que irei disponibilizar. Simples
     
    Como configurar:
    Vá no rcsound.lua
    Abra ele !
     
    Na parte:
     
    {fromPos = {x=1089, y=1110, z=8}, toPos = {x=1135, y=1142, z=8}
    Como voces podem ver deve ser colocado em fromPos a primeira ponta do lado esquerdo e em toPos a outra ponta da parte de baixo.
    É importante configurar corretamente.

    Na parte:
    {fromPos = {x = 985, y = 1069, z = 8}, toPos = {x = 1378, y = 1290, z = 8}, sound = "Fairy Tail - Main.ogg"},
     
    Deve ser colocada a musica em formato ( ogg ) para converter é bem simples
    Vá neste site http://online-audio-converter.com/pt/
    Que por sinal é muito bom !
    Você converte sua musica para ogg.
    Não mecha na qualidade se tentar melhorar a qualidade do som na hora da conversão o som pode sair muito estranho kkk vá por mim.
    Coloque as musicas em formato OGG dentro da pasta music ! NÃO É A PASTA QUE FICA NO DATA , É A PASTA QUE ESTA DENTRO DO MOD COM O NOME DE MUSIC PELO AMOR DO PAEE
    Deixei uma musica na pasta para que vocês possam testar o sistema.
    Caso der algum erro no Console poste e tentaremos arrumar.
    Normalmente estou sempre ON pelo celular
     
     
    Download:
    *Upei em dois lugares diferentes vocês podem escolher onde querem baixar
     
    Scan para aquela galerinha paranoica kkk:
     
     
     
     
    EM BREVE VEM AI O : -ADVENTURE WORLD-  PARA AQUELES QUE GOSTAM DO BOM E VELHO RPG EM UM MUNDO CERCADO DE AVENTURAS E UMA HISTORIA ENVOLVENTE !
  2. Obrigado
    Adventure recebeu reputação de Guilherme Kaercher em Como colocar som no mapa no OTClient   
    Olá pessoal.
    Venho trazer para vocês um novo mod já que nenhum outro esta funcionando.
    Oque você fez ?
    '' Bom simplesmente peguei uma base.
     A base só tinha umas 5 linhas '-' foi dureza fazer o resto kkkk.
     Ai compilei no OT Cliente para funcionar só no meu cliente para ninguém roubar ! ''
     
    Mas um amiguinho aqui do Tibia King e também uma galera estava com o mesmo problema que eu , então tive de refazer e tirar a proteção do script para disponibilizar para vocês.
     
    Para vocês não precisar copiar os script eu montei tudo bonitinho e deixei em uma pasta.
     
    Basta apenas: Entra na pasta do seu otclient e na pasta Mod você colocar a pasta que irei disponibilizar. Simples
     
    Como configurar:
    Vá no rcsound.lua
    Abra ele !
     
    Na parte:
     
    {fromPos = {x=1089, y=1110, z=8}, toPos = {x=1135, y=1142, z=8}
    Como voces podem ver deve ser colocado em fromPos a primeira ponta do lado esquerdo e em toPos a outra ponta da parte de baixo.
    É importante configurar corretamente.

    Na parte:
    {fromPos = {x = 985, y = 1069, z = 8}, toPos = {x = 1378, y = 1290, z = 8}, sound = "Fairy Tail - Main.ogg"},
     
    Deve ser colocada a musica em formato ( ogg ) para converter é bem simples
    Vá neste site http://online-audio-converter.com/pt/
    Que por sinal é muito bom !
    Você converte sua musica para ogg.
    Não mecha na qualidade se tentar melhorar a qualidade do som na hora da conversão o som pode sair muito estranho kkk vá por mim.
    Coloque as musicas em formato OGG dentro da pasta music ! NÃO É A PASTA QUE FICA NO DATA , É A PASTA QUE ESTA DENTRO DO MOD COM O NOME DE MUSIC PELO AMOR DO PAEE
    Deixei uma musica na pasta para que vocês possam testar o sistema.
    Caso der algum erro no Console poste e tentaremos arrumar.
    Normalmente estou sempre ON pelo celular
     
     
    Download:
    *Upei em dois lugares diferentes vocês podem escolher onde querem baixar
     
    Scan para aquela galerinha paranoica kkk:
     
     
     
     
    EM BREVE VEM AI O : -ADVENTURE WORLD-  PARA AQUELES QUE GOSTAM DO BOM E VELHO RPG EM UM MUNDO CERCADO DE AVENTURAS E UMA HISTORIA ENVOLVENTE !
  3. Curtir
    Adventure recebeu reputação de Mathias Kenfi em OtClient com musica   
    Pode deixar vou disponibilizar
    Vou copiar e carregar ele.

    Enviado de meu LG-K350 usando Tapatalk


     
  4. Gostei
    Adventure recebeu reputação de Zabim em Ajuda com script alavanca criar monstro   
  5. Curtir
    Adventure recebeu reputação de RXSora em Como colocar som no mapa no OTClient   
    Olá pessoal.
    Venho trazer para vocês um novo mod já que nenhum outro esta funcionando.
    Oque você fez ?
    '' Bom simplesmente peguei uma base.
     A base só tinha umas 5 linhas '-' foi dureza fazer o resto kkkk.
     Ai compilei no OT Cliente para funcionar só no meu cliente para ninguém roubar ! ''
     
    Mas um amiguinho aqui do Tibia King e também uma galera estava com o mesmo problema que eu , então tive de refazer e tirar a proteção do script para disponibilizar para vocês.
     
    Para vocês não precisar copiar os script eu montei tudo bonitinho e deixei em uma pasta.
     
    Basta apenas: Entra na pasta do seu otclient e na pasta Mod você colocar a pasta que irei disponibilizar. Simples
     
    Como configurar:
    Vá no rcsound.lua
    Abra ele !
     
    Na parte:
     
    {fromPos = {x=1089, y=1110, z=8}, toPos = {x=1135, y=1142, z=8}
    Como voces podem ver deve ser colocado em fromPos a primeira ponta do lado esquerdo e em toPos a outra ponta da parte de baixo.
    É importante configurar corretamente.

    Na parte:
    {fromPos = {x = 985, y = 1069, z = 8}, toPos = {x = 1378, y = 1290, z = 8}, sound = "Fairy Tail - Main.ogg"},
     
    Deve ser colocada a musica em formato ( ogg ) para converter é bem simples
    Vá neste site http://online-audio-converter.com/pt/
    Que por sinal é muito bom !
    Você converte sua musica para ogg.
    Não mecha na qualidade se tentar melhorar a qualidade do som na hora da conversão o som pode sair muito estranho kkk vá por mim.
    Coloque as musicas em formato OGG dentro da pasta music ! NÃO É A PASTA QUE FICA NO DATA , É A PASTA QUE ESTA DENTRO DO MOD COM O NOME DE MUSIC PELO AMOR DO PAEE
    Deixei uma musica na pasta para que vocês possam testar o sistema.
    Caso der algum erro no Console poste e tentaremos arrumar.
    Normalmente estou sempre ON pelo celular
     
     
    Download:
    *Upei em dois lugares diferentes vocês podem escolher onde querem baixar
     
    Scan para aquela galerinha paranoica kkk:
     
     
     
     
    EM BREVE VEM AI O : -ADVENTURE WORLD-  PARA AQUELES QUE GOSTAM DO BOM E VELHO RPG EM UM MUNDO CERCADO DE AVENTURAS E UMA HISTORIA ENVOLVENTE !
  6. Curtir
    este erro está no cliente entregame algo do tipo fica na pasta module o erro basicamente está porque modificaram o script original e a caixa não foi configurada corretamente , posta ai o script entergame.lua 
  7. Obrigado
    Adventure recebeu reputação de jhonnasvillar em nn aparece megas   
    simples, não tem sprite (desenho) do pokemon no dat e spr, ou está com o id da sprite errado.
    Voce vai precisar procurar o script responsavel pelo mega metagross e editar colocando a sprite (desenho) correta 
  8. Gostei
    Adventure deu reputação a Bruxo Ots em Ferramentas Tibia 12   
    Atualizado para 11.80+
     
    [*] Items

    [*] Outfits

    [*] Effects

     
    Unica coisa que não fiz a mão foram os addons, monstros e items tudo na raça.
     
    Adicionei ao Git Lab para ficar parecendo mais profissional.
     
     Download
     
     
     
     
     
    Se possível quem baixar e testar, gostaria de um feedback so pra ver se esta funcionando certinho e tals.
     
  9. Gostei
    Adventure deu reputação a Bruxo Ots em Ferramentas Tibia 12   
    Atualizado, Versão 11.90+ com as mount novas e itens novos.

  10. Curtir
    Adventure deu reputação a Snowsz em Creature Information Offset   
    Faz tempo que não posto nada, então deu vontade, tava brincando um pouco ai fiz esse sisteminha básico.
     
    • Gifs
     
    Nesse primeiro Gif, ao trocar a direção da Outfit, o nome e as barras de informações como Health, Mana, mudam de posição, isso é bom para ajustar as Outfits de acordo com o seu tamanho, como o Demon, ficar com as informações logo em cima da cabeça, ou Hydra, todos estão com o local padrão.

     
    Aqui era como as informações ficavam com essa Outfit originalmente, no padrão de sempre dos clients.

     
     
    Comparativo em imagem estática:
     
    Tibia Outfit antes e depois:

     
    Aqui estão algumas outfits que meu primo @Fae1z fez, apliquei o sistema de offset nelas, uma do Graves, uma do Ekko, ambos são personagens do game League of Legends, e uma baseada Uganda Knuckle:
     
    Ekko antes:

     
    Ekko depois:

     
    Graves antes e depois:

     
    Uganda Knuckle antes e depois:

     
    Aqui eu estava brincando de por as informações da Outfit de anão de modo drogado kkk.

     
     
    • Código
     
    Em Creature.h modifique nesta linha:
    void Creature::drawInformation(const Point& point, bool useGray, const Rect& parentRect, int drawFlags) Mude "const Point& point" para "Point& point".
    Ficando:
    void Creature::drawInformation(Point& point, bool useGray, const Rect& parentRect, int drawFlags)  
    Embaixo de:
     
    std::string getName() { return m_name; } Adicione:
     
    Point getInformationOffset() { return m_informationOffset; } void setInformationOffset(int x, int y) { m_informationOffset.x = x; m_informationOffset.y = y; }  
    Embaixo de:
    Position m_oldPosition; Adicione:
     
    Point m_informationOffset;  
     
    Agora, em Creature.cpp procure por:
    void Creature::drawInformation(const Point& point, bool useGray, const Rect& parentRect, int drawFlags) Mude "const Point& point" para "Point& point".
    Ficando:
    void Creature::drawInformation(Point& point, bool useGray, const Rect& parentRect, int drawFlags) Sim, isso está repetido, é assim mesmo, o processo é necessário em Creature.h e Creature.cpp, nessa função a variável point tem seu tipo alterado de Const para normal.
     
    Ainda em Creature.cpp procure por:
    if(!useGray) fillColor = m_informationColor; Pule duas linhas e adicione:
    point.x += m_informationOffset.x; point.y += m_informationOffset.y;  
    Agora, em Luafunctions.cpp procure por:
    g_lua.bindClassMemberFunction<Creature>("jump", &Creature::jump); Embaixo adicione:
    g_lua.bindClassMemberFunction<Creature>("setInformationOffset", &Creature::setInformationOffset); g_lua.bindClassMemberFunction<Creature>("getInformationOffset", &Creature::getInformationOffset);  
    A parte da source é só isso.
     
    Foi criada uma variável do tipo Point na classe Creature, que pode armazenar dois valores do tipo Int, sendo eles X & Y, assim detendo uma posição de offset, para ajustar a posição das informações(Health Bar, Mana Bar e Name) da criatura, essa variável é usada na função Creature::drawInformation, onde ocorre todo o desenho de informações das criaturas, lá o offset criado altera a posição de um Point usado como posição base das informações, alterando esse Point todo o resto segue aquela posição,  você pode setar o offset diretamente na criatura, as funções podem ser usadas tanto na source usando C++ quanto nos scripts usando Lua, em Lua o uso das funções é o seguinte:
     
    Essa função retorna uma tabela com X & Y, algo como "table = {x = 10, y = 20}", são as posições do offset.
    Creature:getInformationOffset() Exemplo de uso:
     
    local Offset = Creature:getInformationOffset() print(Offset.x) print(Offset.y) Isso vai printar no client_terminal do OTClient os valores de X & Y.
     
    Enquanto esta altera as posições usando os valores X & Y.
    Creature:setInformationOffset(x, y) Exemplo:
    Creature:setInformationOffset(10, -5)  
    Essa configuração de offset vai aumentar X em 10 Pixels e diminuir Y em 5 Pixels, no meu primeiro gif, na direção Sul do Char, eu usei X diminuindo 13 Pixels e Y diminuindo 8 Pixels, algo como isso:
    Creature:setInformationOffset(-13, -8)  
     
    Para tudo isso funcionar igual os gifs acima eu fiz um módulo especial, onde dependendo da Outfit e da direção que a criatura está olhando, ele vai alterar o offset de acordo.
     
    Para criar o módulo, siga estes passos:
     
    Na pasta do OTClient em modules/ crie uma pasta chamada game_creatureinformation, dentro crie um arquivo com o mesmo nome e a extensão .otmod, algo como "game_creatureinformation.otmod", o conteúdo do arquivo é este:
    Module name: game_creatureinformation description: Changes the position of the informations point to correctly draw names and creature bars. author: Snowsz website: tibiaking.com autoload: true reloadable: true sandboxed: true version: 1.0 scripts: [ game_creatureinformation ] @onLoad: init() @onUnload: terminate()  
    Crie um arquivo com o mesmo nome e a extensão .lua, algo como "game_creatureinformation.lua", o conteúdo do arquivo é este:
    --[[ Directions: North /\ East > South \/ West < Structure: [OutfitID] = { [Direction] = {x = OFFSETX, y = OFFSETY}, } ]] --Lista de offsets para cada Outfit. local OutfitOffsets = { [143] = { --Outfit do primeiro gif [North] = {x = -13, y = -8}, [East] = {x = -17, y = -8}, [South] = {x = -13, y = -8}, [West] = {x = -15, y = -8}, }, [160] = { --Outfit de anão com o nome full drogado. [North] = {x = 0, y = 0}, [East] = {x = 0, y = 0}, [South] = {x = -13, y = -80}, [West] = {x = 0, y = 0}, } } local function translateDir(dir) if dir == NorthEast or dir == SouthEast then return East elseif dir == NorthWest or dir == SouthWest then return West end return dir end local function getOutfitInformationOffset(outfit, dir) if OutfitOffsets[outfit] then return OutfitOffsets[outfit][translateDir(dir)] end return {x = 0, y = 0} end local function onCreatureAppear(creature) local Offset = getOutfitInformationOffset(creature:getOutfit().type, creature:getDirection()) creature:setInformationOffset(Offset.x, Offset.y) end local function onCreatureDirectionChange(creature, oldDirection, newDirection) local Offset = getOutfitInformationOffset(creature:getOutfit().type, newDirection) creature:setInformationOffset(Offset.x, Offset.y) end local function onCreatureOutfitChange(creature, newOutfit, oldOutfit) local Offset = getOutfitInformationOffset(newOutfit.type, creature:getDirection()) creature:setInformationOffset(Offset.x, Offset.y) end function init() connect(LocalPlayer, {onOutfitChange = onCreatureOutfitChange}) connect(Creature, { onAppear = onCreatureAppear, onDirectionChange = onCreatureDirectionChange, onOutfitChange = onCreatureOutfitChange }) end function terminate() disconnect(LocalPlayer, {onOutfitChange = onCreatureOutfitChange}) disconnect(Creature, { onAppear = onCreatureAppear, onDirectionChange = onCreatureDirectionChange, onOutfitChange = onCreatureOutfitChange }) end  
    A parte do módulo está finalizada, o que resta agora é configurar as Outfits na tabela com seus determinados Offsets, e não se preocupe, se a outfit não estiver configurada, ela vai seguir o padrão normal, o módulo só altera algo quando determinada Outfit está configurada.
     
    Para configurar o módulo é simples, basta seguir o padrão:
    [ID DA OUTFIT AQUI] = { [North] = {x = 0, y = 0}, [East] = {x = 0, y = 0}, [South] = {x = 0, y = 0}, [West] = {x = -0, y = 0}, }, Nos primeiros colchetes coloque o ID da sua Outfit para ter o offset modificado, os colchetes restantes são as direções, não é necessário mexer neles, dentro de cada índice da tabela tem os offsets X & Y, basta modificar o valor de acordo, sendo ele positivo ou negativo. NÃO SE ESQUEÇA DA VÍRGULA NO FINAL "},".
  11. Gostei
    Adventure deu reputação a Cat em Mapper King 2018   
    Tema: Natureza Desértica
    @Daniel vs @NetoKain
    Que o duelo comece!

     
    Mapa 01           VS           Mapa 02
     
     
  12. Curtir
    Adventure deu reputação a NetoKain em [Projeto] Mapping Art - Nature   
    Salve galera do TK, estarei revivendo um projeto antigo de tutorial sobre mapping e espero ter ajuda para dar continuidade. 
     Esse post inicialmente será feito como introdução MAS NETO QUE PORR@ É ESSA?  Basicamente jovem estarei trazendo um pouco de experiência na área de mapping, de várias pessoas, estilos diferentes, afinal cada mapper tem um estilo e isso muda muita coisa, entre um e outro, então a ideia é trazer uma variedade de conteúdo para que vocês possam observar como trabalhamos e criar seu próprio estilo fazendo mapas bonitos.
    Regras:

    1 - Eu vou criar um tutorial, ao final irei indicar um mapper, ele irá fazer outro tutorial sobre outro estilo e no final ele vai indicar outro mapper, e assim sucessivamente.

    2 - Usar meu tutorial como referência, ou seja, sendo bem detalhado nos quesitos que vão abordar e trazer imagens.

    3 - Se não quiser participar, por qualquer motivo, comenta que não pode e será escolhido outro.

    4 - Titular o tópico com "[Projeto] Mapping Art - (Nome do tema)" (ex: [Projeto] Mapping Art - Cidades)".


     No caso convido o @Daniel para dar continuidade (o tipo do mapa fica a escolha do mapper, só peço para que não seja repetido). 
    Vou falar um pouco sobre nature, que é o básico!

    Tutorial 1: NetoKain - Nature
     

    Nature - Complemento.
    Vou passar uma breve explicação de como eu geralmente faço para montar a nature com arvores e arbustos, acho que ficou meio vago na explicação anterior, nesse caso vamos iniciar com o ground já feito.

    Após seguir os passos e caso tenha entendido o tutorial deixe sua imaginação andar junto com um bom planejamento e coerência.
    Bom mapping a todos, espero o tutorial do @Daniel!
     
  13. Obrigado
    Adventure recebeu reputação de jhonass em (Resolvido)nn liga serve   
    Que bom amigo, sucesso !!!
  14. Curtir
    Adventure recebeu reputação de Storm em (Resolvido)nn liga serve   
    então esse deve ser o problema amigo, poderia inicar o xampp no navegador e ir ate a database e verificar o nome que vooc deu a database ?
  15. Gostei
    Adventure deu reputação a cleitonbandeira em Dll de mudar cor do nome dos npcs e mais.   
    Olá pessoal do tk, vim trazer hoje uma dll para tibia 8.54 que encontrei em um narutibia pl.
    Essa Dll pelo que entendi serve pra mudar a cor do nome dos npcs de verde para azul, ela também faz exibir na tela alguma informação e o fps. 
    vejam a dll na imagem ao lado.
     
    Para mudar aquele texto exibido pela dll é so editar pelo notepad.
     
    download: https://www.mediafire.com/file/dtv314zblnnh845/ntg.dll
     
    Scan: https://www.virustotal.com/#/file/c52dc9d0099da27ac788979e055b819b6fafb946ed8b1b04c5ec483a6660036c/detection
     
    creditos: Naruto The Greatest
  16. Obrigado
    Adventure deu reputação a Leohige em X Monster não ataca player de X vocação   
    Adicione essa função em data/events/scripts/creature.lua
     
     
    E substitua a função Creature:onTargetCombat(target) por esta
     
     
    Não cheguei a testar com combate em área
  17. Curtir
    Adventure deu reputação a Fir3z em Ganhar montaria ao fazer login   
    Nome do Script: Ganhar Montaria Nome do Autor: Fir3z (eu) Servidor Testado e/ou Versão do Tibia: TFS 0.4 (8.70) Descrição e/ou Informações Adicionais: Ao fazer login vc automaticamente ganhará uma específica montaria. Vi um cara no Suporte querendo um script assim... e apesar de ser bem simples, acho que ainda terá muitas pessoas que vão querer esse script...

    No arquivo creaturescript.xml adicione está linha:
    <event type="login" name="Montaria" event="script" value="montaria.lua"/> Crie um arquivo com o nome montaria.lua dentro da pasta scripts e coloque isso dentro:
    local montaria = IDDAMONTARIA function onLogin(cid) if getPlayerStorageValue(cid, 37561) == -1 then doPlayerAddMount(cid, montaria) setPlayerStorageValue(cid, 37561, 1) doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Por ter feito seu primeiro login no servidor, você acabou de ganhar uma montaria!") end return TRUE end No arquivo login.lua adicione está linha:
    registerCreatureEvent(cid, "Montaria")
  18. Curtir
    Adventure deu reputação a KotZletY em (Resolvido)Bau que da item de acordo com a % de chance   
    Fiz uma pequena correção no script, você poderia utilizar a chave em qualquer lugar, corrigir para que pudesse utilizar somente no bau desejado, basta colocar actionid que você escolheu, na variável actId_xml e assim a chave só vai funcionar no bau que tiver essa action especifica, no caso o da quest! 
  19. Curtir
    Adventure deu reputação a Pedro. em (Resolvido)Bau que da item de acordo com a % de chance   
    Gostei hahaha, vou usar ;p
  20. Gostei
    Adventure deu reputação a KotZletY em (Resolvido)Bau que da item de acordo com a % de chance   
    @Adventure script:
     
    actions.xml:
    <action actionid="55555" script="arquivo.lua" /> <action itemid="12548" script="arquivo.lua" /> A actionid, coloque no bau quando o player clicar no bau ele receberá uma mensagem dizendo que precisa de tal chave, para ele clicar na chave e clicar no bau, o motivo da action é somente para que essa mensagem ocorra naquele bau.
     
    E o itemid é o id da chave, o player irá clicar nela e clicar no bau, e ocorrera todo o processo que já está descrito no script, acredito que não tem mais nada que eu possa explicar mas caso não entenda algo é só perguntar.
    Abraços!!
  21. Gostei
    Adventure deu reputação a GOD Vitor em SPR otPokémon 14.42 (04/03/18)   
    Eae galera, venho trazer para vocês em primeira mão a SPR mais recente do otPokémon que está na atualização 14.42 (04/03/2018). A SPR vai completa, com todas as sprites do otPokémon.  
    Screenshots    
    Informações Além das sprites exibidas nas screenshots acima, há novos addons, etc.   Download  
    Scan
      Créditos otPokémon - Pelas sprites; GOD Vitor - Por disponibilizá-las.
  22. Curtir
    Adventure recebeu reputação de JZDJ em Download Clients 11+ IP 127.0.0.1   
    Tibia 11 nn possue o arquivo Tibia.spr
     
     
  23. Curtir
    Adventure deu reputação a Refe em Adicionando Tiles a janela de jogo!   
    Hoje eu vim ensinar como aumenta a "tela" de jogo do OTCLIENT

    (Desculpe o merchant, era a unica imagem que eu tinha salvo)
     
    Testado em : 0.3.6pl1, Pode funcionar em 1.0 com alterações pequenas.
     
     
    Agora ache e troque:
    return ((x >= myPos.x - 8 + offsetz) && (x <= myPos.x + 9 + offsetz) && (y >= myPos.y - 6 + offsetz) && (y <= myPos.gety + 7 + offsetz)); Por:
    return ((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)); Agora ache:
    GetMapDescription(pos.x - 8, pos.y - 6, pos.z, 18, 14, msg); E troque por:
    GetMapDescription(pos.x - Map::maxClientViewportX, pos.y - Map::maxClientViewportY, pos.z, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, msg); Agora em
    void ProtocolGame::sendMoveCreature(const Creature* creature, const Tile* newTile, const Position& newPos, uint32_t newStackpos, const Tile* oldTile, const Position& oldPos, uint32_t oldStackpos, bool teleport) Troque:
    A parte que começa em if (oldPos.y > newPos.y) { e Termina em GetMapDescription(newPos.x - 8, newPos.y - 6, newPos.z, 1, 14, msg); } 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); Agora ache:
    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);  Depedendo da Source, a parte será assim:
     
    Por:
    if(newPos.z == 7) //going to surface { 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); Agora ache:
    else if(newPos.z > 7) { int32_t skip = -1; GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, oldPos.getZ() - 3, 18, 14, 3, skip); Depedendo da source será assim:
     
    Por:
    else if(newPos.z > 7) //underground, going one floor up (still underground) { int32_t skip = -1; GetFloorDescription(msg, oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, oldPos.z - 3, (Map::maxClientViewportX+1), (Map::maxClientViewportY+1)*2, 3, skip); Troque:
    //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); 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); Agora troque:
    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); Dependendo da source poderá ser:
     
    Por:
    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); Agora troque:
    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); Depedendo da source pode ser:
     
    Por:
    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); Agora em map.h edite como quiser:
    static const int32_t maxViewportX = 11; //min: maxClientViewportX + 1 static const int32_t maxViewportY = 11; //min value: maxClientViewportY + 1 static const int32_t maxClientViewportX = 8; static const int32_t maxClientViewportY = 6; Observação:
     
     
    Agora em map.cpp do OTCLIENT
    Ache:
    void Map::resetAwareRange() { AwareRange range; range.left = 8; range.top = 6; range.bottom = 7; range.right = 9; setAwareRange(range); } Troque por:
    { AwareRange range; range.left = 8; //Valor que colocou em maxClientViewportX range.top = 6; //Valor que colocou em maxClientViewportY range.bottom = range.top+1; range.right = range.left+1; setAwareRange(range); } Créditos:
    Flatlander  - OTLAND - Criação
    Ceetros - Tradução
     
     
    Agora vamos deixar o OTCLIENT lindão.
     
     
     
     
     
    Troque tudo de modules/game_interface/interface.lua (na pasta do OTCLIENT)
    por:
    http://pastebin.com/tH7qyreW
    (para o tutorial não ficar muito grande botei no pastebin, já que o spoiler tá bugando)
    Creditos dessa parte: 
    Edubart (Criador do OTCLIENT)
    Ceetros
     
    Caso tenha ajudado, dê um rep+
     
  24. Obrigado
    Adventure deu reputação a JZDJ em Download Clients 11+ IP 127.0.0.1   
    Editei e reupei, desculpa aí!
    Abraços.
  25. Obrigado
    Adventure deu reputação a JZDJ em Download Clients 11+ IP 127.0.0.1   
    @Adventure Tá na mão, deu trabalho e muito tempo para compactar, upar e fazer o scan de tudo, mas tá aí.
    Download e scan dos clientes e das pastas compactadas de todas as versões que divulguei.
    Acho que mereço um rep né?!?
    @icemirow Eu não edito pelo notepad, uso o programa xvi32.

Informação Importante

Confirmação de Termo