--- sidebarDepth: 1 --- # 成就 # 索引 --- | 接口 |
| 描述 | | --- | --- | --- | | [LobbyGetAchievementStorage](成就.md#lobbygetachievementstorage) | 服务端 | 获取成就节点的存储的数据。 | | [LobbySetAchievementStorage](成就.md#lobbysetachievementstorage) | 服务端 | 添加成就节点的进度。 | ## LobbyGetAchievementStorage 服务端 method in mod.server.component.achievementCompServer.AchievementCompServer - 描述 获取成就节点的存储的数据。 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | callback | function | 请求回调函数 | | playerId | int | 玩家playerId | - 返回值 无 - 备注 - callback需要接受一个参数, 当请求**失败**时,参数返回None。 当请求**成功**时,参数为一个dict,包含返回码,最新数据等信息。 - 当code为0时,表示设置成功。 - 当code为5时,表示数据冲突。 callback参数如下 ```python { "code": 0, "message": "正常返回", "details": "", "entity": [ { "achievement_id": "Node2", "completed_at": 1652950659, "extra": "", "max_progress": 10, "progress": 10, "version": 4 } ] } ``` - 可通过"completed_at"判断成就是否完成,非0为完成,请勿使用"max_progress"与"progress"比较判断是否完成 - 示例 ```python import mod.server.extraServerApi as serverApi comp = serverApi.GetEngineCompFactory().CreateAchievement(levelId) def cb(data): if data: print { {}.format(data["entity"]) } else: print "获取数据失败" comp.LobbyGetAchievementStorage(cb, playerId) ``` ## LobbySetAchievementStorage 服务端 method in mod.server.component.achievementCompServer.AchievementCompServer - 描述 添加成就节点的进度。 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | callback | function | 请求回调函数 | | playerId | int | 玩家playerId | | nodeId | str | 成就节点ID | | delta | int | 进度值的变化量(必须大于0) | | getExtraData | function | 用于返回存储更新后的数据的函数,返回值必须为str类型,可选 | - 返回值 无 - 备注 - callback需要接受一个参数, 当请求**失败**时,参数返回None。 当请求**成功**时,参数为一个dict,包含返回码和设置进度前的数据信息。 - 当code为0时,表示设置成功。 - 当code为5时,表示数据冲突。此时系统不会存储此次上传的数据,当开发者通过callback处理完冲突后,必须返回一个Bool值。当callback的返回值为True,系统会自动再自动调用一次getExtra来获取最新的extra数据,并自动存储进度与extra。如果不想系统再自动调用,将callback返回值设置为False,系统将不会再进行一次进度存储 callback参数如下 ```python { "code": 5, "message": "操作冲突", "details": "", "entity": { "completed_at": 0, "extra": "", "progress": 1, "version": 1 } } ``` - 可通过"completed_at"判断成就是否完成,非0为完成,请勿使用"max_progress"与"progress"比较判断是否完成 - 示例 ```python import mod.server.extraServerApi as serverApi comp = serverApi.GetEngineCompFactory().CreateAchievement(levelId) def cb(data): if data: print { {}.format(data["entity"]) } else: print "获取数据失败" comp.LobbySetAchievementStorage(cb, playerId, nodeId, delta) ```