--- sidebarDepth: 1 --- # 自定义成就系统 ## AddNodeProgress 服务端 method in mod.server.component.achievementCompServer.AchievementCompServer - 描述 增加对应玩家的对应成就节点的成就进度 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | playerId | str | 玩家ID | | nodeId | str | 节点ID | | delta | int | 增加该节点进度的值,只能填写大于0的正整数 | | callback | function | 请求回调函数,如果节点的json配置了为云节点,则调用此接口必须填写此参数,否则无法传到云端 | | getExtra | function | 用于返回存储更新后的数据的函数,用于云成就节点,返回值必须为str类型,可选 | - 返回值 |
数据类型
| 说明 | | :--- | :--- | | bool | 是否设置成功,当为云成就上报的时候,True表示上报了,具体情况请查阅callback函数的参数信息,False表示未上报 | - 备注 - callback需要接受一个参数 当请求**失败**时,参数返回None。 当请求**成功**时,参数为一个dict,包含返回码,最新数据等信息。 - 当code为0时,表示设置成功。 - 当code为5时,表示数据冲突,此时系统不会存储此次上传的数据,当开发者通过callback处理完冲突后,必须返回一个Bool值。当callback的返回值为True,系统会自动再自动调用一次getExtra来获取最新的extra数据,并自动存储进度与extra。如果不想系统再自动调用,将callback返回值设置为False,系统将不会再进行一次进度存储,可选 - 示例 ```python import mod.server.extraServerApi as serverApi def cb(data): if data: print { {}.format(data["entity"]) } else: print "获取数据失败" def get(): return extraData comp = serverApi.GetEngineCompFactory().CreateAchievement(levelId) #增加该玩家成就进度: comp.AddNodeProgress(playerId, nodeId, delta, callback = cb, getExtra = get) ``` ## GetChildrenNode 服务端 method in mod.server.component.achievementCompServer.AchievementCompServer - 描述 获得该成就节点的下一级所有孩子节点的list - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | nodeId | str | 节点ID | - 返回值 |
数据类型
| 说明 | | :--- | :--- | | list(str) | 返回值为是否设置成功,成功为该节点的下一级所有孩子节点的list,失败为None | - 示例 ```python import mod.server.extraServerApi as serverApi comp = serverApi.GetEngineCompFactory().CreateAchievement(levelId) #获得该成就节点的下一级所有孩子节点的list: NodeChildren = comp.GetChildrenNode(nodeId) ``` ## GetNodeDetailInfo 服务端 method in mod.server.component.achievementCompServer.AchievementCompServer - 描述 获取对应玩家的对应节点信息 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | playerId | str | 玩家ID | | nodeId | str | 节点ID | - 返回值 |
数据类型
| 说明 | | :--- | :--- | | dict | 获取成功为对应玩家的对应节点的所有信息,包括json内的所有信息,外加一个“progress”属性用来存储该玩家该节点的进度,失败为None | - 备注 - 该接口获取到的信息只有json里面配置的信息,如果可选内容不配,该接口获取不到不配的可选内容信息 - 不可在“AddServerPlayerEvent”和"ClientLoadAddonsFinishServerEvent"事件中调用该接口 - 示例 ```python import mod.server.extraServerApi as serverApi comp = serverApi.GetEngineCompFactory().CreateAchievement(levelId) #获取信息: NodeDetail = comp.GetNodeDetailInfo(playerId, nodeId) ``` ## SetNodeFinish 服务端 method in mod.server.component.achievementCompServer.AchievementCompServer - 描述 设置对应玩家的对应成就节点完成 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | playerId | str | 玩家ID | | nodeId | str | 节点ID | | callback | function | 请求回调函数,如果节点的json配置了为云节点,则调用此接口必须填写此参数,否则无法传到云端 | | getExtra | function | 用于返回存储更新后的数据的函数,用于云成就节点,返回值必须为str类型,可选 | - 返回值 |
数据类型
| 说明 | | :--- | :--- | | bool | 是否设置成功,当为云成就上报的时候,True表示上报了,具体情况请查阅callback函数的参数信息,False表示未上报 | - 备注 - callback需要接受一个参数 当请求**失败**时,参数返回None。 当请求**成功**时,参数为一个dict,包含返回码,最新数据等信息。 - 当code为0时,表示设置成功。 - 当code为5时,表示数据冲突,此时系统不会存储此次上传的数据,当开发者通过callback处理完冲突后,必须返回一个Bool值。当callback的返回值为True,系统会自动再自动调用一次getExtra来获取最新的extra数据,并自动存储进度与extra。如果不想系统再自动调用,将callback放回值设置为False,系统将不会再进行一次进度存储,可选 - 示例 ```python import mod.server.extraServerApi as serverApi def cb(data): if data: print { {}.format(data["entity"]) } else: print "获取数据失败" def get(): return extraData comp = serverApi.GetEngineCompFactory().CreateAchievement(levelId) #设置该成就完成: comp.SetNodeFinish(playerId, nodeId, callback = cb, getExtra = get) ```