Ir para conteúdo
Faça parte da equipe! (2024) ×
Conheça nossa Beta Zone! Novas áreas a caminho! ×
  • Quem está por aqui   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.

Criando Serve de Ragnarok pelo Eathena TxT


jollembeck
 Compartilhar

Posts Recomendados

Criando servidor com eAthena TXT

 

Índice

 

» Capítulo 1 - Programas Necessários

» Capítulo 2 - Aonde baixa

» Capítulo 3 - Configurando eAthena

» Capítulo 4 - Configurações Adicionais no DB

» Capítulo 5 - Adicionando NPCs

» Capítulo 6 - Colocando o Servidor no Ar

» Capítulo 7 - Configurando o Client

» Capítulo 8 - Criando sua Conta de GM

 

 

[ Capítulo 1 ]

 

Programas Necessários!

 

É necessário se cadastrar para acessar o conteúdo.

 

É necessário se cadastrar para acessar o conteúdo.

 

[ Capítulo 2 ]

 

Site oficial do Eathena SVN [

É necessário se cadastrar para acessar o conteúdo.
]

Site oficial do No-ip [

É necessário se cadastrar para acessar o conteúdo.
]

Como recompila seu emulador com o Visual C++ 2008 Express [sem SDK] [

É necessário se cadastrar para acessar o conteúdo.
]

Tutorial sobre o X-ray [(basico)Logo após este], Todas As Funções do X-ray [(avançado)Lo após este ]

 

[ Capítulo 3 ]

 

Configurando seu eAthena!

 

Caminho das GRF

 

Antes de tudo você deve configurar o caminho das GRF, mas esse processo muda dependendo do tipo de eAthena que você usa, por isso irei explicar das duas meneiras. (Para dúvidas nessa área vá à "Problemas Comuns")

 

STABLE

 

Localize conf/grf_files.txt

 

 

//-----------------------------------------

// GRF List

//-----------------------------------------

 

grf: C:\Arquivos de Programas\Gravity\RO\data.grf

grf: C:\Arquivos de Programas\Gravity\RO\sdata.grf

 

// You may add more in this format

// grf: <data file path>

 

//------ Others ---------------------------

 

//Path to directory that contains the data dir

//NOTE: Path must include trailing backslash, only one data_dir entry is supported.

//data_dir: C:\Arquivos de Programas\Gravity\RO\

 

 

Coloque o caminho correto de suas GRF e também da pasta DATA se possuir custom mapas, mas não se preocupe isso agora.

 

TRUNK

 

O processo será o mesmo citado acima só que a localização do arquivo é outra.

 

tools/mapcache/grf_files.txt

 

Após configurar o caminho das GRF você deve abrir o mapcache.exe que se localiza na pasta principal.

 

Conhecendo a pasta Battle

 

battle.conf

Penalidades e delay de algumas habilidades.

 

client.conf

Configurações relacionadas aos jogadores, como máximo level e atributos.

 

drops.conf

Configurações do drop de itens.

 

exp.conf

Definição da rate do servidor e tipo de experiência para casos especiais.

 

gm.conf

Configurações relacionada aos Game Masters.

 

guild.conf

Configurações para Guerra do Emperium e Clãs.

 

homunc.conf

Configurações para homúnculos.

 

items.conf

Configurações para itens especiais.

 

misc.conf

Configurações de coisas básicas do servidor, como tempo de duração de dia e noite.

 

monster.conf

Configurações relacionadas a monstros.

 

party.conf

Configurações relacionadas a grupos(party) do seu servidor.

 

pet.conf

Configurações relacionadas a pets, como ataque, etc.

 

player.conf

Configurações relacionadas a jogadores, como rate de HP e SP.

 

skill.conf

Configurações que influenciarão diretamente as habilidades, como delay.

 

status.conf

Configurações que influenciarão nas habilidades, como os efeitos das mesmas.

 

Configurando Client.conf

 

min_hair_style: 0

max_hair_style: 23

min_hair_color: 0

max_hair_color: 8

min_cloth_color: 0

max_cloth_color: 4

Aqui você irá configurar apenas se você possuir uma DATA ou GRF com paletas customizadas. Lembrando que você só deve mudar o max e nunca o min.

 

 

max_lv: 99

Aqui você irá definir o máximo level de seu servidor, mas também são necessárias outras configurações para que o máximo level aumente. Veja a parte "Configurações adicionais no DB".

 

aura_lv: 99

Aqui você irá definir o level que a aura vai aparecer.

 

Configurando Drops.conf

 

Exemplo:

 

item_rate_common: 100

item_rate_common_boss: 100

item_drop_common_min: 1

item_drop_common_max: 10000

Nesse parte se configura o drop de itens comuns.

 

Logo: 1=0.01, 10=0.1, 100=1, 1000=10, 10000=100 e assim com todos os valores.

 

Configurando Exp.conf

 

base_exp_rate: 100

job_exp_rate: 100

Aqui você irá configurar de uma forma parecida com a dos drops. 100=1, 1000=10, 10000= 100 e assim por diante.

 

Não esqueça de habilitar a opção "multi level up" caso seja um servidor High Rates.

 

multi_level_up: yes

 

 

Configurando GM.conf

 

gm_all_skill: no

Mude para yes ou level mínimo de GM para ter todas as habilidades.

 

gm_all_equipment: no

Mude para yes ou level mínimo de GM para poder usar todos equipamentos.

 

Misc.conf

 

Caso queira um servidor PK (Player Kill) você deve trocar pk_mode: 0 por pk_mode: 1 e para definir o level mínimo para participar do PK você deve configurar pk_min_level: XX

 

Player.conf

 

Aqui você irá configurar tudo relacionado aos jogadores.

 

max_aspd: 190

Mude para o valor de velocidade de ataque que você deseja.

 

max_parameter: 99

Mude para o valor de atributos que você deseja.

 

 

[ Capítulo 4 ]

 

Configurações adicionais no DB!

 

Aqui você irá aprender como configurar o Database de Experiência.

 

Vá até a pasta /db de seu eAthena e procure os arquivos exp.txt e exp2.txt.

Renomei exp para exp3 e exp2 para exp.

 

Agora abra o arquivo que você renomeou para exp e lá você irá encontrar tudo. Modifique para o level que você quiser.

 

Por exemplo:

 

//Base - Normal Jobs

99

 

//Base - Normal Jobs

255

 

 

[ Capítulo 5 ]

 

Adicinando NPCs!

 

Vá até o arquivo npc/scripts_custom.conf e abra-o.

 

Você verá várias linha, como por exemplo essa:

 

//npc: npc/custom/jobs/reset.txt

Para que ela seja ativada você necessita retira as duas barras '//'.

 

Ficando dessa maneira:

 

npc: npc/custom/jobs/reset.txt

 

 

Se você quiser adicionar novos NPCs basta você colocar o script na pasta npc/custom e colar o caminho dele no arquivo scripts_custom.conf como citado acima.

 

---------------------------------------------------------------------------------------------

Caso você pretenda rodar o servidor offline, ou seja, apenas para você pule a próxima parte e vá direto para "Ligando o servidor! no Capítulo 5.

----------------------------------------------------------------------------------------------

 

 

 

[ Capítulo 6 ]

 

Instalando e Configurando o No-IP!

 

O que é o No-IP ?

 

No-IP é um serviço de redirecionamento de IP no qual você cria um endereço pelo qual as pessoas poderão se conectar a sua máquina mais facilmente (por se tratar de um "IP" com nome de host, fica mais fácil de lembrar).

 

Fazendo um cadastro no No-IP:

 

Clique em "Sign-up!" e preencha o formulário com seus dados. O Email é altamente necessário e tem que ser VERDADEIRO caso queira realmente fazer o cadastro, pois após clicar no botão de confirmação será enviado ao email um link no qual você deverá clicar para ativar sua conta.

 

Após validar seu cadastro você será enviado à uma página dividida em 4 partes básicas:

Acesso Rápido, Ajuda, Serviços Alternativos, Downloads e por último as informações sobre o No-IP.

 

Agora visualize o menu à sua esquerda e clique no menu de Hosts / Redirects, após ter feito isso clique em "Add"

 

Irá aparecer na sua tela agora um formulário no qual está:

Hostname: nomedoseuservirdor

 

Não preencha mais nada do formulário!

 

Agora aperte em Create Host e pronto.

 

Agora que já criou sei No-ip vamos instalar e Configurar o programa.

 

Clique no ducsetup.exe e apenas clique em Next > Next > Sim > Next > Next e espere terminar de instalar.

 

Quando a instalação estiver concluída essa imagem irá aparecer:

É necessário se cadastrar para acessar o conteúdo.

 

Na janela você coloca o seu email e a Sua senha e uma janela assim irá aparecer:

É necessário se cadastrar para acessar o conteúdo.

 

Clique na janelinha do lado do emoticon e espere ele fazer a atualização de seu host.

 

Se tudo estiver correto uma mensagem assim irá aparecer:

 

:)seuserver.no-ip.info: DNS update successful

 

 

Configurando arquivos do eAthena!

 

conf/char_athena.conf

 

server_name: MeuRO

 

 

login_ip: seuservidor.no-ip.info

char_ip: seuservidor.no-ip.info

 

 

conf/map_athena.conf

 

char_ip: seuservidor.no-ip.info

map_ip: seuservidor.no-ip.info

 

 

Atenção!

 

Em nenhum dos arquivos você irá mecher nessa linha:

 

 

//bind_ip: 127.0.0.1

 

 

Deixe-a dessa maneira.

 

Ligando o servidor!

 

Após completar tudo acima você já pode ligar o seu servidor! Dê dois cliques em login-serv.exe, char-serv.exe e map-serv.exe necessariamente nessa ordem, mas acalme-se, pois não está tudo pronto, para entrar no seu servidor você deve terminar a parte do client.

 

 

[ Capítulo 7 ]

 

Configurando o Client!

 

Antes de tudo você deve ter em mente que para as pessoas conectarem ao seu servidor você necessita basicamente de um Hexed, uma pasta Data e um sclientinfo.xml (Dentro da pasta Data) configurado corretamente.

 

Criando seu Hexed

 

 

É necessário se cadastrar para acessar o conteúdo.

 

É necessário se cadastrar para acessar o conteúdo.

 

Diffs e Sakexes Novos abaixo

É necessário se cadastrar para acessar o conteúdo.

 

Criando sua DATA

 

Baixe a FullData no link a seguir:

 

É necessário se cadastrar para acessar o conteúdo.

 

Após baixar você deve extrair ele juntamente com o seu kRO/Sakray e também já com seu hexed.

 

Criando seu Sclientinfo.xml

 

<?xml version="1.0" encoding="euc-kr" ?>

<clientinfo>

<servicetype>korea</servicetype>

<servertype>sakray</servertype>

<connection>

<display>NOME DO SEU SERVIDOR AQUI</display>

<desc>None</desc>

<address>SEU NO-IP AQUI</address>

<port>6900</port>

<version>20</version>

<langtype>8</langtype>

<registrationweb></registrationweb>

<aid><admin></admin></aid>

</connection>

</clientinfo>

 

 

Copie esse conteúdo alterando as informações em vermelho para as suas. Após copiar salve esse arquivo com o nome sclientinfo e com extensão .xml, coloque-o dentro de sua pasta Data.

 

 

[ Capítulo 8 ]

 

Criando sua conta de GM!

 

Logo após este.

 

 

[ Problemas Comuns ]

 

No meu map-serv aparece vários erros no carregamento de mapas, o que é isso?

Isso acontece porque você não configurou corretamente o caminho de sua data.grf e/ou sdata.grf.

 

Volte ao início do tutorial.

 

Criei meu Hexed, mas ele não entra no jogo ou da vários erros.

 

Tente usar um diff mais recente ou mais antigo e mantenha sempre kRO/Sakray e eAthena atualizado.

 

Está tudo pronto, mas ninguém consegue entrar no meu servidor!

 

Verifique se configurou corretamente o sclientinfo.xml, char_athena.conf e map_athena.conf. Se possui modem libere as portas necessárias e lembre-se que se ele não estiver em modo ponte ele só aceitará quem estiver na sua rede, se possuir conexão wireless ou modem roteador dependendo do caso você só conseguirá que as pessoas se conectem ao seu servidor usando Hamachi.

 

Qual a diferença de Stable e Trunk?

 

Stable - Versão estável do eAthena, porém menos atualizada, recebe atualizações só após testadas no eAthena Trunk.

 

Trunk - Versão instável, porém mais atualizada, recebe rapidamente atualizações, mas cuidado pode conter muitos bugs.

 

----------------------------------------------------------------------------------------------------------------

Criando Sua Conta De GM.

------------------

[ Sumário ]

 

* Capítulo 1- Axando o ID da sua acc e do seus amigos

* Capítulo 2- Adicionando Conta de GM no server

* Capítulo 3- Adicionando a Roupa GM no seu personagem

* Capítulo 4- Criando a Conta de GM com Servidor SQL

 

------------------

 

[ Capítulo 1 ]

 

Achando o ID da sua acc e do seus amigos

 

Primeiro vá até a sua pasta do eAthena, depois vá ate a pasta save, abrindo ela procura um arquivo chamado account.txt

 

Abra ele, e aparecera isso:

 

 

// Accounts file: here are saved all information about the accounts.

// Structure: ID, account name, password, last login time, sex, # of logins, state, email, error message for state 7, validity time, last (accepted) login ip, memo field, ban timestamp, repeated(register text, register value)

// Some explanations:

// account name : between 4 to 23 char for a normal account (standard client can't send less than 4 char).

// account password: between 4 to 23 char

// sex : M or F for normal accounts, S for server accounts

// state : 0: account is ok, 1 to 256: error code of packet 0x006a + 1

// email : between 3 to 39 char ([email protected] is like no email)

// error message : text for the state 7: 'Your are Prohibited to login until <text>'. Max 19 char

// valitidy time : 0: unlimited account, <other value>: date calculated by addition of 1/1/1970 + value (number of seconds since the 1/1/1970)

// memo field : max 254 char

// ban time : 0: no ban, <other value>: banned until the date: date calculated by addition of 1/1/1970 + value (number of seconds since the 1/1/1970)

0 s1 p1 2004-10-25 01:12:04.147 S 2 0 [email protected] - 0 127.0.0.1 - 0

1 s2 p2 - S 0 0 [email protected] - 0 - - 0

2 s3 p3 - S 0 0 [email protected] - 0 - - 0

3 s4 p4 - S 0 0 [email protected] - 0 - - 0

4 s5 p5 - S 0 0 [email protected] - 0 - - 0

2000001 Test Test - M 0 0 [email protected] - 0 - - 0

2000002 Seu ID

 

Para você localizar o número do ID da Sua acc, Aperte CTRL + F.

Digite seu ID na tela que aparecer, e pegue o numero em vermelho, aqui no caso seria 2000002.

 

 

[ Capítulo 2 ]

 

Adicionando Conta de GM no server

 

Primeiro vá até a sua pasta do eAthena, depois vá ate a pasta conf, abrindo ela procure um arquivo chamado GM_account.txt

 

Abra ele, e aparecera isso.

// eAthena's GM Accounts File

// Edited by MC Cameri to enable account id ranges

// Changing this file while login server is running

// Usage #1(Standard): <account id> <level>

// Usage #2(Range): <beginning of range[-:~]end of range> <level>

// Examples:

// 2000002 99

// 2000003-2000005 99

// 2000003~2000005 99

// 704585 30

 

704554-704584 99

 

 

No lugar do 704554-704584 você coloca o número da Acc que você axou no arquivo accounts.txt na pasta save no caso seria 2000002 em Azul é o Lvl da Conta de GM,99 seria Admin Podendo executar TODOS os comando de GM, mais se você tiver algum amigo e quiser coloca-lo de GM e não de Admin Troque o lvl para um Número qualquer, sempre Multiplo de 10(20,30,40,50,60,70,80,90) isso determina quais Comandos Ele Pode executar no jogo.

Agora para a parte final.

 

 

[ Capítulo 3 ]

 

Adicionando a Roupa GM no seu personagem

 

Agora essa é a parte Mais Fácil...

Você tem que ir na pasta DATA no Diretorio do seu Ragnarok, ache o sclientinfo.xml e abra com o bloco de notas.

Vai aparecer algo assim..

 

<?xml version="1.0" encoding="euc-kr" ?>

<clientinfo>

<servicetype>korea</servicetype>

<servertype>sakray</servertype>

<connection>

<display>NOME DO SEU SERVER AQUI</display>

<desc>None</desc>

<address>IP DO SEU SERVER AQUI</address>

<port>6900</port>

<version>20</version>

<langtype>8</langtype>

<registrationweb></registrationweb>

<aid><admin>Coloque o ID da Sua ACC aqui</admin></aid>

</connection>

</clientinfo>

 

Em Azul é o lugar para você colocar o ID que você axou no arquivo accounts.txt na pasta save como mandado no Primero capítulo do Tutorial,

no nosso caso seria 2000002

 

Então ficaria assim

 

 

<?xml version="1.0" encoding="euc-kr" ?>

<clientinfo>

<servicetype>korea</servicetype>

<servertype>sakray</servertype>

<connection>

<display>NOME DO SEU SERVER AQUI</display>

<desc>None</desc>

<address>IP DO SEU SERVER AQUI</address>

<port>6900</port>

<version>20</version>

<langtype>8</langtype>

<registrationweb></registrationweb>

<aid><admin>2000002</admin></aid>

</connection>

</clientinfo>

 

 

[ Capítulo 4 ]

 

 

Abra seu pmA e selecione seu banco de dados "Ragnarok"..

Abra a tabela Login e clique em visualizar..

Encontre a conta que você quer editar e clique no lapizinho

Na tag Level edite para o número correspondente ao Level de GM e depois é só clicar em Executar no final da página !

 

------------------------------------------------------------------------------------------------------------------------------------------------------------------

X-Ray Basico

 

Primeiro tenha em mente que você vai ter que ter seu server pronto, e de preferencia o kRO ou Sakray mais novos (atualizados).

 

Primeiramente o que é X-Ray?

 

Xray é um client hexed, que usa tabelas externas para representar view ids ( por enquanto, apenas head gears e cabelos ). Com esse client, você pode utilizar milhares de viewIDS, com nomes normais ( nao aquela coisa koreana ), e sem problemas com a versão do client ou windows. Ou seja... é uma tremenda mão na roda...

 

Como ele funciona?

1° Registre-se no forum do Meruru (criador do X-Ray).

Link:

É necessário se cadastrar para acessar o conteúdo.

EDIT: não se esqueça de ver seu lixo eletrônico ( caixa de "SPAM"), geralmente é redirecionado para la.

 

2° Baixe o X-Ray.

Link:

É necessário se cadastrar para acessar o conteúdo.

 

Dentro do arquivo .rar você vai encontrar um client chamado "xrayexe", e o arquivo Diff para este client. Mas na pasta DATA que tudo começa. (IMG:

É necessário se cadastrar para acessar o conteúdo.
f)

 

Dentro da pasta DATA exite 3 arquivos:

 

visonary_tab.txt => este arquivo contem as informações para os HeadGears.

vanity_tab_m.txt => informações de cabelos masculino.

vanity_tab_f.txt => infromações de cabelos feminino.

...

 

Estes arquivos DEVEM estar na pasta data do seu client ( pode ser em sua GRF também ).

Bem, primeiramente edite seu "xrayexe" como kiser com algum diffpatcher da vida.

 

Agora, abra o arquivo visonary_tab.txt...

Como pode ver, esta tabela contém varios nomes de outros arquivos. Estes arquivos, são os nomes dos sprites das viewIDs já existentes. Mas como saber qual é a viewID correspondente a cada arquivo nessa bagunça toda ?

 

Bem, no item_db.txt do seu emulador... vamos pegar o exemplo do "wizard hat":

2252,Wizard_Hat,Wizard Hat,5,,10,300,,4,,0,0x00810204,7,2,256,,0,1,36,{ bonus bMaxSP,100; },{},{}

Este 36, é a viewID do wizard hat...

 

Agora dentro do visionary_tab.txt aperte CTRL+G e vá linha 37 ( sempre uma linha acima da ViewID correspondente no item_db ). A linha 37, corresponde a viewID 36... Esta linha deve estar assim:

"_À§ÀúµåÇÞ" que é o sprite correspondente ao wizard hat ( À§ÀúµåÇÞ.spr sem o "_" ).
E o que isso tudo significa ?!?!?!

 

Digamos que você queira colocar seu custom item... e digamos que esse item se chame "SennaHelm". Bem, primeiro abra o visionary_tab.txt, vá para a ultima linha, e aperte CTRL+G para ver o numero dela... no seu caso deve ser a linha "305"(leia nas dicas).Isso significa, que a partir da viewID 306 ( que é a view ID correspondente a linha 305) você pode usar qualquer uma... Então vamos usar a viewID 305 mesmo.

 

Na linha 306, coloque o nome do seu arquivo de sprite que fica na pasta RO\data\sprite\¾Ç¼¼»ç¸®\³² ou RO\data\sprite\¾Ç¼¼»ç¸®\¿©

Pode ser qualquer nome, essa é uma das vantagens do xray. Vamos usar o proprio nome do item. Então coloque a linha 306 assim: "_sennahelm".

O que fizemos nesse momento ? Nos falamos pro cliente, que ao usar a viewID 305, ele tera que procurar pelo arquivo na pasta RO\data\sprite\¾Ç¼¼»ç¸®\³² ou RO\data\sprite\¾Ç¼¼»ç¸®\¿©, se estiver em ASCII use um "leitor" de spr e modifique cada um com seu respectivo nome do visonary_tab

 

Depois é so configurar seu custom item, pra usar a viewID 305 e pronto! Simples assim.

 

------------------------------

Dica: Usando viewIDs a partir de certo numero.

 

Bem, para ficar mais organizado, e mais facil de manter atualizado. É bom definir a partir de qual numero suas view ids vao usar...

 

Digamos que você queria usar viewIDs a partir de 400... Então no final do seu visionary_tab faça assim:

 

!400

_capaceteabobora

_capaceteazul

_capaceteverde

 

Isso fará com que "capaceteabobora" use a viewID 401.. o azul 402.. e assim por diante...

 

_____________________

 

Curiosidades:

 

- O limite de IDs maximas é de 16000. Bastante coisa não!

 

- O client do X-ray suporta Guns, Ninja e Homunculos!

 

- Hoje o client do x-ray é considerado um dos melhores para server que querem muitos custom itens.

 

---------------------------------------------------------------------------------------------------------------------------------------------

 

Avançado

Usando todas as funções do X-Ray!

 

 

:: Índice ::

 

* 1 - .: Introdução :.

* 2 - .: Conseguindo o seu Hexed X-Ray :.

* 3 - .: Adicionando Custom Headgears :.

* 4 - .: Adicionando Custom Hairstyles :.

* 5 - .: Adicionando Custom Mobs/NPC's :.

* 6 - .: Adicionando Custom Skills :.

* 6.1 - . Edições na Source .

* 6.2 - . Edições nos Databases .

* 6.3 - . Edições nos Client .

* 7 - .: Adicionando Custom Classes :.

* 7.1 - . Edições na Source .

* 7.2 - . Edições nos Databases .

* 7.3 - . Edições nos Client .

* 8 - .: Agradecimentos/Créditos :.

 

--------------------------

 

 

1 - .: Introdução :.

 

Nesse tutorial, eu vou mostrar (ou pelo menos tentar) como usar todas as funções do X-Ray (por enquanto versão 11.0.1), incluindo a adição de custom classes, skills, monstros/npcs, headgears e hairstyles.

 

Todos os créditos vão pro Meruru, que criou essa coisa tão útil chamada X-Ray, esse guia vai meramente guiá-lo no uso dessa ferramenta.

 

 

2 - .: Conseguindo o seu Hexed X-Ray :.

 

Para baixar um hexed do X-Ray, vá até o fórum do HeliumRO, registre-se lá, logue, vá na seção X-Ray do fórum, e no tópico onde o Meruru disponibiliza os hexeds X-Ray, baixe o X-Ray Client 11.0.1 (vou usar esse hexed nesse guia, não recomendo que você siga esse guia com um hexed mais antigo).

 

Lembrando que eu NÃO vou dar suporte sobre registro/login no fórum do HeliumRO, se você não consegue se registrar lá, ou logar lá, ou tiver qualquer tipo de problema, peça para alguém que consiga, ou então baixe um hexed pronto de algum lugar.

 

Depois que você baixar seu X-Ray, diffe-o seguindo um guia de criação de hexeds qualquer, lembrando que você pode usar um diff qualquer, não existem diffs específicos pro X-Ray, mas o diff PRECISA ser pra versão do hexed que você baixou, se é um hexed "10-17" por exemplo, você terá que usar o diff "v10-17a".

 

Depois que tiver seu hexed diffado, coloque-o na pasta do seu Ragnarök, e coloque as tabelas (os arquivos que vieram junto com seu X-Ray) na sua pasta data, ou no seu custom grf, se você não os adicionar, o hexed não vai iniciar. Depois que você fez tudo isso, vamos começar.

 

 

3 - .: Adicionando Custom Headgears :.

 

Nessa seção, eu vou explicar como se adiciona custom headgears ao client, usando o X-Ray, para isso, você precisará mexer apenas na visionary_tab, e em alguns arquivos do client e do seu servidor.

 

Primeiramente, adicione o custom headgear no seu servidor, usando o formato certo, no item_db2.txt (que é destinado para custom items), e grave a View-ID (número da coluna view) que você usou para o seu headgear, esse número precisa ser um número razoavelmente alto (recomendo 400 ou mais) para evitar conflitos futuros com headgears oficiais..

 

Agora, vamos editar a visionary_tab.

 

Quando você abrir a visionary_tab, verá um monte de caracteres em ASCII, não mexa nesses caracteres, eles são os headgears oficiais, e se você mexer em algum deles, vai causar vários erros com os headgears já contidos no Ragnarok.

 

Pra explicar melhor como a visionary_tab funciona, cada linha dela é associada a um View-ID, e o nome contido nessa linha diz para o client que nome de sprite/act ele deve associar ao item, a primeira linha (depois do !1), por exemplo, é referente ao item com a View-ID 1.

 

Agora, existem dois meios de adicionar os seus custom headgears, usando uma função do X-Ray chamada "ID-Jumping", ou sem usar essa função.

 

AVISO : INDEPENDENTE DO MODO DE ADICIONAR QUE VOCÊ USAR, VOCÊ DEVE SEMPRE DEIXAR A LINHA "*_°í±Û" POR ÚLTIMO NO ARQUIVO, POIS ESSA É A ÚLTIMA LINHA QUE O X-RAY VAI LER, QUALQUER LINHA DEPOIS DELA SERÁ IGNORADA!

 

Adicionando sem usar o ID-Jumping:

 

Para adicionar custom headgears sem usar o ID-Jumping, basta você adicionar o nome do sprite/act do seu headgear na visionary_tab, depois dos headgears originais, nesse formato :

 

(...)

_null

_null

_null

_seusprite

*_°í±Û

Onde o (...) corresponde às linhas dos headgears oficiais.

 

Eu usei esses "_null" para indicar uma linha vazia, você deve adicionar essas linhas após os headgears oficiais, e quando chegar em uma linha razoavelmente afastada dos headgears oficiais, comece a adicionar os seus headgears, você deve fazer isso para evitar conflitos futuros com headgears que a Gravity possa adicionar futuramente no Ragnarok.

 

Lembrando que você NÃO deve adicionar linhas totalmente em branco, o X-Ray vai parar de ler a tabela na primeira linha em branco que ele encontrar, mas você pode colocar qualquer tipo de nome para indicar linhas em branco, já que eles não serão usados.

 

E a linha onde está "_seusprite" deve ser a linha correspondente ao número da View-ID que você colocou no seu item, lá no item_db2.txt (diminuindo 1 no número da linha, considerando a primeira linha que é "!1").

 

Usando o ID-Jumping:

 

Para adicionar custom headgears usando o ID jumping, você deve ir até a última linha da visionary_tab, e colocar uma linha indicando pra qual linha ele irá pular, e na linha logo abaixo, o nome do arquivo .spr/.act do seu item, assim :

 

(...)

!400

_seusprite

*_°í±Û

 

 

Esse número que você coloca após o ! indica pra que linha ele vai pular, no caso, ele vai interpretar a linha após esse "!400" como a linha 400, então você deve colocar após esse "!" a linha correspondente à View-ID do seu item.

 

Logo, o "_seusprite" vai ser a minha View ID 400.

 

Lembrando que o ID-Jumping é um pouco bugado, se você tiver erros adicionando headgears dessa maneira, adicione usando o outro método.

 

Aviso : TODAS AS LINHAS devem ter um "_" antes do nome do arquivo act/spr.

 

Agora é só adicionar os arquivos do seu custom headgear (.spr/.act quando equipado), nas pastas corretas, lembrando que todos esses arquivos devem ter o mesmo nome, e todos eles devem ter o nome que você indicou na visionary_tab.

 

É preciso também adicionar o seu custom headgear nos arquivos idnum2itemdesctable.txt, num2itemdesctable.txt, idnum2itemdisplaynametable.txt num2itemdisplaynametable.txt, idnum2itemresnametable.txt e num2itemresnametable.txt no formato correto, para descobrir como fazê-lo, siga um guia de adição de custom headgears normal.

 

Aviso : O X-Ray não influenciará a adição do seu item nos arquivos idnum2itemresnametable.txt e o num2itemresnametable.txt, então adicione-os lá normalmente.

 

Pronto, após ter feito tudo isso, o seu hexed vai ler seus custom headgears normalmente.

 

4 - .: Adicionando Custom Hairstyles :.

 

Primeiramente, pra adicionar custom hairstyles, você vai ter que abrir o arquivo vanity_m/f_tab(depende do sexo que você quer adicionar, caso seja pra homens, será na m_tab, caso seja pra mulheres, será na f_tab).

 

Então, é só você adicionar mais um número na tab, seguindo a ordem do arquivo, o último número provavelmente será o 23, então é só adicionar o 24 logo depois.

 

Depois, você tem que adicionar os arquivos .spr/.act do custom hairstyle na pasta "/data/sprite/Àΰ£Á·/¸Ó¸®Åë/[sexo]/", no formato "Nº_SEXO", usando a pasta/prefixo ³² pra homens, e ¿© pra mulheres.

 

Após ter feito isso, você terá que adicionar os custom hairstyles no seu servidor (na verdade apenas aumentar o limite), pra isso, vá no arquivo conf/battle/client.conf, e procure essas linhas:

 

min_hair_style: 0

max_hair_style: 23

Mude o 23 para o número de headgears que sua visionary_tab contém.

 

Lembre-se de fazer isso no Stylist também!! É só editar o número de hairstyles no arquivo npc/custom/dye.txt.

 

Consertando os sprites do Blank Eyes/Moustash

(essa parte é uma advertência do Meruru traduzida)

 

Quando você adiciona custom hairstyles no seu client, você PRECISA corrigir os sprites do Blank Eyes/Moustash também. Se você não consertá-los, vão ocorrer erros quando você equipar esses items usando seu custom hairstyle!

 

Primeiramente, aqui estão as pastas que nós vamos mexer. (use um programa de edição de grfs pra isso)

sprite\악세사리

 

E a pasta de cada sexo:

 

MASCULINO:남

FEMININO:여

 

Quando você entrar em um dessas pastas você verá um monte de arquivos com nomes baseados nos números dos headgears/sexo.

 

Os que nós vamos usar são os que parecem com esses:

 

[sexo]_배틀온라인[número].spr

[sexo]_배틀온라인[número].act

 

Extraia esses arquivos usando um programa de edição de grfs, caso ele não converta os nomes pra ASCII automaticamente, use um programa pra convertê-los (como o gayconv ou o Unbollox).

 

Depois de tê-los extraído, eles devem estar com os nomes parecidos com isso:

 

\sprite\¾Ç¼¼»ç¸®\[sexo]\[sexo]_¹èƲ¿Â¶óÀÎ[número].spr

\sprite\¾Ç¼¼»ç¸®\[sexo]\[sexo]_¹èƲ¿Â¶óÀÎ[número].act

 

Para adicionar esses arquivos pro seu hairstyle, basta criar uma cópia de cada um deles, e editar o número do hairstyle pro do seu custom hairstyle.

 

Caso o hairstyle que você adicionou seja o 24, e você tenha adicionado na vanity_m_tab.txt, ficaria assim:

 

\sprite\¾Ç¼¼»ç¸®\³²\³²_¹èƲ¿Â¶óÀÎ24.spr

\sprite\¾Ç¼¼»ç¸®\³²\³²_¹èƲ¿Â¶óÀÎ24.act

 

Após ter feito isso, é só adicioná-los à sua pasta data, ou então convertê-los e passá-los pro seu custom grf.

 

 

5 - .: Adicionando Custom Mobs/NPC's :.

 

Para adicionar custom Mobs/NPC's no client, você vai usar a monstrosity_tab.txt.

 

Abrindo esse arquivo, você perceberá que ele não é como as outras tables, porque ela tem a info de todos os mobs/npcs/jobs do jogo (apesar de que aqui os jobs não são sprites, e sim o nome que aparece na janela de status).

 

Para adicionar custom mobs, é só você adicionar o seu mob no mob_db2.txt normalmente, eu por exemplo vou usar o ID 3000 para meu monstro.

 

Depois de adicionar o seu mob no mob_db, é só ir lá na monstrosity_tab, e ir na última linha antes do ID do seu monstro, por exemplo, eu estou usando o ID 3000, então primeiro eu procuro o maior ID Jump que tem na tabela menor que 3000, e acho isso :

 

CODE

!1219

knight_of_abyss

 

 

Então eu sei que o último ID Jump antes do meu mob é o que vai pra ID "1219", agora, é só achar o final dessa lista, aonde ele vai pular pra um ID MAIOR que o meu, então, eu vou achar isso :

 

CODE

!4001

Novice High

 

Bem, então eu sei que a outra lista acabava na faixa dos 1500, e agora já começa o ID 4001, então, eu devo adicionar meu mob entre essas 2, assim :

 

CODE

(...)

!3000

meu_mob

!4001

Novice High

 

 

Pronto, agora meu mob está usando o ID 3000 da monstrosity_tab e do mob_db.

 

Depois, é só adicionar os arquivos .spr/.act na pasta "sprite/¸ó½ºÅÍ/" com o mesmo nome definido na monstrosity, no meu caso seria "meu_mob.spr" e "meu_mob.act".

 

Agora para adicionar NPC's, você terá que usar um ID menor que o 1000, e maior do que os já usados, isso é limitado no server, não no client, se você quiser editar esse limite, edite no arquivo src/map/npc.h.

 

Então, ache a última linha de NPC da monstrosity e adicione depois o nome do seu .spr/.act (você pode usar um ID maior que o do último NPC usando ID Jumping, mas você NÃO PODE usar um ID maior que 1000, porque é aqui que começam os jobs).

 

Depois, é só adicionar os arquivos na pasta sprite/npc, com o mesmo nome que você colocou na monstrosity_tab, e pronto, é só usar o número que você colocou no cabeçalho do seu NPC (lembrando que pode acontecer que o ID seja 1 número depois do colocado na monstrosity_tab, então, teste os dois).

 

 

6 - .: Adicionando Custom Skills :.

 

Agora começa a parte mais temida, porém, essa parte não é tão difícil, se você experimentar, e tentar algumas vezes, e se basear nas skills já prontas, você deve conseguir com o tempo ^^.

 

Nessa parte, nós teremos que começar a mexer na source do emulador, então, se você pretende tentar essa parte, você vai precisar da source do emulador (pasta src), de preferência baixada do repositório, e de um compilador pronto pra compilar seu eAthena, e vai ter que saber usá-los também, caso já saiba/tenha tudo isso, vamos começar.

 

Eu vou dividir essa parte em 3 seções : As edições na Source, nos Databases, e no Client.

 

 

6.1 - . Edições na Source .

Primeiramente, você terá que editar o arquivo src/map/skill.h, nesse arquivo, você vai ter que adicionar a sua custom skill, e apontar o ID dela, lembrando que o ID deve ser maior que 1019 e menor que 8001, sugiro que você não use IDs muito altos, mas caso prefira...

 

Bem, para adicionar a skill, você tem que procurar essa linha no arquivo :

 

SA_ELEMENTWIND,

 

 

Logo depois, pule uma linha, e adicione nesse formato (lembrando que o nome da skill fica a seu critério, eu vou usar MINHA_SKILL):

 

 

 

MINHA_SKILL = ID,

Pronto, nesse arquivo é só isso, salve-o e feche.

 

Depois, nós vamos editar o arquivo skill.c.

 

Primeiramente, abra o arquivo, e você verá uma lista de todas as skills do jogo, desça essa lista até o final, e quando achar essa linha:

 

 

{ WZ_WATERBALL, "WZ_WATERBALL", "Water_Ball" } ,

 

 

Adicione logo abaixo:

 

{ MINHA_SKILL, "MINHA_SKILL", "Skill_que_eu_criei" } ,

Os primeiro e segundo nomes, precisam ser os nomes que você colocou no arquivo "skill.h", e o terceiro, o nome completo da sua skill.

 

Após ter colocado isso, você terá que adicionar sua skill nas outras partes do arquivo, dependendo de como sua skill será, baseie-se em skills já prontas, em condições/semelhanças que ela tenha com a sua, tente, por exemplo, começar apenas clonando uma skill, é mais fácil e ajuda a aprender mais como funciona o código do emulador.

 

Depois de editar tudo que é necessário, salve e feche o arquivo.

 

Então, dependendo da skill (em algumas não é necessário, apenas cheque uma skill semelhante à sua), você terá que editar o arquivo battle.c, pra definir fórmula de dano, se a skill é afetada por cards, pelo elemento da arma, e várias coisas do tipo, novamente, tente seguir o formato de outras skills pra se orientar, ou até clonar outra skill primeiramente.

 

Depois, dependendo da skill (caso ela inflinja algum status no inimigo/user), você terá que editar o arquivo status.c, como eu já disse antes, siga o formato de outras skills, ou então clone uma, x].

 

Pronto, agora a parte da edição da source está pronta, recompile seu emulador, e suas skills já estarão adicionadas no servidor.

 

Se ocorrer algum erro, não se preocupe, isso é normal, reveja tudo que você fez, corrija possíveis erros, não fechar os códigos com "}"'s ou não adicionar "break;"'s é normal, provavelmente você terá que recompilar várias vezes para acertar, se precisar de ajuda, pode postar que eu faço o possível pra ajudar.

 

 

6.2 - . Edições nos Databases .

 

Agora começa a parte de databases, essa é a parte que você vai adicionar sua(s) custom skill(s) nos databases do servidor, informando as specs da skill.

 

Primeiramente, adicione sua skill no skill_db, no formato certo, o ID da skill, se ela pode ser interrompida, etc. Siga o formato de outras skills, ou então consulte o cabeçalho para ver como adicionar sua skill.

 

Depois, você terá que adicionar sua skill no skill_cast_db.txt, nesse arquivo você vai informar o delay/cast-time de cada level da sua skill, consulte o outras skills já prontas ou o cabeçalho para aprender como adicionar sua skill.

 

Então, você vai precisar adicionar sua skill no skill_tree.txt, nesse arquivo, você vai indicar que classes terão a skill, e que skills serão necessárias para obtê-la, siga o formato de outras skills, ou então consulte o cabeçalho, para saber como adicionar a sua.

 

Agora, você precisará adicionar sua skill no arquivo skill_require_db.txt, nesse arquivo, você vai informar quanto SP a skill vai gastar por level, se a pessoa precisa estar em algum estado (com spirit spheres por exemplo) para usar a skill, se ela precisa ter alguma arma equipada, etc. Siga o formato de outras skills ou consulte o cabeçalho para adicionar a sua.

 

 

6.3 - . Edições no Client .

 

Agora vamos para a parte do hexed, para adicionar custom skills, você usará a player_ability_tab.txt, para adicionar skills para players, a homun_ability_tab.txt para adicionar skills para homunculus, e a guild_ability_tab para adicionar skills para guilds, aqui, eu vou ensinar como usar a player, já que eu quero é adicionar uma skill para um player, mas o método de uso é o mesmo para as três, então, para seguir esse "exemplo", você vai usar a player_ability_tab, abra-a, e você verá que ela tem listada todas as skills, e os "ID-Jumpings" que existem na table, indicam os ID's de cada skill.

 

A última skill deve ser a "SA_ELEMENTWIND", que corresponde ao ID 1019, baseando-se nessa linha, adicione sua custom skill logo depois.

 

Se você usou o ID 1020 para sua custom skill, seria só adicionar logo depois de "SA_ELEMENTWIND", uma nova linha "MINHA_SKILL", mas se você não usou o ID 1020, adicione linhas em branco com qualquer conteúdo "NULL_SKILL" por exemplo, até chegar ao ID da sua skill (vá contando, já que o número da linha não é referência).

 

Você também pode tentar usar o ID-Jumping, mas comigo, isso não funcionou, então teste, se não funcionar mesmo, use esse método.

 

Depois, é só adicionar a sua skill nos arquivos "data/skilldesctable.txt" (a descrição da sua skill), "skillnametable.txt" (o nome da sua skill), e caso ela seja level-selectable (que você possa escolher o level que vai usar), no arquivo "leveluseskillspamount.txt" (a quantidade de SP necessária para cada level da skill).

 

Após tudo isso, sua custom skill estará adicionada no seu server e no seu client com sucesso, apenas execute tudo e teste! :D

 

 

7 - .: Adicionando Custom Classes :.

 

Pronto, agora chegou a parte que eu creio que seja a que as pessoas tem mais interessse, a parte de adicionar custom classes (jobs).

 

Primeiramente, você deve ter conhecimento de que essa função ainda é um pouco bugada, o seu char provavelmente vai ficar andando de um modo estranho (e engraçado diga-se de passagem), com o sprite alinhado na diagonal, porém andando para frente, basicamente, ele vai andar meio desalinhado, apesar de não afetar a jogabilidade.

 

Essa é uma parte que provavelmente também lhe cause alguns erros na hora de compilar, como na parte das skills, você provavelmente vai ter que recompilar várias vezes até acertar (pelo menos eu tive, :P), e é normal esquecer uma coisa ali e outra aqui, então se não estiver funcionando, primeiramente revise o que você já fez, que com certeza você vai achar algum erro bem bossal ^^.

 

Também como na parte das skills, eu resolvi dividir essa parte do tutorial em 3 seções, a das edições da Source, a das edições dos Databases, e a das edições do client.

 

7.1 - . Edições na Source .

O primeiro arquivo da source que nós vamos fuçar, vai ser o já conhecido de bastante gente "common/mmo.h".

 

Abrindo esse arquivo e descendo um pouco a scrollbar, você vai reparar que como na parte das skills, estão todos os jobs do jogo, e cada um com seu respectivo ID apontado nesse arquivo.

 

É agora que você deve decidir que ID você vai usar para a sua custom classe, lembre-se que esse ID não pode ser o ID de nenhum monstro/NPC já existente, e de nenhuma das classes, eu costumo usar ID's por volta de 27~35, ou IDs bem altos, como 4051+ (depois das classes atuais).

 

Nesse tutorial, eu vou usar o ID 35 para minha classe, e vou criá-la como uma expanded class (ou seja, não será a evolução de nenhum job, e sim um job separado, como Ninja ou Gunslinger).

 

Para adicionar sua custom class nesse arquivo (supondo que você use o ID 35), primeiro ache essa linha:

 

 

JOB_XMAS,

 

 

Essa linha, a partir do segmento das outras, define que o ID do job XMAS (da roupa de papai noel) é o 26, então, pule uma linha e adicione logo embaixo :

 

 

MEU_JOB = 35,

Nesse arquivo é só isso, salve e feche.

 

Depois disso, vá até o arquivo src/char/char.c, e procure esta linha :

 

 

case JOB_SOUL_LINKER: return "Soul Linker";

 

 

Bem, eu vou tentar explicar o que cada parte faz, essa linha por exemplo, diz para o char server que se a const "JOB" do personagem é o "JOB_XXX_XXX", o nome do job que ele vai retornar vai ser aquele entre aspas.

 

Para adicionar o seu custom job aqui, adicione logo abaixo dessa linha, nesse formato :

 

 

case JOB_MEU_JOB: return "Meu Job";

Pronto, nesse arquivo também por enquanto é só, salve-o e feche.

 

Agora vá até o arquivo src/map/atcommand.c, agora nós vamos editar o comando @job/@jobchange, para que ele suporte o seu custom job, caso contrário, mesmo que seu job existisse, o comando não reconheceria ele, e você só poderia se tornar esse job através de NPC's e coisas do tipo.

 

Nesse arquivo, ache essa linha :

 

 

{ "ninja",<tab>25 },

 

 

Adicione logo abaixo :

 

 

{ "meu job",<tab>35 },

Pronto, salve o arquivo e feche-o.

 

Agora começa a parte meio chata... abra o arquivo itemdb.c e ache essa linha :

 

 

if (jobmask & 1<<JOB_NINJA)

bclass[0] |= 1<<MAPID_NINJA;

 

 

Essa parte do código, serve para definir que tipo de job é o seu, e para definir qual vai ser a bitmask (numero em hex) que você vai ter que usar no item_db pra que ele possa equipar um item.

 

Para adicionar seu custom job nesse arquivo, adicione logo abaixo :

 

 

if (jobmask & 1<<JOB_MEU_JOB)

bclass[0]|= 1<<MAPID_MEU_JOB;

 

 

Nesse caso, o que caracteriza a classe como uma expanded class é aquele [0], se fosse um [1], seria uma classe 2-1, etc... E lembrando que, colocando "jobmask & 1<<JOB_MEU_JOB" eu estou definindo o bitmask da minha classe como 35, já que é o ID que eu usei, mas você pode usar QUALQUER bitmask que já não seja usado (talvez até algum que já seja usado), é só colocar um número diferente, independente do ID que você usou no resto dos arquivos... por exemplo, se eu quisesse usar ID 4051 pro meu job mas quisesse que o bitmask dele correspondesse ao número 28, era só colocar assim :

 

CODE

if (jobmask & 1<<28)

bclass[0]|= 1<<MAPID_MEU_JOB;

 

 

Nesse arquivo é só, depois de modificar o que quiser, salve-o e feche.

 

Agora abra o arquivo map.h.

 

Descendo um pouco a scrollbar, você verá que nesse arquivo ele também define que tipo de job será seu custom job, você precisa adicionar aqui de acordo com o que adicionou nos outros arquivos, senão provavelmente vai dar erro na hora de compilar ou na hora de rodar o servidor mesmo.

 

Já que minha custom classe vai ser uma expanded class, eu vou procurar por esta linha (que é a que define a última base/expanded class):

 

 

MAPID_XMAS, // [Valaris]

 

 

E vou adicionar logo abaixo :

 

 

MAPID_MEU_JOB = 0x0E,

 

 

Esse 0x0E é o número em hex que vai definir a constante do job, você deve colocar o MESMO número que você especificou aqui no const.txt.

 

Depois de modificar, salve e feche o arquivo.

 

Então, abra o arquivo pc.c e ache estas linhas :

 

 

case JOB_XMAS:

class_ = MAPID_XMAS;

break;

Essa parte converte o sistema de jobs do client para o sistema de jobs do map-server, para adicionar sua custom class aqui, é só adicionar logo abaixo isso aqui :

 

 

case JOB_MEU_JOB:

class_ = MAPID_MEU_JOB;

break;

 

Depois, mais abaixo, encontre essa linha :

 

 

case MAPID_XMAS: // [Valaris]return JOB_XMAS;

 

 

Essa parte converte de volta o sistema de jobs do map-server para o sistema de jobs do client, para adicionar seu custom job aqui, é só adicionar logo abaixo isso :

 

 

case MAPID_MEU_JOB: // [Valaris]return JOB_MEU_JOB;

 

 

Agora, um pouco mais abaixo no arquivo, ache isso aqui :

 

 

case JOB_NINJA:

return msg_txt(620);

Essa parte, define que mensagem do msg_conf ele vai usar para mostrar qual o job de um personagem desta classe, você pode escolher qualquer número de mensagem que não esteja usado, já que você mesmo vai configurá-lo depois, eu por exemplo, vou usar o nº 1000, para adicionar sua custom class, é só colocar assim :

 

 

case JOB_MEU_JOB:

return msg_txt(1000);

 

Pronto, agora salve e feche o pc.c

 

Agora abra o pc.h (finalmente o último arquivo da source que vamos editar ^^), e ache isso nele :

 

 

#define pcdb_checkid(class_) (class_ <= JOB_XMAS || (class_ >= JOB_NOVICE_HIGH && class_ <= JOB_SOUL_LINKER))

Bem, eu vou tentar explicar o que essa parte do código faz.

 

Esse check checa o ID do job para ver se esse ID é um ID válido para uma classe de um player, perceba que ele checa se o ID é menor ou igual (<=) à JOB_XMAS, que é 26, ou seja, todo ID menor ou igual a 26 (26-1) será válido para um job, ou seja, os IDs que vão do Novice até o Ninja.

 

Depois, o próximo ID válido para um job será maior ou igual (>=) a Novice High, que é o ID 4001, até o Soul Linker, que é o último ID de job lançado até agora.

 

O que nós precisaremos fazer é editar esse check pra que ele reconheça o ID do nosso custom job como um ID válido.

 

Supondo que você esteja usando o ID 35, você pode colocar assim :

 

 

#define pcdb_checkid(class_) (class_ <= JOB_MEU_JOB || (class_ >= JOB_NOVICE_HIGH && class_ <= JOB_SOUL_LINKER))

 

 

Assim, os IDs de 35-1 serão válidos para jobs de players.

 

Pronto! Isso é tudo que temos que editar na source! Após ter feito TUDO isso, recompile seu emulador, e veja se não acusa erro nenhum, caso acuse, revise todo o processo, por erros básicos, se ainda assim tiver certeza de que não cometeu nenhum erro, poste aqui e eu ajudo na medida do possível ^^.

 

 

7.2 - . Edições nos Databases .

 

Agora vamos começar a editar os databases.

 

Primeiramente, abra o arquivo const.txt, e ache essa linha:

 

 

Job_Xmas<tab>26

Como eu estou usando o ID 35 para o meu job nesse tutorial, eu vou adicionar logo abaixo:

 

 

Job_Meu_Job<tab>35

 

 

Lembrando que o espaço precisa ser com a tecla Tab! (parágrafo).

 

Depois, procure mais embaixo por esta linha :

 

 

EAJ_NINJA<tab>0x0A

Esse é o número hexadecimal que o client vai reconhecer como aquele job, você poderia usar qualquer número que já não esteja usado (teoricamente), eu vou usar 3 números depois do Ninja, já que já existem rumores de que lançarão novas classes, eu vou deixar espaço para elas, para evitar conflitos futuros, e lembrando que, o número que você colocar aqui deve ser o MESMO que você colocou no map.h.

 

Então, adicione assim :

 

 

EAJ_MEU_JOB<tab>0x0E

 

 

Após ter feito isso, salve e feche.

 

Agora, nós adicionaremos o custom job nos job_dbs1 e 2, para definir a aspd com cada arma, o número de HP, o peso, e etc da custom classe, para isso, apenas abra o job_db1, e o job_db2, e adicione sua custom classe lá, usando o ID/Nome que você deu pra ela, e seguindo o cabeçalho para saber como adicionar a sua (ou até basei-se/copie de outra classe).

 

Depois disso, nós teremos que editar a exp.txt para definir quanta exp nosso job precisará para cada level, senão, ele ficará apenas no level 0 de base/job, sem poder evoluir, pra isso, escolha a linha de exp de job/base que você quer usar para seu job, e aonde, por exemplo, estiver assim :

 

"//Base - Normal Jobs

255,0:1:2:3:4:5:6:7:8:9:10:11:12:13:14:15:16:17:18:19:20:21:23:24:25:26"

 

Esses números entre os ":" são os números dos jobs afetados por esses valores (incluindo max level).

 

Para adicionar seu custom job, basta apenas adicionar ele no formato dos outros, usando o ID que você apontou pra ele, assim :

 

"//Base - Normal Jobs

255,0:1:2:3:4:5:6:7:8:9:10:11:12:13:14:15:16:17:18:19:20:21:23:24:25:26:35"

 

Pronto, agora nós precisaremos editar uma coisa básica no arquivo conf/msg_athena.conf.

 

Lembra que eu usei a msg 1000 pro meu job? Pois é, agora você vai adicionar a msg que você quiser com o número que você apontou nesse arquivo, já que eu usei a msg 1000, o meu ficou assim :

 

"1000: Meu Job"

 

Pronto, salve e feche.

 

 

7.3 - . Edições no Client .

 

Estamos chegando no final! Agora é a parte mais fácil, adicionar no client.

 

Pra isso, você só vai precisar dos arquivos .spr/.act da sua custom classe.

 

Primeiramente, abra a class_tab, e adicione o nome dos arquivos .spr/.act lá, apontando o ID da sua classe, no meu ficou assim :

 

 

!35

meu_job

 

Agora é só fazer isso também na reality_tab e na reality_dir_tab.txt, lembrando de seguir o formato de cada uma, e colocando o nome do sprite do seu job, e apontando o ID do seu job corretamente também...

 

Quanto à imf_tab, ainda não se sabe como se criar arquivos desse tipo customizados, mas já é quase certeza que é esse arquivo que causa o erro de desalinhamento dos sprites da classe, nessa table, você pode usar o nome de qualquer classe pro ID da sua classe, que não vai afetar em nada, faça isso apenas para evitar erros.

 

Agora, vá na monstrosity_tab e procure pelo ID do seu Job lá (esse, se você estiver usando um ID baixo, vai ser provavelmente o ID da linha).

 

No meu caso, eu estou usando o ID 35, então eu vou até a linha 35, e substituo o "1_ETC_01" dessa linha por "Meu Job", depois é só salvar e fechar.

 

Após tudo isso feito, você terá que adicionar os sprites da sua custom class, pra isso, vá na pasta (caso não tenha crie) data/sprite/Àΰ£Á·/¸öÅë, e nessa pasta terão duas outras pastas, uma pra cada sexo.

 

Adicione na do sexo masculino (³²), o spr e o act da sua custom class nesse formato :

 

nome_³².spr

nome_³².act

 

Lembrando que esse "nome" é o nome que você apontou nas tabelas.

 

Faça o mesmo para o sexo feminino, porém usando o símbolo/pasta ¿©.

 

Após tudo isso feito, sua custom class deve estar adicionada no seu servidor/client com sucesso, apenas teste. ^^

 

Para adicionar os sprites de weapon na sua custom class, apenas equipe uma arma, e isso deve causar um erro de falta de spr, apenas olhe o diretório/nome do arquivo que ele pede, e coloque lá o .spr/.act das weapons da sua custom class, usando o nome que ele pede.

 

Pra dar um exemplo de como fica no final, segue uma SS da custom class que eu fiz, "Shaman", usando uma custom skill que eu fiz pra ela também, "Mass Heal", que é basicamente uma mistura de "Slim Potion Pitcher" com "Heal", que deu nisso aí, um Potion Pitcher de área que afeta guild/party, mas que usa a fórmula do Heal (de int, lvl, etc) :

 

(

É necessário se cadastrar para acessar o conteúdo.
)

 

 

Observações

 

Pra quem estava com dúvida no esquema de bitmask de custom jobs (que número usar pra que o job possa usar os equipamentos), eu acabei descobrindo o esquema da bitmask de jobs do item_db, e vou explicar ela aqui pra vocês, é o seguinte :

 

Primeiro, vamos dar uma olhada na tabela do arquivo doc/item_db.txt :

 

CODE

(S.) Novice (2^00): 0x00000001

Swordman (2^01): 0x00000002

Mage (2^02): 0x00000004

Archer (2^03): 0x00000008

Acolyte (2^04): 0x00000010

Merchant (2^05): 0x00000020

Thief (2^06): 0x00000040

Knight (2^07): 0x00000080

Priest (2^08): 0x00000100

Wizard (2^09): 0x00000200

Blacksmith (2^10): 0x00000400

Hunter (2^11): 0x00000800

Assassin (2^12): 0x00001000

Unused (2^13): 0x00002000

Crusader (2^14): 0x00004000

Monk (2^15): 0x00008000

Sage (2^16): 0x00010000

Rogue (2^17): 0x00020000

Alchemist (2^18): 0x00040000

Bard/Dancer (2^19): 0x00080000

Unused (2^20): 0x00100000

Taekwon (2^21): 0x00200000

StarGladi (2^22): 0x00400000

Soul Linker (2^23): 0x00800000

Gunslinger (2^24): 0x01000000

Ninja (2^25): 0x02000000

 

 

Primeiramente, todo mundo achava que era simplesmente fazer os cálculos mostrados, porque no começo da tabela até que faz sentido, 2^0 (^ = elevado a) = 1, etc, mas depois ela começa a perder o sentido, então eu fui procurar e acabei descobrindo a lógica dessa tabela...

 

O que você tem que fazer pra descobrir a bitmask de um ID (o que você usa no itemdb.c, independente do que você usa no resto dos arquivos), é elevar ele a 2, e depois converter o resultado para hexadecimal, usando um conversor comum, como esse.

 

Vamos testar por exemplo com o ID 22, você (com uma calculadora de preferência), calcula 2 elevado a 22, o resultado será 4194304.

 

Depois, pegamos esse valor e colocamos no conversor, depois é só clicar no botão "DEC to HEX", que ele irá converter, e o resultado será 400000.

 

Agora, se observarmos na tabela, o valor do ID 22 (Star Gladiator), é exatamente esse, mas antecedido por 2 zeros pra manter o formato, e o 0x que é como um "prefixo" das bitmasks :

 

CODE

StarGladi (2^22): 0x00400000

 

 

Então, pra descobrir a bitmask do seu job, é só seguir essa lógica, 2^ID e converter pra hexadecimal

--------------------------------------------------------------------------------------------------------------------------------------------

 

 

Creditos:

-Amigos

-Google

-www.eathena.ws

Link para o comentário
Compartilhar em outros sites

  • 1 mês depois...
Este tópico está impedido de receber novos posts.
 Compartilhar

×
×
  • Criar Novo...

Informação Importante

Nós fazemos uso de cookies no seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies , caso contrário, vamos supor que você está bem para continuar.