void SendScoreRaw(string ID, ScoreCompare playerScore, Action <ScoreCompare[]> onSuccess, Action <PlayFabError> errorAction) { var item = new StatisticUpdate(); item.Value = playerScore.value; item.StatisticName = "Worldwide Scores"; var request = new UpdatePlayerStatisticsRequest(); request.Statistics = new List <StatisticUpdate>() { item }; PlayFabClientAPI.UpdatePlayerStatistics(request, result => { var r = new PlayFab.ServerModels.UpdateUserDataRequest(); r.Permission = PlayFab.ServerModels.UserDataPermission.Public; r.PlayFabId = uniqueID; r.Data = new Dictionary <string, string>() { { "SkinID", ((int)playerScore.usedSkin).ToString() }, { "Location", playerScore.location } }; PlayFabServerAPI.UpdateUserData(r, sucess => GetScores(onSuccess, errorAction), failure => { Debug.Log("Fail: " + failure.ErrorMessage); }); }, failure => { }); }
void GetScores(Action <ScoreCompare[]> onSuccess, Action <PlayFabError> errorAction) { var request = new GetLeaderboardRequest(); request.MaxResultsCount = 100; request.StatisticName = "Worldwide Scores"; request.ProfileConstraints = new PlayerProfileViewConstraints(); request.ProfileConstraints.ShowLocations = true; request.ProfileConstraints.ShowDisplayName = true; var list = new List <ScoreCompare>(); var checks = new List <bool>(); ScoreCompare score; PlayFab.ClientModels.LocationModel location; PlayFabClientAPI.GetLeaderboard(request, (GetLeaderboardResult result) => { int scoreCount = result.Leaderboard.Count; for (int i = 0; i < scoreCount; i++) { score = new ScoreCompare(result.Leaderboard[i].StatValue); score.name = result.Leaderboard[i].DisplayName; score.ID = result.Leaderboard[i].PlayFabId; location = result.Leaderboard[i].Profile.Locations.Last(); score.location = useCityAsLocation ? location.City.ToString() : location.CountryCode.ToString(); list.Add(score); checks.Add(false); string name = score.name; int index = i; var infoRequest = new GetUserDataRequest(); infoRequest.PlayFabId = result.Leaderboard[i].PlayFabId; PlayFabClientAPI.GetUserData(infoRequest, infoResult => { if (infoResult.Data.ContainsKey("SkinID") && infoResult.Data.ContainsKey("Location")) { var value = infoResult.Data["SkinID"]; list[index].usedSkin = (CatSkin)(int.Parse(value.Value)); } else { var r = new PlayFab.ServerModels.UpdateUserDataRequest(); r.Permission = PlayFab.ServerModels.UserDataPermission.Public; r.Data = new Dictionary <string, string>() { { "SkinID", "0" }, { "Location", "Brazil" } }; r.PlayFabId = infoRequest.PlayFabId; PlayFabServerAPI.UpdateUserData(r, sucess => { Debug.Log("SUCCESS"); }, failure => { Debug.Log("FAILED"); }); } checks[index] = true; if (!checks.Contains(false)) { Debug.Log("List returned"); var values = list.ToArray(); onSuccess(values); } }, failure => Debug.Log("Get content fail: " + failure.ErrorMessage)); } }, errorCallback => Debug.Log("Failed to get leaderboard")); }