public static async Task <dynamic> UnlockHighSkillContent( [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequestMessage req, ILogger log) { /* Create the function execution's context through the request */ var context = await FunctionPlayerPlayStreamContext <dynamic> .Create(req); var args = context.FunctionArgument; var playerStatUpdatedEvent = PlayFabSimpleJson.DeserializeObject <dynamic>(context.PlayStreamEventEnvelope.EventData); var request = new UpdateUserInternalDataRequest { PlayFabId = context.CurrentPlayerId, Data = new Dictionary <string, string> { { "HighSkillContent", "true" }, { "XPAtHighSkillUnlock", playerStatUpdatedEvent["StatisticValue"].ToString() } } }; /* Use the ApiSettings and AuthenticationContext provided to the function as context for making API calls. */ var serverApi = new PlayFabServerInstanceAPI(context.ApiSettings, context.AuthenticationContext); /* Execute the Server API request */ var updateUserDataResponse = await serverApi.UpdateUserInternalDataAsync(request); log.LogInformation($"Unlocked HighSkillContent for {context.PlayerProfile.DisplayName}"); return(new { profile = context.PlayerProfile }); }
/// <summary> /// Updates the publisher-specific custom data for the user which cannot be accessed by the client /// </summary> public static void UpdateUserPublisherInternalData(UpdateUserInternalDataRequest request, Action <UpdateUserDataResult> resultCallback, Action <PlayFabError> errorCallback, object customData = null) { if (PlayFabSettings.DeveloperSecretKey == null) { throw new Exception("Must have PlayFabSettings.DeveloperSecretKey set to call this method"); } PlayFabHttp.MakeApiCall("/Admin/UpdateUserPublisherInternalData", request, AuthType.DevSecretKey, resultCallback, errorCallback, customData); }
public static async Task <dynamic> LevelCompleted( [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequestMessage req, ILogger log) { /* Create the function execution's context through the request */ var context = await FunctionContext <dynamic> .Create(req); var args = context.FunctionArgument; var level = args["levelName"]; var monstersKilled = (int)args["monstersKilled"]; var updateUserInternalDataRequest = new UpdateUserInternalDataRequest { PlayFabId = context.CurrentPlayerId, Data = new Dictionary <string, string> { { "lastLevelCompleted", level } } }; /* Use the ApiSettings and AuthenticationContext provided to the function as context for making API calls. */ var serverApi = new PlayFabServerInstanceAPI(context.ApiSettings, context.AuthenticationContext); /* Execute the Server API request */ var updateUserDataResult = await serverApi.UpdateUserInternalDataAsync(updateUserInternalDataRequest); log.LogDebug($"Set lastLevelCompleted for player {context.CurrentPlayerId} to {level}"); var updateStatRequest = new UpdatePlayerStatisticsRequest { PlayFabId = context.CurrentPlayerId, Statistics = new List <StatisticUpdate> { new StatisticUpdate { StatisticName = "level_monster_kills", Value = monstersKilled } } }; /* Execute the server API request */ var updateStatResult = await serverApi.UpdatePlayerStatisticsAsync(updateStatRequest); log.LogDebug($"Updated level_monster_kills stat for player {context.CurrentPlayerId} to {monstersKilled}"); return(new { updateStatResult.Result }); }