Ir para conteúdo

Featured Replies

Postado
  • Administrador

 

Tutorial Completo: Como Adicionar uma Nova Vocação no Canary Server

 

 

Citar

Objetivo: Este guia detalhado explica como criar e configurar novas vocações (exemplo: Warrior e Elite Warrior) no Canary Server, abordando também a lógica por trás do sistema de vocações.

 

 


 

1. Entendendo a Lógica das Vocações

No servidor Canary, cada vocação representa uma classe de personagem com habilidades, atributos e características específicas. Para que o servidor reconheça uma nova vocação, é necessário:

- Definir um identificador único (ID);
- Registrar o ClientID (usado para exibição no cliente);
- Especificar um BaseID (para herança de características ou evolução);
- Configurar atributos, fórmulas e habilidades no XML.

 


 

2. Alterando a Enumeração das Vocações (Código Fonte C++)

Arquivo: `src/creatures/creatures_definitions.hpp`

Adicione os novos IDs no enum `Vocation_t`:

 

enum Vocation_t : uint16_t {
    VOCATION_NONE = 0,
    VOCATION_SORCERER = 1,
    VOCATION_DRUID = 2,
    VOCATION_PALADIN = 3,
    VOCATION_KNIGHT = 4,
    VOCATION_MASTER_SORCERER = 5,
    VOCATION_ELDER_DRUID = 6,
    VOCATION_ROYAL_PALADIN = 7,
    VOCATION_ELITE_KNIGHT = 8,
    VOCATION_WARRIOR = 9,
    VOCATION_ELITE_WARRIOR = 10,
    VOCATION_LAST = VOCATION_ELITE_WARRIOR
};

 

 

Citar

A constante `VOCATION_LAST` deve sempre apontar para o último ID definido para evitar problemas de indexação interna.

 

 


 

3. Atualizando o Script de Vocações (Lua)

Arquivo: `data/libs/vocation.lua`

Adicione os novos valores nas três seções do objeto `VOCATION`:

 

VOCATION = {
    ID = {
        WARRIOR = 9,
        ELITE_WARRIOR = 10,
        ...
    },
    CLIENT_ID = {
        WARRIOR = 0,
        ELITE_WARRIOR = 0,
        ...
    },
    BASE_ID = {
        WARRIOR = 5,
        ...
    }
}

 

 

Citar

`CLIENT_ID` com valor 0 indica que a vocação será exibida como "None" na seleção de personagem, mas isso não afeta o jogo em si.  


`BASE_ID` é usado para definir herança de habilidades e características entre vocações.

 

 


 

4. Criando Função de Verificação da Nova Vocação

Arquivo: `data/libs/functions/player.lua`

Adicione a seguinte função no final do arquivo:

 

function Player.isWarrior(self)
    return table.contains({VOCATION.ID.WARRIOR, VOCATION.ID.ELITE_WARRIOR}, self:getVocation():getId())
end

 

 

Citar

Essas funções são úteis para aplicar lógicas específicas por vocação em spells, quests ou sistemas customizados.

 

 


 

5. Configurando as Vocações no XML

Arquivo: `data/XML/vocations.xml`

Adicione o bloco de cada nova vocação com os atributos desejados:

 

<vocation id="9" clientid="0" baseid="5" name="Warrior" description="a warrior"
  magicshield="0" gaincap="25" gainhp="15" gainmana="5" gainhpticks="4000"
  gainhpamount="1" gainmanaticks="6000" gainmanaamount="2" manamultiplier="3.0"
  attackspeed="2000" basespeed="110" soulmax="200" gainsoulticks="15000" fromvoc="5">
    <formula meleeDamage="1.0" distDamage="1.0" defense="1.0" armor="1.0" />
    <skill id="0" multiplier="1.1" />
    <skill id="1" multiplier="1.1" />
    <skill id="2" multiplier="1.1" />
    <skill id="3" multiplier="1.1" />
    <skill id="4" multiplier="1.4" />
    <skill id="5" multiplier="1.1" />
    <skill id="6" multiplier="1.1" />
</vocation>

<vocation id="10" clientid="0" baseid="6" name="Elite Warrior" description="an elite warrior"
  magicshield="0" gaincap="25" gainhp="15" gainmana="5" gainhpticks="4000"
  gainhpamount="1" gainmanaticks="6000" gainmanaamount="2" manamultiplier="3.0"
  attackspeed="2000" basespeed="110" soulmax="200" gainsoulticks="15000" fromvoc="5">
    <formula meleeDamage="1.0" distDamage="1.0" defense="1.0" armor="1.0" />
    <skill id="0" multiplier="1.1" />
    <skill id="1" multiplier="1.1" />
    <skill id="2" multiplier="1.1" />
    <skill id="3" multiplier="1.1" />
    <skill id="4" multiplier="1.4" />
    <skill id="5" multiplier="1.1" />
    <skill id="6" multiplier="1.1" />
</vocation>

 

 

Citar

Esses atributos definem como a vocação evolui: vida/mana por level, velocidade de ataque, ganho de soul, atributos de combate, etc.

 

 


 

6. Compilando o Servidor

Após todas as alterações, é obrigatório recompilar o servidor para que as novas vocações sejam reconhecidas corretamente.

 


 

 

Conclusão:

 

Ao seguir todos os passos, suas novas vocações estarão totalmente integradas ao servidor. Você poderá usá-las para personagens.

 

 

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

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

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo