플레이어 관리
21

현재 플레이어 얻기

아래에서 현재 사용자를 가져오는 방법을 보여 줍니다. 이 쿼리는 클라이언트 측에서 더 관련성이 높기 때문에 TrustedPlatformClient가 플레이어 액세스 토큰으로 인증될 때만 작동합니다. 서버에서 플레이어를 가져와야 하는 경우 플레이어의 ID 나 이름을 명시적으로 정의할 수 있습니다.

GD스크립트
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()

플레이어 ID 얻기

아래 예제에서는 사용자 쿼리에 플레이어 ID를 포함하는 방법을 보여 줍니다.

GD스크립트
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

플레이어 연결

이더리움 주소를 SDK의 ID에 명시적으로 연결할 수 있지만 Enjin Wallet Android 또는 iOS 앱 내에서 연결할 수 있도록 코드 qr를 연결하거나 플레이어에 코드 qr를 연결하는 것이 좋습니다. 아래에서 연결 코드 및 qr URL을 얻는 방법을 보여 줍니다.

GD스크립트
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

플레이어 밸런스 얻기

플레이어의 균형을 맞추는 방법에는 여러 가지가 있습니다. 이더리움 주소의 잔액을 명시적으로 가져오는 것이 좋습니다. 이렇게 하면 응답에서 반환되는 데이터의 범위를 다른 접근 방식에 비해 제한할 수 있습니다. 데모 를 위해 플레이어를 가져올 때 잔액을 포함하는 방법과 특정 이더리움 주소에 대한 지갑을 가져오는 방법을 보여줍니다.

GD스크립트
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])

이전
다음
이 페이지에서