文档和工具

竞技模式组件简介

竞技模式组件为MOD开发者提供统一的竞技模式开始与结算通知事件,通过调用相关API和监听固定事件,可以将必要的参数通过竞技组件通知webhttpserver进行分数结算。此外游戏过程中的逃跑惩罚也由竞技模式组件通知webhttpserver服务器。

MOD客户端接入

API

  • SetArenaGamePlayerReady

    • 说明 设置当前玩家准备完毕时调用

    • 参数 无参数

    • 示例

    • 备注 MOD开发者必须调用此函数

  • CancelArenaGamePlayerReady

    • 说明 设置玩家取消准备时调用

    • 参数 无参数

    • 示例

    • 备注 此接口为可选调用

事件

  • ClientArenaGameAllPlayerReadyEvent

    • 说明 当前游戏所有玩家准备完毕后,竞技组件向客户端发出的事件
    • 参数 无参数
    • 备注 MOD开发者可选择监听此事件切换游戏状态,也可以忽略由自定义的MOD服务端逻辑控制游戏状态切换
  • ClientArenaGameFinishEvent

    • 说明 MOD开发者调用结束API后,竞技组件向客户端发出的结束事件

    • 参数 游戏结果

      关键字数据类型说明
      camp_idint阵营,不区分默认选0,区分最多三个阵营1,2,3
      resultint比赛胜负:0:平局,1:胜利,2:失败
      scoreint分数,不需要时传null
      uidlist string array玩家id列表
    • 备注 MOD开发者可选择监听此事件获取游戏结果,也可以由自定义事件从MOD服务端获取结果。在收到此事件后,5秒后竞技组件服务端会自动远程调用关闭当前游戏。

MOD服务端接入

API

  • SetArenaGameResult

    • 说明 当前游戏结束时调用,由开发者传入最后结果

    • 参数

      关键字数据类型说明
      camp_idint阵营,不区分默认选0,区分最多三个阵营1,2,3
      resultint比赛胜负:0:平局,1:胜利,2:失败
      scoreint分数,不需要时传null
      uidlist string array玩家id列表
    • 示例

    • 备注

      • 分数设置相关:

        • 如果指定自定义的分数,则每项都需要设置score的分数。
        • 如果使用排行系统默认设置的分数,则每项score的值需要设置为None。
        • 如果设置result为2时,即设置为输时,分时需要传递扣去分数score正数而不是负数
      • MOD开发者必须调用此函数,设置比赛结果。

事件

  • ServerArenaGameAllPlayerReadyEvent

    • 说明 当前游戏所有玩家准备完毕后,竞技组件向服务端发出的事件
    • 参数 无参数
    • 备注 MOD开发者可选择监听此事件切换游戏状态,也可以忽略由自定义的MOD服务端逻辑控制游戏状态切换
  • ServerArenaGamePlayerReconnectSuccessEvent

    • 说明 玩家掉线后再次连入时,如果没有超时则触发该事件

    • 参数

      关键字数据类型说明
      playerIdstrplayer的entityId
      uidstr玩家的uid
    • 备注 MOD开发者可选择监听此事件决定玩家重连状态。

  • ServerArenaGamePlayerReconnectFailedEvent

    • 说明 玩家掉线后再次连入时,超时则触发该事件

    • 参数

      关键字数据类型说明
      playerIdstrplayer的entityId
      uidstr玩家的uid
    • 备注 MOD开发者可选择监听此事件,玩家超时重连会被竞技组件发送消息强制退出该局游戏。

  • ServerSetGameResultFailed

  • 说明

    开发者设置有结果失败时触发该事件

  • 参数

    关键字数据类型说明
    rcodeint错误码
    msgstr错误信息
    detailstr错误原因
  • 备注

    错误码含义和对应的详细信息如下:

4:参数为空,缺少某个参数 12:参数错误,具体见details teams 必须为数组 team 参数缺失 result 超出范围 {发送的结果值} (0:平局,1:胜利,2:失败) camp_id 超出范围 camp_id:{发送的camp_id} camp_num:{阵营数} (阵营数为0,camp_id只能为0,阵营数大于0,为num,camp_id范围[1,num]) uid 必须为数组 uid 不是房间成员 room_id:{房间id} user_id:{玩家id}

13:操作失败,具体见details 房间找不到 {房间id} 找不到房间成员 {房间id} 找不到组件信息 {组件id} 匹配状态错误 room_id:{房间id} user_id:{玩家id} state:{匹配状态} (防止重复结算) 结算失败

12028:房间秘钥计算错误