Aller au contenu
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.

shell
curl -fLO https://dl.fivedock.dev/agent/latest/fivedock.zip
unzip fivedock.zip -d resources/[fivedock]
server.cfg
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.

Lua
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)
HTTP
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.

Lua
-- 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.

Lua
-- 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.

Lua
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.

Lua
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
end

report

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.

Lua
-- 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'
end

log

É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.

Lua
-- 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

ConvarPar défautÀ quoi ça sert
fivedock_keyPar 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_gatewayPar défaut · le nôtreOù l’agent se connecte. wss:// uniquement, sauf en local.
fivedock_folderPar défaut · /Dossier par défaut des envois.
fivedock_upload_allowPar défaut · toutesQuelles resources peuvent appeler les exports d’envoi. Vide signifie toutes.
fivedock_logPar défaut · infoinfo ou debug. debug n’affiche jamais d’identifiant.