Introdução ao Scripting rAthena

Já se perguntou como NPCs personalizados, missões e eventos únicos ganham vida no Ragnarok? Tudo isso é alimentado pela poderosa linguagem de Scripting do rAthena! Pense nela como seu conjunto de ferramentas completo, repleto de comandos e funções projetados para transformar suas ideias de jogo em realidade.

Este portal é um manual de referência abrangente, ideal tanto para iniciantes que desejam criar seus primeiros NPCs quanto para desenvolvedores experientes que buscam aprofundar seu conhecimento na sintaxe e comandos do emulador.



O que significam RID e GID?

No scripting do rAthena, RID e GID são identificadores fundamentais usados para referenciar entidades dentro do mundo do jogo.

RID (Requesting ID): Refere-se diretamente ao jogador. É o número exclusivo de identificação de conta (AID) do personagem que disparou a execução do script. Quando um script é invocado por um jogador (clicando em um NPC, pisando em uma área com OnTouch ou utilizando um item), o RID daquele personagem é automaticamente anexado ao script em execução.

  • A maioria dos comandos que interagem com o jogador (como gravar variáveis, abrir diálogos, entregar itens ou modificar atributos) exige um RID anexado.
  • Scripts acionados sem um jogador direto (como timers globais, eventos de relógio ou monstros morrendo sozinhos) não possuem RID anexado inicialmente. Nesses casos, comandos como attachrid associam um jogador explicitamente, enquanto playerattached verifica se há alguém vinculado.

GID (Game ID): Identificador exclusivo para objetos e entidades no jogo, incluindo monstros, NPCs, clones e mascotes. É amplamente utilizado por comandos de controle de monstros (mobs) e lógicas de habilidades recentes.

  • Para monstros, o GID é obtido no momento do spawn (por exemplo, através do comando monster).
  • Você pode inspecionar o GID de qualquer entidade no jogo clicando com o botão direito enquanto estiver em uma conta de Game Master (GM).
  • Funções como getpetinfo, getmercinfo e gethominfo retornam GIDs para entidades específicas.


📚 Configurando e Carregando seu Primeiro Script

Para fazer com que um NPC funcione no seu servidor rAthena de forma permanente, você deve salvar o arquivo e declará-lo na configuração do emulador:

  • 1. Criando o arquivo meuteste.txt:
    Exemplo de Código:
    // NPC simples de teste para rAthena
    prontera,150,150,4	script	meuteste	99,{
        mes "[meuteste]";
        mes "Olá, aventureiro! Bem-vindo ao servidor!";
        close;
    }
  • 2. Salvando o Arquivo:
    • Salve o arquivo na pasta npc/custom/ do diretório do seu servidor rAthena (ex: npc/custom/meuteste.txt).
  • 3. Declarando no Arquivo de Configuração:
    • Abra o arquivo npc/scripts_custom.conf no seu servidor.
    • Adicione a linha abaixo para incluir seu novo script:
    • Declaração no scripts_custom.conf:
      // --------------------------------------------------------------
      // -                       Scripts Custom                       -
      // --------------------------------------------------------------
      npc: npc/custom/meuteste.txt
    • Salve o arquivo scripts_custom.conf.


Como testar ou recarregar o script sem reiniciar o servidor

Para carregar ou atualizar seu NPC em tempo real com seu personagem GM dentro do jogo, utilize os comandos @loadnpc, @reloadnpcfile e @unloadnpcfile:

  • Certifique-se de estar logado com uma conta de nível GM.
  • Para carregar um script novo sem reiniciar o servidor: use @loadnpc npc/custom/meuteste.txt no chat do jogo.
  • Se você alterou o conteúdo do arquivo meuteste.txt, use @reloadnpcfile npc/custom/meuteste.txt para aplicar as alterações imediatamente.
  • Para remover o NPC temporariamente e liberar recursos do mapa: use @unloadnpcfile npc/custom/meuteste.txt.
  • Resumo das Diferenças 🔑
    • @loadnpc <caminho>: Para novos scripts que ainda não foram carregados pelo servidor.
    • @reloadnpcfile <caminho>: Para scripts existentes que foram modificados e precisam ser atualizados.
    • @unloadnpcfile <caminho>: Remove o script da memória do emulador em tempo de execução.

Demonstração em Vídeo: