Passer au contenu principal
Version: dernière - a1.19.x ⚖️

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 Actor on peut trouver les définitions des méthodes :SetValue() et :GetValue(). 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é. Example:

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() won't have the last parameter sync. As the value will only exist on the side (player) you are setting it.

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.