Pular para o conteúdo

Configuração e limitações

Esta página fecha a seção com o que você precisa configurar dos dois lados e onde o desenho encontra suas paredes. Os exemplos de config usam placeholders de propósito — os valores reais da bancada (IPs, chaves, credenciais) nunca vão para um repositório, e os seus também não devem ir.

O client precisa saber a qual servidor conectar. Isso vai no init.lua, na lista de servidores. Use o seu IP público no lugar do placeholder.

-- init.lua (client) — VALORES DE EXEMPLO
Servers = {
MeuServidor = "SEU_SERVIDOR_IP:7171:854" -- ip : loginPort : protocolVersion
}
-- Deixe o updater vazio para nao travar o login.
Services = {
updater = ""
}

O formato de cada entrada é ip:loginPort:protocolVersion. Aqui, 7171 é a porta de login e 854 é a versão de protocolo (client 8.54). O Services.updater fica vazio de propósito: um updater apontando para lugar nenhum trava a tela de login.

Do lado do servidor, o config.lua do TFS controla IP e portas. O ponto que mais causa dor de cabeça é o ip: ele precisa ser o IP público.

-- config.lua (servidor TFS) — VALORES DE EXEMPLO, NAO OS REAIS
ip = "SEU_SERVIDOR_IP" -- IP PUBLICO. O TFS devolve este valor ao client no login.
loginPort = 7171
gamePort = 7172
-- ... credenciais de banco, etc. ficam aqui e NAO vao para o repositorio ...
sqlHost = "127.0.0.1"
sqlUser = "<seu-usuario>"
sqlPass = "<sua-senha>"
sqlDatabase = "<seu-banco>"

Vale ter clareza sobre o que, do case, você de fato leva para o seu servidor e o que fica na bancada como referência:

  • O módulo de client game_lootfy — a pasta que você solta em modules/. Sanitizado, portável, instala sem recompilar.
  • O patch de engine doLootfyDeliver — os quatro arquivos-fonte C++ que você aplica e recompila (ou o equivalente, se a sua engine é outra).
  • A forma do Lua de servidor — como o opcode.lua valida contra o cid e delega ao Agent. Referência de desenho, adaptada ao seu servidor.

Estas não são pendências que serão resolvidas — são restrições do ambiente OpenTibia antigo, e cada uma explica uma decisão do desenho.

  1. O client 8.54 não seta header HTTP customizado. A chamada HTTP dele não aceita headers, e a assinatura viaja no header X-Lootfy-Signature. Consequência: o client não pode carregar o envelope assinado, então o servidor assina e envia (o ramo B). É a razão de o Agent e o opcode 221 existirem nesse desenho.

  2. O binário da engine é x86-64 / Debian, sem build Windows. A bancada roda um binário pré-compilado para Linux x86-64. Não há build Windows pronto; rodar em Windows exigiria portar a toolchain.

  3. Recompilar o TFS 0.3 é um projeto à parte. Aplicar o patch de entrega exige compilar a engine com a toolchain antiga (container debian:bullseye-slim, autotools, bibliotecas -dev). Se você não compila a sua engine hoje, reserve tempo para esse passo — ele é independente do resto da integração.

  4. IP público obrigatório dos dois lados. Como visto acima, tanto o config.lua do servidor quanto o init.lua do client precisam do IP público, ou o jogador não entra no mundo.