Retour à la leçon
Mission

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 M

Deux 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.