I need to find a way to grant rewards after a weekly tournament. The reset frequency for the leaderboard is set to manually. I have tried to grant the rewards with scheduled tasks after the weekly tournament finished. My scheduled task calls the CloudScript function GrantingLeaderboardRewardsToPlayer. In this function, I sort the current leaderboard. I need to sort the leaderboard in CloudScript because I use two different statistics to sort the current leaderboard.
But I always get the error message "Title exceeded limit":
"EventName": "title_exceeded_limit", "LimitId": "CloudScript:ScriptExecutionAPIRequestsIssued", "LimitDisplayName": "Number of PlayFab API requests made from a CloudScript function called by the ExecuteCloudScript API.", "Unit": "Count", "LimitValue": 25, "Value": 26,
In my CloudScript function, I grant the rewards to the best 100 players in the leaderboard. But I cannot grant the rewards to the 100 players because I get the error message "Title exceeded limit".
handlers.GrantingLeaderboardRewardsToPlayer = function (args, context) { // sort the leaderboard // Grant the rewards to the best 100 players: var rewardsrange; for (var j = 0; j <= sortedplayerslist.length - 1; j++) { var playerrank = Number(j) + 1; if (Number(playerrank) == 1) rewardsrange = 1; if (Number(playerrank) == 2) rewardsrange = 2; if (Number(playerrank) == 3) rewardsrange = 3; if ((Number(playerrank) > 3) && (Number(playerrank) <= 10)) rewardsrange = 4; if ((Number(playerrank) > 10) && (Number(playerrank) <= 20)) rewardsrange = 5; if ((Number(playerrank) > 20) && (Number(playerrank) <= 50)) rewardsrange = 6; if ((Number(playerrank) > 50) && (Number(playerrank) <= 100)) rewardsrange = 7; switch (Number(rewardsrange)) { case 1: var updatecurrencysucc = false; var updatecurrency = server.AddUserVirtualCurrency({PlayFabID: sortedplayerslist[j].Playfabid, VirtualCurrency: "GO", Amount: 1000}); if ((updatecurrency != null) && (updatecurrency.Error == null)) updatecurrencysucc = true; else updatecurrencysucc = false; break; case 2: var updatecurrencysucc = false; var updatecurrency = server.AddUserVirtualCurrency({PlayFabID: sortedplayerslist[j].Playfabid, VirtualCurrency: "GO", Amount: 800}); if ((updatecurrency != null) && (updatecurrency.Error == null)) updatecurrencysucc = true; else updatecurrencysucc = false; break; case 3: var updatecurrencysucc = false; var updatecurrency = server.AddUserVirtualCurrency({PlayFabID: sortedplayerslist[j].Playfabid, VirtualCurrency: "GO", Amount: 500}); if ((updatecurrency != null) && (updatecurrency.Error == null)) updatecurrencysucc = true; else updatecurrencysucc = false; break; case 4: var updatecurrencysucc = false; var updatecurrency = server.AddUserVirtualCurrency({PlayFabID: sortedplayerslist[j].Playfabid, VirtualCurrency: "GO", Amount: 350}); if ((updatecurrency != null) && (updatecurrency.Error == null)) updatecurrencysucc = true; else updatecurrencysucc = false; break; case 5: var updatecurrencysucc = false; var updatecurrency = server.AddUserVirtualCurrency({PlayFabID: sortedplayerslist[j].Playfabid, VirtualCurrency: "GO", Amount: 200}); if ((updatecurrency != null) && (updatecurrency.Error == null)) updatecurrencysucc = true; else updatecurrencysucc = false; break; case 6: var updatecurrencysucc = false; var updatecurrency = server.AddUserVirtualCurrency({PlayFabID: sortedplayerslist[j].Playfabid, VirtualCurrency: "GO", Amount: 100}); if ((updatecurrency != null) && (updatecurrency.Error == null)) updatecurrencysucc = true; else updatecurrencysucc = false; break; case 7: var updatecurrencysucc = false; var updatecurrency = server.AddUserVirtualCurrency({PlayFabID: sortedplayerslist[j].Playfabid, VirtualCurrency: "GO", Amount: 50}); if ((updatecurrency != null) && (updatecurrency.Error == null)) updatecurrencysucc = true; else updatecurrencysucc = false; break; } } // notify the player when he got a reward return; }
How can I grant the rewards to the 100 players when I cannot do more than 25 API requests in my CloudScript function?
In addition, I will use at least one more API call for each of the 100 players because I need to notify the players. That would already be 200 API calls only for granting and notifying the players.