[{"data":1,"prerenderedAt":3301},["ShallowReactive",2],{"navigation":3,"page-\u002Fde\u002Fgetting-started\u002Fconfiguration\u002Fdbsync":200,"\u002Fde\u002Fgetting-started\u002Fconfiguration\u002Fdbsync-surround":3296},[4,117,181,194],{"title":5,"path":6,"stem":7,"children":8},"Erste Schritte","\u002Fde\u002Fgetting-started","de\u002F1.getting-started\u002F1.index",[9,10,14,18,22,26,30,56,69,85,107],{"title":5,"path":6,"stem":7},{"title":11,"path":12,"stem":13},"Funktionen","\u002Fde\u002Fgetting-started\u002Ffeatures","de\u002F1.getting-started\u002F1.features",{"title":15,"path":16,"stem":17},"Demo","\u002Fde\u002Fgetting-started\u002Fdemo","de\u002F1.getting-started\u002F2.demo",{"title":19,"path":20,"stem":21},"Anforderungen","\u002Fde\u002Fgetting-started\u002Frequirements","de\u002F1.getting-started\u002F2.requirements",{"title":23,"path":24,"stem":25},"Komponenten","\u002Fde\u002Fgetting-started\u002Fcomponents","de\u002F1.getting-started\u002F3.components",{"title":27,"path":28,"stem":29},"Versionierung","\u002Fde\u002Fgetting-started\u002Fversioning","de\u002F1.getting-started\u002F3.versioning",{"title":31,"path":32,"stem":33,"children":34,"page":55},"Installation","\u002Fde\u002Fgetting-started\u002Finstallation","de\u002F1.getting-started\u002F4.installation",[35,39,43,47,51],{"title":36,"path":37,"stem":38},"Installationsmethoden","\u002Fde\u002Fgetting-started\u002Finstallation\u002Fmethods","de\u002F1.getting-started\u002F4.installation\u002F1.methods",{"title":40,"path":41,"stem":42},"Cloud","\u002Fde\u002Fgetting-started\u002Finstallation\u002Fcloud","de\u002F1.getting-started\u002F4.installation\u002F2.cloud",{"title":44,"path":45,"stem":46},"Verwendung von Docker","\u002Fde\u002Fgetting-started\u002Finstallation\u002Fcontainer-docker","de\u002F1.getting-started\u002F4.installation\u002F3.container-docker",{"title":48,"path":49,"stem":50},"Kubernetes: Verwendung von Helm","\u002Fde\u002Fgetting-started\u002Finstallation\u002Fkubernetes-helm","de\u002F1.getting-started\u002F4.installation\u002F4.kubernetes-helm",{"title":52,"path":53,"stem":54},"Ersteinrichtung abschließen","\u002Fde\u002Fgetting-started\u002Finstallation\u002Fpost-install-steps","de\u002F1.getting-started\u002F4.installation\u002F6.post-install-steps",false,{"title":57,"path":58,"stem":59,"children":60,"page":55},"Konfiguration","\u002Fde\u002Fgetting-started\u002Fconfiguration","de\u002F1.getting-started\u002F5.configuration",[61,65],{"title":62,"path":63,"stem":64},"FiveNet konfigurieren","\u002Fde\u002Fgetting-started\u002Fconfiguration\u002Fconfigure","de\u002F1.getting-started\u002F5.configuration\u002F2.configure",{"title":66,"path":67,"stem":68},"DBSync: Installieren und konfigurieren","\u002Fde\u002Fgetting-started\u002Fconfiguration\u002Fdbsync","de\u002F1.getting-started\u002F5.configuration\u002F3.dbsync",{"title":70,"path":71,"stem":72,"children":73,"page":55},"Gameserver","\u002Fde\u002Fgetting-started\u002Fgameserver","de\u002F1.getting-started\u002F6.gameserver",[74],{"title":75,"path":76,"stem":77,"children":78,"page":55},"FiveM Plugin","\u002Fde\u002Fgetting-started\u002Fgameserver\u002Ffivem-plugin","de\u002F1.getting-started\u002F6.gameserver\u002F1.fivem-plugin",[79,82],{"title":31,"path":80,"stem":81},"\u002Fde\u002Fgetting-started\u002Fgameserver\u002Ffivem-plugin\u002Finstallation","de\u002F1.getting-started\u002F6.gameserver\u002F1.fivem-plugin\u002F1.installation",{"title":57,"path":83,"stem":84},"\u002Fde\u002Fgetting-started\u002Fgameserver\u002Ffivem-plugin\u002Fconfiguration","de\u002F1.getting-started\u002F6.gameserver\u002F1.fivem-plugin\u002F2.configuration",{"title":86,"path":87,"stem":88,"children":89},"Referenz","\u002Fde\u002Fgetting-started\u002Freference","de\u002F1.getting-started\u002F7.reference\u002Findex",[90,91,95,99,103],{"title":86,"path":87,"stem":88},{"title":92,"path":93,"stem":94},"Erweiterte Konfiguration","\u002Fde\u002Fgetting-started\u002Freference\u002Fadvanced","de\u002F1.getting-started\u002F7.reference\u002Fadvanced",{"title":96,"path":97,"stem":98},"Konfigurationsdatei-Referenz","\u002Fde\u002Fgetting-started\u002Freference\u002Fconfig-reference","de\u002F1.getting-started\u002F7.reference\u002Fconfig-reference",{"title":100,"path":101,"stem":102},"Datenbankeinrichtung","\u002Fde\u002Fgetting-started\u002Freference\u002Fdatabase-setup","de\u002F1.getting-started\u002F7.reference\u002Fdatabase-setup",{"title":104,"path":105,"stem":106},"Befehls-Flags","\u002Fde\u002Fgetting-started\u002Freference\u002Fflags","de\u002F1.getting-started\u002F7.reference\u002Fflags",{"title":108,"path":109,"stem":110,"children":111},"Fehlerbehebung","\u002Fde\u002Fgetting-started\u002Ftroubleshooting","de\u002F1.getting-started\u002F8.troubleshooting\u002Findex",[112,113],{"title":108,"path":109,"stem":110},{"title":114,"path":115,"stem":116},"Datenbank- und Installationsfehlerbehebung","\u002Fde\u002Fgetting-started\u002Ftroubleshooting\u002Finstallation-issues","de\u002F1.getting-started\u002F8.troubleshooting\u002Finstallation-issues",{"title":118,"path":119,"stem":120,"children":121},"Benutzerhandbücher","\u002Fde\u002Fuser-guides","de\u002F3.user-guides\u002F0.index",[122,123,127,131,135,145,149,153,157,161,165,169,173,177],{"title":118,"path":119,"stem":120},{"title":124,"path":125,"stem":126},"Systemanforderungen","\u002Fde\u002Fuser-guides\u002Fsystem-requirements","de\u002F3.user-guides\u002F0.system-requirements",{"title":128,"path":129,"stem":130},"Bürger","\u002Fde\u002Fuser-guides\u002Fcitizens","de\u002F3.user-guides\u002F1.citizens",{"title":132,"path":133,"stem":134},"Fahrzeuge","\u002Fde\u002Fuser-guides\u002Fvehicles","de\u002F3.user-guides\u002F2.vehicles",{"title":136,"path":137,"stem":138,"children":139},"Dokumente","\u002Fde\u002Fuser-guides\u002Fdocuments","de\u002F3.user-guides\u002F3.documents\u002Findex",[140,141],{"title":136,"path":137,"stem":138},{"title":142,"path":143,"stem":144},"Vorlagen","\u002Fde\u002Fuser-guides\u002Fdocuments\u002Ftemplates","de\u002F3.user-guides\u002F3.documents\u002Ftemplates",{"title":146,"path":147,"stem":148},"Jobs","\u002Fde\u002Fuser-guides\u002Fjobs","de\u002F3.user-guides\u002F3.jobs",{"title":150,"path":151,"stem":152},"Kalender","\u002Fde\u002Fuser-guides\u002Fcalendar","de\u002F3.user-guides\u002F4.calendar",{"title":154,"path":155,"stem":156},"Livemap","\u002Fde\u002Fuser-guides\u002Flivemap","de\u002F3.user-guides\u002F5.livemap",{"title":158,"path":159,"stem":160},"Einsatzzentrale","\u002Fde\u002Fuser-guides\u002Fcentrum","de\u002F3.user-guides\u002F6.centrum",{"title":162,"path":163,"stem":164},"Mailer","\u002Fde\u002Fuser-guides\u002Fmailer","de\u002F3.user-guides\u002F6.mailer",{"title":166,"path":167,"stem":168},"Einstellungen","\u002Fde\u002Fuser-guides\u002Fsettings","de\u002F3.user-guides\u002F7.settings",{"title":170,"path":171,"stem":172},"Sprachen (i18n)","\u002Fde\u002Fuser-guides\u002Fi18n","de\u002F3.user-guides\u002F8.i18n",{"title":174,"path":175,"stem":176},"iOS-App","\u002Fde\u002Fuser-guides\u002Fios-app","de\u002F3.user-guides\u002F9.ios-app",{"title":178,"path":179,"stem":180},"StreamDeck Plugin","\u002Fde\u002Fuser-guides\u002Fplugin-streamdeck","de\u002F3.user-guides\u002F9.plugin-streamdeck",{"title":182,"path":183,"stem":184,"children":185},"Entwicklung","\u002Fde\u002Fdevelopment","de\u002F8.development\u002F1.index",[186,187,191],{"title":182,"path":183,"stem":184},{"title":188,"path":189,"stem":190},"User Activity","\u002Fde\u002Fdevelopment\u002Fuser-activity","de\u002F8.development\u002F5.user-activity",{"title":170,"path":192,"stem":193},"\u002Fde\u002Fdevelopment\u002Fi18n","de\u002F8.development\u002Fi18n",{"title":195,"path":196,"stem":197,"children":198},"Design","\u002Fde\u002Fdesign","de\u002F9.design\u002F1.index",[199],{"title":195,"path":196,"stem":197},{"id":201,"title":66,"body":202,"description":208,"extension":3291,"links":3292,"meta":3293,"navigation":1072,"path":67,"redirect":3292,"seo":3294,"stem":68,"__hash__":3295},"content_de\u002Fde\u002F1.getting-started\u002F5.configuration\u002F3.dbsync.md",{"type":203,"value":204,"toc":3262},"minimark",[205,209,216,221,224,227,230,234,242,273,278,286,290,322,326,404,407,428,431,882,899,902,905,918,924,954,957,962,965,975,1029,1032,1036,1039,1150,1154,1157,1184,1187,1193,1197,1204,1286,1290,1296,1336,1340,1347,1353,1361,1364,1368,1371,1463,1467,1485,1512,1525,1532,1536,1542,1554,1573,1576,1580,1592,2235,2239,2243,2950,2953,2958,2961,3026,3033,3059,3063,3070,3073,3076,3079,3090,3099,3104,3258],[206,207,208],"p",{},"Verwenden Sie diese Anleitung, wenn FiveNet Charaktere, Fahrzeuge und andere Daten aus Ihrer Gameserver-Datenbank übernehmen soll, ohne dass der FiveNet-Server direkten Datenbankzugriff benötigt.",[206,210,211,212,215],{},"Schließen Sie zuerst ",[213,214,62],"a",{"href":63}," ab, damit Datenbank, NATS-Verbindung, öffentliche URL und Sync-API-Token eingerichtet sind.",[217,218,220],"h2",{"id":219},"warum-dbsync-erforderlich-ist","Warum DBSync erforderlich ist",[206,222,223],{},"DBSync ist die Komponente, die Charaktere, Fahrzeuge und andere Gameserver-Daten aus Ihrer Gameserver-Datenbank nach FiveNet überträgt.",[206,225,226],{},"Ohne DBSync kann FiveNet seine eigenen Daten nicht mit den von Ihrem Gameserver erzeugten Daten synchron halten.",[206,228,229],{},"Dies ist die Standardkonfiguration für FiveNet, einschließlich FiveNet-Cloud-Bereitstellungen.",[217,231,233],{"id":232},"voraussetzungen","Voraussetzungen",[206,235,236,237,241],{},"FiveNets DBSync (",[238,239,240],"code",{},"fivenet"," CLI) ist verfügbar für:",[243,244,245,257],"ul",{},[246,247,248,249],"li",{},"Windows\n",[243,250,251],{},[246,252,253,256],{},[238,254,255],{},"amd64"," - Typische Windows-Server laufen auf dieser Architektur.",[246,258,259,260],{},"Linux\n",[243,261,262,267],{},[246,263,264,266],{},[238,265,255],{}," - Typische Linux-Server laufen auf dieser Architektur.",[246,268,269,272],{},[238,270,271],{},"arm64"," - Die neuere 64-Bit-ARM-Architektur, die häufig in Raspberry Pi 4 und anderen ARM-basierten Servern zu finden ist.",[274,275,277],"h3",{"id":276},"datenbank","Datenbank",[206,279,280,281,285],{},"DBSync unterstützt derzeit nur ",[282,283,284],"strong",{},"MySQL-kompatible Datenbanken",".\nWenn Ihr Gameserver ein anderes Datenbanksystem wie MongoDB verwendet, kann DBSync aktuell nicht genutzt werden.",[217,287,289],{"id":288},"schneller-einrichtungsablauf","Schneller Einrichtungsablauf",[291,292,293,299,306,312,319],"ol",{},[246,294,295,296,298],{},"Installieren Sie die ",[238,297,240],{},"-Binary.",[246,300,301,302,305],{},"Erstellen und bearbeiten Sie ",[238,303,304],{},"dbsync.yaml",".",[246,307,308,309,305],{},"Aktivieren Sie die FiveNet-Sync-API und konfigurieren Sie mindestens ein Sync-Token in Ihrer zentralen ",[238,310,311],{},"config.yaml",[246,313,314,315,318],{},"Testen Sie ",[238,316,317],{},"fivenet dbsync"," manuell.",[246,320,321],{},"Sobald die Synchronisierung zuverlässig funktioniert, richten Sie DBSync als Dienst ein.",[217,323,325],{"id":324},"architektur","Architektur",[327,328,329],"mermaid",{},[330,331,335],"pre",{"className":332,"code":333,"language":327,"meta":334,"style":334},"language-mermaid shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","---\nconfig:\n  theme: dark\n  layout: elk\n---\nflowchart TD\n    FiveM[\"FiveM-Server\"] -->|1. Daten schreiben| GameserverDB(\"MySQL FiveM\")\n    GameserverDB \u003C-.->|2. Daten lesen| DBSync[\"FiveNet DBSync\"]\n    DBSync[\"FiveNet DBSync\"] \u003C-..->|3. Daten streamen| FiveNetServer\n    DBSync[\"FiveNet DBSync\"] --->|3. Daten senden| FiveNetServer\n    FiveNetServer -.-|4. Daten umschreiben und speichern| FiveNetDB(\"MySQL FiveNet\")\n","",[238,336,337,345,351,357,363,368,374,380,386,392,398],{"__ignoreMap":334},[338,339,342],"span",{"class":340,"line":341},"line",1,[338,343,344],{},"---\n",[338,346,348],{"class":340,"line":347},2,[338,349,350],{},"config:\n",[338,352,354],{"class":340,"line":353},3,[338,355,356],{},"  theme: dark\n",[338,358,360],{"class":340,"line":359},4,[338,361,362],{},"  layout: elk\n",[338,364,366],{"class":340,"line":365},5,[338,367,344],{},[338,369,371],{"class":340,"line":370},6,[338,372,373],{},"flowchart TD\n",[338,375,377],{"class":340,"line":376},7,[338,378,379],{},"    FiveM[\"FiveM-Server\"] -->|1. Daten schreiben| GameserverDB(\"MySQL FiveM\")\n",[338,381,383],{"class":340,"line":382},8,[338,384,385],{},"    GameserverDB \u003C-.->|2. Daten lesen| DBSync[\"FiveNet DBSync\"]\n",[338,387,389],{"class":340,"line":388},9,[338,390,391],{},"    DBSync[\"FiveNet DBSync\"] \u003C-..->|3. Daten streamen| FiveNetServer\n",[338,393,395],{"class":340,"line":394},10,[338,396,397],{},"    DBSync[\"FiveNet DBSync\"] --->|3. Daten senden| FiveNetServer\n",[338,399,401],{"class":340,"line":400},11,[338,402,403],{},"    FiveNetServer -.-|4. Daten umschreiben und speichern| FiveNetDB(\"MySQL FiveNet\")\n",[217,405,31],{"id":406},"installation",[408,409,412,421],"callout",{"color":410,"icon":411},"info","i-mdi-info-slab-circle",[206,413,414,415,417,418,305],{},"Diese Anleitung setzt voraus, dass Sie FiveNet bereits installiert haben und eine funktionierende ",[238,416,311],{}," für den zentralen FiveNet-Server besitzen.\nFalls das noch nicht der Fall ist, folgen Sie bitte zuerst der ",[213,419,420],{"href":37},"Installationsanleitung",[206,422,423,424,427],{},"Wenn Sie Docker für Ihre FiveNet-Bereitstellung verwenden, können Sie DBSync auch in einem Container ausführen. Siehe dazu den Beispiel-DBSync-Dienst in ",[238,425,426],{},"docker-compose.yaml"," und fahren Sie mit dem Konfigurationsabschnitt unten fort.",[206,429,430],{},"Um DBSync zu installieren, führen Sie die folgenden Schritte aus:",[291,432,433,527,636,768,825,867,876],{},[246,434,435,436,438,439,445,446],{},"Laden Sie die neueste Version der ",[238,437,240],{},"-Binary oder -Exe aus ",[213,440,444],{"href":441,"rel":442},"https:\u002F\u002Fgithub.com\u002Ffivenet-app\u002Ffivenet\u002Freleases",[443],"nofollow","dem offiziellen FiveNet-Repository"," herunter und entpacken Sie sie.\nVerwenden Sie die Befehle für Ihre Plattform oder laden Sie das passende Archiv manuell von der Release-Seite herunter:",[447,448,449,481],"code-group",{},[330,450,455],{"className":451,"code":452,"filename":453,"language":454,"meta":334,"style":334},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","curl -LO https:\u002F\u002Fgithub.com\u002Ffivenet-app\u002Ffivenet\u002Freleases\u002Flatest\u002Fdownload\u002Ffivenet-linux-amd64.tar.gz\ntar -xzf fivenet-linux-amd64.tar.gz\n","Linux amd64","bash",[238,456,457,470],{"__ignoreMap":334},[338,458,459,463,467],{"class":340,"line":341},[338,460,462],{"class":461},"sBMFI","curl",[338,464,466],{"class":465},"sfazB"," -LO",[338,468,469],{"class":465}," https:\u002F\u002Fgithub.com\u002Ffivenet-app\u002Ffivenet\u002Freleases\u002Flatest\u002Fdownload\u002Ffivenet-linux-amd64.tar.gz\n",[338,471,472,475,478],{"class":340,"line":347},[338,473,474],{"class":461},"tar",[338,476,477],{"class":465}," -xzf",[338,479,480],{"class":465}," fivenet-linux-amd64.tar.gz\n",[330,482,487],{"className":483,"code":484,"filename":485,"language":486,"meta":334,"style":334},"language-powershell shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Laden Sie das Windows-amd64-Archiv von der Release-Seite herunter und entpacken Sie es.\n# Das entpackte Verzeichnis sollte fivenet.exe enthalten.\nExpand-Archive .\\fivenet-windows-amd64.zip -DestinationPath .\\fivenet\n","Windows amd64","powershell",[238,488,489,495,500],{"__ignoreMap":334},[338,490,491],{"class":340,"line":341},[338,492,494],{"class":493},"sHwdD","# Laden Sie das Windows-amd64-Archiv von der Release-Seite herunter und entpacken Sie es.\n",[338,496,497],{"class":340,"line":347},[338,498,499],{"class":493},"# Das entpackte Verzeichnis sollte fivenet.exe enthalten.\n",[338,501,502,506,510,514,517,519,522,524],{"class":340,"line":353},[338,503,505],{"class":504},"s2Zo4","Expand-Archive",[338,507,509],{"class":508},"sTEyZ"," .\\fivenet",[338,511,513],{"class":512},"sMK4o","-",[338,515,516],{"class":508},"windows",[338,518,513],{"class":512},[338,520,521],{"class":508},"amd64.zip ",[338,523,513],{"class":512},[338,525,526],{"class":508},"DestinationPath .\\fivenet\n",[246,528,529,530],{},"Erstellen Sie ein eigenes Verzeichnis für die DBSync-Binary bzw. -Exe und die Konfigurationsdateien.",[447,531,532,577],{},[330,533,536],{"className":451,"code":534,"filename":535,"language":454,"meta":334,"style":334},"mkdir -p \u002Fopt\u002Ffivenet\u002Fdbsync\nmv fivenet config.example.yaml dbsync.example.yaml \u002Fopt\u002Ffivenet\u002Fdbsync\u002F\nchmod +x \u002Fopt\u002Ffivenet\u002Fdbsync\u002Ffivenet\n","Linux",[238,537,538,549,566],{"__ignoreMap":334},[338,539,540,543,546],{"class":340,"line":341},[338,541,542],{"class":461},"mkdir",[338,544,545],{"class":465}," -p",[338,547,548],{"class":465}," \u002Fopt\u002Ffivenet\u002Fdbsync\n",[338,550,551,554,557,560,563],{"class":340,"line":347},[338,552,553],{"class":461},"mv",[338,555,556],{"class":465}," fivenet",[338,558,559],{"class":465}," config.example.yaml",[338,561,562],{"class":465}," dbsync.example.yaml",[338,564,565],{"class":465}," \u002Fopt\u002Ffivenet\u002Fdbsync\u002F\n",[338,567,568,571,574],{"class":340,"line":353},[338,569,570],{"class":461},"chmod",[338,572,573],{"class":465}," +x",[338,575,576],{"class":465}," \u002Fopt\u002Ffivenet\u002Fdbsync\u002Ffivenet\n",[330,578,581],{"className":483,"code":579,"filename":580,"language":486,"meta":334,"style":334},"New-Item -ItemType Directory -Force 'C:\\Program Files\\FiveNet\\DBSync'\nMove-Item .\\fivenet\\fivenet.exe, .\\fivenet\\config.example.yaml, .\\fivenet\\dbsync.example.yaml 'C:\\Program Files\\FiveNet\\DBSync'\n","Windows",[238,582,583,608],{"__ignoreMap":334},[338,584,585,588,591,594,596,599,602,605],{"class":340,"line":341},[338,586,587],{"class":504},"New-Item",[338,589,590],{"class":512}," -",[338,592,593],{"class":508},"ItemType Directory ",[338,595,513],{"class":512},[338,597,598],{"class":508},"Force ",[338,600,601],{"class":512},"'",[338,603,604],{"class":465},"C:\\Program Files\\FiveNet\\DBSync",[338,606,607],{"class":512},"'\n",[338,609,610,613,616,619,622,625,627,630,632,634],{"class":340,"line":347},[338,611,612],{"class":504},"Move-Item",[338,614,615],{"class":508}," .\\fivenet\\",[338,617,618],{"class":504},"fivenet.exe",[338,620,621],{"class":512},",",[338,623,624],{"class":508}," .\\fivenet\\config.example.yaml",[338,626,621],{"class":512},[338,628,629],{"class":508}," .\\fivenet\\dbsync.example.yaml ",[338,631,601],{"class":512},[338,633,604],{"class":465},[338,635,607],{"class":512},[246,637,638,639,641,642,645,646],{},"Optional: Fügen Sie die ",[238,640,240],{},"-Binary Ihrem System-",[238,643,644],{},"PATH"," hinzu, damit Sie sie von überall ausführen können.",[447,647,648,679],{},[330,649,651],{"className":451,"code":650,"filename":535,"language":454,"meta":334,"style":334},"echo 'export PATH=\"\u002Fopt\u002Ffivenet\u002Fdbsync:$PATH\"' >> ~\u002F.bashrc\nsource ~\u002F.bashrc\n",[238,652,653,672],{"__ignoreMap":334},[338,654,655,658,661,664,666,669],{"class":340,"line":341},[338,656,657],{"class":504},"echo",[338,659,660],{"class":512}," '",[338,662,663],{"class":465},"export PATH=\"\u002Fopt\u002Ffivenet\u002Fdbsync:$PATH\"",[338,665,601],{"class":512},[338,667,668],{"class":512}," >>",[338,670,671],{"class":465}," ~\u002F.bashrc\n",[338,673,674,677],{"class":340,"line":347},[338,675,676],{"class":504},"source",[338,678,671],{"class":465},[330,680,682],{"className":483,"code":681,"filename":580,"language":486,"meta":334,"style":334},"$dbsyncPath = 'C:\\Program Files\\FiveNet\\DBSync'\n[Environment]::SetEnvironmentVariable('Path', $env:Path + \";$dbsyncPath\", 'User')\n# Starten Sie PowerShell nach der PATH-Aktualisierung neu.\n",[238,683,684,701,763],{"__ignoreMap":334},[338,685,686,689,692,695,697,699],{"class":340,"line":341},[338,687,688],{"class":512},"$",[338,690,691],{"class":508},"dbsyncPath ",[338,693,694],{"class":512},"=",[338,696,660],{"class":512},[338,698,604],{"class":465},[338,700,607],{"class":512},[338,702,703,706,710,713,716,719,721,724,726,728,731,734,737,740,743,745,748,751,753,755,758,760],{"class":340,"line":347},[338,704,705],{"class":512},"[",[338,707,709],{"class":708},"spNyl","Environment",[338,711,712],{"class":512},"]",[338,714,715],{"class":508},"::SetEnvironmentVariable",[338,717,718],{"class":512},"(",[338,720,601],{"class":512},[338,722,723],{"class":465},"Path",[338,725,601],{"class":512},[338,727,621],{"class":512},[338,729,730],{"class":512}," $",[338,732,733],{"class":508},"env:Path ",[338,735,736],{"class":512},"+",[338,738,739],{"class":512}," \"",[338,741,742],{"class":465},";",[338,744,688],{"class":512},[338,746,747],{"class":508},"dbsyncPath",[338,749,750],{"class":512},"\"",[338,752,621],{"class":512},[338,754,660],{"class":512},[338,756,757],{"class":465},"User",[338,759,601],{"class":512},[338,761,762],{"class":512},")\n",[338,764,765],{"class":340,"line":353},[338,766,767],{"class":493},"# Starten Sie PowerShell nach der PATH-Aktualisierung neu.\n",[246,769,770,771,774,775,777,778],{},"Benennen Sie die Datei ",[238,772,773],{},"dbsync.example.yaml"," in ",[238,776,304],{}," um.",[447,779,780,801],{},[330,781,783],{"className":451,"code":782,"filename":535,"language":454,"meta":334,"style":334},"cd \u002Fopt\u002Ffivenet\u002Fdbsync\nmv dbsync.example.yaml dbsync.yaml\n",[238,784,785,792],{"__ignoreMap":334},[338,786,787,790],{"class":340,"line":341},[338,788,789],{"class":504},"cd",[338,791,548],{"class":465},[338,793,794,796,798],{"class":340,"line":347},[338,795,553],{"class":461},[338,797,562],{"class":465},[338,799,800],{"class":465}," dbsync.yaml\n",[330,802,804],{"className":483,"code":803,"filename":580,"language":486,"meta":334,"style":334},"Set-Location 'C:\\Program Files\\FiveNet\\DBSync'\nRename-Item dbsync.example.yaml dbsync.yaml\n",[238,805,806,817],{"__ignoreMap":334},[338,807,808,811,813,815],{"class":340,"line":341},[338,809,810],{"class":504},"Set-Location",[338,812,660],{"class":512},[338,814,604],{"class":465},[338,816,607],{"class":512},[338,818,819,822],{"class":340,"line":347},[338,820,821],{"class":504},"Rename-Item",[338,823,824],{"class":508}," dbsync.example.yaml dbsync.yaml\n",[246,826,827,828,830,831,857],{},"Bearbeiten Sie die Datei ",[238,829,304],{},", um DBSync zu konfigurieren. Sie können dazu jeden Texteditor verwenden, zum Beispiel:",[447,832,833,845],{},[330,834,836],{"className":451,"code":835,"filename":535,"language":454,"meta":334,"style":334},"nano dbsync.yaml\n",[238,837,838],{"__ignoreMap":334},[338,839,840,843],{"class":340,"line":341},[338,841,842],{"class":461},"nano",[338,844,800],{"class":465},[330,846,848],{"className":483,"code":847,"filename":580,"language":486,"meta":334,"style":334},"notepad.exe dbsync.yaml\n",[238,849,850],{"__ignoreMap":334},[338,851,852,855],{"class":340,"line":341},[338,853,854],{"class":504},"notepad.exe",[338,856,800],{"class":508},[243,858,859],{},[246,860,861,862,866],{},"Folgen Sie dem ",[213,863,865],{"href":864},"#konfiguration","Konfigurationsabschnitt"," weiter unten.",[246,868,869,870,872,873,305],{},"Stellen Sie sicher, dass die Sync-API in Ihrer zentralen FiveNet-",[238,871,311],{}," aktiviert ist und mindestens ein Sync-Token konfiguriert wurde. Siehe ",[213,874,96],{"href":875},"\u002Fde\u002Fgetting-started\u002Freference\u002Fconfig-reference#erforderliche-konfigurationsoptionen",[246,877,878,879,881],{},"Sie können DBSync nun mit dem Befehl ",[238,880,317],{}," ausführen.",[408,883,884,887],{"color":410,"icon":411},[206,885,886],{},"Sobald DBSync ohne Fehler läuft, wird empfohlen, den Prozess als Dienst auf Ihrem Server zu betreiben.\nSo startet er automatisch beim Serverstart und kann einfacher verwaltet werden.",[206,888,889,890,894,895,305],{},"Folgen Sie dazu dem Abschnitt ",[213,891,893],{"href":892},"#als-dienst-einrichten","Als Dienst einrichten",". Für Linux finden Sie ein Beispiel im Abschnitt ",[213,896,898],{"href":897},"#als-systemd-unit-oder-dienst-ausf%C3%BChren","Als Systemd-Unit oder Dienst ausführen",[274,900,893],{"id":901},"als-dienst-einrichten",[206,903,904],{},"Um DBSync dauerhaft auszuführen, empfiehlt es sich, ihn als Dienst auf Ihrem Server einzurichten. So kann er automatisch beim Booten starten und leichter verwaltet werden.",[408,906,907],{"color":410,"icon":411},[206,908,909,910,912,913,915,916,298],{},"Dies setzt voraus, dass die ",[238,911,240],{},"-Binary installiert ist und sich entweder in Ihrem System-",[238,914,644],{}," oder in einem eigenen Verzeichnis befindet.\nWenn Sie ein eigenes Verzeichnis verwenden, notieren Sie sich den vollständigen Pfad zur ",[238,917,240],{},[206,919,920,921,923],{},"Öffnen Sie ein Terminal oder eine Eingabeaufforderung und navigieren Sie in das Verzeichnis, das die ",[238,922,240],{},"-Binary enthält:",[447,925,926,938],{},[330,927,929],{"className":451,"code":928,"filename":535,"language":454,"meta":334,"style":334},"cd \u002Fpfad\u002Fzu\u002Ffivenet\u002Fverzeichnis\n",[238,930,931],{"__ignoreMap":334},[338,932,933,935],{"class":340,"line":341},[338,934,789],{"class":504},[338,936,937],{"class":465}," \u002Fpfad\u002Fzu\u002Ffivenet\u002Fverzeichnis\n",[330,939,941],{"className":483,"code":940,"filename":580,"language":486,"meta":334,"style":334},"Set-Location 'C:\\pfad\\zu\\fivenet\\verzeichnis'\n",[238,942,943],{"__ignoreMap":334},[338,944,945,947,949,952],{"class":340,"line":341},[338,946,810],{"class":504},[338,948,660],{"class":512},[338,950,951],{"class":465},"C:\\pfad\\zu\\fivenet\\verzeichnis",[338,953,607],{"class":512},[206,955,956],{},"Folgen Sie anschließend den plattformspezifischen Anweisungen unten, um den DBSync-Dienst zu installieren, zu starten, zu stoppen oder zu deinstallieren.",[958,959,961],"h4",{"id":960},"dienst-installieren","Dienst installieren",[206,963,964],{},"Um DBSync als Dienst zu installieren, befolgen Sie diese Schritte:",[206,966,967,968,970,971,974],{},"Unter Linux kopieren Sie die fertige Konfigurationsdatei ",[238,969,304],{}," vor der Installation des Dienstes nach ",[238,972,973],{},"\u002Fetc\u002Ffivenet",". Dadurch verwendet der DBSync-Dienst beim Start die richtige Konfigurationsdatei.",[447,976,977,1020],{},[330,978,980],{"className":451,"code":979,"filename":535,"language":454,"meta":334,"style":334},"sudo mkdir -p \u002Fetc\u002Ffivenet\nsudo cp dbsync.yaml \u002Fetc\u002Ffivenet\u002Fdbsync.yaml\nsudo fivenet dbsync install\n",[238,981,982,995,1008],{"__ignoreMap":334},[338,983,984,987,990,992],{"class":340,"line":341},[338,985,986],{"class":461},"sudo",[338,988,989],{"class":465}," mkdir",[338,991,545],{"class":465},[338,993,994],{"class":465}," \u002Fetc\u002Ffivenet\n",[338,996,997,999,1002,1005],{"class":340,"line":347},[338,998,986],{"class":461},[338,1000,1001],{"class":465}," cp",[338,1003,1004],{"class":465}," dbsync.yaml",[338,1006,1007],{"class":465}," \u002Fetc\u002Ffivenet\u002Fdbsync.yaml\n",[338,1009,1010,1012,1014,1017],{"class":340,"line":353},[338,1011,986],{"class":461},[338,1013,556],{"class":465},[338,1015,1016],{"class":465}," dbsync",[338,1018,1019],{"class":465}," install\n",[330,1021,1023],{"className":483,"code":1022,"filename":580,"language":486,"meta":334,"style":334},"fivenet dbsync install\n",[238,1024,1025],{"__ignoreMap":334},[338,1026,1027],{"class":340,"line":341},[338,1028,1022],{"class":508},[206,1030,1031],{},"Sie können den DBSync-Dienst anschließend mit den folgenden Abschnitten verwalten.",[958,1033,1035],{"id":1034},"dienst-starten-stoppen","Dienst starten \u002F stoppen",[206,1037,1038],{},"Um den DBSync-Dienst zu starten oder zu stoppen, verwenden Sie folgende Befehle:",[447,1040,1041,1103],{},[330,1042,1044],{"className":451,"code":1043,"filename":535,"language":454,"meta":334,"style":334},"sudo fivenet dbsync start\nsudo fivenet dbsync stop\n\n# Oder systemd direkt verwenden\nsudo systemctl start fivenet-dbsync\nsudo systemctl stop fivenet-dbsync\n",[238,1045,1046,1057,1068,1074,1079,1092],{"__ignoreMap":334},[338,1047,1048,1050,1052,1054],{"class":340,"line":341},[338,1049,986],{"class":461},[338,1051,556],{"class":465},[338,1053,1016],{"class":465},[338,1055,1056],{"class":465}," start\n",[338,1058,1059,1061,1063,1065],{"class":340,"line":347},[338,1060,986],{"class":461},[338,1062,556],{"class":465},[338,1064,1016],{"class":465},[338,1066,1067],{"class":465}," stop\n",[338,1069,1070],{"class":340,"line":353},[338,1071,1073],{"emptyLinePlaceholder":1072},true,"\n",[338,1075,1076],{"class":340,"line":359},[338,1077,1078],{"class":493},"# Oder systemd direkt verwenden\n",[338,1080,1081,1083,1086,1089],{"class":340,"line":365},[338,1082,986],{"class":461},[338,1084,1085],{"class":465}," systemctl",[338,1087,1088],{"class":465}," start",[338,1090,1091],{"class":465}," fivenet-dbsync\n",[338,1093,1094,1096,1098,1101],{"class":340,"line":370},[338,1095,986],{"class":461},[338,1097,1085],{"class":465},[338,1099,1100],{"class":465}," stop",[338,1102,1091],{"class":465},[330,1104,1106],{"className":483,"code":1105,"filename":580,"language":486,"meta":334,"style":334},"fivenet dbsync start\nfivenet dbsync stop\n\n# Oder die Windows-Diensteverwaltung direkt verwenden\nStart-Service fivenet-dbsync\nStop-Service fivenet-dbsync\n",[238,1107,1108,1113,1118,1122,1127,1139],{"__ignoreMap":334},[338,1109,1110],{"class":340,"line":341},[338,1111,1112],{"class":508},"fivenet dbsync start\n",[338,1114,1115],{"class":340,"line":347},[338,1116,1117],{"class":508},"fivenet dbsync stop\n",[338,1119,1120],{"class":340,"line":353},[338,1121,1073],{"emptyLinePlaceholder":1072},[338,1123,1124],{"class":340,"line":359},[338,1125,1126],{"class":493},"# Oder die Windows-Diensteverwaltung direkt verwenden\n",[338,1128,1129,1132,1134,1136],{"class":340,"line":365},[338,1130,1131],{"class":504},"Start-Service",[338,1133,556],{"class":508},[338,1135,513],{"class":512},[338,1137,1138],{"class":508},"dbsync\n",[338,1140,1141,1144,1146,1148],{"class":340,"line":370},[338,1142,1143],{"class":504},"Stop-Service",[338,1145,556],{"class":508},[338,1147,513],{"class":512},[338,1149,1138],{"class":508},[958,1151,1153],{"id":1152},"dienst-deinstallieren","Dienst deinstallieren",[206,1155,1156],{},"Um den DBSync-Dienst zu deinstallieren, führen Sie folgenden Befehl aus:",[447,1158,1159,1175],{},[330,1160,1162],{"className":451,"code":1161,"filename":535,"language":454,"meta":334,"style":334},"sudo fivenet dbsync uninstall\n",[238,1163,1164],{"__ignoreMap":334},[338,1165,1166,1168,1170,1172],{"class":340,"line":341},[338,1167,986],{"class":461},[338,1169,556],{"class":465},[338,1171,1016],{"class":465},[338,1173,1174],{"class":465}," uninstall\n",[330,1176,1178],{"className":483,"code":1177,"filename":580,"language":486,"meta":334,"style":334},"fivenet dbsync uninstall\n",[238,1179,1180],{"__ignoreMap":334},[338,1181,1182],{"class":340,"line":341},[338,1183,1177],{"class":508},[217,1185,57],{"id":1186},"konfiguration",[206,1188,1189,1190,1192],{},"DBSync wird in der Datei ",[238,1191,304],{}," konfiguriert. Die folgenden Abschnitte behandeln die wichtigsten Bereiche.",[274,1194,1196],{"id":1195},"zielkonfiguration","Zielkonfiguration",[206,1198,1199,1200,1203],{},"Der Abschnitt ",[238,1201,1202],{},"destination:"," definiert, wie DBSync sich mit Ihrer FiveNet-Instanz verbindet. Beispiel:",[330,1205,1209],{"className":1206,"code":1207,"language":1208,"meta":334,"style":334},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","destination:\n  # Host + Port Ihrer FiveNet-Instanz (erfordert HTTPS\u002Fgültige TLS-Zertifikate, außer `insecure` ist auf `true` gesetzt)\n  url: \"fivenet.example.com\"\n  token: \"IHR_SYNC_API_TOKEN\"\n  # TLS-Prüfung deaktivieren (nicht empfohlen)\n  insecure: false\n  # Das Sync-Intervall kann auch pro Tabelle im Abschnitt `tables:` festgelegt werden\n  syncInterval: 5s\n","yaml",[238,1210,1211,1220,1225,1241,1255,1260,1271,1276],{"__ignoreMap":334},[338,1212,1213,1217],{"class":340,"line":341},[338,1214,1216],{"class":1215},"swJcz","destination",[338,1218,1219],{"class":512},":\n",[338,1221,1222],{"class":340,"line":347},[338,1223,1224],{"class":493},"  # Host + Port Ihrer FiveNet-Instanz (erfordert HTTPS\u002Fgültige TLS-Zertifikate, außer `insecure` ist auf `true` gesetzt)\n",[338,1226,1227,1230,1233,1235,1238],{"class":340,"line":353},[338,1228,1229],{"class":1215},"  url",[338,1231,1232],{"class":512},":",[338,1234,739],{"class":512},[338,1236,1237],{"class":465},"fivenet.example.com",[338,1239,1240],{"class":512},"\"\n",[338,1242,1243,1246,1248,1250,1253],{"class":340,"line":359},[338,1244,1245],{"class":1215},"  token",[338,1247,1232],{"class":512},[338,1249,739],{"class":512},[338,1251,1252],{"class":465},"IHR_SYNC_API_TOKEN",[338,1254,1240],{"class":512},[338,1256,1257],{"class":340,"line":365},[338,1258,1259],{"class":493},"  # TLS-Prüfung deaktivieren (nicht empfohlen)\n",[338,1261,1262,1265,1267],{"class":340,"line":370},[338,1263,1264],{"class":1215},"  insecure",[338,1266,1232],{"class":512},[338,1268,1270],{"class":1269},"sfNiH"," false\n",[338,1272,1273],{"class":340,"line":376},[338,1274,1275],{"class":493},"  # Das Sync-Intervall kann auch pro Tabelle im Abschnitt `tables:` festgelegt werden\n",[338,1277,1278,1281,1283],{"class":340,"line":382},[338,1279,1280],{"class":1215},"  syncInterval",[338,1282,1232],{"class":512},[338,1284,1285],{"class":465}," 5s\n",[274,1287,1289],{"id":1288},"quellkonfiguration","Quellkonfiguration",[206,1291,1199,1292,1295],{},[238,1293,1294],{},"source:"," enthält die Verbindungsdaten Ihrer Gameserver-Datenbank. Beispiel:",[330,1297,1299],{"className":1206,"code":1298,"language":1208,"meta":334,"style":334},"# Änderungen an der Quelle erfordern einen Neustart von dbsync\nsource:\n  # Details unter https:\u002F\u002Fgithub.com\u002Fgo-sql-driver\u002Fmysql#dsn-data-source-name\n  # Bitte beachten Sie, dass der Parameter `parseTime` immer auf true gesetzt wird\n  dsn: \"DB_USER:DB_PASS@tcp(DB_HOST:DB_PORT)\u002FDB_NAME?collation=utf8mb4_unicode_ci&loc=Europe%2FBerlin\"\n",[238,1300,1301,1306,1312,1317,1322],{"__ignoreMap":334},[338,1302,1303],{"class":340,"line":341},[338,1304,1305],{"class":493},"# Änderungen an der Quelle erfordern einen Neustart von dbsync\n",[338,1307,1308,1310],{"class":340,"line":347},[338,1309,676],{"class":1215},[338,1311,1219],{"class":512},[338,1313,1314],{"class":340,"line":353},[338,1315,1316],{"class":493},"  # Details unter https:\u002F\u002Fgithub.com\u002Fgo-sql-driver\u002Fmysql#dsn-data-source-name\n",[338,1318,1319],{"class":340,"line":359},[338,1320,1321],{"class":493},"  # Bitte beachten Sie, dass der Parameter `parseTime` immer auf true gesetzt wird\n",[338,1323,1324,1327,1329,1331,1334],{"class":340,"line":365},[338,1325,1326],{"class":1215},"  dsn",[338,1328,1232],{"class":512},[338,1330,739],{"class":512},[338,1332,1333],{"class":465},"DB_USER:DB_PASS@tcp(DB_HOST:DB_PORT)\u002FDB_NAME?collation=utf8mb4_unicode_ci&loc=Europe%2FBerlin",[338,1335,1240],{"class":512},[274,1337,1339],{"id":1338},"synchronisierungsstatus-speichern","Synchronisierungsstatus speichern",[206,1341,1342,1343,1346],{},"DBSync speichert seinen Synchronisierungsstatus standardmäßig in einer Datei namens ",[238,1344,1345],{},"dbsync.state.yaml",". Diese Datei verfolgt den zuletzt synchronisierten Datenstand. Bewahren Sie sie dauerhaft auf, damit nach einem Neustart nicht alles erneut vollständig synchronisiert werden muss.",[206,1348,1349,1350,1352],{},"Bevor Sie DBSync starten, stellen Sie sicher, dass die Sync-API aktiviert ist und ein Sync-API-Token in Ihrer zentralen FiveNet-",[238,1351,311],{}," konfiguriert wurde.",[206,1354,1355,1356,1360],{},"Der ",[213,1357,1359],{"href":1358},"#tabellenabfragen","Tabellenabschnitt"," dient dazu, die Abfragen für die Tabellen zu definieren, die mit FiveNet synchronisiert werden sollen.\nSiehe die Beispiele weiter unten für ESX und QBCore.",[206,1362,1363],{},"Wenn Sie ein anderes Framework verwenden, passen Sie die Abfragen entsprechend an.",[274,1365,1367],{"id":1366},"datenbankbenutzer-für-die-quelle","Datenbankbenutzer für die Quelle",[206,1369,1370],{},"Der Datenbankbenutzer benötigt nur Lesezugriff auf die Gameserver-Datenbank. Beispielabfragen zum Erstellen eines separaten Benutzers und zum Gewähren von Lesezugriff finden Sie unten. Ersetzen Sie Benutzername, Passwort und Datenbankname vor der Verwendung:",[330,1372,1376],{"className":1373,"code":1374,"language":1375,"meta":334,"style":334},"language-sql shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","CREATE USER 'fivenet_dbsync'@'localhost' IDENTIFIED BY 'IHR_DBSYNC_BENUTZER_PASSWORT';\nGRANT SELECT ON `ihre_gameserver_db`.* TO 'fivenet_dbsync'@'localhost';\n","sql",[238,1377,1378,1418],{"__ignoreMap":334},[338,1379,1380,1384,1387,1389,1392,1395,1397,1400,1402,1405,1408,1410,1413,1415],{"class":340,"line":341},[338,1381,1383],{"class":1382},"sbssI","CREATE",[338,1385,1386],{"class":1382}," USER",[338,1388,660],{"class":508},[338,1390,1391],{"class":504},"fivenet_dbsync",[338,1393,1394],{"class":508},"'@",[338,1396,601],{"class":512},[338,1398,1399],{"class":465},"localhost",[338,1401,601],{"class":512},[338,1403,1404],{"class":508}," IDENTIFIED ",[338,1406,1407],{"class":1382},"BY",[338,1409,660],{"class":512},[338,1411,1412],{"class":465},"IHR_DBSYNC_BENUTZER_PASSWORT",[338,1414,601],{"class":512},[338,1416,1417],{"class":508},";\n",[338,1419,1420,1423,1426,1429,1432,1435,1438,1440,1443,1446,1448,1450,1452,1455,1457,1459,1461],{"class":340,"line":347},[338,1421,1422],{"class":1382},"GRANT",[338,1424,1425],{"class":1382}," SELECT",[338,1427,1428],{"class":1382}," ON",[338,1430,1431],{"class":512}," `",[338,1433,1434],{"class":465},"ihre_gameserver_db",[338,1436,1437],{"class":512},"`",[338,1439,305],{"class":508},[338,1441,1442],{"class":512},"*",[338,1444,1445],{"class":1382}," TO",[338,1447,660],{"class":512},[338,1449,1391],{"class":465},[338,1451,601],{"class":512},[338,1453,1454],{"class":508},"@",[338,1456,601],{"class":512},[338,1458,1399],{"class":465},[338,1460,601],{"class":512},[338,1462,1417],{"class":508},[274,1464,1466],{"id":1465},"tabellenabfragen","Tabellenabfragen",[206,1468,1469,1470,1473,1474,1477,1478,1481,1482,305],{},"Die Abfragen für jede Tabelle müssen die von DBSync erwarteten Spalten zurückgeben. Benutzerbezogene Felder müssen beispielsweise als ",[238,1471,1472],{},"user.COLUMN"," zurückgegeben werden, etwa ",[238,1475,1476],{},"user.id",", ",[238,1479,1480],{},"user.firstname"," und ",[238,1483,1484],{},"user.lastname",[206,1486,1487,1488,1481,1491,1494,1495,1497,1498,1500,1501,1481,1504,1507,1508,1511],{},"Es ist besonders wichtig, konsistente Werte für ",[238,1489,1490],{},"id",[238,1492,1493],{},"identifier"," von Benutzern bzw. Charakteren zurückzugeben.\nDas Feld ",[238,1496,1490],{}," identifiziert den Benutzer in der Quelldatenbank, während ",[238,1499,1493],{}," von FiveNet verwendet wird, um Charaktere mit Konten zu verknüpfen.\nSo können auch mehrere Charaktere einem Konto zugeordnet werden, zum Beispiel ",[238,1502,1503],{},"char1:LICENSE",[238,1505,1506],{},"char2:LICENSE",", die beide zu einem Konto gehören, das nur ",[238,1509,1510],{},"LICENSE"," speichert.",[408,1513,1514],{"color":410,"icon":411},[206,1515,1516,1517,1520,1521,305],{},"Wenn Ihr Job-Framework separate Off-Duty-Jobs wie ",[238,1518,1519],{},"off_police"," verwendet, lesen Sie weiter unten den Abschnitt ",[213,1522,1524],{"href":1523},"#wie-man-off-duty-jobs-behandelt","Wie man Off-Duty-Jobs behandelt",[206,1526,1527,1528,305],{},"Arbeitsfähige Startpunkte für gängige Frameworks finden Sie im Abschnitt ",[213,1529,1531],{"href":1530},"#beispielkonfigurationen","Beispielkonfigurationen",[217,1533,1535],{"id":1534},"verwendung","Verwendung",[206,1537,1538,1539,1541],{},"Um DBSync manuell auszuführen, verwenden Sie die ",[238,1540,240],{},"-Binary wie folgt:",[330,1543,1545],{"className":451,"code":1544,"language":454,"meta":334,"style":334},"fivenet dbsync\n",[238,1546,1547],{"__ignoreMap":334},[338,1548,1549,1551],{"class":340,"line":341},[338,1550,240],{"class":461},[338,1552,1553],{"class":465}," dbsync\n",[408,1555,1556,1559],{},[206,1557,1558],{},"Um alle verfügbaren Optionen und Flags anzuzeigen, können Sie folgenden Befehl ausführen:",[330,1560,1562],{"className":451,"code":1561,"language":454,"meta":334,"style":334},"fivenet dbsync --help\n",[238,1563,1564],{"__ignoreMap":334},[338,1565,1566,1568,1570],{"class":340,"line":341},[338,1567,240],{"class":461},[338,1569,1016],{"class":465},[338,1571,1572],{"class":465}," --help\n",[217,1574,1531],{"id":1575},"beispielkonfigurationen",[274,1577,1579],{"id":1578},"esx-framework","ESX-Framework",[408,1581,1582,1589],{"color":410,"icon":411},[206,1583,1584,1585,1588],{},"Der folgende ",[238,1586,1587],{},"tables","-Konfigurationsausschnitt basiert auf dem ESX-Framework und verwendet die \"Simple Query\"-Generierung von DBSync, die keine SQL-Abfragen erfordert.",[206,1590,1591],{},"Die meisten Kommentare wurden der Kürze halber weggelassen. Schauen Sie sich die Kommentare in der DBSync-Beispielkonfiguration für zusätzliche Informationen und Details an.",[330,1593,1595],{"className":1206,"code":1594,"language":1208,"meta":334,"style":334},"tables:\n  jobs:\n    enabled: true\n    tableName: \"jobs\"\n    columns:\n      name: \"name\"\n      label: \"label\"\n\n  jobGrades:\n    enabled: true\n    tableName: \"job_grades\"\n    columns:\n      jobName: \"job_name\"\n      grade: \"grade\"\n      name: \"name\"\n      label: \"label\"\n\n  licenses:\n    enabled: true\n    tableName: \"licenses\"\n    columns:\n      type: \"type\"\n      label: \"label\"\n\n  users:\n    enabled: true\n    tableName: \"users\"\n    updatedTimeColumn: \"last_seen\"\n    columns:\n      id: \"id\"\n      identifier: \"identifier\"\n      group: \"group\"\n      firstname: \"firstname\"\n      lastname: \"lastname\"\n      dateOfBirth: \"dateofbirth\"\n      sex: \"sex\"\n      height: \"height\"\n      job: \"job\"\n      jobGrade: \"job_grade\"\n      phoneNumber: \"phone_number\"\n    ignoreEmptyNames: true\n\n  userLicenses:\n    enabled: true\n    tableName: \"user_licenses\"\n    columns:\n      type: \"type\"\n      ownerIdentifier: \"owner\"\n\n  vehicles:\n    enabled: true\n    tableName: \"owned_vehicles\"\n    updatedTimeColumn: \"updated_at\"\n    columns:\n      ownerIdentifier: \"owner\"\n      plate: \"plate\"\n      type: \"type\"\n",[238,1596,1597,1603,1610,1620,1634,1641,1655,1669,1673,1680,1688,1701,1708,1723,1738,1751,1764,1769,1777,1786,1800,1807,1822,1835,1840,1848,1857,1871,1886,1893,1907,1921,1936,1951,1966,1981,1996,2011,2026,2041,2056,2066,2071,2079,2088,2102,2109,2122,2137,2142,2150,2159,2173,2187,2194,2207,2222],{"__ignoreMap":334},[338,1598,1599,1601],{"class":340,"line":341},[338,1600,1587],{"class":1215},[338,1602,1219],{"class":512},[338,1604,1605,1608],{"class":340,"line":347},[338,1606,1607],{"class":1215},"  jobs",[338,1609,1219],{"class":512},[338,1611,1612,1615,1617],{"class":340,"line":353},[338,1613,1614],{"class":1215},"    enabled",[338,1616,1232],{"class":512},[338,1618,1619],{"class":1269}," true\n",[338,1621,1622,1625,1627,1629,1632],{"class":340,"line":359},[338,1623,1624],{"class":1215},"    tableName",[338,1626,1232],{"class":512},[338,1628,739],{"class":512},[338,1630,1631],{"class":465},"jobs",[338,1633,1240],{"class":512},[338,1635,1636,1639],{"class":340,"line":365},[338,1637,1638],{"class":1215},"    columns",[338,1640,1219],{"class":512},[338,1642,1643,1646,1648,1650,1653],{"class":340,"line":370},[338,1644,1645],{"class":1215},"      name",[338,1647,1232],{"class":512},[338,1649,739],{"class":512},[338,1651,1652],{"class":465},"name",[338,1654,1240],{"class":512},[338,1656,1657,1660,1662,1664,1667],{"class":340,"line":376},[338,1658,1659],{"class":1215},"      label",[338,1661,1232],{"class":512},[338,1663,739],{"class":512},[338,1665,1666],{"class":465},"label",[338,1668,1240],{"class":512},[338,1670,1671],{"class":340,"line":382},[338,1672,1073],{"emptyLinePlaceholder":1072},[338,1674,1675,1678],{"class":340,"line":388},[338,1676,1677],{"class":1215},"  jobGrades",[338,1679,1219],{"class":512},[338,1681,1682,1684,1686],{"class":340,"line":394},[338,1683,1614],{"class":1215},[338,1685,1232],{"class":512},[338,1687,1619],{"class":1269},[338,1689,1690,1692,1694,1696,1699],{"class":340,"line":400},[338,1691,1624],{"class":1215},[338,1693,1232],{"class":512},[338,1695,739],{"class":512},[338,1697,1698],{"class":465},"job_grades",[338,1700,1240],{"class":512},[338,1702,1704,1706],{"class":340,"line":1703},12,[338,1705,1638],{"class":1215},[338,1707,1219],{"class":512},[338,1709,1711,1714,1716,1718,1721],{"class":340,"line":1710},13,[338,1712,1713],{"class":1215},"      jobName",[338,1715,1232],{"class":512},[338,1717,739],{"class":512},[338,1719,1720],{"class":465},"job_name",[338,1722,1240],{"class":512},[338,1724,1726,1729,1731,1733,1736],{"class":340,"line":1725},14,[338,1727,1728],{"class":1215},"      grade",[338,1730,1232],{"class":512},[338,1732,739],{"class":512},[338,1734,1735],{"class":465},"grade",[338,1737,1240],{"class":512},[338,1739,1741,1743,1745,1747,1749],{"class":340,"line":1740},15,[338,1742,1645],{"class":1215},[338,1744,1232],{"class":512},[338,1746,739],{"class":512},[338,1748,1652],{"class":465},[338,1750,1240],{"class":512},[338,1752,1754,1756,1758,1760,1762],{"class":340,"line":1753},16,[338,1755,1659],{"class":1215},[338,1757,1232],{"class":512},[338,1759,739],{"class":512},[338,1761,1666],{"class":465},[338,1763,1240],{"class":512},[338,1765,1767],{"class":340,"line":1766},17,[338,1768,1073],{"emptyLinePlaceholder":1072},[338,1770,1772,1775],{"class":340,"line":1771},18,[338,1773,1774],{"class":1215},"  licenses",[338,1776,1219],{"class":512},[338,1778,1780,1782,1784],{"class":340,"line":1779},19,[338,1781,1614],{"class":1215},[338,1783,1232],{"class":512},[338,1785,1619],{"class":1269},[338,1787,1789,1791,1793,1795,1798],{"class":340,"line":1788},20,[338,1790,1624],{"class":1215},[338,1792,1232],{"class":512},[338,1794,739],{"class":512},[338,1796,1797],{"class":465},"licenses",[338,1799,1240],{"class":512},[338,1801,1803,1805],{"class":340,"line":1802},21,[338,1804,1638],{"class":1215},[338,1806,1219],{"class":512},[338,1808,1810,1813,1815,1817,1820],{"class":340,"line":1809},22,[338,1811,1812],{"class":1215},"      type",[338,1814,1232],{"class":512},[338,1816,739],{"class":512},[338,1818,1819],{"class":465},"type",[338,1821,1240],{"class":512},[338,1823,1825,1827,1829,1831,1833],{"class":340,"line":1824},23,[338,1826,1659],{"class":1215},[338,1828,1232],{"class":512},[338,1830,739],{"class":512},[338,1832,1666],{"class":465},[338,1834,1240],{"class":512},[338,1836,1838],{"class":340,"line":1837},24,[338,1839,1073],{"emptyLinePlaceholder":1072},[338,1841,1843,1846],{"class":340,"line":1842},25,[338,1844,1845],{"class":1215},"  users",[338,1847,1219],{"class":512},[338,1849,1851,1853,1855],{"class":340,"line":1850},26,[338,1852,1614],{"class":1215},[338,1854,1232],{"class":512},[338,1856,1619],{"class":1269},[338,1858,1860,1862,1864,1866,1869],{"class":340,"line":1859},27,[338,1861,1624],{"class":1215},[338,1863,1232],{"class":512},[338,1865,739],{"class":512},[338,1867,1868],{"class":465},"users",[338,1870,1240],{"class":512},[338,1872,1874,1877,1879,1881,1884],{"class":340,"line":1873},28,[338,1875,1876],{"class":1215},"    updatedTimeColumn",[338,1878,1232],{"class":512},[338,1880,739],{"class":512},[338,1882,1883],{"class":465},"last_seen",[338,1885,1240],{"class":512},[338,1887,1889,1891],{"class":340,"line":1888},29,[338,1890,1638],{"class":1215},[338,1892,1219],{"class":512},[338,1894,1896,1899,1901,1903,1905],{"class":340,"line":1895},30,[338,1897,1898],{"class":1215},"      id",[338,1900,1232],{"class":512},[338,1902,739],{"class":512},[338,1904,1490],{"class":465},[338,1906,1240],{"class":512},[338,1908,1910,1913,1915,1917,1919],{"class":340,"line":1909},31,[338,1911,1912],{"class":1215},"      identifier",[338,1914,1232],{"class":512},[338,1916,739],{"class":512},[338,1918,1493],{"class":465},[338,1920,1240],{"class":512},[338,1922,1924,1927,1929,1931,1934],{"class":340,"line":1923},32,[338,1925,1926],{"class":1215},"      group",[338,1928,1232],{"class":512},[338,1930,739],{"class":512},[338,1932,1933],{"class":465},"group",[338,1935,1240],{"class":512},[338,1937,1939,1942,1944,1946,1949],{"class":340,"line":1938},33,[338,1940,1941],{"class":1215},"      firstname",[338,1943,1232],{"class":512},[338,1945,739],{"class":512},[338,1947,1948],{"class":465},"firstname",[338,1950,1240],{"class":512},[338,1952,1954,1957,1959,1961,1964],{"class":340,"line":1953},34,[338,1955,1956],{"class":1215},"      lastname",[338,1958,1232],{"class":512},[338,1960,739],{"class":512},[338,1962,1963],{"class":465},"lastname",[338,1965,1240],{"class":512},[338,1967,1969,1972,1974,1976,1979],{"class":340,"line":1968},35,[338,1970,1971],{"class":1215},"      dateOfBirth",[338,1973,1232],{"class":512},[338,1975,739],{"class":512},[338,1977,1978],{"class":465},"dateofbirth",[338,1980,1240],{"class":512},[338,1982,1984,1987,1989,1991,1994],{"class":340,"line":1983},36,[338,1985,1986],{"class":1215},"      sex",[338,1988,1232],{"class":512},[338,1990,739],{"class":512},[338,1992,1993],{"class":465},"sex",[338,1995,1240],{"class":512},[338,1997,1999,2002,2004,2006,2009],{"class":340,"line":1998},37,[338,2000,2001],{"class":1215},"      height",[338,2003,1232],{"class":512},[338,2005,739],{"class":512},[338,2007,2008],{"class":465},"height",[338,2010,1240],{"class":512},[338,2012,2014,2017,2019,2021,2024],{"class":340,"line":2013},38,[338,2015,2016],{"class":1215},"      job",[338,2018,1232],{"class":512},[338,2020,739],{"class":512},[338,2022,2023],{"class":465},"job",[338,2025,1240],{"class":512},[338,2027,2029,2032,2034,2036,2039],{"class":340,"line":2028},39,[338,2030,2031],{"class":1215},"      jobGrade",[338,2033,1232],{"class":512},[338,2035,739],{"class":512},[338,2037,2038],{"class":465},"job_grade",[338,2040,1240],{"class":512},[338,2042,2044,2047,2049,2051,2054],{"class":340,"line":2043},40,[338,2045,2046],{"class":1215},"      phoneNumber",[338,2048,1232],{"class":512},[338,2050,739],{"class":512},[338,2052,2053],{"class":465},"phone_number",[338,2055,1240],{"class":512},[338,2057,2059,2062,2064],{"class":340,"line":2058},41,[338,2060,2061],{"class":1215},"    ignoreEmptyNames",[338,2063,1232],{"class":512},[338,2065,1619],{"class":1269},[338,2067,2069],{"class":340,"line":2068},42,[338,2070,1073],{"emptyLinePlaceholder":1072},[338,2072,2074,2077],{"class":340,"line":2073},43,[338,2075,2076],{"class":1215},"  userLicenses",[338,2078,1219],{"class":512},[338,2080,2082,2084,2086],{"class":340,"line":2081},44,[338,2083,1614],{"class":1215},[338,2085,1232],{"class":512},[338,2087,1619],{"class":1269},[338,2089,2091,2093,2095,2097,2100],{"class":340,"line":2090},45,[338,2092,1624],{"class":1215},[338,2094,1232],{"class":512},[338,2096,739],{"class":512},[338,2098,2099],{"class":465},"user_licenses",[338,2101,1240],{"class":512},[338,2103,2105,2107],{"class":340,"line":2104},46,[338,2106,1638],{"class":1215},[338,2108,1219],{"class":512},[338,2110,2112,2114,2116,2118,2120],{"class":340,"line":2111},47,[338,2113,1812],{"class":1215},[338,2115,1232],{"class":512},[338,2117,739],{"class":512},[338,2119,1819],{"class":465},[338,2121,1240],{"class":512},[338,2123,2125,2128,2130,2132,2135],{"class":340,"line":2124},48,[338,2126,2127],{"class":1215},"      ownerIdentifier",[338,2129,1232],{"class":512},[338,2131,739],{"class":512},[338,2133,2134],{"class":465},"owner",[338,2136,1240],{"class":512},[338,2138,2140],{"class":340,"line":2139},49,[338,2141,1073],{"emptyLinePlaceholder":1072},[338,2143,2145,2148],{"class":340,"line":2144},50,[338,2146,2147],{"class":1215},"  vehicles",[338,2149,1219],{"class":512},[338,2151,2153,2155,2157],{"class":340,"line":2152},51,[338,2154,1614],{"class":1215},[338,2156,1232],{"class":512},[338,2158,1619],{"class":1269},[338,2160,2162,2164,2166,2168,2171],{"class":340,"line":2161},52,[338,2163,1624],{"class":1215},[338,2165,1232],{"class":512},[338,2167,739],{"class":512},[338,2169,2170],{"class":465},"owned_vehicles",[338,2172,1240],{"class":512},[338,2174,2176,2178,2180,2182,2185],{"class":340,"line":2175},53,[338,2177,1876],{"class":1215},[338,2179,1232],{"class":512},[338,2181,739],{"class":512},[338,2183,2184],{"class":465},"updated_at",[338,2186,1240],{"class":512},[338,2188,2190,2192],{"class":340,"line":2189},54,[338,2191,1638],{"class":1215},[338,2193,1219],{"class":512},[338,2195,2197,2199,2201,2203,2205],{"class":340,"line":2196},55,[338,2198,2127],{"class":1215},[338,2200,1232],{"class":512},[338,2202,739],{"class":512},[338,2204,2134],{"class":465},[338,2206,1240],{"class":512},[338,2208,2210,2213,2215,2217,2220],{"class":340,"line":2209},56,[338,2211,2212],{"class":1215},"      plate",[338,2214,1232],{"class":512},[338,2216,739],{"class":512},[338,2218,2219],{"class":465},"plate",[338,2221,1240],{"class":512},[338,2223,2225,2227,2229,2231,2233],{"class":340,"line":2224},57,[338,2226,1812],{"class":1215},[338,2228,1232],{"class":512},[338,2230,739],{"class":512},[338,2232,1819],{"class":465},[338,2234,1240],{"class":512},[274,2236,2238],{"id":2237},"qbcore-framework","QBCore-Framework",[408,2240,2241],{"color":410,"icon":411},[206,2242,1591],{},[330,2244,2246],{"className":1206,"code":2245,"language":1208,"meta":334,"style":334},"tables:\n  jobs:\n    # Muss die Spalten `name`, `label` zurückgeben\n    enabled: false\n    query: |\n      SELECT\n        `jobs`.`name` AS `job.name`,\n        `jobs`.`label` AS `job.label`\n      FROM\n        `jobs`\n      ORDER BY `name`;\n      LIMIT $limit;\n\n  jobGrades:\n    # Muss die Spalten `job_name`, `grade`, `label` zurückgeben (mit `WHERE`-Bedingung für den `job_name` (`$jobName`))\n    enabled: false\n    query: |\n      SELECT\n        `job_grades`.`job_name` AS `job_grade.job_name`,\n        `job_grades`.`grade` AS `job_grade.grade`,\n        `job_grades`.`label` AS `job_grade.label`\n      FROM\n        `job_grades`\n      WHERE\n        `job_name` = $jobName\n      ORDER BY `job_grade.job_name`, `job_grade.grade`\n      LIMIT $limit;\n\n  licenses:\n    # Muss die Spalten `type`, `label` zurückgeben\n    enabled: false\n    query: |\n      SELECT\n        `licenses`.`type` AS `license.type`,\n        `licenses`.`label` AS `license.label`\n      FROM\n        `licenses`\n      ORDER BY `license.type`\n      LIMIT $limit;\n\n  users:\n    enabled: false\n    #updatedTimeColumn: \"last_seen\"\n    # Die Identifier-Spalte sollte eine sinnvolle Kombination von Werten sein, wenn ein Multichar-System verwendet wird.\n    # Beispielsweise ist ein ESX-ähnliches Identifier-Layout in diesem Fall sinnvoll: `charX:LICENSE`\n    query: |\n      SELECT\n        `players`.`id` AS `user.id`,\n        CONCAT(`players`.`cid`, ':', `players`.`citizenid`) AS `user.identifier`,\n        'user' AS `user.group`,\n        JSON_UNQUOTE(JSON_EXTRACT(`players`.`charinfo`, '$.firstname')) AS `user.firstname`,\n        JSON_UNQUOTE(JSON_EXTRACT(`players`.`charinfo`, '$.lastname')) AS `user.lastname`,\n        JSON_UNQUOTE(JSON_EXTRACT(`players`.`charinfo`, '$.birthdate')) AS `user.dateofbirth`,\n        JSON_UNQUOTE(JSON_EXTRACT(`players`.`charinfo`, '$.height')) AS `user.height`,\n        JSON_UNQUOTE(JSON_EXTRACT(`players`.`job`, '$.name')) AS `user.job`,\n        JSON_UNQUOTE(JSON_EXTRACT(`players`.`job`, '$.grade.level')) AS `user.job_grade`,\n        JSON_UNQUOTE(JSON_EXTRACT(`players`.`charinfo`, '$.gender')) AS `user.sex`,\n        JSON_UNQUOTE(JSON_EXTRACT(`players`.`charinfo`, '$.phone')) AS `user.phone_number`\n        `players`.`last_updated` AS `user.updated_at`\n      FROM\n        `players`\n      $whereCondition\n      ORDER BY `user.updated_at` ASC, `user.id` ASC\n      LIMIT $limit;\n    # Wenn kein Nachname zurückgegeben wird, kann der Vorname in zwei Teile aufgeteilt werden\n    splitName: true\n    # Geburtsdatum wenn möglich in das gewünschte Ausgabeformat umwandeln\n    # Mögliche Datumsformat-Layouts finden Sie in der Go-`time`-Dokumentation: https:\u002F\u002Fpkg.go.dev\u002Ftime#Layout\n    dateOfBirth:\n      formats:\n        - \"2006-01-02\" # 2000-10-18 = YYYY-MM-DD\n        - \"02\u002F01\u002F2006\" # 09\u002F06\u002F1993 = MM\u002FDD\u002FYYYY\n        - \"02.01.2006\" # 01.08.1982 = DD.MM.YYYY\n      outputFormat: \"02.01.2006\" # DD.MM.YYYY\n    valueMapping:\n      sex:\n        fallback: 'm'\n        values:\n          '1': 'f'\n\n  userLicenses:\n    # Muss die Spalten `type`, `owner` zurückgeben\n    enabled: false\n    query: |\n      SELECT\n        `user_licenses`.`type` AS `user_license.type`,\n        `user_licenses`.`owner` AS `user_license.owner`\n      FROM\n        `user_licenses`\n      WHERE\n        `owner` = $identifier\n      LIMIT $limit;\n\n  vehicles:\n    # Muss die Spalten `owner_id` (DB-Benutzer-ID) oder `owner_identifier`, `plate`, `type`, `model` zurückgeben\n    enabled: true\n    query: |\n      SELECT\n        IF(`player_vehicles`.job_vehicle=0, `players`.`id`, NULL) AS `vehicle.owner_identifier`,\n        `player_vehicles`.`plate` AS `vehicle.plate`,\n        'Fahrzeug' AS `vehicle.type`,\n        `player_vehicles`.`vehicle` AS `vehicle.model`,\n        IF(`player_vehicles`.`job_vehicle`=1, `players`.`id`, NULL) AS `vehicle.job`,\n        `player_vehicles`.`updated_at` AS `vehicle.updated_at`\n      FROM\n        `player_vehicles`\n        LEFT JOIN `players` ON (`players`.`citizenid` = `player_vehicles`.`citizenid`)\n      $whereCondition\n      ORDER BY `vehicle.updated_at` ASC, `vehicle.plate` ASC\n      LIMIT $limit;\n",[238,2247,2248,2254,2260,2265,2273,2284,2289,2294,2299,2304,2309,2314,2319,2323,2329,2334,2342,2350,2354,2359,2364,2369,2373,2378,2383,2388,2393,2397,2401,2407,2412,2420,2428,2432,2437,2442,2446,2451,2456,2460,2464,2470,2478,2483,2488,2493,2501,2505,2510,2515,2520,2525,2530,2535,2540,2545,2550,2555,2561,2567,2572,2578,2584,2590,2595,2601,2611,2617,2623,2631,2639,2655,2670,2685,2702,2710,2717,2732,2740,2760,2765,2772,2778,2787,2796,2801,2807,2813,2818,2824,2829,2835,2840,2845,2852,2858,2867,2876,2881,2887,2893,2899,2905,2911,2917,2922,2928,2934,2939,2945],{"__ignoreMap":334},[338,2249,2250,2252],{"class":340,"line":341},[338,2251,1587],{"class":1215},[338,2253,1219],{"class":512},[338,2255,2256,2258],{"class":340,"line":347},[338,2257,1607],{"class":1215},[338,2259,1219],{"class":512},[338,2261,2262],{"class":340,"line":353},[338,2263,2264],{"class":493},"    # Muss die Spalten `name`, `label` zurückgeben\n",[338,2266,2267,2269,2271],{"class":340,"line":359},[338,2268,1614],{"class":1215},[338,2270,1232],{"class":512},[338,2272,1270],{"class":1269},[338,2274,2275,2278,2280],{"class":340,"line":365},[338,2276,2277],{"class":1215},"    query",[338,2279,1232],{"class":512},[338,2281,2283],{"class":2282},"s7zQu"," |\n",[338,2285,2286],{"class":340,"line":370},[338,2287,2288],{"class":465},"      SELECT\n",[338,2290,2291],{"class":340,"line":376},[338,2292,2293],{"class":465},"        `jobs`.`name` AS `job.name`,\n",[338,2295,2296],{"class":340,"line":382},[338,2297,2298],{"class":465},"        `jobs`.`label` AS `job.label`\n",[338,2300,2301],{"class":340,"line":388},[338,2302,2303],{"class":465},"      FROM\n",[338,2305,2306],{"class":340,"line":394},[338,2307,2308],{"class":465},"        `jobs`\n",[338,2310,2311],{"class":340,"line":400},[338,2312,2313],{"class":465},"      ORDER BY `name`;\n",[338,2315,2316],{"class":340,"line":1703},[338,2317,2318],{"class":465},"      LIMIT $limit;\n",[338,2320,2321],{"class":340,"line":1710},[338,2322,1073],{"emptyLinePlaceholder":1072},[338,2324,2325,2327],{"class":340,"line":1725},[338,2326,1677],{"class":1215},[338,2328,1219],{"class":512},[338,2330,2331],{"class":340,"line":1740},[338,2332,2333],{"class":493},"    # Muss die Spalten `job_name`, `grade`, `label` zurückgeben (mit `WHERE`-Bedingung für den `job_name` (`$jobName`))\n",[338,2335,2336,2338,2340],{"class":340,"line":1753},[338,2337,1614],{"class":1215},[338,2339,1232],{"class":512},[338,2341,1270],{"class":1269},[338,2343,2344,2346,2348],{"class":340,"line":1766},[338,2345,2277],{"class":1215},[338,2347,1232],{"class":512},[338,2349,2283],{"class":2282},[338,2351,2352],{"class":340,"line":1771},[338,2353,2288],{"class":465},[338,2355,2356],{"class":340,"line":1779},[338,2357,2358],{"class":465},"        `job_grades`.`job_name` AS `job_grade.job_name`,\n",[338,2360,2361],{"class":340,"line":1788},[338,2362,2363],{"class":465},"        `job_grades`.`grade` AS `job_grade.grade`,\n",[338,2365,2366],{"class":340,"line":1802},[338,2367,2368],{"class":465},"        `job_grades`.`label` AS `job_grade.label`\n",[338,2370,2371],{"class":340,"line":1809},[338,2372,2303],{"class":465},[338,2374,2375],{"class":340,"line":1824},[338,2376,2377],{"class":465},"        `job_grades`\n",[338,2379,2380],{"class":340,"line":1837},[338,2381,2382],{"class":465},"      WHERE\n",[338,2384,2385],{"class":340,"line":1842},[338,2386,2387],{"class":465},"        `job_name` = $jobName\n",[338,2389,2390],{"class":340,"line":1850},[338,2391,2392],{"class":465},"      ORDER BY `job_grade.job_name`, `job_grade.grade`\n",[338,2394,2395],{"class":340,"line":1859},[338,2396,2318],{"class":465},[338,2398,2399],{"class":340,"line":1873},[338,2400,1073],{"emptyLinePlaceholder":1072},[338,2402,2403,2405],{"class":340,"line":1888},[338,2404,1774],{"class":1215},[338,2406,1219],{"class":512},[338,2408,2409],{"class":340,"line":1895},[338,2410,2411],{"class":493},"    # Muss die Spalten `type`, `label` zurückgeben\n",[338,2413,2414,2416,2418],{"class":340,"line":1909},[338,2415,1614],{"class":1215},[338,2417,1232],{"class":512},[338,2419,1270],{"class":1269},[338,2421,2422,2424,2426],{"class":340,"line":1923},[338,2423,2277],{"class":1215},[338,2425,1232],{"class":512},[338,2427,2283],{"class":2282},[338,2429,2430],{"class":340,"line":1938},[338,2431,2288],{"class":465},[338,2433,2434],{"class":340,"line":1953},[338,2435,2436],{"class":465},"        `licenses`.`type` AS `license.type`,\n",[338,2438,2439],{"class":340,"line":1968},[338,2440,2441],{"class":465},"        `licenses`.`label` AS `license.label`\n",[338,2443,2444],{"class":340,"line":1983},[338,2445,2303],{"class":465},[338,2447,2448],{"class":340,"line":1998},[338,2449,2450],{"class":465},"        `licenses`\n",[338,2452,2453],{"class":340,"line":2013},[338,2454,2455],{"class":465},"      ORDER BY `license.type`\n",[338,2457,2458],{"class":340,"line":2028},[338,2459,2318],{"class":465},[338,2461,2462],{"class":340,"line":2043},[338,2463,1073],{"emptyLinePlaceholder":1072},[338,2465,2466,2468],{"class":340,"line":2058},[338,2467,1845],{"class":1215},[338,2469,1219],{"class":512},[338,2471,2472,2474,2476],{"class":340,"line":2068},[338,2473,1614],{"class":1215},[338,2475,1232],{"class":512},[338,2477,1270],{"class":1269},[338,2479,2480],{"class":340,"line":2073},[338,2481,2482],{"class":493},"    #updatedTimeColumn: \"last_seen\"\n",[338,2484,2485],{"class":340,"line":2081},[338,2486,2487],{"class":493},"    # Die Identifier-Spalte sollte eine sinnvolle Kombination von Werten sein, wenn ein Multichar-System verwendet wird.\n",[338,2489,2490],{"class":340,"line":2090},[338,2491,2492],{"class":493},"    # Beispielsweise ist ein ESX-ähnliches Identifier-Layout in diesem Fall sinnvoll: `charX:LICENSE`\n",[338,2494,2495,2497,2499],{"class":340,"line":2104},[338,2496,2277],{"class":1215},[338,2498,1232],{"class":512},[338,2500,2283],{"class":2282},[338,2502,2503],{"class":340,"line":2111},[338,2504,2288],{"class":465},[338,2506,2507],{"class":340,"line":2124},[338,2508,2509],{"class":465},"        `players`.`id` AS `user.id`,\n",[338,2511,2512],{"class":340,"line":2139},[338,2513,2514],{"class":465},"        CONCAT(`players`.`cid`, ':', `players`.`citizenid`) AS `user.identifier`,\n",[338,2516,2517],{"class":340,"line":2144},[338,2518,2519],{"class":465},"        'user' AS `user.group`,\n",[338,2521,2522],{"class":340,"line":2152},[338,2523,2524],{"class":465},"        JSON_UNQUOTE(JSON_EXTRACT(`players`.`charinfo`, '$.firstname')) AS `user.firstname`,\n",[338,2526,2527],{"class":340,"line":2161},[338,2528,2529],{"class":465},"        JSON_UNQUOTE(JSON_EXTRACT(`players`.`charinfo`, '$.lastname')) AS `user.lastname`,\n",[338,2531,2532],{"class":340,"line":2175},[338,2533,2534],{"class":465},"        JSON_UNQUOTE(JSON_EXTRACT(`players`.`charinfo`, '$.birthdate')) AS `user.dateofbirth`,\n",[338,2536,2537],{"class":340,"line":2189},[338,2538,2539],{"class":465},"        JSON_UNQUOTE(JSON_EXTRACT(`players`.`charinfo`, '$.height')) AS `user.height`,\n",[338,2541,2542],{"class":340,"line":2196},[338,2543,2544],{"class":465},"        JSON_UNQUOTE(JSON_EXTRACT(`players`.`job`, '$.name')) AS `user.job`,\n",[338,2546,2547],{"class":340,"line":2209},[338,2548,2549],{"class":465},"        JSON_UNQUOTE(JSON_EXTRACT(`players`.`job`, '$.grade.level')) AS `user.job_grade`,\n",[338,2551,2552],{"class":340,"line":2224},[338,2553,2554],{"class":465},"        JSON_UNQUOTE(JSON_EXTRACT(`players`.`charinfo`, '$.gender')) AS `user.sex`,\n",[338,2556,2558],{"class":340,"line":2557},58,[338,2559,2560],{"class":465},"        JSON_UNQUOTE(JSON_EXTRACT(`players`.`charinfo`, '$.phone')) AS `user.phone_number`\n",[338,2562,2564],{"class":340,"line":2563},59,[338,2565,2566],{"class":465},"        `players`.`last_updated` AS `user.updated_at`\n",[338,2568,2570],{"class":340,"line":2569},60,[338,2571,2303],{"class":465},[338,2573,2575],{"class":340,"line":2574},61,[338,2576,2577],{"class":465},"        `players`\n",[338,2579,2581],{"class":340,"line":2580},62,[338,2582,2583],{"class":465},"      $whereCondition\n",[338,2585,2587],{"class":340,"line":2586},63,[338,2588,2589],{"class":465},"      ORDER BY `user.updated_at` ASC, `user.id` ASC\n",[338,2591,2593],{"class":340,"line":2592},64,[338,2594,2318],{"class":465},[338,2596,2598],{"class":340,"line":2597},65,[338,2599,2600],{"class":493},"    # Wenn kein Nachname zurückgegeben wird, kann der Vorname in zwei Teile aufgeteilt werden\n",[338,2602,2604,2607,2609],{"class":340,"line":2603},66,[338,2605,2606],{"class":1215},"    splitName",[338,2608,1232],{"class":512},[338,2610,1619],{"class":1269},[338,2612,2614],{"class":340,"line":2613},67,[338,2615,2616],{"class":493},"    # Geburtsdatum wenn möglich in das gewünschte Ausgabeformat umwandeln\n",[338,2618,2620],{"class":340,"line":2619},68,[338,2621,2622],{"class":493},"    # Mögliche Datumsformat-Layouts finden Sie in der Go-`time`-Dokumentation: https:\u002F\u002Fpkg.go.dev\u002Ftime#Layout\n",[338,2624,2626,2629],{"class":340,"line":2625},69,[338,2627,2628],{"class":1215},"    dateOfBirth",[338,2630,1219],{"class":512},[338,2632,2634,2637],{"class":340,"line":2633},70,[338,2635,2636],{"class":1215},"      formats",[338,2638,1219],{"class":512},[338,2640,2642,2645,2647,2650,2652],{"class":340,"line":2641},71,[338,2643,2644],{"class":512},"        -",[338,2646,739],{"class":512},[338,2648,2649],{"class":465},"2006-01-02",[338,2651,750],{"class":512},[338,2653,2654],{"class":493}," # 2000-10-18 = YYYY-MM-DD\n",[338,2656,2658,2660,2662,2665,2667],{"class":340,"line":2657},72,[338,2659,2644],{"class":512},[338,2661,739],{"class":512},[338,2663,2664],{"class":465},"02\u002F01\u002F2006",[338,2666,750],{"class":512},[338,2668,2669],{"class":493}," # 09\u002F06\u002F1993 = MM\u002FDD\u002FYYYY\n",[338,2671,2673,2675,2677,2680,2682],{"class":340,"line":2672},73,[338,2674,2644],{"class":512},[338,2676,739],{"class":512},[338,2678,2679],{"class":465},"02.01.2006",[338,2681,750],{"class":512},[338,2683,2684],{"class":493}," # 01.08.1982 = DD.MM.YYYY\n",[338,2686,2688,2691,2693,2695,2697,2699],{"class":340,"line":2687},74,[338,2689,2690],{"class":1215},"      outputFormat",[338,2692,1232],{"class":512},[338,2694,739],{"class":512},[338,2696,2679],{"class":465},[338,2698,750],{"class":512},[338,2700,2701],{"class":493}," # DD.MM.YYYY\n",[338,2703,2705,2708],{"class":340,"line":2704},75,[338,2706,2707],{"class":1215},"    valueMapping",[338,2709,1219],{"class":512},[338,2711,2713,2715],{"class":340,"line":2712},76,[338,2714,1986],{"class":1215},[338,2716,1219],{"class":512},[338,2718,2720,2723,2725,2727,2730],{"class":340,"line":2719},77,[338,2721,2722],{"class":1215},"        fallback",[338,2724,1232],{"class":512},[338,2726,660],{"class":512},[338,2728,2729],{"class":465},"m",[338,2731,607],{"class":512},[338,2733,2735,2738],{"class":340,"line":2734},78,[338,2736,2737],{"class":1215},"        values",[338,2739,1219],{"class":512},[338,2741,2743,2746,2749,2751,2753,2755,2758],{"class":340,"line":2742},79,[338,2744,2745],{"class":512},"          '",[338,2747,2748],{"class":465},"1",[338,2750,601],{"class":512},[338,2752,1232],{"class":512},[338,2754,660],{"class":512},[338,2756,2757],{"class":465},"f",[338,2759,607],{"class":512},[338,2761,2763],{"class":340,"line":2762},80,[338,2764,1073],{"emptyLinePlaceholder":1072},[338,2766,2768,2770],{"class":340,"line":2767},81,[338,2769,2076],{"class":1215},[338,2771,1219],{"class":512},[338,2773,2775],{"class":340,"line":2774},82,[338,2776,2777],{"class":493},"    # Muss die Spalten `type`, `owner` zurückgeben\n",[338,2779,2781,2783,2785],{"class":340,"line":2780},83,[338,2782,1614],{"class":1215},[338,2784,1232],{"class":512},[338,2786,1270],{"class":1269},[338,2788,2790,2792,2794],{"class":340,"line":2789},84,[338,2791,2277],{"class":1215},[338,2793,1232],{"class":512},[338,2795,2283],{"class":2282},[338,2797,2799],{"class":340,"line":2798},85,[338,2800,2288],{"class":465},[338,2802,2804],{"class":340,"line":2803},86,[338,2805,2806],{"class":465},"        `user_licenses`.`type` AS `user_license.type`,\n",[338,2808,2810],{"class":340,"line":2809},87,[338,2811,2812],{"class":465},"        `user_licenses`.`owner` AS `user_license.owner`\n",[338,2814,2816],{"class":340,"line":2815},88,[338,2817,2303],{"class":465},[338,2819,2821],{"class":340,"line":2820},89,[338,2822,2823],{"class":465},"        `user_licenses`\n",[338,2825,2827],{"class":340,"line":2826},90,[338,2828,2382],{"class":465},[338,2830,2832],{"class":340,"line":2831},91,[338,2833,2834],{"class":465},"        `owner` = $identifier\n",[338,2836,2838],{"class":340,"line":2837},92,[338,2839,2318],{"class":465},[338,2841,2843],{"class":340,"line":2842},93,[338,2844,1073],{"emptyLinePlaceholder":1072},[338,2846,2848,2850],{"class":340,"line":2847},94,[338,2849,2147],{"class":1215},[338,2851,1219],{"class":512},[338,2853,2855],{"class":340,"line":2854},95,[338,2856,2857],{"class":493},"    # Muss die Spalten `owner_id` (DB-Benutzer-ID) oder `owner_identifier`, `plate`, `type`, `model` zurückgeben\n",[338,2859,2861,2863,2865],{"class":340,"line":2860},96,[338,2862,1614],{"class":1215},[338,2864,1232],{"class":512},[338,2866,1619],{"class":1269},[338,2868,2870,2872,2874],{"class":340,"line":2869},97,[338,2871,2277],{"class":1215},[338,2873,1232],{"class":512},[338,2875,2283],{"class":2282},[338,2877,2879],{"class":340,"line":2878},98,[338,2880,2288],{"class":465},[338,2882,2884],{"class":340,"line":2883},99,[338,2885,2886],{"class":465},"        IF(`player_vehicles`.job_vehicle=0, `players`.`id`, NULL) AS `vehicle.owner_identifier`,\n",[338,2888,2890],{"class":340,"line":2889},100,[338,2891,2892],{"class":465},"        `player_vehicles`.`plate` AS `vehicle.plate`,\n",[338,2894,2896],{"class":340,"line":2895},101,[338,2897,2898],{"class":465},"        'Fahrzeug' AS `vehicle.type`,\n",[338,2900,2902],{"class":340,"line":2901},102,[338,2903,2904],{"class":465},"        `player_vehicles`.`vehicle` AS `vehicle.model`,\n",[338,2906,2908],{"class":340,"line":2907},103,[338,2909,2910],{"class":465},"        IF(`player_vehicles`.`job_vehicle`=1, `players`.`id`, NULL) AS `vehicle.job`,\n",[338,2912,2914],{"class":340,"line":2913},104,[338,2915,2916],{"class":465},"        `player_vehicles`.`updated_at` AS `vehicle.updated_at`\n",[338,2918,2920],{"class":340,"line":2919},105,[338,2921,2303],{"class":465},[338,2923,2925],{"class":340,"line":2924},106,[338,2926,2927],{"class":465},"        `player_vehicles`\n",[338,2929,2931],{"class":340,"line":2930},107,[338,2932,2933],{"class":465},"        LEFT JOIN `players` ON (`players`.`citizenid` = `player_vehicles`.`citizenid`)\n",[338,2935,2937],{"class":340,"line":2936},108,[338,2938,2583],{"class":465},[338,2940,2942],{"class":340,"line":2941},109,[338,2943,2944],{"class":465},"      ORDER BY `vehicle.updated_at` ASC, `vehicle.plate` ASC\n",[338,2946,2948],{"class":340,"line":2947},110,[338,2949,2318],{"class":465},[217,2951,898],{"id":2952},"als-systemd-unit-oder-dienst-ausführen",[408,2954,2955],{},[206,2956,2957],{},"Bevor Sie DBSync als Dienst einrichten, stellen Sie sicher, dass Sie grundlegende Kenntnisse in der Linux-Systemadministration haben.",[206,2959,2960],{},"Es wird empfohlen, DBSync als Dienst auf Ihrem Server auszuführen. Unter Linux können Sie zum Beispiel eine systemd-Unit-Datei erstellen:",[330,2962,2966],{"className":2963,"code":2964,"language":2965,"meta":334,"style":334},"language-ini shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","[Unit]\nDescription=FiveNet DBSync Service\nAfter=network.target\n\n[Service]\nExecStart=\u002Fpath\u002Fto\u002Ffivenet dbsync\nRestart=always\nUser=fivenet\nGroup=fivenet\n\n[Install]\nWantedBy=multi-user.target\n","ini",[238,2967,2968,2973,2978,2983,2987,2992,2997,3002,3007,3012,3016,3021],{"__ignoreMap":334},[338,2969,2970],{"class":340,"line":341},[338,2971,2972],{},"[Unit]\n",[338,2974,2975],{"class":340,"line":347},[338,2976,2977],{},"Description=FiveNet DBSync Service\n",[338,2979,2980],{"class":340,"line":353},[338,2981,2982],{},"After=network.target\n",[338,2984,2985],{"class":340,"line":359},[338,2986,1073],{"emptyLinePlaceholder":1072},[338,2988,2989],{"class":340,"line":365},[338,2990,2991],{},"[Service]\n",[338,2993,2994],{"class":340,"line":370},[338,2995,2996],{},"ExecStart=\u002Fpath\u002Fto\u002Ffivenet dbsync\n",[338,2998,2999],{"class":340,"line":376},[338,3000,3001],{},"Restart=always\n",[338,3003,3004],{"class":340,"line":382},[338,3005,3006],{},"User=fivenet\n",[338,3008,3009],{"class":340,"line":388},[338,3010,3011],{},"Group=fivenet\n",[338,3013,3014],{"class":340,"line":394},[338,3015,1073],{"emptyLinePlaceholder":1072},[338,3017,3018],{"class":340,"line":400},[338,3019,3020],{},"[Install]\n",[338,3022,3023],{"class":340,"line":1703},[338,3024,3025],{},"WantedBy=multi-user.target\n",[206,3027,3028,3029,3032],{},"Speichern Sie diese Datei als ",[238,3030,3031],{},"\u002Fetc\u002Fsystemd\u002Fsystem\u002Ffivenet-dbsync.service"," und aktivieren und starten Sie den Dienst anschließend:",[330,3034,3036],{"className":451,"code":3035,"language":454,"meta":334,"style":334},"sudo systemctl enable fivenet-dbsync\nsudo systemctl start fivenet-dbsync\n",[238,3037,3038,3049],{"__ignoreMap":334},[338,3039,3040,3042,3044,3047],{"class":340,"line":341},[338,3041,986],{"class":461},[338,3043,1085],{"class":465},[338,3045,3046],{"class":465}," enable",[338,3048,1091],{"class":465},[338,3050,3051,3053,3055,3057],{"class":340,"line":347},[338,3052,986],{"class":461},[338,3054,1085],{"class":465},[338,3056,1088],{"class":465},[338,3058,1091],{"class":465},[217,3060,3062],{"id":3061},"häufige-probleme-und-fragen","Häufige Probleme und Fragen",[274,3064,3066,3067],{"id":3065},"fehlermeldung-error-during-sync-stream-restarting-in-a-second","Fehlermeldung: ",[238,3068,3069],{},"error during sync stream, restarting in a second",[206,3071,3072],{},"Diese Meldung bedeutet, dass die DBSync-Verbindung zur FiveNet-Instanz geschlossen oder unterbrochen wurde.\nWenn dies nur gelegentlich passiert, ist es in der Regel unkritisch, da DBSync automatisch versucht, die Verbindung wiederherzustellen.",[206,3074,3075],{},"Lang laufende Verbindungen können durch Firewalls, Load-Balancer oder andere Netzwerkgeräte getrennt werden, was zu dieser Meldung führen kann.",[274,3077,1524],{"id":3078},"wie-man-off-duty-jobs-behandelt",[206,3080,1516,3081,3083,3084,3086,3087,3089],{},[238,3082,1519],{}," verwendet, können Sie dies in der ",[238,3085,1631],{},"- und ",[238,3088,1868],{},"-Tabellenkonfiguration mit Filtern behandeln.",[408,3091,3092],{"color":410,"icon":411},[206,3093,3094,3095,3098],{},"Diese Funktion ist ab FiveNet ",[238,3096,3097],{},"v2025.10.0"," und höher verfügbar.",[206,3100,3101,1232],{},[282,3102,3103],{},"Beispiel",[330,3105,3107],{"className":1206,"code":3106,"language":1208,"meta":334,"style":334},"tables:\n  jobs:\n    filters:\n      # Beispiel-Filter, um Jobs zu verwerfen, die mit \"off_\" beginnen\n      # Dies ist nützlich in Kombination mit den `users:`-Jobfiltern unten,\n      # wenn \"Off-Duty\"-Jobs auf ihren eigentlichen Jobnamen zurückgeschrieben werden sollen\n      #\n      # \"drop\" bedeutet in diesem Zusammenhang, dass dbsync den Job nicht an FiveNet sendet\n      - pattern: '^off_'\n        action: drop\n# [...]\n  users:\n    # Filter können bestimmte Werte verändern, bevor sie an FiveNet gesendet werden\n    filters:\n      jobs:\n        # Beispiel: `off_police` -> `police`\n        - pattern: '^off_'\n          # Das Muster suchen und mit `action: replace` ersetzen ...\n          action: replace\n          # ... durch einen leeren String (`replacement: ''`)\n          replacement: ''\n",[238,3108,3109,3115,3121,3128,3133,3138,3143,3148,3153,3170,3180,3185,3191,3196,3202,3209,3214,3228,3233,3243,3248],{"__ignoreMap":334},[338,3110,3111,3113],{"class":340,"line":341},[338,3112,1587],{"class":1215},[338,3114,1219],{"class":512},[338,3116,3117,3119],{"class":340,"line":347},[338,3118,1607],{"class":1215},[338,3120,1219],{"class":512},[338,3122,3123,3126],{"class":340,"line":353},[338,3124,3125],{"class":1215},"    filters",[338,3127,1219],{"class":512},[338,3129,3130],{"class":340,"line":359},[338,3131,3132],{"class":493},"      # Beispiel-Filter, um Jobs zu verwerfen, die mit \"off_\" beginnen\n",[338,3134,3135],{"class":340,"line":365},[338,3136,3137],{"class":493},"      # Dies ist nützlich in Kombination mit den `users:`-Jobfiltern unten,\n",[338,3139,3140],{"class":340,"line":370},[338,3141,3142],{"class":493},"      # wenn \"Off-Duty\"-Jobs auf ihren eigentlichen Jobnamen zurückgeschrieben werden sollen\n",[338,3144,3145],{"class":340,"line":376},[338,3146,3147],{"class":493},"      #\n",[338,3149,3150],{"class":340,"line":382},[338,3151,3152],{"class":493},"      # \"drop\" bedeutet in diesem Zusammenhang, dass dbsync den Job nicht an FiveNet sendet\n",[338,3154,3155,3158,3161,3163,3165,3168],{"class":340,"line":388},[338,3156,3157],{"class":512},"      -",[338,3159,3160],{"class":1215}," pattern",[338,3162,1232],{"class":512},[338,3164,660],{"class":512},[338,3166,3167],{"class":465},"^off_",[338,3169,607],{"class":512},[338,3171,3172,3175,3177],{"class":340,"line":394},[338,3173,3174],{"class":1215},"        action",[338,3176,1232],{"class":512},[338,3178,3179],{"class":465}," drop\n",[338,3181,3182],{"class":340,"line":400},[338,3183,3184],{"class":493},"# [...]\n",[338,3186,3187,3189],{"class":340,"line":1703},[338,3188,1845],{"class":1215},[338,3190,1219],{"class":512},[338,3192,3193],{"class":340,"line":1710},[338,3194,3195],{"class":493},"    # Filter können bestimmte Werte verändern, bevor sie an FiveNet gesendet werden\n",[338,3197,3198,3200],{"class":340,"line":1725},[338,3199,3125],{"class":1215},[338,3201,1219],{"class":512},[338,3203,3204,3207],{"class":340,"line":1740},[338,3205,3206],{"class":1215},"      jobs",[338,3208,1219],{"class":512},[338,3210,3211],{"class":340,"line":1753},[338,3212,3213],{"class":493},"        # Beispiel: `off_police` -> `police`\n",[338,3215,3216,3218,3220,3222,3224,3226],{"class":340,"line":1766},[338,3217,2644],{"class":512},[338,3219,3160],{"class":1215},[338,3221,1232],{"class":512},[338,3223,660],{"class":512},[338,3225,3167],{"class":465},[338,3227,607],{"class":512},[338,3229,3230],{"class":340,"line":1771},[338,3231,3232],{"class":493},"          # Das Muster suchen und mit `action: replace` ersetzen ...\n",[338,3234,3235,3238,3240],{"class":340,"line":1779},[338,3236,3237],{"class":1215},"          action",[338,3239,1232],{"class":512},[338,3241,3242],{"class":465}," replace\n",[338,3244,3245],{"class":340,"line":1788},[338,3246,3247],{"class":493},"          # ... durch einen leeren String (`replacement: ''`)\n",[338,3249,3250,3253,3255],{"class":340,"line":1802},[338,3251,3252],{"class":1215},"          replacement",[338,3254,1232],{"class":512},[338,3256,3257],{"class":512}," ''\n",[3259,3260,3261],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}",{"title":334,"searchDepth":347,"depth":347,"links":3263},[3264,3265,3268,3269,3270,3273,3280,3281,3285,3286],{"id":219,"depth":347,"text":220},{"id":232,"depth":347,"text":233,"children":3266},[3267],{"id":276,"depth":353,"text":277},{"id":288,"depth":347,"text":289},{"id":324,"depth":347,"text":325},{"id":406,"depth":347,"text":31,"children":3271},[3272],{"id":901,"depth":353,"text":893},{"id":1186,"depth":347,"text":57,"children":3274},[3275,3276,3277,3278,3279],{"id":1195,"depth":353,"text":1196},{"id":1288,"depth":353,"text":1289},{"id":1338,"depth":353,"text":1339},{"id":1366,"depth":353,"text":1367},{"id":1465,"depth":353,"text":1466},{"id":1534,"depth":347,"text":1535},{"id":1575,"depth":347,"text":1531,"children":3282},[3283,3284],{"id":1578,"depth":353,"text":1579},{"id":2237,"depth":353,"text":2238},{"id":2952,"depth":347,"text":898},{"id":3061,"depth":347,"text":3062,"children":3287},[3288,3290],{"id":3065,"depth":353,"text":3289},"Fehlermeldung: error during sync stream, restarting in a second",{"id":3078,"depth":353,"text":1524},"md",null,{},{"title":66,"description":208},"sHIELeLv5mA6B82TrJjDwsaYx6hpeW2qOkSTSqkW3ps",[3297,3299],{"title":62,"path":63,"stem":64,"description":3298,"children":-1},"Konfigurieren Sie den FiveNet-Server, bevor Sie Ihren Gameserver verbinden.",{"title":31,"path":80,"stem":81,"description":3300,"children":-1},"Installieren Sie das FiveNet-FiveM-Plugin, um Ihren Gameserver mit Ihrer FiveNet-Instanz zu verbinden.",1790138291284]