Passer au contenu principal
Version: bleeding-edge 🩸

Valeurs des entités

Comment stocker des données dans des entités accessibles depuis n'importe où

Dans nanos world, il est possible de stocker des données sur des entités. Ces valeurs sont accessibles par n'importe quel Package et vous pouvez également déterminer si la valeur sera automatiquement synchronisée avec les clients.

Dans la page Base Entity nous pouvons trouver les définitions de méthodes :SetValue() et :GetValue(). Il est également possible de stocker des valeurs globalement sur les classes statiques Client et Server avec les mêmes méthodes !

SetValue

Sur n'importe quelle entité, vous pouvez utiliser la méthode :SetValue(key, value, sync) pour définir n'importe quelle valeur sur cette entité. Exemple :

Server/Index.lua
-- Définit une valeur 'my_value' synchronisée.
my_player:SetValue("my_value", 100, true)
tip

Il est possible de stocker des valeurs de type any, à l'exception des fonctions.

Si vous passez sync comme vrai, cette valeur sera automatiquement synchronisée avec tous les clients. Notez que sync est un paramètre facultatif disponible uniquement sur le coté Serveur.

note

Client.SetValue() et Server.SetValue() n'auront pas le dernier paramètre sync. En effet, la valeur n'existera que sur le côté que vous définissez.

GetValue

Après avoir été défini, vous pouvez accéder à n'importe quelle valeur de n'importe quelle entité en utilisant :GetValue(key) sur n'importe quelle entité que vous voulez. Si vous définissez la valeur à synchroniser sur les Clients, vous serez en mesure d'obtenir les valeurs du côté Client également. Vous pouvez passer un paramètre aditionnel fallback qui sera retourné si la clé n'existe pas!

-- Obtient la valeur 'my_value' ou retourne '0' si aucune valeur n'est définie
locale my_value = my_player:GetValue("my_value", 0)
attention

Soyez conscient que le stockage des entités elles-mêmes n'annuleront pas la valeur si les entités sont détruites, c'est donc une bonne pratique de valider les valeurs if avec :IsValid(): IsValid() après les avoir récupérées.