# 自定义成就系统

# 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,系统将不会再进行一次进度存储,可选
  • 示例

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

客户端

method in mod.client.component.achievementCompClient.AchievementCompClient

  • 描述

    获取自定义成就系统的入口按钮位置

  • 参数

  • 返回值

    数据类型
    说明
    tuple(float,float) 坐标信息,tuple(横轴坐标,竖轴坐标),获取失败返回None
  • 示例

import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateAchievement(playerId)
result = comp.GetAchievementGatePosition()

# GetChildrenNode

服务端

method in mod.server.component.achievementCompServer.AchievementCompServer

  • 描述

    获得该成就节点的下一级所有孩子节点的list

  • 参数

    参数名
    数据类型
    说明
    nodeId str 节点ID
  • 返回值

    数据类型
    说明
    list(str) 返回值为是否设置成功,成功为该节点的下一级所有孩子节点的list,失败为None
  • 示例

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"事件中调用该接口
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateAchievement(levelId)
#获取信息:
NodeDetail = comp.GetNodeDetailInfo(playerId, nodeId)

# SetAchievementGatePosition

客户端

method in mod.client.component.achievementCompClient.AchievementCompClient

  • 描述

    设置自定义成就系统的入口按钮位置

  • 参数

    参数名
    数据类型
    说明
    x float 横轴坐标
    y float 竖轴坐标
  • 返回值

    数据类型
    说明
    bool 是否设置成功
  • 备注

    • 如果设置的位置超过边界,将设置到目标最近的边界位置
  • 示例

import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateAchievement(playerId)
result = comp.SetAchievementGatePosition(10, 10)

# 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,系统将不会再进行一次进度存储,可选
  • 示例

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)