
Adventure
Membro
-
Registro em
-
Última visita
Histórico de Curtidas
-
Adventure recebeu reputação de koyotestark em Como colocar som no mapa no OTClientOlá 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 !
-
Adventure recebeu reputação de Guilherme Kaercher em Como colocar som no mapa no OTClientOlá 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 !
-
Adventure recebeu reputação de Mathias Kenfi em OtClient com musicaPode deixar vou disponibilizar
Vou copiar e carregar ele.
Enviado de meu LG-K350 usando Tapatalk
-
Adventure recebeu reputação de Zabim em Ajuda com script alavanca criar monstro
-
Adventure recebeu reputação de RXSora em Como colocar som no mapa no OTClientOlá 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 !
-
Adventure recebeu reputação de danielkill62 em Como resolver o erro do Ot Client que a janela de login não aparece ?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
-
Adventure recebeu reputação de jhonnasvillar em nn aparece megassimples, 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
-
Adventure deu reputação a Bruxo Ots em Ferramentas Tibia 12Atualizado 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.
-
Adventure deu reputação a Bruxo Ots em Ferramentas Tibia 12Atualizado, Versão 11.90+ com as mount novas e itens novos.
-
Adventure deu reputação a Snowsz em Creature Information OffsetFaz 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 "},".
-
Adventure deu reputação a Cat em Mapper King 2018Tema: Natureza Desértica
@Daniel vs @NetoKain
Que o duelo comece!
Mapa 01 VS Mapa 02
-
Adventure deu reputação a NetoKain em [Projeto] Mapping Art - NatureSalve 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!
-
Adventure recebeu reputação de jhonass em (Resolvido)nn liga serveQue bom amigo, sucesso !!!
-
Adventure recebeu reputação de Storm em (Resolvido)nn liga serveentã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 ?
-
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
-
Adventure deu reputação a Leohige em X Monster não ataca player de X vocaçãoAdicione 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
-
Adventure deu reputação a Fir3z em Ganhar montaria ao fazer loginNome 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") -
Adventure deu reputação a KotZletY em (Resolvido)Bau que da item de acordo com a % de chanceFiz 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!
-
Adventure deu reputação a Pedro. em (Resolvido)Bau que da item de acordo com a % de chanceGostei hahaha, vou usar ;p
-
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!!
-
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. -
Adventure recebeu reputação de JZDJ em Download Clients 11+ IP 127.0.0.1Tibia 11 nn possue o arquivo Tibia.spr
-
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+
-
Adventure deu reputação a JZDJ em Download Clients 11+ IP 127.0.0.1Editei e reupei, desculpa aí!
Abraços.
-
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.