Entre para seguir isso  
Seguidores 0
LipESprY

[Tutorial] Como refazer o mapcache [.dat] - Ferramenta nativa do emulador

1 post neste tópico

# Motivação do tutorial:

Passei pelo seguinte problema: Ao teleportar, os jogadores estavam caindo em coordenadas (where) não andáveis (no-walkable). Fui buscar uma solução nativa, como já havia feito por volta de 2009 (eAthena/cronus) e percebi que isso só é mencionado muito superficialmente nos tutoriais de adicionar mapas personalizados. Daí, após muitas pesquisas e solucionar meu problema, resolvi trazer isso pra vocês.

# Objetivo: Corrigir e/ou atualizar o cache dos mapas do seu servidor.

 

# Qual a função do cache dos mapas (mapcache.dat)?

- Ao teleportar-se, o emulador precisa entender quais coordenadas são andáveis. Já pensou se vc tivesse que deixar todos os arquivos do seu mapa junto ao emulador pra ele buscar mapa por mapa toda vez que alguém teleportar-se?!

 

PS: Compilei utilizando um SO Linux (CentOS 7), mas tem pouquíssimas diferenças pra fazer no Windows!

 

# Pré-requisitos:

- Todas as GRFs com os mapas devem estar disponíveis no host do seu servidor - pode fazer em outro PC também, desde que tenha um espelho do emulador;

- Conhecimento superficial de como compilar o emulador;

 

- Bora! Mãos à obra!

 

AVISO: O tutorial será bem detalhado, de modo que qualquer (ou quase) iniciante possa executar as ações prevista. Se vc é expert (ou quase), basta acompanhar apenas os comandos.

 

#1 - Primeiro passo é preparar/compilar o cache de mapas. Como mencionado, estou utilizando o Linux!

Vamos acessar a pasta do emulador:

$ cd /home/emulador

Como já é de costume, vamos assegurar que tenhamos permissões suficientes pra fazer tudo:

# chmod -Rv u+rwx /home/emulador

E bora compilar:

$ make tools

#2 - Vamos agora configurar o arquivo que define onde estão nossas GRFs: grf-files.txt

Aqui vamos precisar de um editor de texto. Em algumas distribuições do Linux já vem o nano, vim e/ou etc... Com o nano ficaria assim:

$ cd conf/
$ nano grf-files.txt

Nesse arquivo, temos que dizer pra ele onde estão nossos mapas. Pode ser a(s) GRF(s), como já dito, ou a própria pasta data. O arquivo tem sua auto-explicação, mas não vou poupar detalhes...

Como pré-requisito, eu disse que vc precisa da GRF no servidor. E é aqui q vamos usá-la!

Com o arquivo aberto, adicione a linha da(s) GRFs - vamos "supor" que eu tenha 1 GRF do bRO e 1 GRF com meus arquivos customizados. Ambas no mesmo diretório:

grf: /home/minhas_grfs/data.grf
grf: /home/minhas_grfs/custom_data.grf

Agora é só salvar o arquivo (Ctrl+O, Enter, Ctrl+X no nano);

ATENÇÃO AQUI: Caaaaaaso a sua GRF seja criptografada, vc vai ter que extrair tudo referente aos mapas. Pra agilizar o processo, extraia tudo que estiver na raiz da pasta data e só a pasta "model" que tem uns arquivos dos mapas lá. Daí economiza seu valioso tempo, já que os arquivos da raiz são bem miúdos... 

Daí vai ter que alterar o arquivo grf-files.txt conforme a situação:

grf: /home/minhas_grfs/data.grf
data_dir: /home/minha_data/

Repare que eu não apontei a própria pasta "data", mas sim a pasta "pai" dela. É como se minha pasta data fosse assim: /home/minha_data/data (O arquivo grf-files já explica isso certinho)

#3 - Vamos só fazer um backup do arquivo mapcache.dat atual antes de fazer o novo, né?! =)

$ cd /home/emulador/db/pre-re/
$ mv mapcache.dat mapcache_backup.dat

#4 - Agora é só rodar o mapcache que compilamos e voaláaaa:

$ cd /home/emulador
$ ./mapcache

Prontinho! Tudo filé!

Se tudo correu como planejado, vc verá o seguinte no seu console:

                            brAthena Dev.Team apresenta

                    _           _   _   _
                   | |__  _ __ / \ | |_| |__   ___ _ __   __ _
                   | '_ \| '__/ _ \| __| '_ \ / _ \ '_ \ / _` |
                   | |_) | | / ___ \ |_| | | |  __/ | | | (_| |
                   |_.__/|_|/_/   \_\__|_| |_|\___|_| |_|\__,_|

                         Projeto brAthena (c) 2008 - 2015
                                 www.brathena.org

[Info]: brAthena 64-bit for Linux
[Info]: Exportado revisao (src): ''
[Info]: Exportado revisao (scripts): 'Desconhecido'
[Info]: OS versao: 'CentOS Linux release 7.5.1804 (Core) [x86_64]'
[Info]: CPU: 'Intel(R) Core(TM) i3-3250 CPU @ 3.50GHz [1]'
[Info]: Compilado com GCC v7.3.1
[Info]: Flags ao compilar: -g -O2 -pipe -ffast-math -fvisibility=hidden -Wall -Wextra -Wno-sign-compare -Wno-unused-parameter -Wno-clobbered -Wempty-body -Wint-conversion -Wformat-security -Wno-format-nonliteral -Wno-switch -Wno-missing-field-initializers -Wshadow -fno-strict-aliasing -g -DHAVE_EXECINFO -DMAXCONN=16384 -I../common -DHAS_TLS -DHAVE_SETRLIMIT -DHAVE_STRNLEN -DDEBUG -I/usr/include -DHAVE_MONOTONIC_CLOCK
[Aviso]: Voce esta executando o brAthena com privilegios root. Isso nao e necessario.
[Sucesso]: inicializando grfio com conf/grf-files.txt
[Info]: Arquivo GRF encontrado: '/home/emulador/patch/data.grf'
[Sucesso]: Leitura de 'conf/grf-files.txt' finalizada.
[Sucesso]: Leitura de '651' entradas em 'data\resnametable.txt'.
[Sucesso]: Abrindo mapcache: db/pre-re/map_cache.dat
[Noticia]: Existente mapcache nao encontrado, forcando o modo rebuild
[Info]: Mapa 'alb_ship' carregado com sucesso.
[Info]: Mapa 'alb2trea' carregado com sucesso.
[Info]: Mapa 'alberta' carregado com sucesso.
[Info]: Mapa 'alberta_in' carregado com sucesso.

[...]

[Sucesso]: Fechando o mapcache: db/pre-re/map_cache.dat
[Sucesso]: Finalizando grfio
[Info]: 944 mapas em cache

 

Como ficou explícito, essa solução utiliza apenas as ferramentas nativas do emulador.

Vi em vários fóruns que esse procedimento não funciona e a recomendação, na maioria das vezes, é utilizar o tal do WeeMapCache. Mas, como mencionei, fiz isso hoje e solucionou meu problema. E não demorou 15 segundos pra fazer o meu mapcache.dat com 944 mapas. Eu, pessoalmente, prefiro fazer direto com o emulador mesmo. Sem ferramentas de terceiros. Considerando que precisamos de segurança quando estamos gerenciando algum servidor em produção, como é meu caso.

A minha recomendação é que vc tenha uma máquina virtual com o mesmo SO do host do seu servidor. Assim, tudo que precisar mexer, faz na máquina virtual e upa pro seu host de produção apenas após fazer os devidos testes. Fiz aqui e upei só o arquivo mapcache.dat pro servidor de produção e reiniciei. Melhor que upar uma grf de quase 2GB (minha net é horrível no quesito upload).

 

Sem mais blablabla, é isso aí!

 

Qualquer coisinha que não correr como previsto, só postar aqui que me esforçarei pra responder sempre q possível.

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

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 conta

Entrar

Já tem uma conta? Faça o login.


Entrar Agora
Entre para seguir isso  
Seguidores 0