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!