Servidores de Jogos

Exportando funções entre resources

Exportando funções entre resources

Em vez de colocar tudo em um único resource gigante, servidores bem organizados dividem o gamemode em vários resources — banco, contas, inventário, empregos — que conversam por meio de exports.

Declarando um export

No meta.xml do resource que oferece a função:

<export function="darDinheiro" type="server" />
<export function="obterSaldo" type="server" />

No script:

function darDinheiro(jogador, valor, motivo)
    -- validações, atualização do saldo, log
    return true
end

function obterSaldo(jogador)
    return saldos[jogador] or 0
end

Funções exportadas precisam ser globais (sem local) no script.

Chamando de outro resource

local ok = exports.rp_banco:darDinheiro(jogador, 500, "Salário de taxista")
local saldo = exports.rp_banco:obterSaldo(jogador)

Ou com a sintaxe alternativa:

exports["rp_banco"]:darDinheiro(jogador, 500, "Salário")

Tipos de export

  • type="server" — chamado por scripts de servidor;
  • type="client" — chamado por scripts de cliente;
  • type="shared" — disponível nos dois lados (cada lado executa a sua própria cópia).

Export não atravessa a rede: um script de cliente não chama um export de servidor. Para isso, use eventos.

Dependências

  • Use <include resource="rp_banco" /> no meta.xml de quem depende, para garantir que o banco inicie antes;
  • Trate falhas: se o resource não estiver rodando, a chamada gera erro. Verifique com getResourceFromName e getResourceState quando fizer sentido.

Centralize regras críticas

Uma arquitetura modular boa tem um único lugar para cada regra:

  • Todo dinheiro passa por rp_banco (com logs);
  • Todos os itens passam por rp_inventario;
  • Toda permissão passa por rp_permissoes.

Isso facilita auditoria, correção de bugs e combate a exploits.

Desempenho

Chamadas de export têm um pequeno custo extra. Em loops muito frequentes, guarde o resultado em vez de chamar o export várias vezes.

Hospede seu servidor com a VittHost

No MTASA-BR da VittHost, seu gamemode modular roda com MySQL incluso, servidores no Brasil, proteção DDoS, painel Pterodactyl, downloads acelerados por nginx dedicado e teste grátis de 3 dias.

Compartilhar:

Pronto para hospedar seu próximo projeto?

VPS com painel pré-instalado em 1 clique. Ativação imediata.

Ver planos VPS