Saltar al contenido principal

API

El sistema Security Keypad proporciona una API pública que te permite verificar roles y permisos de jugadores desde tus propios scripts Udon.

Entendiendo las Etiquetas de Rol

El sistema Security Keypad usa dos tipos de etiquetas de rol:

Roles Explícitos: Etiquetas de roles en los que el jugador ha iniciado sesión explícitamente, ya sea ingresando un código, autologin u otorgado manualmente por cualquier sistema.

Roles Implícitos: Etiquetas otorgadas porque has sido explícitamente asignado a uno de sus padres. Por ejemplo, si tienes el rol VIP+ asignado y dicho rol tiene VIP como rol hijo, recibirás la etiqueta implícita VIP.

Estas 2 listas se combinan en una sola lista Roles que está sincronizada con usuarios remotos. Esta división se usa internamente para determinar si necesitas cerrar sesión de un rol, y también puede ser usada por sistemas externos para realizar todo tipo de verificaciones dependiendo de tus necesidades.

Métodos de API Pública

HasRole

El método HasRole verifica si un jugador tiene uno o más roles. Este método tiene múltiples sobrecargas para proporcionar flexibilidad en cómo verificas roles.

Retorna:

  • true si se cumple la condición del rol
  • false en caso contrario

Ejemplos:

public SecurityKeypad keypad;
bool isAdmin = false;

void Start(){
//Verificar si la referencia del keypad es válida
if(!Utilities.IsValid(keypad)) return;

//Verificar si el jugador local es admin
isAdmin = keypad.HasRole("Admin")
}

HasRole(KeyPadRol role)

Verifica si el jugador local ha iniciado sesión en un rol específico.

Firma:

public bool HasRole(KeyPadRol role)

Parámetros:

  • role - El componente KeyPadRol a verificar

HasRole(KeyPadRol[] roles, bool ImplicitOnly, bool All)

Verifica si el jugador local tiene uno o más roles de un array de componentes KeyPadRol.

Firma:

public bool HasRole(KeyPadRol[] roles, bool ImplicitOnly = false, bool All = false)

Parámetros:

  • roles - Array de componentes KeyPadRol a verificar
  • ImplicitOnly - Si es true, solo verifica etiquetas de rol implícitas (por defecto: false)
  • All - Si es true, requiere que todos los roles coincidan; si es false, requiere al menos uno (por defecto: false)

HasRole(string role, bool ImplicitOnly)

Verifica si el jugador local tiene un rol por nombre de rol.

Firma:

public bool HasRole(string role, bool ImplicitOnly = false)

Parámetros:

  • role - El nombre del rol o etiqueta a verificar
  • ImplicitOnly - Si es true, solo verifica etiquetas de rol implícitas (por defecto: false)

HasRole(VRCPlayerApi player, string role, bool ImplicitOnly)

Verifica si un jugador específico tiene un rol por nombre de rol.

Firma:

public bool HasRole(VRCPlayerApi player, string role, bool ImplicitOnly = false)

Parámetros:

  • player - El jugador a verificar
  • role - El nombre del rol o etiqueta a verificar
  • ImplicitOnly - Si es true, solo verifica etiquetas de rol implícitas (por defecto: false)

HasRole(string[] roles, bool ImplicitOnly, bool All)

Verifica si el jugador local tiene uno o más roles de un array de nombres/etiquetas de rol.

Firma:

public bool HasRole(string[] roles, bool ImplicitOnly = false, bool All = false)

Parámetros:

  • roles - Array de nombres/etiquetas de rol a verificar
  • ImplicitOnly - Si es true, solo verifica etiquetas de rol implícitas (por defecto: false)
  • All - Si es true, requiere que todos los roles coincidan; si es false, requiere al menos uno (por defecto: false)

HasRole(VRCPlayerApi player, string[] roles, bool ImplicitOnly, bool All)

Verifica si un jugador específico tiene uno o más roles de un array de nombres/etiquetas de rol.

Firma:

public bool HasRole(VRCPlayerApi player, string[] roles, bool ImplicitOnly = false, bool All = false)

Parámetros:

  • player - El jugador a verificar
  • roles - Array de nombres/etiquetas de rol a verificar
  • ImplicitOnly - Si es true, solo verifica etiquetas de rol implícitas (por defecto: false)
  • All - Si es true, requiere que todos los roles coincidan; si es false, requiere al menos uno (por defecto: false)

GetRoles

Los métodos GetRoles recuperan las etiquetas de rol asignadas a un jugador. Estos métodos tienen múltiples sobrecargas para diferentes casos de uso.

Retorna:

  • DataList conteniendo solo etiquetas de rol explícitas para el jugador
  • DataList vacío si el sistema no está inicializado o no se encuentran datos del jugador

GetRoles()

Obtiene todas las etiquetas de rol asignadas al jugador local.

Firma:

public DataList GetRoles()

GetRoles(VRCPlayerApi player)

Obtiene todas las etiquetas de rol asignadas a un jugador específico.

Firma:

public DataList GetRoles(VRCPlayerApi player)

Parámetros:

  • player - El jugador del cual obtener roles

Comportamiento:

  • Retorna lista vacía si se llama antes de la inicialización (registra advertencia)
  • Retorna lista vacía si no se encuentran datos del jugador

GetExplicitRoles()

Obtiene solo las etiquetas de rol explícitas asignadas al jugador local (roles en los que iniciaron sesión).

Firma:

public DataList GetExplicitRoles()

GetExplicitRoles(VRCPlayerApi player)

Obtiene solo las etiquetas de rol explícitas asignadas a un jugador específico.

Firma:

public DataList GetExplicitRoles(VRCPlayerApi player)

Parámetros:

  • player - El jugador del cual obtener roles explícitos

Comportamiento:

  • Retorna lista vacía si se llama antes de la inicialización (registra advertencia)
  • Retorna lista vacía si no se encuentran datos del jugador
  • Solo incluye roles en los que el jugador inició sesión activamente, no roles pasivos/automáticos

GetImplicitRoles()

Obtiene solo las etiquetas de rol implícitas asignadas al jugador local (roles asignados automáticamente).

Firma:

public DataList GetImplicitRoles()

GetImplicitRoles(VRCPlayerApi player)

Obtiene solo las etiquetas de rol implícitas asignadas a un jugador específico.

Firma:

public DataList GetImplicitRoles(VRCPlayerApi player)

Parámetros:

  • player - El jugador del cual obtener roles implícitos

Comportamiento:

  • Retorna lista vacía si se llama antes de la inicialización (registra advertencia)
  • Retorna lista vacía si no se encuentran datos del jugador
  • Solo incluye roles asignados automáticamente, no roles que requieren inicio de sesión explícito

GetHighestRole

Los métodos GetHighestRole recuperan el rol de mayor prioridad asignado a un jugador basándose en la jerarquía de roles.

nota

El rol más alto se determina por el orden en la jerarquía en que los roles están colocados, de arriba hacia abajo.

Retorna:

  • Componente KeyPadRol del rol de mayor prioridad
  • null si el jugador no tiene roles o el sistema no está inicializado

Ejemplo:

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);

// Acceder a propiedades del rol
string roleName = highestRole.rolName;
Color roleColor = highestRole.color;
}
else
{
Debug.Log(targetPlayer.displayName + " has no roles");
}
}

GetHighestRole()

Obtiene el rol más alto asignado al jugador local.

Firma:

public KeyPadRol GetHighestRole()

GetHighestRole(VRCPlayerApi player)

Obtiene el rol más alto asignado a un jugador específico.

Firma:

public KeyPadRol GetHighestRole(VRCPlayerApi player)

Parámetros:

  • player - El jugador del cual obtener el rol más alto

GetRoleByName

Obtiene un componente KeyPadRol por su nombre de rol.

Firma:

public KeyPadRol GetRoleByName(string roleName)

Parámetros:

  • roleName - El nombre del rol a recuperar

Retorna:

  • Componente KeyPadRol con nombre de rol coincidente
  • null si no se encuentra el rol o el sistema no está inicializado

Comportamiento:

  • Retorna null si se llama antes de la inicialización (registra advertencia)
  • Busca a través de todos los objetos de rol para encontrar un nombre coincidente
  • Coincidencia de nombre sensible a mayúsculas

Ejemplo:

public UdonBehaviour securityKeypad;

void GetSpecificRole()
{
KeyPadRol adminRole = securityKeypad.GetRoleByName("admin");

if (adminRole != null)
{
Debug.Log("Found admin role!");
Debug.Log("Admin color: " + adminRole.color);

// Verificar si el jugador local tiene este rol
bool isAdmin = securityKeypad.HasRole(adminRole);
Debug.Log("I am admin: " + isAdmin);
}
else
{
Debug.Log("Admin role not found in keypad configuration");
}
}

GetRoleColor

Los métodos GetRoleColor recuperan el color del rol más alto de un jugador.

Retorna:

  • Color del rol de mayor prioridad.
  • Color.white si el jugador no tiene roles, el sistema no está inicializado, o no se encuentran datos del jugador.

Ejemplo:

public UdonBehaviour securityKeypad;
public MeshRenderer playerNameplate;

void UpdateMyNameplateColor()
{
Color myRoleColor = securityKeypad.GetRoleColor();

// Aplicar color del rol al letrero de nombre
playerNameplate.material.color = myRoleColor;

Debug.Log("My role color is: " + myRoleColor);
}

GetRoleColor()

Obtiene el color del rol más alto asignado al jugador local.

Firma:

public Color GetRoleColor()

GetRoleColor(VRCPlayerApi player)

Obtiene el color del rol más alto asignado a un jugador específico.

Firma:

public Color GetRoleColor(VRCPlayerApi player)

Parámetros:

  • player - El jugador del cual obtener el color del rol