fn_phone: Fotos und Videos auf FiveDock hochladen
Schick Fotos, Videos und Sprachnachrichten von fn_phone an FiveDock statt in die Datenbank: eine Config-Zeile, dazu der fivedock-Agent oder ein API-Token.
Von Termi
- fn_phone
- Uploads
- Lua
Auf dieser Seite
- Wo fn_phone Medien speichert
- Upload über den fivedock-Agent
- Upload mit API-Token
- Im Spiel ändern
- Prüfen, ob es läuft
- Was fn_phone hochlädt
- Fotos, die noch bei Fivemanage liegen
- Wenn Uploads fehlschlagen
- Häufige Fragen
- Funktioniert fn_phone mit FiveDock?
- Brauche ich für fn_phone ein API-Token?
- Kann fn_phone noch zu Fivemanage hochladen?
- Können Spieler FiveDock-Links als Klingelton nutzen?
- Ist Config.Fivedock dieselbe Einstellung?
fn_phone ist unser eigenes Handy-Resource für FiveM. Standardmäßig landet jedes Foto, Video und jede Sprachnachricht in deiner Datenbank. Mit einer Zeile in der Config gehen sie stattdessen zu FiveDock, und in der Datenbank bleibt nur der Link. Der Upload läuft serverseitig über fn_bridge. Du änderst also keine fn_phone-Dateien, und kein Token erreicht je einen Spieler.
Wo fn_phone Medien speichert
Jede Datei, die das Handy aufnimmt, ist eine Zeile in fn_phone_media. Bei Config.Media.provider = 'local', dem Standard, steht in der Spalte url die ganze Datei als Data-URI, bis zu 3 MiB pro Foto und 12 MiB pro Video. Der Server weist bei jedem Start darauf hin:
[fn_phone] photos are stored in the database (Config.Media.provider = local); use fivedock for a CDNMit provider = 'fivedock' übergibt der Server jede Datei an FN_BRIDGE.MEDIA.Upload in fn_bridge, das sie hochlädt und den CDN-Link zurückgibt. fn_bridge erreicht FiveDock auf zwei Wegen. Ist ein Token gesetzt, schickt es die Datei an https://api.fivedock.dev/api/v3/file/base64, dieselbe base64-Adresse, die auch die v3-API von Fivemanage hat. Ohne Token und mit gestarteter fivedock-Agent-Resource schreibt es die Datei in seinen Ordner cache, gibt sie an exports.fivedock:upload weiter und löscht sie danach.
Spieler bekommen nie einen Upload-Link. Ein am Handy aufgenommenes Video geht zuerst als Latent Event an den Server, und der Server lädt es wie ein Foto hoch.
Upload über den fivedock-Agent
Läuft der fivedock-Agent schon auf deinem Server, musst du kein Token anlegen. Der Agent meldet sich mit dem fda_live_-Key aus der server.cfg an, und fn_bridge schickt Uploads darüber, solange kein Token gesetzt ist. Der Agent braucht zwei Zeilen in der server.cfg, wie die Agent-Anleitung sie beschreibt. Setz sie über ensure fn_phone:
set fivedock_key "fda_live_…"
ensure fivedockDann stellst du den Provider in fn_phone/config.lua um und lässt token leer:
Media = { provider = 'fivedock', token = '', encoding = 'webp', quality = 0.85, limit = 2000 },Starte fn_phone neu. Die Uploads landen im Ordner fn_phone deiner Organisation.
Upload mit API-Token
Ohne Agent braucht fn_bridge ein API-Token. Öffne im FiveDock-Panel Tokens, erstelle ein Token mit dem Scope files:write und binde es an deinen Server. Es beginnt mit fd_live_. Der fda_live_-Key des Agents ist es nicht, den akzeptiert die Upload-API nicht.
fn_phone liest das Token zuerst aus Config.Media.token. Ist das Feld leer, greift fn_bridge auf eine Convar in der server.cfg zurück, die jedes Script auf fn_bridge nutzen kann:
set fn_bridge:upload_token "fd_live_…"Nimm hier set. setr repliziert die Convar ins Spiel jedes Spielers. Auch die config.lua ist sicher, weil fn_phone sie nur als Server-Script lädt. Stell provider = 'fivedock' ein wie im Abschnitt zum Agent. Sind Token und Agent beide da, nimmt fn_bridge das Token.
Für jede Datei schickt fn_bridge diese Anfrage:
POST https://api.fivedock.dev/api/v3/file/base64
Authorization: fd_live_…
Content-Type: application/json
{"base64":"UklGR…","filename":"fn_phone_1792756800_482913.webp","path":"fn_phone"}Der Dateiname besteht aus fn_phone_, der Upload-Zeit in Unix-Sekunden und einer Zufallszahl. FiveDock antwortet mit dem CDN-Link in data.url, und von dort liest fn_bridge ihn aus.
Im Spiel ändern
Unter Admin → Serverkonfiguration stehen beide Einstellungen im Schritt Uploads und Web: Speicher ist Media.provider und fivedock-Token ist Media.token. Das Panel zeigt ein gespeichertes Token nie an, nur ob eins gesetzt ist. Gespeicherte Werte landen im KVP-Speicher des Servers und überlagern nach einem fn_phone-Neustart die config.lua. Ein im Spiel gespeicherter Speicher-Wert schlägt also die Datei.
Prüfen, ob es läuft
Nach dem Neustart gibt die Konsole die Zeile über Fotos in der Datenbank nicht mehr aus. Mach ein Foto mit der Kamera und öffne Dateien im FiveDock-Panel: Es liegt im Ordner fn_phone, unter einem Namen wie fn_phone_1792756800_482913.webp. In der Datenbank sollten die neuesten Zeilen FiveDock-Links enthalten:
SELECT id, kind, LEFT(url, 40) AS url
FROM fn_phone_media
ORDER BY id DESC
LIMIT 10;Eine url, die mit https://cdn.fivedock.dev/ beginnt, liegt bei FiveDock. Beginnt sie mit data:, liegt die Datei in der Datenbank: Der Upload ist fehlgeschlagen, und fn_phone hat sie dort gespeichert. Willst du stattdessen einen Fehler am Handy sehen, trag fallback = false in Config.Media ein. Ein Foto oder Video, dessen Upload scheitert, wird dann gar nicht gespeichert. Sprachnachrichten fallen immer auf die Datenbank zurück.
Was fn_phone hochlädt
FiveDock nimmt all das an. Eine Ausnahme auf Seiten des Handys sind Bildschirmaufnahmen: fn_phone speichert sie in einem eigenen Format in der Datenbank, egal welcher Provider eingestellt ist.
Sprachnachrichten erscheinen als Video
Sprachnachrichten sind WebM-Dateien, derselbe Container wie bei den Videos von fn_phone. FiveDock erkennt den Dateityp an den Bytes, deshalb listet das Panel Sprachnachrichten unter Video.
Fotos, die noch bei Fivemanage liegen
fn_phone hat die Fivemanage-Option mit Version 1.1.11 entfernt. Steht in deiner config.lua noch provider = 'fivemanage', ändere es wie oben auf 'fivedock'. Fotos von vor der Umstellung behalten ihre Fivemanage-Links, genauso Fotos, die fn_phone_migrate aus lb-phone oder einem anderen Handy übernommen hat, denn der Import kopiert jeden Link unverändert. Sie laden, solange die Dateien bei Fivemanage liegen. Seit 1.1.11 funktionieren r2.fivemanage.com-Links nicht mehr als eigene Klingeltöne.
Die Links stehen in der Spalte url von fn_phone_media, und Nachrichten, Anzeigen und Stories verweisen über ihren 16-stelligen Schlüssel auf diese Zeilen. Die Migration kopiert deine Fivemanage-Dateien mit einem schreibgeschützten Key und liefert dir eine Liste alter Link → neuer Link. Jede Zeile dieser Liste wird zu einem Statement:
UPDATE fn_phone_media
SET url = 'https://cdn.fivedock.dev/f/8Kq2nR4t.webp'
WHERE url = 'https://r2.fivemanage.com/…/IMG_0412.webp';Bei Fivemanage wird nichts geändert oder gelöscht, du kannst die Statements also ausführen, wann du bereit bist.
Wenn Uploads fehlschlagen
Häufige Fragen
Funktioniert fn_phone mit FiveDock?
Ja, ohne Änderungen an seinen Dateien. Setz Config.Media.provider = 'fivedock' und starte entweder den fivedock-Agent oder gib fn_phone ein fd_live_-Token mit dem Scope files:write, in Config.Media.token oder in der Convar fn_bridge:upload_token. fn_bridge lädt jedes Foto, Video und jede Sprachnachricht vom Server hoch und speichert den CDN-Link.
Brauche ich für fn_phone ein API-Token?
Nicht, wenn der fivedock-Agent auf dem Server läuft. Ohne gesetztes Token gibt fn_bridge jeden Upload an den Agent weiter, der sich mit seinem eigenen fda_live_-Key anmeldet. Ein fd_live_-Token brauchst du nur auf einem Server ohne Agent.
Kann fn_phone noch zu Fivemanage hochladen?
Nein. Version 1.1.11 hat die Fivemanage-Option entfernt, und Config.Media.provider nimmt jetzt local oder fivedock. Alte Fivemanage-Links in fn_phone_media laden weiter, solange die Dateien existieren, und die Migration von FiveDock kopiert die Dateien und listet die neuen Links auf.
Können Spieler FiveDock-Links als Klingelton nutzen?
Ja. fivedock.dev ist der erste Host in Config.Ringtones.hosts, Subdomains zählen mit, ein Link auf cdn.fivedock.dev geht also durch. Der Link muss auf eine Audio-Endung wie .mp3 oder .ogg enden. Lade die Datei unter Dateien hoch und füge ihren Link am Handy unter Einstellungen → Töne & Haptik → Klingelton ein.
Ist Config.Fivedock dieselbe Einstellung?
Nein. Config.Fivedock schickt Black-Box-Events, die Logs des Handys, an dein FiveDock-Panel. Fotos, Videos und Sprachnachrichten richten sich nur nach Config.Media. Läuft der Agent, funktionieren beide ohne Token.