Gestión de jugadores
21

Obtener el jugador actual

A continuación demostramos cómo buscar al usuario actual. Esto sólo funcionará cuando el TrustedPlatformClient esté autenticado con un token de acceso al reproductor, ya que esta consulta es más relevante en el lado del cliente. Si necesitas recuperar un reproductor en el servidor puedes definir explícitamente el id o el nombre del reproductor.

GDScript
var _client: TrustedPlatformClient
var _get_current_player_cb: EnjinCallback

func _init():
   _client = TrustedPlatformClient.new()
   _get_current_player_cb = EnjinCallback.new(self, "_get_current_player")

func get_current_player():
   _client.user_service().get_user(GetUserInput.new(), { "callback": _get_current_player_cb })

func _get_current_player(udata: Dictionary):
   var gql: EnjinGraphqlResponse = udata.gql
   if gql.has_errors() or not gql.has_result():
       return
   var user: Dictionary = gql.get_result()

Obtener las identidades de los jugadores

El siguiente ejemplo demuestra cómo incluir las identidades de los jugadores en la consulta del usuario:

GDScript
var _client: TrustedPlatformClient
var _get_player_identities_cb: EnjinCallback

func _init():
   _client = TrustedPlatformClient.new()
   _get_player_identities_cb = EnjinCallback.new(self, "_get_player_identities")

func get_player_identities(name: String):
   var input: GetUserInput = GetUserInput.new().name(name)
   input.user_i.with_identities(true)
   _client.user_service.get_user(input, { "callback": _get_player_identities_cb })

func _get_player_identities(udata: Dictionary):
   pass
   var gql: EnjinGraphqlResponse = udata.gql
   if gql.has_errors() or not gql.has_result():
       return
   var user: Dictionary = gql.get_result()
   var identities: Array = user.identities

Vincular un jugador

Aunque es posible vincular explícitamente una dirección ethereum a una identidad en el SDK, recomendamos mostrar el código de vinculación o el código qr de vinculación a los jugadores para que puedan vincularse desde la aplicación Enjin Wallet para Android o iOS. A continuación demostramos cómo obtener el código de vinculación y la url qr:

GDScript
var _client: TrustedPlatformClient
var _get_identity_code_cb: EnjinCallback

func _init():
   _client = TrustedPlatformClient.new()
   _get_player_identities_cb = EnjinCallback.new(self, "_get_player_identities")

func get_identity_code():
   var input: GetUserInput = GetUserInput.new()
   input.user_i.with_identities(true)
   input.identity_i.with_linking_code(true)
   input.identity_i.with_linking_code_qr(true)
   _client.user_service.get_user(input, { "callback": _get_identity_code_cb })

func _get_identity_code_cb(udata: Dictionary):
   pass
   var gql: EnjinGraphqlResponse = udata.gql
   if gql.has_errors() or not gql.has_result():
       return
   var user: Dictionary = gql.get_result()
   var identity: Dictionary = user.identities[0]
   var text_code = identity.linkingCode
   var qr_code_url = identity.linkingCodeQr

Obtener el equilibrio de los jugadores

Hay varias maneras de conseguir el equilibrio de los jugadores. Recomendamos encarecidamente usar el servicio de billetera para obtener explícitamente balances para una dirección de etéreo. Haciendo esto se puede limitar el alcance de los datos devueltos en la respuesta en comparación con otros enfoques. A modo de demostración, mostraremos cómo incluir saldos cuando se busca un jugador, así como cómo buscar la billetera para una dirección etérea específica:

GDScript
var _client: TrustedPlatformClient
var _get_balances_cb: EnjinCallback
var _get_wallet_cb: EnjinCallback

func _init():
   _client = TrustedPlatformClient.new()
   _get_balances_cb = EnjinCallback.new(self, "_get_balances")
   _get_wallet_cb = EnjinCallback.new(self, "_get_wallet")

func get_balances():
   var input: GetUserInput = GetUserInput.new()
   input.user_i.with_identities(true)
   input.identity_i.with_wallet(true)
   input.wallet_input.with_balances(true)
   _client.user_service.get_user(input, { "callback": _get_balances_cb })

func get_wallet(eth_addr: String):
   var input: GetWalletInput = GetWalletInput.new().eth_addr(eth_addr)
   input.wallet_i.with_balances(true)
   _client.wallet_service.get_wallet(input, { "callback": _get_wallet_cb })

func _get_balances_cb(udata: Dictionary):
   pass
   var gql: EnjinGraphqlResponse = udata.gql
   if gql.has_errors() or not gql.has_result():
       return
   var user: Dictionary = gql.get_result()
   var identity: Dictionary = user.identities[0]
   var wallet: Dictionary = identity.wallet
   var balances: Array = wallet.balances
   for balance in balances:
       print("id: %s, index: %s, amount: %s" % [balance.id, balance.index, balance.value])

func _get_wallet_cb(udata: Dictionary):
   pass
   var gql: EnjinGraphqlResponse = udata.gql
   if gql.has_errors() or not gql.has_result():
       return
   var user: Dictionary = gql.get_result()
   var identity: Dictionary = user.identities[0]
   var wallet: Dictionary = identity.wallet
   var balances: Array = wallet.balances
   for balance in balances:
       print("id: %s, index: %s, amount: %s" % [balance.id, balance.index, balance.value])

Anterior
siguiente
En esta página