Modelo inicial grátis · arquivos de código-fonte incluídos
Script grátis de regras para servidor FiveM
Ofereça aos jogadores um comando /rules que abre as regras do seu servidor em um pequeno painel NUI. Baixe o modelo existente do RPScripts, edite as regras e teste no seu servidor.
- 7 arquivos de código-fonte
- Sem dependência de framework ou banco de dados
Este download não exige conta, pagamento ou créditos de IA.
O que o script faz
O comando /rules abre um painel com regras editáveis. Os jogadores o fecham com Escape ou com o botão “Close”. O código do cliente libera o foco da NUI quando o painel é fechado e quando o recurso é interrompido.
Este é um pequeno modelo inicial que serve apenas para exibir as regras. Ele não registra a aceitação das regras, não fiscaliza seu cumprimento, não gerencia permissões nem substitui ferramentas de moderação.

Instale em um servidor de teste
- Extraia o ZIP em resources/[local]/ para que o manifesto fique em resources/[local]/rules_board/fxmanifest.lua. Evite colocar outra pasta rules_board dentro dela.
- Edite Config.Rules em config.lua e os textos do painel em locales/en.lua. Se outro recurso já usa /rules, altere Config.Command antes de iniciar este recurso.
- Adicione a linha abaixo a server.cfg e reinicie seu servidor de teste. Mantenha o nome rules_board na pasta do recurso para que corresponda ao comando.
ensure rules_board - Conecte-se com o FiveM e execute /rules. Confira cada regra, feche pelo botão, abra novamente e feche com Escape. Confirme que o movimento e o controle do mouse voltaram a funcionar e verifique se há erros nos consoles F8 e do servidor. Teste também a interrupção e a reinicialização do recurso.
Deixe do seu jeito
Config.Command- O nome do comando sem a barra. O padrão é rules.
Config.Rules- A lista de textos das regras exibidas no painel. Substitua as três regras de exemplo pelas suas.
Config.Layout.panel- Ponto de ancoragem do painel e deslocamentos x/y em porcentagem. Por padrão, ele fica no canto superior direito.
Config.Theme.name- Escolha blue, red, green, orange ou purple, ou informe uma cor CSS.
locales/en.lua- O título do painel, o texto do botão “Close” e a dica da tecla Escape. Traduza esses textos para seus jogadores.
Inspecione o código-fonte antes de instalar
Estes são exatamente os sete arquivos do ZIP. O código Lua, HTML, CSS e JavaScript pode ser lido e editado. Abrir um arquivo aqui não o executa.
config.lua
Config = {}
Config.Command = 'rules'
-- Exactly three rules shown in the panel
Config.Rules = {
'Respect all players and staff. No harassment or hate speech.',
'No random killing (RDM) or vehicle deathmatching (VDM).',
'No cheating, exploiting bugs or using unfair advantages.'
}
Config.Layout = { panel = { anchor = 'top-right', x = 2.0, y = 3.0 } }
Config.Theme = { name = 'blue' }
Config.SpeedUnit = 'kmh'
fxmanifest.lua
fx_version 'cerulean'
game 'gta5'
lua54 'yes'
name 'rules_board'
description 'Standalone /rules command with NUI panel'
version '1.0.0'
shared_scripts {
'config.lua',
'locales/en.lua'
}
client_script 'client/main.lua'
ui_page 'html/index.html'
files {
'html/index.html',
'html/style.css',
'html/script.js'
}
html/script.js
const panel = document.getElementById('panel');
const colors = { blue: '#3b82f6', red: '#ef4444', green: '#22c55e', orange: '#f97316', purple: '#a855f7' };
function post(name, data) {
return fetch(`https://${GetParentResourceName()}/${name}`, {
method: 'POST',
body: JSON.stringify(data || {})
}).catch(() => {});
}
function place(layout) {
panel.style.top = panel.style.bottom = panel.style.left = panel.style.right = 'auto';
panel.style.transform = '';
const a = (layout && layout.anchor) || 'top-right';
const x = ((layout && layout.x) || 0) + '%';
const y = ((layout && layout.y) || 0) + '%';
let tx = '', ty = '';
if (a.includes('top')) panel.style.top = y;
else if (a.includes('bottom')) panel.style.bottom = y;
else { panel.style.top = '50%'; ty = 'translateY(-50%)'; }
if (a.includes('left')) panel.style.left = x;
else if (a.includes('right')) panel.style.right = x;
else { panel.style.left = '50%'; tx = 'translateX(-50%)'; }
panel.style.transform = (tx + ' ' + ty).trim();
}
window.addEventListener('message', (e) => {
const d = e.data;
if (d.action === 'open') {
document.getElementById('title').textContent = d.title;
document.getElementById('hint').textContent = d.hint;
document.getElementById('closeBtn').textContent = d.close;
const list = document.getElementById('rules');
list.innerHTML = '';
(d.rules || []).forEach((r) => {
const li = document.createElement('li');
li.textContent = r;
list.appendChild(li);
});
const c = colors[d.theme] || d.theme || colors.blue;
panel.style.borderTopColor = c;
document.getElementById('closeBtn').style.background = c;
place(d.layout);
panel.classList.remove('hidden');
} else if (d.action === 'close') {
panel.classList.add('hidden');
}
});
document.getElementById('closeBtn').addEventListener('click', () => post('close'));
document.addEventListener('keydown', (e) => {
if (e.key === 'Escape' && !panel.classList.contains('hidden')) post('close');
});
html/style.css
html, body { margin: 0; height: 100%; overflow: hidden; background: transparent; font-family: Arial, sans-serif; }
#panel {
position: absolute;
width: 320px;
padding: 18px 20px;
border-radius: 10px;
background: rgba(20, 24, 33, 0.92);
color: #fff;
border-top: 4px solid #3b82f6;
box-shadow: 0 6px 24px rgba(0, 0, 0, 0.5);
}
#panel.hidden { display: none; }
h1 { margin: 0 0 12px; font-size: 20px; }
ol { margin: 0 0 12px; padding-left: 20px; font-size: 14px; line-height: 1.45; }
li { margin-bottom: 8px; }
#hint { margin: 0 0 12px; font-size: 11px; opacity: 0.6; }
button {
width: 100%;
padding: 8px;
border: 0;
border-radius: 6px;
background: #3b82f6;
color: #fff;
font-size: 14px;
cursor: pointer;
}
button:hover { filter: brightness(1.15); }
locales/en.lua
Locale = {
title = 'Server Rules',
close = 'Close',
hint = 'Press ESC to close'
}
client/main.lua
local isOpen = false
local function openRules()
if isOpen then return end
isOpen = true
SetNuiFocus(true, true)
SendNUIMessage({
action = 'open',
title = Locale.title,
close = Locale.close,
hint = Locale.hint,
rules = Config.Rules,
layout = Config.Layout.panel,
theme = Config.Theme.name
})
end
local function closeRules()
isOpen = false
SetNuiFocus(false, false)
SendNUIMessage({ action = 'close' })
end
RegisterCommand(Config.Command, function()
openRules()
end, false)
RegisterNUICallback('close', function(_, cb)
closeRules()
cb('ok')
end)
AddEventHandler('onResourceStop', function(resource)
if resource ~= GetCurrentResourceName() then return end
SetNuiFocus(false, false)
end)
html/index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="style.css">
</head>
<body>
<div id="panel" class="hidden">
<h1 id="title"></h1>
<ol id="rules"></ol>
<p id="hint"></p>
<button id="closeBtn"></button>
</div>
<script src="script.js"></script>
</body>
</html>
O que foi verificado
Este é um resultado do RPScripts AI registrado em 2026-10-13. O registro de validação salvo não contém problemas apontados pelas verificações estáticas e registra uma verificação com LuaLS. A prévia mostra a NUI em um navegador. Essas verificações não comprovam o comportamento dentro do jogo ou no modo multijogador; teste na sua própria configuração antes de disponibilizar para o público.
SHA-256 do mapa de arquivos de código-fonte registrado
62219c0eb6cef9f6ce6fb2b88c8c7fbfe1c7c6f526230266b8e575306ded40c3Se o painel não abrir ou fechar
Primeiro, confira a estrutura das pastas e o nome do recurso em server.cfg. Confirme que o recurso foi iniciado, verifique se há conflito em Config.Command e procure erros de Lua ou NUI no F8. Se a entrada continuar presa ao painel, interrompa o recurso de teste e revise client/main.lua antes de continuar.
Quer mudar o comportamento?
Abra este mesmo modelo no RPScripts AI para trabalhar em uma cópia. Abrir o exemplo é grátis e exige uma conta; as alterações feitas pela IA seguem seu plano atual e seus limites de créditos.
Continue montando seu servidor
Use o testador de scripts para uma análise estática das suas alterações ou confira recursos prontos para os outros sistemas de que seu servidor precisa.