{"id":193071,"date":"2025-08-17T08:32:20","date_gmt":"2025-08-17T06:32:20","guid":{"rendered":"https:\/\/fivemx.com\/?p=193071"},"modified":"2026-08-04T15:15:00","modified_gmt":"2026-08-04T13:15:00","slug":"maintenir-les-scripts-fivem","status":"publish","type":"post","link":"https:\/\/rpcrate.com\/fr\/maintain-fivem-scripts\/","title":{"rendered":"Tester, mettre \u00e0 jour et maintenir les scripts FiveM"},"content":{"rendered":"<p>Maintenez un script FiveM en conservant une version reproductible, en testant ses flux de jeu r\u00e9els et en conservant une restauration fonctionnelle. Le d\u00e9marrage d'une ressource sans erreurs n'est que la premi\u00e8re v\u00e9rification\u00a0; les autorisations, la persistance et les chemins d'\u00e9chec sont tout aussi importants.<\/p>\n<h2 id=\"record-the-working-baseline\">Consignez la version de r\u00e9f\u00e9rence fonctionnelle<\/h2>\n<p>Listez la version ou le commit de la ressource, la version de FXServer, le framework, l'inventaire, le pilote de base de donn\u00e9es et les modifications de configuration. Conservez la source modifiable dans un d\u00e9p\u00f4t priv\u00e9 et les identifiants en dehors de celui-ci. Pr\u00e9servez le package sous licence d'origine et les instructions de mise \u00e0 jour de l'auteur.<\/p>\n<p>Utilisez un serveur de test isol\u00e9 avec une base de donn\u00e9es s\u00e9par\u00e9e et un acc\u00e8s restreint. D\u00e9sactivez la livraison de paiements r\u00e9els, les webhooks de production et les autres actions externes dans l'environnement de test.<\/p>\n<h2 id=\"review-each-update-before-installing\">Examinez chaque mise \u00e0 jour avant de l'installer<\/h2>\n<ol>\n<li>Lisez les notes de version et comparez la configuration modifi\u00e9e, les d\u00e9pendances, les exports, les \u00e9v\u00e9nements et le SQL. Identifiez les ruptures de compatibilit\u00e9 avant de remplacer les fichiers.<\/li>\n<li>Sauvegardez la base de donn\u00e9es actuelle et les fichiers de ressources\/configuration correspondants. Confirmez que la sauvegarde peut \u00eatre restaur\u00e9e sur l'instance de test.<\/li>\n<li>Appliquez la mise \u00e0 jour \u00e0 l'instance de test dans l'ordre requis par l'auteur. Fusionnez la configuration d\u00e9lib\u00e9r\u00e9ment\u00a0; ne remplacez pas aveugl\u00e9ment les nouvelles valeurs par d\u00e9faut par un ancien fichier.<\/li>\n<li>Ex\u00e9cutez des sc\u00e9narios normaux et d'\u00e9chec, puis comparez les r\u00e9sultats persistants apr\u00e8s la reconnexion et le red\u00e9marrage.<\/li>\n<\/ol>\n<h2 id=\"use-a-gameplay-test-record\">Utilisez un enregistrement de test de gameplay<\/h2>\n<p>Pour chaque action importante, enregistrez l'\u00e9tat de d\u00e9part, les \u00e9tapes, le r\u00e9sultat attendu et le r\u00e9sultat observ\u00e9. Pour un achat en magasin\u00a0: le joueur a un solde connu, ach\u00e8te un article connu, re\u00e7oit exactement un article, perd exactement son prix d\u00e9fini par le serveur et conserve ce r\u00e9sultat apr\u00e8s la reconnexion.<\/p>\n<p>R\u00e9p\u00e9tez avec des fonds insuffisants, un inventaire plein, un acc\u00e8s non autoris\u00e9, des noms d'articles invalides, des requ\u00eates r\u00e9p\u00e9t\u00e9es et une d\u00e9connexion pendant l'op\u00e9ration. Pour un garage, testez la propri\u00e9t\u00e9, la pr\u00e9vention des apparitions en double et le stockage apr\u00e8s le red\u00e9marrage. Pour les m\u00e9tiers, testez les restrictions de rang et de service.<\/p>\n<h2 id=\"inspect-security-and-performance-separately\">Inspectez la s\u00e9curit\u00e9 et les performances s\u00e9par\u00e9ment<\/h2>\n<p>Examinez les \u00e9v\u00e9nements r\u00e9seau pour la validation c\u00f4t\u00e9 serveur des autorisations, de la propri\u00e9t\u00e9, des montants et de l'ach\u00e8vement des t\u00e2ches. Une d\u00e9faillance critique d'autorisation bloque la publication, quelle que soit la bonne performance ailleurs.<\/p>\n<p>Utilisez le moniteur de ressources client pour le temps d'ex\u00e9cution des scripts client et le profileur FXServer pour le travail du serveur. Enregistrez la sc\u00e8ne, le nombre de joueurs et la dur\u00e9e. Comparez des charges de travail identiques\u00a0; n'imposez pas un budget universel en millisecondes \u00e0 des ressources non li\u00e9es.<\/p>\n<h2 id=\"automate-checks-that-catch-real-mistakes\">Automatisez les v\u00e9rifications qui d\u00e9tectent les erreurs r\u00e9elles<\/h2>\n<p>Ex\u00e9cutez des v\u00e9rifications de syntaxe\/lint Lua adapt\u00e9es \u00e0 l'environnement d'ex\u00e9cution FiveM et des tests cibl\u00e9s pour la logique pure. Les tests de framework simul\u00e9s aident \u00e0 d\u00e9tecter les incoh\u00e9rences d'arguments et de retours, mais ils ne v\u00e9rifient pas le framework, l'inventaire ou l'int\u00e9gration de la base de donn\u00e9es r\u00e9els. Conservez une liste de contr\u00f4le de serveur de test en direct \u00e0 c\u00f4t\u00e9 d'eux.<\/p>\n<h2 id=\"deploy-a-reversible-change\">D\u00e9ployer un changement r\u00e9versible<\/h2>\n<p>Choisissez une fen\u00eatre de maintenance, annoncez l'interruption pr\u00e9vue et gardez la version pr\u00e9c\u00e9dente pr\u00eate. Mettez \u00e0 jour uniquement le package examin\u00e9 et les d\u00e9pendances requises. Red\u00e9marrez dans l'ordre document\u00e9, v\u00e9rifiez les journaux et r\u00e9p\u00e9tez le sc\u00e9nario de jeu cl\u00e9.<\/p>\n<p>Si la v\u00e9rification \u00e9choue, arr\u00eatez les nouvelles \u00e9critures avant la r\u00e9cup\u00e9ration. Restaurez le code correspondant et toutes les donn\u00e9es n\u00e9cessaires, en tenant compte des modifications apport\u00e9es apr\u00e8s la sauvegarde. N'effacez pas silencieusement la progression du joueur pour faire passer un test.<\/p>\n<h2 id=\"keep-an-issue-useful\">Conservez un signalement de probl\u00e8me exploitable<\/h2>\n<p>Enregistrez la premi\u00e8re erreur pertinente, la ressource\/version affect\u00e9e, les \u00e9tapes de reproduction et le comportement attendu. Masquez les identifiants et les informations personnelles des journaux. Suivez la r\u00e9solution dans l'historique des modifications de la ressource afin que la prochaine mise \u00e0 jour puisse r\u00e9p\u00e9ter la m\u00eame v\u00e9rification de r\u00e9gression.<\/p>\n<h2 id=\"reference-documentation\">Documentation de r\u00e9f\u00e9rence<\/h2>\n<p><a href=\"https:\/\/docs.fivem.net\/docs\/developers\/server-security\/\">Cfx.re \u2014 s\u00e9curit\u00e9 du serveur<\/a> \u00b7 <a href=\"https:\/\/docs.fivem.net\/docs\/scripting-manual\/debugging\/using-profiler\/\">Cfx.re \u2014 utilisation du profileur<\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>Maintenez un script FiveM en conservant une version reproductible, en testant ses flux de jeu r\u00e9els et en conservant une restauration fonctionnelle. Le d\u00e9marrage d'une ressource sans erreurs n'est que la premi\u00e8re v\u00e9rification\u00a0; les autorisations, la persistance et les chemins d'\u00e9chec sont tout aussi importants.<\/p>","protected":false},"author":1,"featured_media":193073,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2883],"tags":[3001,2884],"class_list":["post-193071","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-buying-testing-maintaining-fivem-scripts","tag-fivem-script","tag-maintain-fivem-scripts"],"_links":{"self":[{"href":"https:\/\/rpcrate.com\/fr\/wp-json\/wp\/v2\/posts\/193071","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=193071"}],"version-history":[{"count":4,"href":"https:\/\/rpcrate.com\/fr\/wp-json\/wp\/v2\/posts\/193071\/revisions"}],"predecessor-version":[{"id":215554,"href":"https:\/\/rpcrate.com\/fr\/wp-json\/wp\/v2\/posts\/193071\/revisions\/215554"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/rpcrate.com\/fr\/wp-json\/wp\/v2\/media\/193073"}],"wp:attachment":[{"href":"https:\/\/rpcrate.com\/fr\/wp-json\/wp\/v2\/media?parent=193071"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rpcrate.com\/fr\/wp-json\/wp\/v2\/categories?post=193071"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rpcrate.com\/fr\/wp-json\/wp\/v2\/tags?post=193071"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}