Sur cette page
Documentation / Démarrer
Installer l’agent
L’agent est une resource FiveM. Il se connecte vers l’extérieur à FiveDock par un websocket chiffré et fait ce que demande le panneau, tant que la commande figure dans la liste qu’il accepte.
Rien n’écoute sur votre machine. Aucun port à ouvrir, et le mot de passe de votre base reste où il est.
Ajoutez la resource
Téléchargez la release, mettez-la dans resources/[fivedock] et démarrez-la avant votre framework. fivedock_check dans la console affiche ce qu’il utilise.
curl -fLO https://dl.fivedock.dev/agent/latest/fivedock.zip
unzip fivedock.zip -d resources/[fivedock]ensure fivedock
set fivedock_key "fda_live_…"
# lets fivedock perf record FXServer’s profiler
add_ace resource.fivedock command.profiler allow
add_ace resource.fivedock command.record allow
add_ace resource.fivedock command.saveJSON allow
# optional: where uploads land, and how loud the log is
set fivedock_folder "/screenshots"
set fivedock_log "info"fda_live_… est une clé d’agent. Vous la créez dans le panel pour un serveur, et elle ne va que dans server.cfg. Ce n’est pas un token d’API : tout ce qui appelle l’API d’envoi en HTTP utilise à la place un token fd_live_… de la page Tokens.
Envoyez quelque chose
Il y a deux façons d’envoyer, et les deux stockent le même fichier : dédupliqué et facturé une fois.
exports.fivedock:upload({
resource = 'my-script',
path = 'cache/shot.jpg',
folder = '/screenshots',
}, function(err, file)
if not err then print(file.url) end
end)
-- take the screenshot and upload it in one call
exports.fivedock:screenshot(source, { folder = '/screenshots', quality = 0.9 }, cb)curl -X POST https://api.fivedock.dev/api/v3/file \
-H "Authorization: Bearer fd_live_…" \
-F "[email protected]" \
-F "path=/screenshots"Les exports passent par l’agent et sa clé, votre script ne détient donc aucun secret. La voie HTTP, c’est l’API d’envoi, qui prend un token d’API (fd_live_…) et jamais la clé d’agent.
Exports serveur
La resource fivedock donne cinq exports à vos scripts serveur. Appelez-les depuis du Lua côté serveur : ils passent par la connexion de l’agent, votre script n’a donc besoin d’aucun token. fivedock_upload_allow décide quelles resources peuvent appeler ceux qui envoient des fichiers.
screenshot
Prend une capture d’écran d’un joueur et l’envoie. screenshot-basic doit être démarré. folder est le dossier de destination, fivedock_folder par défaut ; encoding vaut jpg, png ou webp, jpg par défaut ; et quality va de 0 à 1, 0,85 par défaut.
-- server.lua: /evidence <player id> screenshots that player, for staff only
RegisterCommand('evidence', function(source, args)
local target = tonumber(args[1])
if not target then return end
exports.fivedock:screenshot(target, {
folder = '/evidence',
encoding = 'webp', -- 'jpg' (default), 'png' or 'webp'
quality = 0.85, -- 0 to 1
}, function(err, file)
if err then
print(('screenshot failed: %s'):format(err))
return
end
print(('%s, %d bytes, %s'):format(file.url, file.size, file.mimeType))
end)
end, true)upload
Envoie un fichier depuis le dossier d’une resource. resource est la resource qui appelle l’export, sauf si vous en nommez une autre, path est relatif au dossier de cette resource, name fixe le nom du fichier et folder le dossier où il arrive.
-- a file your resource wrote to resources/my-script/cache/shot.jpg
exports.fivedock:upload({
resource = 'my-script', -- defaults to the resource calling the export
path = 'cache/shot.jpg', -- relative to that resource's folder
name = 'shot.jpg',
folder = '/screenshots',
}, function(err, file)
if not err then print(file.url) end
end)uploadFile
Le même envoi, avec la resource et le chemin comme arguments à part.
exports.fivedock:uploadFile('my-script', 'cache/shot.jpg', {
name = 'shot.jpg',
folder = '/screenshots',
}, function(err, file)
if not err then print(file.id, file.url) end
end)Le callback
Chaque export d’envoi appelle cb(err, file) une seule fois. En cas de succès, err vaut nil et file est une table avec id, url, size et mimeType. En cas d’échec, err est une chaîne qui dit pourquoi, et file vaut nil.
function(err, file)
-- on success: err = nil
-- file = { id = '8Kq2nR4t', url = 'https://cdn.fivedock.dev/f/8Kq2nR4t.jpg',
-- size = 48213, mimeType = 'image/jpeg' }
-- on failure: err = 'screenshot-basic is not started' (or another reason), file = nil
endreport
Dépose un signalement de joueur que le staff de service voit dans le panel. source est le joueur qui signale, message dit ce qui s’est passé, et subjectSource, si vous le passez, est le joueur signalé. Renvoie true, ou false et une raison : empty quand le message fait moins de 3 caractères, too_soon dans les 30 secondes qui suivent le dernier signalement de ce joueur.
-- source reports subjectSource; subjectSource is optional
local ok, reason = exports.fivedock:report(source, 'He rammed my car at Legion Square', 12)
if not ok then
print(('report refused: %s'):format(reason)) -- 'empty' or 'too_soon'
endlog
Écrit un événement dans la Black Box. source est le joueur concerné, ou 0 pour aucun ; event est un nom à points comme money.transfer ; meta est une table de champs facultative, et un amount numérique dedans compte pour les alertes d’économie. L’agent enregistre déjà tout seul les connexions et déconnexions, les morts, le chat, les mouvements d’argent d’ESX et de QBCore, les déplacements d’ox_inventory et les bans, kicks et avertissements de txAdmin : cet export sert à ce que seuls vos scripts savent.
-- source is the player it is about, or 0; meta is optional
exports.fivedock:log(source, 'money.transfer', 'Paid 500 to Bo for the car', {
amount = 500, to = 'license:9a4f…',
})Trouver ce qui fait laguer
Les lignes add_ace permettent à l’agent d’enregistrer le profiler de FXServer, pour fivedock perf et pour les blocages qu’il attrape de lui-même. Trouver ce qui fait laguer montre comment lire ce qu’il trouve.
Réglages
| Convar | Par défaut | À quoi ça sert |
|---|---|---|
| fivedock_key | Par défaut · - | Obligatoire. La clé d’agent, fda_live_…, créée dans le panneau, une par serveur. Sans elle, l’agent ne démarre pas, et l’API d’envoi ne l’accepte pas. |
| fivedock_gateway | Par défaut · le nôtre | Où l’agent se connecte. wss:// uniquement, sauf en local. |
| fivedock_folder | Par défaut · / | Dossier par défaut des envois. |
| fivedock_upload_allow | Par défaut · toutes | Quelles resources peuvent appeler les exports d’envoi. Vide signifie toutes. |
| fivedock_log | Par défaut · info | info ou debug. debug n’affiche jamais d’identifiant. |