DRS Logs
Logs profissionais para o Discord e dentro do jogo, feitos para ajudar a staff. O script inclui:
- 23 categorias, cada uma com o seu canal no Discord;
- canais criados sozinhos por um bot (categoria
🔒・Logs), com o webhook já ligado; - embeds com a foto do Discord do jogador, jogador e alvo lado a lado e os identificadores prontos a copiar;
- combat log, inventário com origem e destino, assaltos, polícia, banco, veículos e muito mais;
- substitui o qb-logs e liga-se a todos os scripts DRS;
- painel /logs com feed ao vivo e pesquisa própria em cada aba.
Funciona com Qbox, QBCore, ESX ou sem framework.
#Requisitos
| Recurso | Obrigatório |
|---|---|
oxmysql | Não — sem base de dados os últimos logs ficam em memória (Config.MemoryLimit) |
| Qbox, QBCore ou ESX | Não (deteção automática; sem framework funciona na mesma) |
| Bot do Discord | Não — só para os canais automáticos e as fotos do Discord. Sem bot usas webhooks |
| OneSync | Recomendado — o combat log usa o weaponDamageEvent |
#Instalação
- Coloca
drs_logsemresources. - Desliga o
qb-logs(o drs_logs substitui-o; os scripts continuam a funcionar). - Adiciona ao
server.cfg, depois da framework:
ensure oxmysql
ensure qb-core
ensure drs_logs- Escolhe como os logs chegam ao Discord (ver abaixo): bot (recomendado) ou webhooks.
- Dá acesso ao
/logs(os grupos de admin da framework já têm):
add_ace group.admin drs.logs allowA tabela drs_logs é criada sozinha. Os logs com mais de Config.RetentionDays dias são apagados.
#Discord
#Com bot (recomendado)
- Cria uma aplicação em discord.com/developers, separador Bot, e copia o token.
- Convida o bot para o teu servidor do Discord com as permissões Ver canais, Gerir canais e Gerir webhooks.
- Põe o token no
server.cfg:
set drs_logs_bot_token "O_TOKEN_DO_BOT"- Se o bot estiver em mais do que um servidor do Discord, põe o ID do servidor em
ServerConfig.Discord.guildId(server_config.lua).
Em cada arranque o script:
- procura a categoria
🔒・Logse cria-a se não existir (privada: o @everyone não a vê; os cargos destaffRolesveem); - confirma que há um canal para cada categoria de log e cria os que faltam dentro da categoria, com as permissões dela;
- liga um webhook "DRS Logs" a cada canal.
Se criou alguma coisa, avisa na consola:
[drs_logs] CONFIRMA AS PERMISSÕES DOS CANAIS em "🔒・Logs" (quem pode ver os logs).Dica
Se apagarem um canal, ele volta a aparecer no arranque seguinte. Para verificar sem reiniciar: drslogs_sync na consola.
Com o bot, os embeds levam também a foto do Discord do jogador (Config.DiscordAvatars).
#Só com webhooks
Mete os webhooks em ServerConfig.Webhooks (server_config.lua): um por categoria, default para as que não têm e all para uma cópia de tudo. Um webhook escrito lá tem sempre prioridade sobre o do bot.
Nota
Se o Discord não responder (rede em baixo ou erro do Discord), os logs ficam na fila e são reenviados até 5 vezes.
#Categorias
| Categoria | O que regista |
|---|---|
| 📥 Entradas e saídas | Ligar, sair (motivo e tempo de sessão) |
| 💬 Chat | Mensagens do chat, /ooc e /me |
| 💀 Mortes | Quem matou quem, arma, distância e tiro na cabeça |
| 🚪 Combat log | Quem sai pouco depois de levar ou dar dano, ou caído/morto |
| 🔫 Disparos | Resumo dos tiros de cada jogador |
| 💥 Explosões | Tipo de explosão; as suspeitas ficam marcadas e podem mencionar um cargo |
| 🦹 Assaltos | Lojas, cofres, bancos, termite, joalharia, casas, drogas, zonas |
| 🚓 Polícia | Algemas, escoltas, revistas, multas, prisão, MDT |
| 🚨 Chamadas 112 | Chamadas e alertas para a polícia |
| 🚑 INEM | Ações do drs_ambulancejob |
| 🎒 Inventário | Itens recebidos, perdidos e dados a outros jogadores |
| 🗄 Cofres e malas | Guardar e tirar de cofres, malas, porta-luvas e chão |
| 💰 Dinheiro | Movimentos de dinheiro a partir de Config.MoneyThreshold |
| 🏦 Banco | Transferências e logs do banco |
| 🛒 Lojas | Compras e casa de penhores |
| 🚗 Veículos | Stand, mecânico, venda de carros |
| 💼 Empregos | Mudanças de emprego, contratar, despedir |
| 📨 Reports | Tickets e reports |
| ⭐ Staff | Ações da staff (drs_admin) |
| 🛡 Anticheat | Logs do anticheat |
| 🔨 txAdmin | Kicks, avisos, bans, anúncios, reinícios |
| 📦 Recursos | Recursos ligados e desligados |
| 🧩 Scripts | Tudo o que não tem canal próprio |
Cada categoria tem cor, ícone e emoji em Config.Categories e pode ser desligada (enabled = false).
#Inventário: origem e destino
Cada log de inventário tem os campos 📤 Origem e 📥 Destino:
- Guardar:
Zé guardou 3× Água → Cofre police_stash - Tirar:
Zé tirou 1× Água ← Mala ABC123 - Dar:
Gonçalo deu 1× Telemóvel a Maria
Funciona com qb-inventory, ox_inventory (hooks) e ESX. Config.Inventory permite ignorar itens, definir uma quantidade mínima e desligar os cofres.
#Combat log
Regista quem sai do servidor até Config.CombatLog.seconds segundos depois de dar ou levar dano, ou estando caído ou morto (drs_ambulancejob ou metadata do QBCore). O log diz com quem estava em combate, há quanto tempo e o motivo da saída, e fica marcado como alerta.
#Ligação a outros scripts
#Substitui o qb-logs
O evento qb-log:server:CreateLog continua a funcionar. O nome do log escolhe a categoria (Config.QbLogRoutes), por exemplo stash → Cofres e malas, cuffing → Polícia, 112 → Chamadas. tagEveryone passa a alerta (menciona o cargo de ServerConfig.Ping, nunca o @everyone).
#Scripts DRS
Todos os scripts DRS mandam os seus logs para o drs_logs quando ele está ligado. Config.ResourceRoutes diz para que categoria vai cada um.
#Eventos de qualquer script
Config.EventLogs regista eventos de rede de qualquer script, com o jogador, o alvo, a posição e os dados. Já vem com os assaltos do QBCore, o qb-policejob, o qb-vehicleshop, os cofres e o drs_policejob.
{ event = 'police:server:CuffPlayer', category = 'police', title = 'ev_cuff', target = 1,
fields = { { arg = 2, label = 'f_soft', kind = 'bool' } } },target é o número do argumento com o ID do outro jogador; kind pode ser money, bool ou text.
#Painel /logs
- feed ao vivo e as últimas 24 h, 7 dias ou tudo;
- pesquisa própria em cada aba: nome, personagem, ID (
12ou#12), license, Discord, Steam, item, matrícula, rua… várias palavras procuram todas ao mesmo tempo; - ver só um jogador a partir do detalhe;
- detalhe de cada log com os identificadores prontos a copiar.
#Para programadores
exports.drs_logs:Log('vehicles', 'Compra no stand', ('Comprou um %s por %s $'):format(model, price), source, {
target = sellerId,
fields = { { name = 'Matrícula', value = plate } },
color = '#22c55e', flag = false,
})
TriggerEvent('drs_logs:server:log', { category = 'robbery', title = 'Assalto', message = '...', src = source })Uma categoria nova aparece no menu logo que é usada; para lhe dar cor, ícone e canal acrescenta-a a Config.Categories e a ServerConfig.Discord.channels.
#Configuração completa
-- DRS Logs — configuração / configuration
-- Os webhooks do Discord ficam no server_config.lua (só o servidor os lê).
-- Discord webhooks live in server_config.lua (only the server reads them).
Config = {}
Config.Locale = 'pt' -- 'pt' | 'en'
Config.Framework = 'auto' -- 'auto' | 'qbx' | 'qb' | 'esx' | 'none'
Config.StaffGroups = { 'god', 'admin', 'superadmin', 'mod' }
-- Visualizador em jogo (ACE drs.logs, grupos de staff acima ou ACE "command")
-- In-game viewer (ACE drs.logs, the staff groups above or the "command" ACE)
Config.Viewer = {
enabled = true,
command = 'logs',
perPage = 50,
accent = '#7c5cff',
}
-- Guardar na base de dados (oxmysql). Sem BD os logs ficam só em memória (os últimos MemoryLimit).
-- Store in the database (oxmysql). Without it, logs only stay in memory (the last MemoryLimit).
Config.Database = true
Config.RetentionDays = 30 -- apaga logs mais antigos que isto (0 = nunca) / delete older logs (0 = never)
Config.MemoryLimit = 1000
Config.ServerName = 'O Meu Servidor'
Config.LogIP = false -- mostrar o IP nos logs (RGPD!) / show the IP in logs (GDPR!)
Config.DiscordName = 'DRS Logs'
Config.DiscordAvatar = '' -- URL da imagem do bot / bot image URL
Config.LogoUrl = '' -- logótipo do servidor nos embeds (URL de imagem) / server logo in embeds
Config.DiscordAvatars = true -- foto do Discord do jogador nos embeds (precisa do bot) / player's Discord avatar in embeds (needs the bot)
-- Categorias: enabled liga/desliga, color é a cor no Discord e no menu, icon é o ícone do menu, emoji aparece no Discord.
-- Categories: enabled turns them on/off, color is used on Discord and in the menu, icon is the menu icon, emoji shows on Discord.
Config.Categories = {
joins = { enabled = true, color = '#34d399', icon = 'plug', emoji = '📥' },
chat = { enabled = true, color = '#60a5fa', icon = 'chat', emoji = '💬' },
deaths = { enabled = true, color = '#f87171', icon = 'skull', emoji = '💀' },
combatlog = { enabled = true, color = '#dc2626', icon = 'door', emoji = '🚪' },
shooting = { enabled = true, color = '#fb923c', icon = 'target', emoji = '🔫' },
explosions = { enabled = true, color = '#ef4444', icon = 'flame', emoji = '💥' },
robbery = { enabled = true, color = '#e11d48', icon = 'mask', emoji = '🦹' },
police = { enabled = true, color = '#3b82f6', icon = 'badge', emoji = '🚓' },
calls = { enabled = true, color = '#f43f5e', icon = 'phone', emoji = '🚨' },
ems = { enabled = true, color = '#fb7185', icon = 'cross', emoji = '🚑' },
inventory = { enabled = true, color = '#2dd4bf', icon = 'backpack', emoji = '🎒' },
storage = { enabled = true, color = '#14b8a6', icon = 'vault', emoji = '🗄️' },
money = { enabled = true, color = '#fbbf24', icon = 'coins', emoji = '💰' },
banking = { enabled = true, color = '#eab308', icon = 'bank', emoji = '🏦' },
shops = { enabled = true, color = '#a3e635', icon = 'store', emoji = '🛒' },
vehicles = { enabled = true, color = '#38bdf8', icon = 'car', emoji = '🚗' },
jobs = { enabled = true, color = '#22d3ee', icon = 'briefcase', emoji = '💼' },
reports = { enabled = true, color = '#c084fc', icon = 'flag', emoji = '📨' },
staff = { enabled = true, color = '#a78bfa', icon = 'star', emoji = '⭐' },
anticheat = { enabled = true, color = '#f97316', icon = 'shield', emoji = '🛡️' },
txadmin = { enabled = true, color = '#f472b6', icon = 'gavel', emoji = '🔨' },
resources = { enabled = true, color = '#818cf8', icon = 'box', emoji = '📦' },
scripts = { enabled = true, color = '#94a3b8', icon = 'layers', emoji = '🧩' },
}
-- Combat log: quem sai do servidor pouco depois de levar ou dar dano, ou estando caído/morto.
-- Combat log: players who leave shortly after taking or dealing damage, or while down/dead.
Config.CombatLog = {
seconds = 90, -- saiu até X segundos depois do último dano / left within X seconds of the last damage
whileDown = true, -- conta também quem sai caído ou morto / also counts leaving while down or dead
ignoreReasons = { 'Server shutting down' }, -- motivos que não contam (texto contido no motivo) / reasons that don't count
}
-- Disparos: o cliente junta os tiros e envia um resumo de X em X segundos.
-- Shooting: the client groups shots and sends a summary every X seconds.
Config.Shooting = { interval = 60, minShots = 3 }
-- Explosões: tipos que contam como suspeitos (vermelho e marcados). Lista: docs.fivem.net/natives (ADD_EXPLOSION).
-- Explosions: types that count as suspicious (red and flagged). Names in shared/weapons.lua (ExplosionNames).
Config.Explosions = {
ignore = { 'DIR_STEAM', 'DIR_WATER_HYDRANT', 'EXTINGUISHER', 'EXTINGUISHER2', 'BIRD_CRAP', 'SNOWBALL', 'FLARE', 'SMOKEGRENADE' },
suspicious = { 'GRENADE', 'GRENADELAUNCHER', 'STICKYBOMB', 'ROCKET', 'TANKSHELL', 'PLANE_ROCKET', 'RAILGUN', 'PROXMINE',
'VALKYRIE_CANNON', 'AIR_DEFENCE', 'PIPEBOMB', 'EXPLOSIVEAMMO', 'EXPLOSIVEAMMO_SHOTGUN', 'APCSHELL', 'BOMB_CLUSTER', 'BOMB_GAS',
'BOMB_INCENDIARY', 'BOMB_STANDARD', 'BOMB_STANDARD_WIDE', 'ORBITAL_CANNON', 'HUNTER_BARRAGE', 'HUNTER_CANNON', 'OPPRESSOR2_CANNON',
'RAYGUN', 'SCRIPT_MISSILE', 'SCRIPT_MISSILE_LARGE', 'EMPLAUNCHER_EMP' },
perPlayerSeconds = 2, -- junta explosões do mesmo jogador / groups explosions from one player
}
-- Dinheiro (QBCore/Qbox): só regista movimentos a partir deste valor.
-- Money (QBCore/Qbox): only logs changes of at least this amount.
Config.MoneyThreshold = 1000
-- Logs de recursos a arrancar só depois deste tempo (evita centenas de linhas no arranque do servidor).
-- Resource start logs only after this many seconds (avoids hundreds of lines at server boot).
Config.ResourceGraceSeconds = 60
-- Inventário: qb-inventory (pelos logs que ele já faz), ox_inventory (hooks de mover, dar e comprar) e ESX.
-- Inventory: qb-inventory (through the logs it already makes), ox_inventory (move, give and buy hooks) and ESX.
Config.Inventory = {
ignoreItems = {}, -- itens que não se registam / items that are not logged, ex.: { 'water', 'sandwich' }
minAmount = 1, -- só regista a partir desta quantidade / only logs from this amount
stashes = true, -- registar também o que entra/sai de cofres, malas e porta-luvas / also log stashes, trunks and gloveboxes
}
-- Assaltos e outras ações: qualquer evento de rede de qualquer script fica registado com o jogador que o enviou,
-- a posição e os dados. Os de origem são os assaltos do QBCore; acrescenta os dos teus scripts.
-- Robberies and other actions: any network event from any script is logged with the player who sent it,
-- the position and the data. The defaults are the QBCore robberies; add the ones from your scripts.
Config.EventLogs = {
cooldown = 10, -- segundos entre logs do mesmo jogador no mesmo evento / seconds between logs per player per event
-- event: nome do evento · category · title: chave do locale ou texto · flag: alerta
-- target = n.º do argumento que é o ID do outro jogador · fields = { { arg = n, label = 'f_...', kind = 'money'|'bool'|'text' } }
-- event name · category · title: locale key or text · flag: alert · target = argument index holding the other player's ID
events = {
-- assaltos (QBCore) / robberies
{ event = 'qb-storerobbery:server:callCops', category = 'robbery', title = 'ev_store_start', flag = true, fields = { { arg = 3, label = 'f_street' } } },
{ event = 'qb-storerobbery:server:takeMoney', category = 'robbery', title = 'ev_store_register' },
{ event = 'qb-storerobbery:server:SafeReward', category = 'robbery', title = 'ev_store_safe' },
{ event = 'qb-bankrobbery:server:callCops', category = 'robbery', title = 'ev_bank_start', flag = true, fields = { { arg = 2, label = 'f_bank' }, { arg = 3, label = 'f_street' } } },
{ event = 'qb-bankrobbery:server:setLockerState', category = 'robbery', title = 'ev_bank_locker' },
{ event = 'thermite:StartServerFire', category = 'robbery', title = 'ev_thermite' },
{ event = 'qb-jewellery:server:setVitrineState', category = 'robbery', title = 'ev_jewel_vitrine' },
{ event = 'qb-jewellery:server:vitrineReward', category = 'robbery', title = 'ev_jewel_reward' },
{ event = 'qb-houserobbery:server:enterHouse', category = 'robbery', title = 'ev_house_enter' },
{ event = 'qb-houserobbery:server:searchFurniture', category = 'robbery', title = 'ev_house_search' },
{ event = 'qb-truckrobbery:server:callCops', category = 'robbery', title = 'ev_truck_start', flag = true },
{ event = 'qb-moneysafe:server:DepositMoney', category = 'robbery', title = 'ev_safe_deposit', fields = { { arg = 1, label = 'f_safe' }, { arg = 2, label = 'f_amount', kind = 'money' } } },
{ event = 'qb-moneysafe:server:WithdrawMoney', category = 'robbery', title = 'ev_safe_withdraw', flag = true, fields = { { arg = 1, label = 'f_safe' }, { arg = 2, label = 'f_amount', kind = 'money' } } },
-- polícia (qb-policejob) / police
{ event = 'police:server:CuffPlayer', category = 'police', title = 'ev_cuff', target = 1, fields = { { arg = 2, label = 'f_soft', kind = 'bool' } } },
{ event = 'police:server:EscortPlayer', category = 'police', title = 'ev_escort', target = 1 },
{ event = 'police:server:SearchPlayer', category = 'police', title = 'ev_search' },
{ event = 'police:server:SeizeCash', category = 'police', title = 'ev_seize', target = 1 },
{ event = 'police:server:JailPlayer', category = 'police', title = 'ev_jail', target = 1, fields = { { arg = 2, label = 'f_months' } } },
{ event = 'police:server:BillPlayer', category = 'police', title = 'ev_bill', target = 1, fields = { { arg = 2, label = 'f_amount', kind = 'money' } } },
{ event = 'police:server:policeAlert', category = 'calls', title = 'ev_police_alert', fields = { { arg = 1, label = 'f_text' } } },
-- polícia (drs_policejob)
{ event = 'drs_pd:cuff', category = 'police', title = 'ev_cuff', target = 1, fields = { { arg = 2, label = 'f_hard', kind = 'bool' } } },
{ event = 'drs_pd:uncuff', category = 'police', title = 'ev_uncuff', target = 1 },
{ event = 'drs_pd:escort', category = 'police', title = 'ev_escort', target = 1 },
{ event = 'drs_pd:search', category = 'police', title = 'ev_search_target', target = 1 },
{ event = 'drs_pd:putInVehicle', category = 'police', title = 'ev_put_vehicle', target = 1 },
{ event = 'drs_pd:takeOutVehicle', category = 'police', title = 'ev_take_vehicle', target = 1 },
-- stand (qb-vehicleshop) / dealership
{ event = 'qb-vehicleshop:server:buyShowroomVehicle', category = 'vehicles', title = 'ev_buy_vehicle', fields = { { arg = 1, label = 'f_vehicle' } } },
{ event = 'qb-vehicleshop:server:financeVehicle', category = 'vehicles', title = 'ev_finance_vehicle', fields = { { arg = 3, label = 'f_vehicle' }, { arg = 1, label = 'f_down', kind = 'money' } } },
{ event = 'qb-vehicleshop:server:sellShowroomVehicle', category = 'vehicles', title = 'ev_sell_vehicle', target = 2 },
},
}
-- Logs de outros scripts (qb-log) que vão para uma categoria própria em vez de "scripts".
-- Logs from other scripts (qb-log) that go to their own category instead of "scripts".
-- Logs de outros scripts que se ignoram porque o drs_logs já os faz (ex.: entradas/saídas do qb-core).
-- Logs from other scripts that are ignored because drs_logs already does them (e.g. qb-core joins/leaves).
Config.QbLogIgnore = { joinleave = true }
Config.QbLogRoutes = {
joinleave = 'joins', ooc = 'chat', me = 'chat', death = 'deaths', ['combat-log'] = 'combatlog',
playerinventory = 'inventory', drop = 'storage', trunk = 'storage', stash = 'storage', glovebox = 'storage',
robbing = 'robbery', storerobbery = 'robbery', bankrobbery = 'robbery', jewelery = 'robbery', jewellery = 'robbery',
truckrobbery = 'robbery', houserobbery = 'robbery', moneysafes = 'robbery', powerplants = 'robbery',
cuffing = 'police', pmelding = 'police', ['112'] = 'calls',
playermoney = 'money', moneyitems = 'money', banking = 'banking', casino = 'money',
shops = 'shops', dealers = 'shops', pawnshop = 'shops',
vehicleshop = 'vehicles', vehicleupgrades = 'vehicles', vehiclesales = 'vehicles', bennys = 'vehicles',
bossmenu = 'jobs', gangmenu = 'jobs', recyclejob = 'jobs',
report = 'reports', bans = 'staff', anticheat = 'anticheat', house = 'scripts', default = 'scripts',
}
-- Os scripts DRS (bridge com Bridge.Log) mandam os logs deles para aqui quando o drs_logs está ligado.
-- Para que categoria vai cada recurso (os outros vão para "scripts").
-- DRS scripts send their own logs here when drs_logs is running. Which category each resource goes to.
Config.ResourceRoutes = {
drs_banking = 'banking', drs_vehicleshop = 'vehicles', drs_mechanic = 'vehicles', drs_insurance = 'vehicles',
drs_policejob = 'police', drs_mdt = 'police', drs_prison = 'police', drs_bodycam = 'police', drs_fingerprint = 'police',
drs_gps = 'police', drs_speedcam = 'police', drs_k9 = 'police', drs_communityservice = 'police',
drs_dispatch = 'calls', drs_ambulancejob = 'ems', drs_tickets = 'reports', drs_admin = 'staff', drs_announce = 'staff',
drs_bossmenu = 'jobs', drs_jobcreator = 'jobs', drs_drugsales = 'robbery', drs_zonewars = 'robbery',
drs_crafting = 'inventory', drs_mining = 'jobs', drs_giftcodes = 'money', drs_battlepass = 'scripts', drs_halloween = 'scripts',
}
-- Substitui o qb-logs: aceita o evento qb-log:server:CreateLog de todos os scripts QBCore (desliga o qb-logs).
-- O nome do log escolhe a categoria (Config.QbLogRoutes); "tagEveryone" passa a alerta (menciona o cargo de ServerConfig.Ping).
-- Replaces qb-logs: accepts qb-log:server:CreateLog from every QBCore script (turn qb-logs off).
Config.CaptureQbLogs = true#Configuração do servidor (webhooks e bot)
-- DRS Logs — webhooks do Discord (só o servidor lê este ficheiro; nunca vão para os jogadores).
-- Discord webhooks (only the server reads this file; they never reach players).
-- Deixa vazio para não enviar essa categoria para o Discord (continua a aparecer no /logs).
-- Leave empty to skip Discord for that category (it still shows in /logs).
ServerConfig = {}
-- ---------------------------------------------------------------- canais criados sozinhos / auto-created channels
-- Com um bot do Discord, sempre que o recurso arranca verifica se existe a categoria e um canal por categoria de log.
-- O que faltar é criado dentro da categoria (com as permissões da categoria) e com o webhook já ligado:
-- não precisas de copiar webhooks. Os webhooks escritos mais abaixo têm prioridade.
-- With a Discord bot, every start checks the category and one channel per log category; whatever is missing is
-- created inside the category (synced with its permissions) with its webhook. Webhooks written below take priority.
--
-- O bot precisa das permissões / the bot needs: Ver canais, Gerir canais, Gerir webhooks (View/Manage Channels, Manage Webhooks)
ServerConfig.Discord = {
enabled = true,
-- token do bot: aqui ou na convar do server.cfg (set drs_logs_bot_token "..."), que tem prioridade
-- bot token: here or in a server.cfg convar, which takes priority
botToken = '',
tokenConvar = 'drs_logs_bot_token',
guildId = '', -- ID do servidor do Discord (vazio = o único servidor onde o bot está)
category = '🔒・Logs',
-- cargos que veem a categoria quando ela é criada (o @everyone fica sem ver) / roles that can see a new category
staffRoles = {},
-- nome do canal de cada categoria de log (false = sem canal) / channel name for each log category (false = none)
channels = {
joins = '📥・entradas-saidas',
chat = '💬・chat',
deaths = '💀・mortes',
combatlog = '🚪・combat-log',
shooting = '🔫・disparos',
explosions = '💥・explosoes',
robbery = '🦹・assaltos',
police = '🚓・policia',
calls = '🚨・chamadas-112',
ems = '🚑・inem',
inventory = '🎒・inventario',
storage = '🗄・cofres-e-malas',
money = '💰・dinheiro',
banking = '🏦・banco',
shops = '🛒・lojas',
vehicles = '🚗・veiculos',
jobs = '💼・empregos',
reports = '📨・reports',
staff = '⭐・staff',
anticheat = '🛡・anticheat',
txadmin = '🔨・txadmin',
resources = '📦・recursos',
scripts = '🧩・scripts',
},
}
ServerConfig.Webhooks = {
default = '', -- usado quando a categoria não tem webhook / used when a category has none
all = '', -- recebe uma cópia de tudo / receives a copy of everything
joins = '',
chat = '',
deaths = '',
shooting = '',
explosions = '',
resources = '',
txadmin = '',
money = '',
jobs = '',
inventory = '',
robbery = '',
combatlog = '',
police = '',
calls = '',
ems = '',
storage = '',
banking = '',
shops = '',
vehicles = '',
reports = '',
staff = '',
anticheat = '',
scripts = '',
}
-- Categorias que mencionam um cargo no Discord (ID do cargo). Ex.: explosions = '123456789012345678'
-- Categories that ping a Discord role (role ID).
ServerConfig.Ping = {
explosions = '',
combatlog = '',
robbery = '',
}