Client
.NET/Unity C++/Unreal/Cocos2d-x JavaScript/Cocos2d-js Godot 3 Godot 4 Java/Android Defold cURL REST Swift Dart/Flutter
Server
TypeScript Go Lua
Event Leaderboards
# Read more about the Event Leaderboards system in Hiro here .
Functions
# ListEventLeaderboard
# Returns all available event leaderboards for the user. These can be filtered by categories, if these filter is empty it will include all event leaderboards.
1
2
3
4
5
6
7
userId := "userId"
categories := []
eventLeaderboard , err := systems . GetEventLeaderboardsSystem (). ListEventLeaderboard ( ctx , logger , nk , userId , categories )
if err != nil {
return err
}
GetEventLeaderboard
# Get a specified event leaderboard’s cohort for a user.
1
2
3
4
5
6
7
userId := "userId"
eventLeaderboardId := "eventLeaderboardId"
eventLeaderboard , err := systems . GetEventLeaderboardsSystem (). GetEventLeaderboard ( ctx , logger , nk , userId , eventLeaderboardId )
if err != nil {
return err
}
RollEventLeaderboard
# Place a user into a new cohort for the specified event leaderboard if possible.
1
2
3
4
5
6
7
8
9
userId := "userId"
eventLeaderboardId := "eventLeaderboardId"
tier := 1
matchmakerProperties := map [ string ] interface {}{}
eventLeaderboard , err := systems . GetEventLeaderboardsSystem (). RollEventLeaderboard ( ctx , logger , nk , userId , eventLeaderboardId , & tier , matchmakerProperties )
if err != nil {
return err
}
UpdateEventLeaderboard
# Update a user’s score in the specified event leaderboard, and returns the user’s updated cohort information.
1
2
3
4
5
6
7
8
9
10
11
userId := "userId"
username := "username"
eventLeaderboardId := "eventLeaderboardId"
var score int64 = 100
var subscore int64 = 10
metadata := map [ string ] interface {}{}
eventLeaderboard , err := systems . GetEventLeaderboardsSystem (). UpdateEventLeaderboard ( ctx , logger , nk , userId , username , eventLeaderboardId , score , subscore , metadata )
if err != nil {
return err
}
ClaimEventLeaderboard
# Claim a user’s reward for the given event leaderboard.
1
2
3
4
5
6
7
userId := "userId"
eventLeaderboardId := "eventLeaderboardId"
eventLeaderboard , err := systems . GetEventLeaderboardsSystem (). ClaimEventLeaderboard ( ctx , logger , nk , userId , eventLeaderboardId )
if err != nil {
return err
}
DebugFill
# Fill a user’s current cohort with dummy users for all remaining available slots.
1
2
3
4
5
6
7
8
userId := "userId"
eventLeaderboardId := "eventLeaderboardId"
targetCount := 100
eventLeaderboard , err := systems . GetEventLeaderboardsSystem (). DebugFill ( ctx , logger , nk , userId , eventLeaderboardId , targetCount )
if err != nil {
return err
}
DebugRandomScores
# Assign random scores to the participants of a user’s current cohort, except to the user themselves.
1
2
3
4
5
6
7
8
9
10
11
12
userId := "userId"
eventLeaderboardId := "eventLeaderboardId"
var scoreMin int64 = 1
var scoreMax int64 = 100
var subscoreMin int64 = 1
var subscoreMax int64 = 10
operator := int ( api . Operator_SET )
eventLeaderboard , err := systems . GetEventLeaderboardsSystem (). DebugRandomScores ( ctx , logger , nk , userId , eventLeaderboardId , scoreMin , scoreMax , subscoreMin , subscoreMax , & operator )
if err != nil {
return err
}
Hooks
# SetOnEventLeaderboardsReward
# Set a custom reward function which will run after an event leaderboard’s reward is rolled.
1
2
3
4
5
6
systems . GetEventLeaderboardsSystem (). SetOnEventLeaderboardsReward ( OnEventLeaderboardsReward )
func OnEventLeaderboardsReward ( ctx context . Context , logger runtime . Logger , nk runtime . NakamaModule , userID , sourceID string , source * hiro . EventLeaderboardsConfigLeaderboard , rewardConfig * hiro . EconomyConfigReward , reward * hiro . Reward ) ( * hiro . Reward , error ) {
// Modify reward or take additional actions.
return reward , nil
}
SetOnEventLeaderboardCohortSelection
# Set a custom function that can replace the cohort or opponent selection feature of event leaderboards.
1
2
3
4
5
6
systems . GetEventLeaderboardsSystem (). SetOnEventLeaderboardCohortSelection ( OnEventLeaderboardCohortSelection )
func OnEventLeaderboardCohortSelection ( ctx context . Context , logger runtime . Logger , nk runtime . NakamaModule , storageIndex string , eventID string , config * hiro . EventLeaderboardsConfigLeaderboard , userID string , tier int , matchmakerProperties map [ string ] interface {}) ( cohortID string , cohortUserIDs [] string , newCohort * hiro . EventLeaderboardCohortConfig , err error ) {
// Manually handle cohort/opponent selection.
return cohortID , cohortUserIDs , newCohort , nil
}