Postado Abril 24 Abr 24 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.