Retour à la leçonMission
Mission : l'inventaire partagé qui ne se réinitialise jamais
Comprendre pourquoi un module d'inventaire garde un état partagé entre deux scripts distincts, et corriger l'encapsulation de son état interne.
Contexte
inventory_manager.lua expose un module de gestion d'inventaire :
lua
local M = {}
M.items = {} -- état exposé directement dans la table publique, pas caché
function M.addItem(name, quantity)
M.items[name] = (M.items[name] or 0) + quantity
end
return MDeux scripts différents du serveur font chacun local inv = require("inventory_manager"). Un développeur pensait obtenir deux inventaires séparés, un par script, mais découvre que les objets ajoutés dans le script A apparaissent aussi côté script B. Pire, un troisième script accède directement à inv.items["or"] = 999999 pour "tester", sans passer par addItem.