---
slug: api
title: API
description: Pour les Développeurs
---
Le système Security Keypad fournit une API publique qui vous permet de vérifier les rôles et permissions des joueurs depuis vos propres scripts Udon.
## Comprendre les Étiquettes de Rôle
Le système Security Keypad utilise deux types d'étiquettes de rôle :
**Rôles Explicites** :
Étiquettes de rôles auxquels le joueur s'est connecté explicitement, soit en entrant un code, par autologin ou accordé manuellement par n'importe quel système.
**Rôles Implicites :**
Étiquettes accordées parce que vous avez été explicitement assigné à l'un de leurs parents. Par exemple, si vous avez le rôle VIP+ assigné et que ce rôle a VIP comme rôle enfant, vous recevrez l'étiquette implicite VIP.
Ces 2 listes sont combinées en une seule liste **Roles** qui est synchronisée avec les utilisateurs distants. Cette division est utilisée en interne pour déterminer si vous devez vous déconnecter d'un rôle, et peut également être utilisée par des systèmes externes pour effectuer toutes sortes de vérifications selon vos besoins.
## Méthodes d'API Publique
### HasRole
La méthode `HasRole` vérifie si un joueur a un ou plusieurs rôles. Cette méthode a plusieurs surcharges pour fournir de la flexibilité dans la façon dont vous vérifiez les rôles.
**Retourne :**
- `true` si la condition du rôle est remplie
- `false` sinon
**Exemples :**
```csharp
public SecurityKeypad keypad;
bool isAdmin = false;
void Start(){
//Vérifier si la référence du keypad est valide
if(!Utilities.IsValid(keypad)) return;
//Vérifier si le joueur local est admin
isAdmin = keypad.HasRole("Admin")
}
```
---
#### HasRole(KeyPadRol role)
Vérifie si le joueur local s'est connecté à un rôle spécifique.
**Signature :**
```csharp
public bool HasRole(KeyPadRol role)
```
**Paramètres :**
- `role` - Le composant KeyPadRol à vérifier
---
#### HasRole(KeyPadRol[] roles, bool ImplicitOnly, bool All)
Vérifie si le joueur local a un ou plusieurs rôles d'un tableau de composants KeyPadRol.
**Signature :**
```csharp
public bool HasRole(KeyPadRol[] roles, bool ImplicitOnly = false, bool All = false)
```
**Paramètres :**
- `roles` - Tableau de composants KeyPadRol à vérifier
- `ImplicitOnly` - Si `true`, vérifie uniquement les étiquettes de rôle implicites (par défaut : `false`)
- `All` - Si `true`, nécessite que tous les rôles correspondent ; si `false`, nécessite au moins un (par défaut : `false`)
---
#### HasRole(string role, bool ImplicitOnly)
Vérifie si le joueur local a un rôle par nom de rôle.
**Signature :**
```csharp
public bool HasRole(string role, bool ImplicitOnly = false)
```
**Paramètres :**
- `role` - Le nom du rôle ou l'étiquette à vérifier
- `ImplicitOnly` - Si `true`, vérifie uniquement les étiquettes de rôle implicites (par défaut : `false`)
---
#### HasRole(VRCPlayerApi player, string role, bool ImplicitOnly)
Vérifie si un joueur spécifique a un rôle par nom de rôle.
**Signature :**
```csharp
public bool HasRole(VRCPlayerApi player, string role, bool ImplicitOnly = false)
```
**Paramètres :**
- `player` - Le joueur à vérifier
- `role` - Le nom du rôle ou l'étiquette à vérifier
- `ImplicitOnly` - Si `true`, vérifie uniquement les étiquettes de rôle implicites (par défaut : `false`)
---
#### HasRole(string[] roles, bool ImplicitOnly, bool All)
Vérifie si le joueur local a un ou plusieurs rôles d'un tableau de noms/étiquettes de rôle.
**Signature :**
```csharp
public bool HasRole(string[] roles, bool ImplicitOnly = false, bool All = false)
```
**Paramètres :**
- `roles` - Tableau de noms/étiquettes de rôle à vérifier
- `ImplicitOnly` - Si `true`, vérifie uniquement les étiquettes de rôle implicites (par défaut : `false`)
- `All` - Si `true`, nécessite que tous les rôles correspondent ; si `false`, nécessite au moins un (par défaut : `false`)
---
#### HasRole(VRCPlayerApi player, string[] roles, bool ImplicitOnly, bool All)
Vérifie si un joueur spécifique a un ou plusieurs rôles d'un tableau de noms/étiquettes de rôle.
**Signature :**
```csharp
public bool HasRole(VRCPlayerApi player, string[] roles, bool ImplicitOnly = false, bool All = false)
```
**Paramètres :**
- `player` - Le joueur à vérifier
- `roles` - Tableau de noms/étiquettes de rôle à vérifier
- `ImplicitOnly` - Si `true`, vérifie uniquement les étiquettes de rôle implicites (par défaut : `false`)
- `All` - Si `true`, nécessite que tous les rôles correspondent ; si `false`, nécessite au moins un (par défaut : `false`)
---
### GetRoles
Les méthodes `GetRoles` récupèrent les étiquettes de rôle attribuées à un joueur. Ces méthodes ont plusieurs surcharges pour différents cas d'usage.
**Retourne :**
- `DataList` contenant uniquement les étiquettes de rôle explicites pour le joueur
- `DataList` vide si le système n'est pas initialisé ou si aucune donnée de joueur n'est trouvée
---
#### GetRoles()
Obtient toutes les étiquettes de rôle attribuées au joueur local.
**Signature :**
```csharp
public DataList GetRoles()
```
---
#### GetRoles(VRCPlayerApi player)
Obtient toutes les étiquettes de rôle attribuées à un joueur spécifique.
**Signature :**
```csharp
public DataList GetRoles(VRCPlayerApi player)
```
**Paramètres :**
- `player` - Le joueur dont obtenir les rôles
**Comportement :**
- Retourne une liste vide si appelé avant l'initialisation (enregistre un avertissement)
- Retourne une liste vide si aucune donnée de joueur n'est trouvée
---
#### GetExplicitRoles()
Obtient uniquement les étiquettes de rôle explicites attribuées au joueur local (rôles auxquels ils se sont connectés).
**Signature :**
```csharp
public DataList GetExplicitRoles()
```
---
#### GetExplicitRoles(VRCPlayerApi player)
Obtient uniquement les étiquettes de rôle explicites attribuées à un joueur spécifique.
**Signature :**
```csharp
public DataList GetExplicitRoles(VRCPlayerApi player)
```
**Paramètres :**
- `player` - Le joueur dont obtenir les rôles explicites
**Comportement :**
- Retourne une liste vide si appelé avant l'initialisation (enregistre un avertissement)
- Retourne une liste vide si aucune donnée de joueur n'est trouvée
- Inclut uniquement les rôles auxquels le joueur s'est activement connecté, pas les rôles passifs/automatiques
---
#### GetImplicitRoles()
Obtient uniquement les étiquettes de rôle implicites attribuées au joueur local (rôles attribués automatiquement).
**Signature :**
```csharp
public DataList GetImplicitRoles()
```
---
#### GetImplicitRoles(VRCPlayerApi player)
Obtient uniquement les étiquettes de rôle implicites attribuées à un joueur spécifique.
**Signature :**
```csharp
public DataList GetImplicitRoles(VRCPlayerApi player)
```
**Paramètres :**
- `player` - Le joueur dont obtenir les rôles implicites
**Comportement :**
- Retourne une liste vide si appelé avant l'initialisation (enregistre un avertissement)
- Retourne une liste vide si aucune donnée de joueur n'est trouvée
- Inclut uniquement les rôles attribués automatiquement, pas les rôles nécessitant une connexion explicite
---
### GetHighestRole
Les méthodes `GetHighestRole` récupèrent le rôle de plus haute priorité attribué à un joueur en fonction de la hiérarchie des rôles.
:::note
Le rôle le plus élevé est déterminé par l'ordre dans la hiérarchie dans lequel les rôles sont placés, de haut en bas.
:::
**Retourne :**
- Composant `KeyPadRol` du rôle de plus haute priorité
- `null` si le joueur n'a pas de rôles ou si le système n'est pas initialisé
**Exemple :**
```csharp
public UdonBehaviour securityKeypad;
public void DisplayPlayerHighestRole(VRCPlayerApi targetPlayer)
{
KeyPadRol highestRole = securityKeypad.GetHighestRole(targetPlayer);
if (highestRole != null)
{
Debug.Log(targetPlayer.displayName + "'s highest role is: " + highestRole.rolName);
// Accéder aux propriétés du rôle
string roleName = highestRole.rolName;
Color roleColor = highestRole.color;
}
else
{
Debug.Log(targetPlayer.displayName + " has no roles");
}
}
```
---
#### GetHighestRole()
Obtient le rôle le plus élevé attribué au joueur local.
**Signature :**
```csharp
public KeyPadRol GetHighestRole()
```
---
#### GetHighestRole(VRCPlayerApi player)
Obtient le rôle le plus élevé attribué à un joueur spécifique.
**Signature :**
```csharp
public KeyPadRol GetHighestRole(VRCPlayerApi player)
```
**Paramètres :**
- `player` - Le joueur dont obtenir le rôle le plus élevé
---
### GetRoleByName
Obtient un composant `KeyPadRol` par son nom de rôle.
**Signature :**
```csharp
public KeyPadRol GetRoleByName(string roleName)
```
**Paramètres :**
- `roleName` - Le nom du rôle à récupérer
**Retourne :**
- Composant `KeyPadRol` avec un nom de rôle correspondant
- `null` si le rôle n'est pas trouvé ou si le système n'est pas initialisé
**Comportement :**
- Retourne `null` si appelé avant l'initialisation (enregistre un avertissement)
- Recherche à travers tous les objets de rôle pour trouver un nom correspondant
- Correspondance de nom sensible à la casse
**Exemple :**
```csharp
public UdonBehaviour securityKeypad;
void GetSpecificRole()
{
KeyPadRol adminRole = securityKeypad.GetRoleByName("admin");
if (adminRole != null)
{
Debug.Log("Found admin role!");
Debug.Log("Admin color: " + adminRole.color);
// Vérifier si le joueur local a ce rôle
bool isAdmin = securityKeypad.HasRole(adminRole);
Debug.Log("I am admin: " + isAdmin);
}
else
{
Debug.Log("Admin role not found in keypad configuration");
}
}
```
---
### GetRoleColor
Les méthodes `GetRoleColor` récupèrent la couleur du rôle le plus élevé d'un joueur.
**Retourne :**
- `Color` du rôle de plus haute priorité.
- `Color.white` si le joueur n'a pas de rôles, si le système n'est pas initialisé, ou si aucune donnée de joueur n'est trouvée.
**Exemple :**
```csharp
public UdonBehaviour securityKeypad;
public MeshRenderer playerNameplate;
void UpdateMyNameplateColor()
{
Color myRoleColor = securityKeypad.GetRoleColor();
// Appliquer la couleur du rôle à la plaque signalétique
playerNameplate.material.color = myRoleColor;
Debug.Log("My role color is: " + myRoleColor);
}
```
---
#### GetRoleColor()
Obtient la couleur du rôle le plus élevé attribué au joueur local.
**Signature :**
```csharp
public Color GetRoleColor()
```
---
#### GetRoleColor(VRCPlayerApi player)
Obtient la couleur du rôle le plus élevé attribué à un joueur spécifique.
**Signature :**
```csharp
public Color GetRoleColor(VRCPlayerApi player)
```
**Paramètres :**
- `player` - Le joueur dont obtenir la couleur du rôle