I'm having trouble with a little cloudscript. I'm trying to get a leaderboard for a given stat, and for each result I want to get more data from user data like country, lvl etc.. But I'm stuck, I'm a total javascript noob, I hate it, and the fact that I have to upload every revision to test it doesn't make it more pleasant. And the docs on cloudscript are very lacking. How do I iterate through the friggin' leaderboard data, then create a new array with leaderboard values and additional values from user data? Here's my non functional code:
handlers.getLeaderboardsWithPlayerData = function (args) {
//statName, int startPos, int maxResults
var statName = args.statName;
var startPos = args.startPos;
var maxResults = args.maxResults;
//get leaderboards
//for each player id get details
var leaderboard = server.GetLeaderboard({
StatisticName: statName,
StartPosition: startPos,
MaxResultsCount: maxResults
});
var ret = {};
var val;
for(var key in leaderboard["leaderboard"]) {
val = leaderboard["leaderboard"][key];
log.debug("Value" + val.toString());
}
//var l = leaderboard.length;
for(i=0; i<=leaderboard.length - 1; i++){
var playerId = leaderboard[i].Data["PlayFabId"];
ret["PlayFabID"] = playerId;
var playerData = server.GetUserData({PlayFabId : playerId, Keys : ["xp", "cash", "lvl", "country_code"]});
ret["PlayFabID"] = playerId;
ret["DisplayName"] = leaderboard.Data["DisplayName"];
ret["StatValue"] = leaderboard.Data["StatValue"];
ret["Position"] = leaderboard.Data["Position"];
//ret["Data"] = playerData.Data;
}
log.debug("Return player data " + val.toString());
return { val: val };
}