Se você quer ir além de um servidor "de fábrica" no MTA:SA, precisa entender resources. Eles são a unidade fundamental de tudo que acontece no servidor — cada sistema, cada mapa, cada funcionalidade é um resource. Dominar isso é o que separa quem usa um servidor de quem cria um. Vamos do conceito ao seu primeiro script.
O que é um resource
Um resource é um pacote — uma pasta — que agrupa tudo que uma funcionalidade precisa: scripts em Lua, mapas, imagens, sons, fontes. O servidor liga e desliga resources individualmente. Quer um sistema de estacionamento? É um resource. Um HUD personalizado? Outro resource. Um mapa novo? Resource.
Essa modularidade é a grande força do MTA:SA: você combina resources como blocos de Lego para montar seu servidor, e reaproveita o que já existe.
A anatomia de um resource
Todo resource vive numa pasta dentro de resources/ e tem, no mínimo:
meta.xml— o "manifesto": diz ao MTA quais arquivos o resource tem e onde cada script roda (no servidor ou no cliente).- Scripts Lua — a lógica em si.
Um meta.xml simples:
<meta>
<info author="voce" name="meu_primeiro" version="1.0" />
<script src="server.lua" type="server" />
<script src="client.lua" type="client" />
</meta>
Server-side x client-side (o conceito-chave)
No MTA:SA, os scripts rodam em dois lados:
- Server-side — roda no servidor. Controla dados, regras, dinheiro, banco de dados. É a autoridade (o que você não confia ao jogador vai aqui, por segurança).
- Client-side — roda na máquina do jogador. Cuida da interface, efeitos visuais, interação local.
Os dois se comunicam por eventos. Entender essa divisão é o conceito mais importante do scripting em MTA:SA — e a base da segurança contra trapaça.
Como instalar um resource pronto
O caminho mais rápido para funcionalidades é usar resources da comunidade:
- Baixe o resource (de fontes confiáveis).
- Coloque a pasta dele dentro de
resources/(ou de um subgrupo). - No console do servidor (ou pelo painel), rode
refreshpara o MTA reconhecê-lo. - Inicie com
start nome_do_resource. - Para ligar sempre que o servidor subir, adicione-o ao
mtaserver.conf.
Com um painel como o Pterodactyl, você gerencia arquivos e console pelo navegador, sem complicação.
Seu primeiro resource do zero (a base)
Crie uma pasta meu_primeiro em resources/ com o meta.xml acima e um server.lua:
-- server.lua: mensagem de boas-vindas quando o jogador entra
addEventHandler("onPlayerJoin", root, function()
outputChatBox("Bem-vindo ao servidor!", source, 0, 255, 0)
end)
Um client.lua simples:
-- client.lua: aviso no chat local ao carregar
addEventHandler("onClientResourceStart", resourceRoot, function()
outputChatBox("Resource meu_primeiro carregado!")
end)
Rode refresh e start meu_primeiro no console. Pronto — você criou e rodou seu primeiro resource. A partir daí é só crescer.
Boas práticas de scripting
- Lógica sensível no server-side. Dinheiro, itens, permissões: nunca confie no cliente. Isso é segurança contra cheat.
- Valide tudo que vem do cliente. Trate eventos client→server como não confiáveis.
- Use o banco de dados (MySQL) para dados que precisam persistir.
- Organize por resource. Um sistema = um resource; fica fácil manter, ligar/desligar e reaproveitar.
- Aprenda com a wiki oficial do MTA e com resources open source bem escritos.
Onde rodar tudo isso
Resources e Lua exigem um servidor onde você tenha controle dos arquivos e do console — o que uma boa hospedagem de MTA:SA com painel entrega. A VittHost oferece hospedagem de MTA:SA no Brasil com painel Pterodactyl (arquivos e console pelo navegador), MySQL para persistência, downloads acelerados e DDoS — com 3 dias de teste grátis.
👉 Ver planos de hospedagem MTA:SA
Com resources rodando, garanta a base: veja mtaserver.conf e ACL.

