SafeGuard

Scripts e integrações

Exports para os teus scripts

Os teus scripts de servidor podem falar com o SafeGuard através de exports (só funcionam do lado do servidor; os jogadores não os conseguem chamar). Para usar as permissões temporárias, autoriza explicitamente os nomes dos teus recursos em Config.MovementPermissionResources no config.lua. Por omissão, nenhum recurso externo está autorizado. Cada chamada aceita milissegundos e um motivo opcional; os limites máximos são 60 s para teleport/godmode, 120 s para movimento e 30 s para revive. Durações inválidas ou chamadas de recursos não autorizados são recusadas.

-- Antes da ação (garagens, hospital, spawn, interiores, admin): evita confundir a transição com cheats.
exports.safeguard:allowTeleport(source, 5000, 'garage') -- até 60 s
exports.safeguard:allowGodmode(source, 15000, 'hospital-protection')
exports.safeguard:allowMovement(source, 10000, 'admin-sequence') -- noclip/speed/fly/teleport

-- Revive autoriza brevemente movimento e invencibilidade de transição (máximo 30 s).
exports.safeguard:allowRevive(source, 20000, 'ambulance-revive')

-- `grace` mantém compatibilidade com scripts antigos; autoriza apenas movimento por até 120 s.
exports.safeguard:grace(source, 10000, 'cutscene')

-- Pagamentos: o SafeGuard recusa valores acima do limite e em quarentena.
local ok = exports.safeguard:economyTransaction(source, 'bank', 5000, 'job:trucker')
if ok then xPlayer.addAccountMoney('bank', 5000) end

-- Consultar o estado do jogador.
local quarantined = exports.safeguard:isQuarantined(source)
local risk = exports.safeguard:getRisk(source)     -- { global = 12.5, level = 'normal' }

-- Um script teu detetou algo suspeito (nunca é tratado como prova do servidor).
exports.safeguard:reportDetection(source, 'economy.money_spike', 0.7, { amount = 1000000 })

As permissões são server-side, vinculadas ao jogador, registadas com recurso/motivo e expiram automaticamente; não existe evento de rede para o cliente pedir um bypass. Declara a autorização imediatamente antes da ação e usa a menor duração possível.

Alertas no Discord

Em Integrações → Alertas no Discord adiciona o webhook de um canal da staff e escolhe os eventos: ameaças críticas, banimentos, jogadores de risco alto, servidores offline, licença a expirar, resultados críticos do scanner, ações da staff, novos recursos de banimentos e o relatório semanal. Sem a cloud, define o webhook no server.cfg:

set safeguard_discord_webhook "https://discord.com/api/webhooks/…"

Chaves de API

Em Integrações → Chaves de API crias chaves com permissões limitadas, para ferramentas tuas ou para o bot de Discord. A chave aparece uma vez; revoga-a se vazar.

Scanner de resources e bot de Discord

O scanner analisa a pasta resources à procura de backdoors, código ofuscado, webhooks expostos e eventos sem proteção, e envia só os resultados (nunca o teu código) para a página Scanner. O bot de Discord traz os comandos /player, /ban, /unban, /server, /detections e /screenshot para a tua staff.

Vê como usar o scanner em Scanner de resources.

O scanner e o bot são distribuídos a pedido: fala connosco no Discord.