Metatables do The Forgotten Server

Você já se perguntou como o TFS (The Forgotten Server) usa o Lua para criar scripts de jogos? Uma das ferramentas mais poderosas que o Lua oferece são as metatables. Neste post, vamos explicar o que são as metatables e como elas podem ajudar você a criar scripts mais dinâmicos e flexíveis para o seu OT Server.

O que são metatables?

Metatables são uma forma de mudar o comportamento de uma tabela em Lua. Por exemplo, usando metatables, você pode definir como o Lua calcula a expressão a+b , onde a e b são tabelas. Sempre que o Lua tenta somar duas tabelas, ele verifica se alguma delas tem uma metatable e se essa metatable tem um campo __add .

As metatables também permitem definir outros operadores para as tabelas, como subtração (__sub), multiplicação (__mul), divisão (__div), concatenação (__concat), comparação (__eq) e muito mais. Além disso, as metatables podem controlar como acessamos os campos de uma tabela usando os campos __index e __newindex .

Como o TFS usa as metatables?

O TFS usa o Lua como linguagem de script. O Lua contém um tipo de dado único conhecido como “metatable”. Essas metatables são a representação do Lua da Programação Orientada a Objetos. Aqui podemos encontrar todos os métodos para os “Objetos” predefinidos enviados ao Lua.

O TFS fornece as seguintes metatables:

  • Combat
  • Condition
  • Container
  • Creature
  • Group
  • Guild
  • House
  • Item
  • ItemType
  • ModalWindow
  • Monster
  • MonsterType
  • NetworkMessage
  • Npc
  • Party
  • Player
  • Position

Cada uma dessas metatables tem seus próprios métodos e propriedades que permitem manipular os objetos correspondentes no jogo. Por exemplo, a metatable Player tem métodos como getPlayerName , getLevel , addHealth , sendTextMessage , entre outros.

Como usar as metatables no seu script?

Para usar as metatables no seu script, você precisa criar uma instância do objeto desejado usando uma função específica. Por exemplo, para criar um objeto Player , você pode usar a função Player(cid) , onde cid é o identificador do jogador.

Depois de criar o objeto, você pode acessar seus métodos e propriedades usando a notação de ponto ou colchete. Por exemplo:


local player = Player(cid) -- cria um objeto Player

player:addHealth(100) -- adiciona 100 pontos de vida ao jogador

player:sendTextMessage(MESSAGE_INFO_DESCR,"Você ganhou 100 pontos de vida!") -- envia uma mensagem ao jogador

local name = player:getPlayerName() -- obtém o nome do jogador

print(name) -- imprime o nome do jogador na tela

Você também pode usar as funções globais getThing ou getCreature para obter objetos Creature , Item ou Container . Por exemplo:


local creature = getCreature(cid) -- obtém um objeto Creature

local item = getThing(pos) -- obtém um objeto Item na posição pos

local container = getContainerByUID(uid) -- obtém um objeto Container pelo UID

Para saber mais sobre as metatables e seus métodos e propriedades, consulte a documentação do TFS ou o manual do Lua.

Esperamos que este post tenha sido útil para você entender melhor o que são as TFS Metatables e como usá-las no seu OT Server. Se você tiver alguma dúvida ou sugestão, deixe um comentário abaixo!

Deixe um comentário