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.

In Base Entity page we can find the definitions of :SetValue() and :GetValue() methods. Also it is possible to store Values globally on Client and Server Static Classes with the same methods!

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 lui-même n'annulera pas la valeur si l'entité est détruite, c'est donc une bonne pratique de valider les valeurs if avec :IsValid() après les avoir récupérées.