Como usar creaturescripts em seu OT Server

Creaturescripts são scripts que executam ações quando certos eventos envolvendo criaturas (monstros ou jogadores) acontecem em seu OT Server. Por exemplo, você pode usar creaturescripts para dar recompensas aos jogadores que matam certos monstros, enviar mensagens quando um jogador entra ou sai do jogo, ou aplicar efeitos especiais a criaturas que entram em uma área específica.

Neste post, vamos aprender como criar e usar creaturescripts em seu OT Server. Vamos usar o The Forgotten Server (TFS) como base, mas os conceitos podem ser adaptados para outros servidores baseados em Lua.

O que são creaturescripts?

Creaturescripts são arquivos de texto com extensão .lua que contêm código Lua para definir funções que serão chamadas quando certos eventos acontecem. Esses eventos podem ser:

  • onLogin: quando uma criatura entra no jogo.
  • onLogout: quando uma criatura sai do jogo.
  • onHealthChange: quando a saúde de uma criatura muda.
  • onManaChange: quando o mana de uma criatura muda.
  • onPrepareDeath: quando uma criatura está prestes a morrer.
  • onDeath: quando uma criatura morre.
  • onKill: quando uma criatura mata outra.
  • onAdvance: quando uma criatura avança de nível ou habilidade.
  • onModalWindow: quando uma criatura interage com uma janela modal.
  • onTextEdit: quando uma criatura edita um texto.
  • onLook: quando uma criatura olha para outra ou para um item.
  • onChangeOutfit: quando uma criatura muda de roupa.

Para cada evento, você pode definir uma função com o mesmo nome que recebe alguns parâmetros relacionados ao evento e retorna um valor booleano indicando se o evento deve continuar ou não. Por exemplo, a função onLogin recebe como parâmetros a criatura que entrou no jogo e o booleano que indica se ela estava offline ou não. A função deve retornar true se o login deve ser permitido ou false se deve ser bloqueado.

Como criar creaturescripts?

Para criar um creaturescript, você precisa seguir alguns passos:

  1. Crie um arquivo .lua na pasta data/creaturescripts/scripts com o nome que quiser. Por exemplo, rewards.lua.
  2. Escreva o código Lua para definir as funções dos eventos que você quer usar. Por exemplo:
function onKill(creature, target)
  -- Verifica se a criatura é um jogador e se o alvo é um monstro
  if creature:isPlayer() and target:isMonster() then
    -- Obtém o nome do monstro
    local monsterName = target:getName():lower()
    -- Verifica se o monstro está na tabela de recompensas
    local reward = rewards[monsterName]
    if reward then
      -- Adiciona a recompensa ao inventário do jogador
      creature:addItem(reward.itemid, reward.count)
      -- Envia uma mensagem ao jogador
      creature:sendTextMessage(MESSAGE_INFO_DESCR, "Você recebeu " .. reward.count .. " " .. ItemType(reward.itemid):getName() .. " por matar " .. monsterName .. ".")
    end
  end
  -- Retorna true para permitir o evento
  return true
end
  1. Crie uma tabela com os dados que você quer usar no seu script. Por exemplo:
-- Tabela de recompensas por monstro
rewards = {
  ["demon"] = {itemid = 2160, count = 10}, -- 10 crystal coins por demon
  ["dragon lord"] = {itemid = 5948, count = 1}, -- 1 dragon claw por dragon lord
  ["hydra"] = {itemid = 5954, count = 1}, -- 1 hydra head por hydra
}

Para registrar o arquivo rewards.lua no creaturescripts.xml, você precisa seguir os seguintes passos:

  1. Abra o arquivo creaturescripts.xml na pasta data/creaturescripts com um editor de texto.
  2. Adicione uma tag <event> dentro da tag <events> com os seguintes atributos:
  • type: o tipo do evento que você quer usar. No caso do rewards.lua, seria “kill”.
  • name: um nome único para identificar o seu script. Pode ser qualquer coisa, mas é recomendável usar algo relacionado ao seu script. Por exemplo, “rewards”.
  • script: o nome do arquivo .lua que contém o seu script. No caso, seria “rewards.lua”.
  1. Salve e feche o arquivo creaturescripts.xml.

Um exemplo de como ficaria a tag <event> para o rewards.lua seria:

<event type="kill" name="rewards" script="rewards.lua"/>

Conclusão

Neste post, você aprendeu como criar e usar creaturescripts em seu OT Server. Creaturescripts são scripts que executam ações quando certos eventos envolvendo criaturas acontecem em seu jogo. Você viu como criar um arquivo .lua com o código Lua para definir as funções dos eventos, como criar uma tabela com os dados que você quer usar no seu script e como registrar o seu script no arquivo creaturescripts.xml. Agora você pode usar a sua criatividade para criar scripts personalizados e tornar o seu OT Server mais divertido e interativo. E aí, gostou do post? Tem alguma dúvida ou sugestão? Deixe o seu comentário abaixo!

Deixe um comentário