Na tej stronie
Dokumentacja / Na start
Instalacja agenta
Agent to pojedynczy zasób FiveM. Sam łączy się z FiveDock szyfrowanym połączeniem WebSocket i robi to, o co prosi panel, o ile dana komenda jest na liście tych, które przyjmuje.
Nic nie nasłuchuje na Twojej maszynie. Nie ma portu do przekierowania, a hasło do bazy zostaje tam, gdzie jest.
Dodaj zasób
Pobierz paczkę z wydaniem, wrzuć ją do resources/[fivedock] i uruchom przed frameworkiem. Komenda fivedock_check w konsoli wypisuje, z czego agent korzysta.
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_… to klucz agenta. Tworzysz go w panelu dla jednego serwera i wpisujesz tylko w server.cfg. To nie jest token API: wszystko, co woła API wysyłania przez HTTP, używa zamiast niego tokenu fd_live_… ze strony Tokeny.
Wyślij coś
Są dwa sposoby wgrywania i oba zapisują ten sam plik: bez duplikatów i policzony raz.
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"Eksporty idą przez agenta i jego klucz, więc Twój skrypt nie trzyma żadnego sekretu. Droga przez HTTP to API wysyłania, które przyjmuje token API (fd_live_…), a nigdy klucz agenta.
Eksporty serwerowe
Zasób fivedock daje Twoim skryptom serwerowym pięć eksportów. Wywołuj je z Lua po stronie serwera: idą przez połączenie samego agenta, więc skrypt nie potrzebuje żadnego tokenu. fivedock_upload_allow decyduje, które zasoby mogą wywoływać te do wysyłania.
screenshot
Robi zrzut ekranu gracza i go wysyła. screenshot-basic musi być uruchomiony. folder to miejsce docelowe, domyślnie fivedock_folder; encoding to jpg, png albo webp, domyślnie jpg; a quality przyjmuje wartości od 0 do 1, domyślnie 0,85.
-- 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
Wysyła plik z folderu zasobu. resource to zasób, który wywołuje eksport, chyba że podasz inny; path to ścieżka względem folderu tego zasobu, name ustawia nazwę pliku, a folder folder, do którego plik trafi.
-- 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
To samo wysyłanie, tylko zasób i ścieżka są osobnymi argumentami.
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)Callback
Każdy eksport do wysyłania wywołuje cb(err, file) dokładnie raz. Gdy się uda, err to nil, a file to tabela z polami id, url, size i mimeType. Gdy się nie uda, err to tekst z powodem, a file to 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
Zgłasza gracza, a zgłoszenie widzi w panelu administracja na dyżurze. source to gracz, który zgłasza, message opisuje, co się stało, a subjectSource, jeśli go podasz, to zgłaszany gracz. Zwraca true albo false i powód: empty, gdy wiadomość ma mniej niż 3 znaki, albo too_soon, gdy od poprzedniego zgłoszenia tego gracza minęło mniej niż 30 sekund.
-- 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
Zapisuje event w Black Boksie. source to gracz, którego dotyczy, albo 0, gdy nikogo; event to nazwa z kropkami, np. money.transfer; meta to opcjonalna tabela pól, a liczbowe amount w niej liczy się do alertów ekonomii. Wejścia i wyjścia, śmierci, chat, zmiany pieniędzy w ESX i QBCore, ruchy w ox_inventory oraz bany, kicki i ostrzeżenia z txAdmina agent zapisuje już sam, więc ten eksport jest na to, co wiedzą tylko Twoje skrypty.
-- 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…',
})Znajdź, co laguje
Linijki add_ace pozwalają agentowi nagrywać profiler FXServera, dla fivedock perf i dla przycięć, które łapie sam. Znajdź, co laguje pokazuje, jak czytać to, co znajdzie.
Ustawienia
| Convar | Domyślnie | Co robi |
|---|---|---|
| fivedock_key | Domyślnie · - | Wymagany. Klucz agenta, fda_live_…, tworzysz w panelu, jeden na serwer. Bez niego agent się nie uruchomi, a API wysyłania go nie przyjmuje. |
| fivedock_gateway | Domyślnie · nasz | Adres, z którym łączy się agent. Tylko wss://, z wyjątkiem localhosta. |
| fivedock_folder | Domyślnie · / | Domyślny folder dla wysyłanych plików. |
| fivedock_upload_allow | Domyślnie · wszystkie | Które zasoby mogą wywoływać eksporty wysyłania. Puste pole oznacza wszystkie. |
| fivedock_log | Domyślnie · info | info albo debug. Tryb debug nigdy nie wypisuje poświadczeń. |