Retour à la leçon
Mission

Mission : sauver un inventaire de crafting corrompu

Diagnostiquer un bug de partage de mémoire entre deux inventaires et une longueur imprévisible, puis corriger le script.

Contexte

Un script de crafting FiveM prépare un inventaire de secours à partir de l'inventaire principal du joueur :

lua
local mainInventory = { "potion", "epee", "bouclier" }
local backupInventory = mainInventory

table.remove(backupInventory, 2)   -- le joueur "vend" une copie de l'épée depuis le backup

print(#mainInventory)   -- affiche 2, alors que le joueur n'a RIEN vendu de son inventaire principal !

mainInventory[5] = "torche"
mainInventory[4] = nil
print(#mainInventory)   -- résultat imprévisible selon le testeur

Le créateur ne comprend pas pourquoi vendre depuis backupInventory fait disparaître l'épée de mainInventory, ni pourquoi #mainInventory donne des résultats différents entre deux tests.