Como criar e personalizar canais de chat em seu OT Server usando a interface ChatChannel do TFS

Você sabia que você pode criar e personalizar canais de chat em seu OT Server usando a interface ChatChannel do TFS? Essa interface permite que você crie scripts em Lua para controlar o comportamento dos canais de chat, como quem pode entrar, sair ou falar neles.

Neste post, eu vou te explicar o que é a interface ChatChannel do TFS, quais são os tipos de eventos que ela oferece e como usá-la em seu OT Server.

O que é a interface ChatChannel?

A interface ChatChannel do TFS é uma parte do The Forgotten Server, um projeto open source que permite criar e hospedar servidores personalizados de Tibia.

A interface ChatChannel permite que você crie scripts em Lua na pasta data/chatchannels/scripts e registre-os no arquivo data/chatchannels/chatchannels.xml. Esses scripts podem controlar o comportamento dos canais de chat, como quem pode entrar, sair ou falar neles.

Quais são os tipos de eventos da interface ChatChannel do TFS?

Existem quatro tipos de eventos da interface ChatChannel do TFS:

  • canJoin: ocorre quando um jogador tenta entrar no canal de chat.
  • onJoin: ocorre quando um jogador entra no canal de chat.
  • onLeave: ocorre quando um jogador sai do canal de chat.
  • onSpeak: ocorre quando um jogador fala no canal de chat.

Cada tipo de evento pode receber o jogador como parâmetro e retornar true ou false para permitir ou negar a ação. Por exemplo:

function canJoin(player)
  return player:getAccountType() > ACCOUNT_TYPE_GAMEMASTER -- se o tipo de conta for maior que gamemaster retorna true para permitir entrar
end

Esse código faz com que apenas jogadores com tipo de conta maior que gamemaster possam entrar no canal de chat.

Como usar a interface ChatChannel em seu OT Server?

Para usar a interface ChatChannel do TFS em seu OT Server, você precisa seguir alguns passos:

  1. Crie seus scripts em Lua na pasta data/chatchannels/scripts. Você pode usar as funções do LuaScript Interface para manipular os jogadores e o jogo. Por exemplo:
function onSpeak(player, type, message)
  if message == "!online" then -- se a mensagem for !online
    local online = Game.getPlayersOnline() -- pegar os jogadores online
    local text = "Online players:\n" -- criar um texto
    for i = 1, #online do -- para cada jogador online
      text = text .. online[i]:getName() .. "\n" -- adicionar o nome ao texto
    end
    player:sendTextMessage(MESSAGE_CHANNEL_MANAGEMENT , text) -- enviar o texto ao jogador
    return false -- negar a fala no canal
  end
end

Esse código faz com que quando um jogador digitar !online no canal de chat ele receba uma lista dos jogadores online e não envie a mensagem ao canal.

  1. Registre seus scripts no arquivo data/chatchannels/chatchannels.xml. Você precisa informar o id (um número único para identificar o canal), o nome (o nome visível para os jogadores), o script (o nome do script) e opcionalmente outros atributos como color (a cor das mensagens) ou private (se o canal é privado ou não). Por exemplo:
<channel id="8" name="God Channel" script="godchat.lua" color="180"/>

Esse código registra o script godchat.lua para ser executado no canal com id 8 e nome God Channel e cor 180 (um tom de vermelho).

  1. Reinicie seu OT Server para aplicar as mudanças. Você pode usar o comando /reload chatchannels para recarregar os canais de chat sem reiniciar o servidor.
  2. Teste seus canais de chat e veja se eles funcionam como esperado. Você pode usar o comando /join #id para entrar em um canal pelo id ou clicar no ícone do canal na janela de chat.

Conclusão

Neste post, você aprendeu como criar e personalizar canais de chat em seu OT Server usando a interface ChatChannel do TFS. Essa interface é uma forma poderosa e flexível de adicionar funcionalidades e interatividade aos seus canais de chat.

Espero que você tenha gostado deste post e que ele tenha sido útil para você. Se você tiver alguma dúvida ou sugestão, deixe um comentário abaixo. E se você quiser saber mais sobre OT Servers, fique ligado no nosso blog!

Deixe um comentário