{"id":193197,"date":"2025-08-17T20:57:54","date_gmt":"2025-08-17T18:57:54","guid":{"rendered":"https:\/\/fivemx.com\/?p=193197"},"modified":"2026-08-16T13:44:51","modified_gmt":"2026-08-16T11:44:51","slug":"ecrire-des-scripts-fivem-en-utilisant-lia","status":"publish","type":"post","link":"https:\/\/rpcrate.com\/fr\/write-fivem-scripts-using-ai\/","title":{"rendered":"\u00c9crire un petit script FiveM avec l'IA et le v\u00e9rifier"},"content":{"rendered":"<p>Use AI to help write a small FiveM resource, then verify every dependency and behavior before expanding it. Begin with a standalone command so you can distinguish Lua, resource loading and console errors from framework or database problems.<\/p>\n<p>The configuration and code examples here target FiveM for GTA V Legacy. Enhanced has different runtime and compatibility rules; check <a href=\"https:\/\/docs.fivem.net\/docs\/developers\/legacy-vs-enhanced\/\">Cfx.re\u2019s Legacy-to-Enhanced changes<\/a> before applying them to an Enhanced server.<\/p>\n<h2 id=\"give-the-assistant-a-bounded-task\">Give the assistant a bounded task<\/h2>\n<p>Tell the assistant your FXServer build, runtime language and exact framework\/dependencies. Share only files you are permitted to share, with secrets and player data removed. Ask it to identify assumptions and link each unfamiliar API to official documentation.<\/p>\n<p>Example request: \u201cCreate a standalone Lua resource with a client command named hello_tutorial. It should print one message in F8, require no framework or network events, and include every file plus installation and verification steps.\u201d<\/p>\n<h2 id=\"build-the-minimal-resource\">Build the minimal resource<\/h2>\n<p>Create <code data-no-translation=\"\" translate=\"no\">resources\/[local]\/hello_tutorial\/<\/code>. Save these two files there. This is a complete console demonstration, not a vehicle shop or production economy system.<\/p>\n<p><code data-no-translation=\"\" translate=\"no\">fxmanifest.lua<\/code>:<\/p>\n<pre data-no-translation=\"\" translate=\"no\"><code data-no-translation=\"\" translate=\"no\">fx_version 'cerulean'\ngame 'gta5'\nclient_script 'client.lua'<\/code><\/pre>\n<p><code data-no-translation=\"\" translate=\"no\">client.lua<\/code>:<\/p>\n<pre data-no-translation=\"\" translate=\"no\"><code data-no-translation=\"\" translate=\"no\">RegisterCommand('hello_tutorial', function()\n    print('Hello from the tutorial resource.')\nend, false)<\/code><\/pre>\n<h2 id=\"start-and-verify\">Start and verify<\/h2>\n<p>Add <code data-no-translation=\"\" translate=\"no\">ensure hello_tutorial<\/code> to the active <code data-no-translation=\"\" translate=\"no\">server.cfg<\/code>. For a running development server, run <code data-no-translation=\"\" translate=\"no\">refresh<\/code> followed by <code data-no-translation=\"\" translate=\"no\">ensure hello_tutorial<\/code> in the server console. Connect a test client, open F8 and run <code data-no-translation=\"\" translate=\"no\">hello_tutorial<\/code>. Expect the exact greeting and no Lua error.<\/p>\n<p>If the command is unknown, check the resource folder, manifest and startup log. If Lua reports a file\/line error, compare the saved file with the example. Remove the ensure line and stop the resource when you finish the exercise.<\/p>\n<h2 id=\"review-the-next-change-before-adding-it\">Review the next change before adding it<\/h2>\n<p>Ask for one behavior at a time and inspect the diff. For a UI, require complete open\/close handling and released focus. For spawned entities, require model validation, bounded loading and cleanup. For database work, require an exact schema and parameterized queries.<\/p>\n<p>Server-side rewards need more than a valid item name: the server must verify permission, task completion, amounts and repeated requests. Do not accept a generated network event that grants money because the client asks for it.<\/p>\n<h2 id=\"use-errors-as-evidence\">Use errors as evidence<\/h2>\n<p>Provide the first relevant error, the execution side, affected resource\/version and a short reproduction. Ask the assistant to explain the cause before changing code. Confirm suggested natives and framework methods against official documentation or the installed source; an AI claim that code is secure or tested is not evidence.<\/p>\n<h2 id=\"test-beyond-the-happy-path\">Test beyond the happy path<\/h2>\n<p>Keep a test record showing the starting state, action and observed result. As the resource grows, include missing dependencies, unauthorized players, invalid arguments, disconnects and restart persistence. Syntax checks and mock tests help, but a development-server test is still required before live deployment.<\/p>\n<h2 id=\"reference-documentation\">Reference documentation<\/h2>\n<p><a href=\"https:\/\/docs.fivem.net\/docs\/scripting-manual\/introduction\/creating-your-first-script\/\">Cfx.re \u2014 creating your first script<\/a> \u00b7 <a href=\"https:\/\/docs.fivem.net\/docs\/scripting-reference\/resource-manifest\/\">Cfx.re \u2014 resource manifest<\/a> \u00b7 <a href=\"https:\/\/docs.fivem.net\/docs\/developers\/server-security\/\">Cfx.re \u2014 server security<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Utilisez l'IA pour vous aider \u00e0 \u00e9crire une petite ressource FiveM, puis v\u00e9rifiez chaque d\u00e9pendance et comportement avant de l'\u00e9tendre. Commencez par une commande autonome afin de pouvoir distinguer les erreurs Lua, de chargement de ressources et de console des probl\u00e8mes de framework ou de base de donn\u00e9es.<\/p>","protected":false},"author":1,"featured_media":193198,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2340],"tags":[3001],"class_list":["post-193197","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-lua-scripting","tag-fivem-script"],"_links":{"self":[{"href":"https:\/\/rpcrate.com\/fr\/wp-json\/wp\/v2\/posts\/193197","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rpcrate.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rpcrate.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rpcrate.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rpcrate.com\/fr\/wp-json\/wp\/v2\/comments?post=193197"}],"version-history":[{"count":10,"href":"https:\/\/rpcrate.com\/fr\/wp-json\/wp\/v2\/posts\/193197\/revisions"}],"predecessor-version":[{"id":217331,"href":"https:\/\/rpcrate.com\/fr\/wp-json\/wp\/v2\/posts\/193197\/revisions\/217331"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/rpcrate.com\/fr\/wp-json\/wp\/v2\/media\/193198"}],"wp:attachment":[{"href":"https:\/\/rpcrate.com\/fr\/wp-json\/wp\/v2\/media?parent=193197"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rpcrate.com\/fr\/wp-json\/wp\/v2\/categories?post=193197"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rpcrate.com\/fr\/wp-json\/wp\/v2\/tags?post=193197"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}