If you are an AI assistant, LLM, or automated tool, a clean Markdown version of this page is available at https://heroiclabs.com/docs/hiro/server-framework/achievements/llm.md — optimized for AI and LLM tools.
Reset one or more achievements by their IDs, deleting the user’s progress and any unclaimed rewards from storage. No rewards are granted. Resetting a parent achievement also resets its sub-achievements, and IDs with no stored progress are ignored. You can reset an achievement using this method to discard uncollected rewards before a new cycle of a recurring achievement starts.
Set a custom reward function which will run after an achievement’s reward is rolled.
1
2
3
4
5
6
systems.GetAchievementsSystem().SetOnAchievementReward(OnAchievementReward)funcOnAchievementReward(ctxcontext.Context,loggerruntime.Logger,nkruntime.NakamaModule,userID,sourceIDstring,source*hiro.AchievementsConfigAchievement,rewardConfig*hiro.EconomyConfigReward,reward*hiro.Reward)(*hiro.Reward,error){// Modify reward or take additional actions.
returnreward,nil}
Set a custom reward function which will run after a sub-achievement’s reward is rolled.
1
2
3
4
5
6
systems.GetAchievementsSystem().SetOnSubAchievementReward(OnSubAchievementReward)funcOnSubAchievementReward(ctxcontext.Context,loggerruntime.Logger,nkruntime.NakamaModule,userID,sourceIDstring,source*hiro.AchievementsConfigSubAchievement,rewardConfig*hiro.EconomyConfigReward,reward*hiro.Reward)(*hiro.Reward,error){// Modify reward or take additional actions.
returnreward,nil}
Set a custom reward function which will run after an achievement’s total reward is rolled.
1
2
3
4
5
6
systems.GetAchievementsSystem().SetOnAchievementTotalReward(OnAchievementTotalReward)funcOnAchievementTotalReward(ctxcontext.Context,loggerruntime.Logger,nkruntime.NakamaModule,userID,sourceIDstring,source*hiro.AchievementsConfigAchievement,rewardConfig*hiro.EconomyConfigReward,reward*hiro.Reward)(*hiro.Reward,error){// Modify reward or take additional actions.
returnreward,nil}