O que é revscript e como usá-lo nos OT Servers

Os OT Servers são servidores alternativos de Tibia, um jogo online de RPG. Eles permitem que os jogadores criem e modifiquem o conteúdo do jogo, como mapas, monstros, itens e magias. Uma das formas de fazer isso é usando scripts.

Scripts são arquivos de texto que contêm código em Lua, uma linguagem de programação simples e poderosa. Eles são salvos na pasta data/scripts do seu OT Server e são carregados automaticamente quando o servidor é iniciado.

Existem vários tipos de scripts que podem ser usados nos OT Servers, como actions, movements, creaturescripts, talkactions e globalevents. Cada tipo de script tem uma função específica e um formato diferente.

Mas você sabia que existe uma forma mais fácil e organizada de criar scripts nos OT Servers? Essa forma se chama revscript.

Neste post, vamos aprender o que é revscript e como usá-lo nos OT Servers. Vamos ver quais são as vantagens de usar revscript e como criar scripts simples usando esse sistema.

O que é revscript?

Revscript é um sistema de scripts que foi introduzido no Forgotten Server (TFS), um dos projetos mais populares de OT Server baseado no Tibia 10.98. Ele permite que você crie scripts usando uma sintaxe mais simples e intuitiva, sem precisar editar arquivos XML ou usar IDs numéricos.

O nome revscript vem de registerEventScript, uma função da API do TFS que permite registrar um script para um determinado evento. Por exemplo, se você quer criar um script para uma action (uma interação com um item), você pode usar a função registerActionEvent para registrar o seu script para o evento onUse.

O sistema revscript usa essa função para registrar todos os tipos de scripts automaticamente, sem precisar editar arquivos XML ou usar IDs numéricos. Você só precisa criar um arquivo .lua na pasta data/scripts com o código do seu script e definir alguns atributos básicos.

Quais são as vantagens de usar revscript?

Usar revscript tem várias vantagens em relação ao sistema tradicional de scripts. Algumas delas são:

  • Você pode criar scripts mais facilmente e rapidamente, sem precisar editar arquivos XML ou usar IDs numéricos.
  • Você pode organizar os seus scripts em pastas separadas por tipo ou por tema, sem precisar seguir uma estrutura fixa.
  • Você pode usar nomes descritivos para os seus scripts e atributos, sem precisar seguir uma convenção pré-definida.
  • Você pode evitar conflitos entre os seus scripts e os de outros autores, pois cada script tem o seu próprio namespace.
  • Você pode atualizar os seus scripts sem precisar reiniciar o servidor, pois eles são recarregados automaticamente quando modificados.

Como usar revscript

Para usar revscript em seu OT Server, você precisa seguir alguns passos:

  1. Baixar a versão mais recente do TFS, que já vem com o sistema de revscript integrado.
  2. Criar uma pasta chamada revscripts dentro da pasta data do seu servidor.
  3. Criar subpastas dentro da pasta revscripts para cada tipo de recurso que você quer usar com revscript, como monstersspellsitems, etc.
  4. Criar arquivos .lua dentro das subpastas com os nomes dos recursos que você quer criar ou modificar com revscript, como dragon.luaexura.luasword.lua, etc.
  5. Escrever os scripts seguindo a sintaxe e os parâmetros específicos de cada tipo de recurso. Você pode encontrar exemplos e tutoriais de como fazer isso nos fóruns OTLand e Tibia King.
  6. Salvar os arquivos e iniciar ou recarregar o seu servidor.

Exemplo de código de uma action

Para ilustrar como criar uma action usando revscript, vamos usar o exemplo do item que teletransporta você para outro lugar. O código do script seria algo assim:

-- Criando um arquivo teleporter.lua na pasta data/scripts/revscripts/actions
local config = {
    itemId = 1234, -- O ID do item que queremos usar como action
    destination = {x = 1000, y = 1000, z = 7}, -- As coordenadas do lugar para onde queremos teletransportar
    effect = CONST_ME_TELEPORT, -- O efeito visual que queremos mostrar quando usamos a action
    message = "You have been teleported." -- A mensagem que queremos mostrar ao jogador quando usamos a action
}

function onUse(player, item) -- A função que define a lógica da nossa action
    player:teleportTo(config.destination) -- Teletransporta o jogador para as coordenadas definidas na tabela config
    player:getPosition():sendMagicEffect(config.effect) -- Mostra o efeito visual definido na tabela config na posição do jogador
    player:sendTextMessage(MESSAGE_INFO_DESCR, config.message) -- Mostra a mensagem definida na tabela config ao jogador
    return true -- Retorna verdadeiro para indicar que a action foi executada com sucesso
end

registerActionEvent("teleporter", "onUse") -- Registrando o nosso script para o evento onUse usando a função registerActionEvent

Para testar o nosso script, precisamos fazer o seguinte:

  1. Salvar o arquivo teleporter.lua na pasta data/scripts/revscripts/actions .
  2. Criar um item com o ID 1234 no jogo usando um editor de mapas ou um comando no servidor.
  3. Usar esse item no jogo e ver se ele funciona como esperado.

Como você pode ver, criar uma action usando revscript é muito simples e intuitivo. Você só precisa definir as propriedades da sua action na tabela config e escrever a lógica da sua action na função onUse . Você não precisa editar nenhum arquivo XML ou usar IDs numéricos para registrar o seu script.

Exemplo de código de uma spell

Para ilustrar como criar uma spell usando revscript, vamos usar o exemplo da magia exura , que cura o jogador. O código do script seria algo assim:

-- Criando um arquivo exura.lua na pasta data/scripts/revscripts/spells
local config = {
    name = "exura", -- O nome da magia que queremos criar
    words = "exura", -- As palavras que o jogador precisa dizer para usar a magia
    level = 8, -- O nível mínimo que o jogador precisa ter para usar a magia
    mana = 20, -- A quantidade de mana que a magia consome
    group = "healing", -- O grupo ao qual a magia pertence (pode ser healing, attack, support ou special)
    cooldown = 1000, -- O tempo em milissegundos que o jogador precisa esperar para usar a magia novamente
    effect = CONST_ME_MAGIC_BLUE, -- O efeito visual que queremos mostrar quando usamos a magia
    formulaType = COMBAT_HEALING, -- O tipo de fórmula que queremos usar para calcular o valor da cura (pode ser COMBAT_HEALING ou COMBAT_FORMULA_DAMAGE)
    formulaMin = 20.0, -- O valor mínimo da fórmula
    formulaMax = 40.0 -- O valor máximo da fórmula
}

function onCastSpell(player) -- A função que define a lógica da nossa spell
    local min = (player:getLevel() / 5) + (player:getMagicLevel() * config.formulaMin) + 25 -- Calculando o valor mínimo da cura usando a fórmula definida na tabela config
    local max = (player:getLevel() / 5) + (player:getMagicLevel() * config.formulaMax) + 50 -- Calculando o valor máximo da cura usando a fórmula definida na tabela config

    doTargetCombatHealth(0, player, config.formulaType, min, max) -- Curando o jogador com um valor aleatório entre min e max

    player:getPosition():sendMagicEffect(config.effect) -- Mostrando o efeito visual definido na tabela config na posição do jogador

    return true -- Retornando verdadeiro para indicar que a spell foi executada com sucesso
end

registerSpellEvent("exura", "onCastSpell") -- Registrando o nosso script para o evento onCastSpell usando a função registerSpellEvent

Para testar o nosso script, precisamos fazer o seguinte:

  1. Salvar o arquivo exura.lua na pasta data/scripts/revscripts/spells .
  2. Entrar no jogo com um personagem que tenha pelo menos nível 8 e mana suficiente.
  3. Dizer as palavras exura no chat do jogo e ver se ele funciona como esperado.

Conclusão

Neste post, aprendemos o que é revscript e como usá-lo nos OT Servers. Vimos quais são as vantagens de usar revscript e como criar scripts simples para actions e spells usando esse sistema. Revscript é uma forma mais fácil e organizada de criar scripts nos OT Servers, sem precisar editar arquivos XML ou usar IDs numéricos. Você pode usar revscript para criar e modificar vários tipos de recursos no jogo, como monstros, itens, magias e muito mais. Você também pode atualizar os seus scripts sem precisar reiniciar o servidor, pois eles são recarregados automaticamente quando modificados. Esperamos que você tenha gostado deste post e que ele tenha sido útil para você. Se você tiver alguma dúvida ou sugestão sobre revscript ou sobre OT Servers em geral, deixe um comentário abaixo. Obrigado por ler e até a próxima!

Deixe um comentário