{"id":127577,"date":"2024-02-01T13:09:35","date_gmt":"2024-02-01T12:09:35","guid":{"rendered":"https:\/\/hifivem.com\/?p=127577"},"modified":"2026-08-16T15:16:22","modified_gmt":"2026-08-16T13:16:22","slug":"verwendung-von-ki-zur-verbesserung-des-fivem-servers","status":"publish","type":"post","link":"https:\/\/rpcrate.com\/de\/using-ai-to-improve-fivem-server\/","title":{"rendered":"KI sicher f\u00fcr die FiveM-Serverentwicklung nutzen"},"content":{"rendered":"<p><strong>KI kann bei einer FiveM-Ressource helfen, wenn du ihre Ausgabe als ungepr\u00fcften Entwurf behandelst: Definiere eine kleine Aufgabe, stelle die aktuellen Cfx.re- oder Framework-Schnittstellenvorgaben bereit, pr\u00fcfe jede ge\u00e4nderte Zeile und teste die Ressource vor der Bereitstellung auf einem Entwicklungsserver.<\/strong> KI kann deinen privaten Framework-Fork, dein Datenbankschema, Lizenzen, den Serverstatus oder das Produktionsergebnis nicht \u00fcberpr\u00fcfen, wenn du diese Nachweise nicht bereitstellst.<\/p>\n<div class=\"fivemx-guide-box fivemx-guide-warning\">\n<p><strong>F\u00fcge keine Geheimnisse oder Kundendaten in eine Eingabeaufforderung ein.<\/strong> Entferne Lizenzschl\u00fcssel, Datenbankanmeldeinformationen, Webhooks, Spieler-IDs, Bestelldaten und privaten Quellcode, den du nicht offenlegen darfst. Generierter Code ist kein Beweis daf\u00fcr, dass eine \u00c4nderung sicher, kompatibel oder produktionsreif ist.<\/p>\n<\/div>\n<h2 id=\"choose-a-task-that-can-be-reviewed\">W\u00e4hle eine Aufgabe, die \u00fcberpr\u00fcft werden kann<\/h2>\n<p>Gute Aufgaben haben eine enge Eingabe und ein testbares Ergebnis: Erkl\u00e4re einen Fehler, f\u00fcge eine Validierung f\u00fcr ein Ereignis hinzu, konvertiere ein veraltetes Manifest, schreibe einen fokussierten Test oder vergleiche eine Implementierung mit einer offiziellen Schnittstelle. \u201eBaue meinen vollst\u00e4ndigen Server\u201c verbirgt zu viele Annahmen \u00fcber Ressourcen, Startreihenfolge, Framework-Versionen und Datenbesitz.<\/p>\n<ol>\n<li>Gib die genaue Ressource, Laufzeit und Framework-Version an.<\/li>\n<li>Beschreibe das aktuelle und das erwartete Verhalten.<\/li>\n<li>F\u00fcge den kleinsten relevanten Code und den genauen Fehler hinzu, nicht das gesamte private Repository.<\/li>\n<li>Verlinke die prim\u00e4re Dokumentation, der die Antwort folgen muss.<\/li>\n<li>Bitte um einen minimalen Diff, Annahmen und einen Rollback-Schritt.<\/li>\n<\/ol>\n<h2 id=\"ground-the-answer-in-current-fivem-contracts\">St\u00fctze die Antwort auf aktuelle FiveM-Schnittstellenvorgaben<\/h2>\n<p>F\u00fcr Lua-Ressourcen beginne mit der offiziellen <a href=\"https:\/\/docs.fivem.net\/docs\/scripting-manual\/runtimes\/lua\/\" rel=\"nofollow noopener\">CfxLua-Laufzeitdokumentation<\/a> und <a href=\"https:\/\/docs.fivem.net\/docs\/scripting-reference\/resource-manifest\/\" rel=\"nofollow noopener\">Ressourcenmanifestreferenz<\/a>. FiveM verwendet CfxLua, das auf Lua 5.4 basiert; neue Ressourcen verwenden <code data-no-translation=\"\" translate=\"no\">fxmanifest.lua<\/code>, und der alte <code data-no-translation=\"\" translate=\"no\">__resource.lua<\/code> Pfad sollte nicht als aktueller Standard dargestellt werden.<\/p>\n<p>Framework-Aufrufe m\u00fcssen aus der offiziellen Version stammen, die du ausf\u00fchrst. ESX, QBCore und QBOX sind nicht austauschbar, und eine Kompatibilit\u00e4tsbr\u00fccke macht nicht jede API identisch. Wenn die Dokumentation und die generierte Antwort nicht \u00fcbereinstimmen, stoppe und \u00fcberpr\u00fcfe die installierte Quelle oder die Typen.<\/p>\n<h2 id=\"treat-clients-as-untrusted\">Behandle Clients als nicht vertrauensw\u00fcrdig<\/h2>\n<p>Ein KI-Assistent kann ein Netzwerkereignis erzeugen, das Geld-, Artikel-, Rollen- oder Koordinatenwerte vom Client akzeptiert. Das ist unsicher. Der offizielle <a href=\"https:\/\/docs.fivem.net\/docs\/developers\/server-security\/\" rel=\"nofollow noopener\">Cfx.re-Leitfaden zur Sicherheit von Events<\/a> erkl\u00e4rt, dass Clients vernetzte Ereignisse ausl\u00f6sen k\u00f6nnen und dass autoritative Werte serverseitig validiert werden m\u00fcssen. \u00dcberpr\u00fcfe Berechtigungen, Status, Inventar, Position und Ratenbegrenzungen auf dem Server, bevor du gesch\u00fctzte Daten \u00e4nderst.<\/p>\n<h2 id=\"review-the-diff-before-running-it\">\u00dcberpr\u00fcfe den Diff, bevor du ihn ausf\u00fchrst<\/h2>\n<ul>\n<li><strong>Umfang:<\/strong> nur angeforderte Dateien und Verhalten ge\u00e4ndert.<\/li>\n<li><strong>APIs:<\/strong> Jede native Funktion, jeder Export, jedes Ereignis und jeder Konfigurationsschl\u00fcssel existiert in der relevanten prim\u00e4ren Quelle.<\/li>\n<li><strong>Vertrauensgrenze:<\/strong> Serverseitige Entscheidungen basieren nicht auf einer vom Client bereitgestellten Berechtigung oder Menge.<\/li>\n<li><strong>Leistung:<\/strong> Schleifen geben die Ausf\u00fchrung zwischendurch an den Scheduler ab und f\u00fchren nicht in jedem Frame Datenbank- oder Netzwerkoperationen aus.<\/li>\n<li><strong>Daten:<\/strong> SQL ist parametrisiert und Schema\u00e4nderungen nutzen den Migrationspfad des Projekts.<\/li>\n<li><strong>Betrieb:<\/strong> Logs enthalten keine Geheimnisse oder unn\u00f6tigen Spieler-Identifikatoren.<\/li>\n<li><strong>Lizenz:<\/strong> Generierter oder kopierter Code f\u00fchrt keinen Code oder keine Medien ein, f\u00fcr deren Verwendung du keine Berechtigung hast.<\/li>\n<\/ul>\n<h2 id=\"test-one-layer-at-a-time\">Teste jeweils eine Ebene<\/h2>\n<ol>\n<li>Sichere die Ressource und die Konfiguration, dann verwende einen separaten Entwicklungsserver.<\/li>\n<li>F\u00fchre Syntax-, Typ- und Projekttests aus, die bereits existieren.<\/li>\n<li>Verwende <code data-no-translation=\"\" translate=\"no\">refresh<\/code> und <code data-no-translation=\"\" translate=\"no\">ensure resource-name<\/code> nur \u00fcber die Serverkonsole und nur f\u00fcr die vorgesehene Ressource. Die aktuellen Befehle sind hier dokumentiert: <a href=\"https:\/\/docs.fivem.net\/docs\/server-manual\/server-commands\/\" rel=\"nofollow noopener\">Cfx.re Server-Befehlsreferenz<\/a>.<\/li>\n<li>\u00dcberpr\u00fcfe die Serverkonsole und die F8-Clientkonsole auf Fehler.<\/li>\n<li>Teste Erfolg, ung\u00fcltige Eingaben, fehlende Berechtigungen, wiederholte Anfragen und die Nichtverf\u00fcgbarkeit einer Abh\u00e4ngigkeit.<\/li>\n<li>Starte den Server einmal neu, um die Startreihenfolge und den persistenten Zustand zu \u00fcberpr\u00fcfen.<\/li>\n<\/ol>\n<h2 id=\"use-ai-for-review-not-evidence\">Nutze KI zur \u00dcberpr\u00fcfung, nicht als Beweis<\/h2>\n<p>KI kann kleine Diffs erkl\u00e4ren, Fehlerf\u00e4lle aufz\u00e4hlen oder offizielle Schnittstellenvorgaben in eine Checkliste \u00fcbertragen. Sie belegt jedoch nicht, dass eine Ressource getestet, ein Benchmark verbessert oder ein Sicherheitsproblem behoben wurde. Halte die Befehle und beobachteten Ergebnisse fest, die solche Aussagen st\u00fctzen. Beschreibe ein nicht reproduzierbares Ergebnis als Vorschlag statt als verifiziertes Resultat.<\/p>","protected":false},"excerpt":{"rendered":"<p>KI kann bei einer FiveM-Ressource helfen, wenn du ihre Ausgabe als ungepr\u00fcften Entwurf behandelst: Definiere eine kleine Aufgabe, stelle die aktuellen Cfx.re- oder Framework-Schnittstellenvorgaben bereit, pr\u00fcfe jede ge\u00e4nderte Zeile und teste die Ressource vor der Bereitstellung auf einem Entwicklungsserver. Ohne entsprechende Nachweise kann die KI deinen privaten Framework-Fork, dein Datenbankschema, Lizenzen, den Serverzustand oder das Ergebnis im Produktivbetrieb nicht \u00fcberpr\u00fcfen.<\/p>","protected":false},"author":1,"featured_media":107523,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1899],"tags":[],"class_list":["post-127577","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutorials"],"_links":{"self":[{"href":"https:\/\/rpcrate.com\/de\/wp-json\/wp\/v2\/posts\/127577","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rpcrate.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rpcrate.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rpcrate.com\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rpcrate.com\/de\/wp-json\/wp\/v2\/comments?post=127577"}],"version-history":[{"count":9,"href":"https:\/\/rpcrate.com\/de\/wp-json\/wp\/v2\/posts\/127577\/revisions"}],"predecessor-version":[{"id":217358,"href":"https:\/\/rpcrate.com\/de\/wp-json\/wp\/v2\/posts\/127577\/revisions\/217358"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/rpcrate.com\/de\/wp-json\/wp\/v2\/media\/107523"}],"wp:attachment":[{"href":"https:\/\/rpcrate.com\/de\/wp-json\/wp\/v2\/media?parent=127577"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rpcrate.com\/de\/wp-json\/wp\/v2\/categories?post=127577"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rpcrate.com\/de\/wp-json\/wp\/v2\/tags?post=127577"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}