Files
netease-modsdk-wiki/docs/mcdocs/1-ModAPI/接口/自定义UI/自定义成就系统.md
2025-03-18 14:46:12 +08:00

244 lines
7.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
sidebarDepth: 1
---
# 自定义成就系统
## AddNodeProgress
<span style="display:inline;color:#ff5555">服务端</span>
method in mod.server.component.achievementCompServer.AchievementCompServer
- 描述
增加对应玩家的对应成就节点的成就进度
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| playerId | str | 玩家ID |
| nodeId | str | 节点ID |
| delta | int | 增加该节点进度的值,只能填写大于0的正整数 |
| callback | function | 请求回调函数,如果节点的json配置了为云节点则调用此接口必须填写此参数否则无法传到云端 |
| getExtra | function | 用于返回存储更新后的数据的函数用于云成就节点返回值必须为str类型可选 |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| 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)
```
## GetAchievementGatePosition
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.achievementCompClient.AchievementCompClient
- 描述
获取自定义成就系统的入口按钮位置
- 参数
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| tuple(float,float) | 坐标信息tuple(横轴坐标,竖轴坐标)获取失败返回None |
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateAchievement(playerId)
result = comp.GetAchievementGatePosition()
```
## GetChildrenNode
<span style="display:inline;color:#ff5555">服务端</span>
method in mod.server.component.achievementCompServer.AchievementCompServer
- 描述
获得该成就节点的下一级所有孩子节点的list
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| nodeId | str | 节点ID |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| list(str) | 返回值为是否设置成功成功为该节点的下一级所有孩子节点的list失败为None |
- 示例
```python
import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateAchievement(levelId)
#获得该成就节点的下一级所有孩子节点的list
NodeChildren = comp.GetChildrenNode(nodeId)
```
## GetNodeDetailInfo
<span style="display:inline;color:#ff5555">服务端</span>
method in mod.server.component.achievementCompServer.AchievementCompServer
- 描述
获取对应玩家的对应节点信息
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| playerId | str | 玩家ID |
| nodeId | str | 节点ID |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| dict | 获取成功为对应玩家的对应节点的所有信息包括json内的所有信息外加一个“progress”属性用来存储该玩家该节点的进度失败为None |
- 备注
- 该接口获取到的信息只有json里面配置的信息如果可选内容不配该接口获取不到不配的可选内容信息
- 不可在“AddServerPlayerEvent”和"ClientLoadAddonsFinishServerEvent"事件中调用该接口
- 示例
```python
import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateAchievement(levelId)
#获取信息:
NodeDetail = comp.GetNodeDetailInfo(playerId, nodeId)
```
## SetAchievementGatePosition
<span style="display:inline;color:#7575f9">客户端</span>
method in mod.client.component.achievementCompClient.AchievementCompClient
- 描述
设置自定义成就系统的入口按钮位置
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| x | float | 横轴坐标 |
| y | float | 竖轴坐标 |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| bool | 是否设置成功 |
- 备注
- 如果设置的位置超过边界,将设置到目标最近的边界位置
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateAchievement(playerId)
result = comp.SetAchievementGatePosition(10, 10)
```
## SetNodeFinish
<span style="display:inline;color:#ff5555">服务端</span>
method in mod.server.component.achievementCompServer.AchievementCompServer
- 描述
设置对应玩家的对应成就节点完成
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| playerId | str | 玩家ID |
| nodeId | str | 节点ID |
| callback | function | 请求回调函数,如果节点的json配置了为云节点则调用此接口必须填写此参数否则无法传到云端 |
| getExtra | function | 用于返回存储更新后的数据的函数用于云成就节点返回值必须为str类型可选 |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| 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)
```