跳到主要内容

game_server.task

简介

基于服务器端engine开发的任务功能模块

组件接口

task.gs

游戏服务器端任务功能的一种方式

一些说明:

  1. 本模块是基于engine上搭建的,代码主要来自server0/server1
  2. 任务数据配置在task.xlsx表(/etc/task.xlsx)
  3. 任务流程分为三部分: 任务领取、任务推进、任务提交
  4. assign_check: 基于task.xlsx表中的"assign_check"配置,对任务领取条件进行自定义检查,
    • 可通过assign_check.load_all_entry方法加载自定义检查条件对象
  5. task_target: 基于task.xlsx表中的"task_target"配置,对任务推进条件进行自定义处理,
    • 可通过task_target.load_all_entry方法加载自定义推进条件对象
  6. pkg.text_wildcard: 基于task.xlsx表中的"desc"配置,对存在格式"$关键字(参数)"的字符串进行解释处理,
    • 可通过text_wildcard.load_all_entry方法加载自定义的解释对象
  7. FTask: 组件,提供给任务所有者
  8. FBaseAssignCheck: 组件,提供给自定义的任务领取条件检查对象
  9. FBaseTaskTarget: 组件,提供给自定义的任务推进对象
  10. 任务提交后处理: 提交任务后如果需要提供奖励等自定义行为,可以通过set_post_submit_func方法提供交后处理函数
  11. task.xlsx在本模块中涉及到的配置有:
    task_id: 任务id
    name: 任务名称
    desc: 任务描述
    predecesor: 前置任务
    assign_check: 任务领取的检查条件
    assign_check_para: 任务领取的检查条件参数
    task_target: 任务推进的处理对象
    task_target_para: 任务推进的参数
    auto_submit: 任务完成后是否自动提交
    task_type: 任务类型
    task_sub_type: 任务子类型
  12. 任务所有者的任务数据通过tasks/completed_task_dict字段进行同步(可见FTask)
  13. 任务的实时进度信息通过消息msg_task_log进行同步(可见FTask)
  14. 一些示例:
    • server0/server1: game.mods.game_task
函数原型函数作用
map get_task(mixed task_id)获取指定任务的配置
void iterate_all_task(function func)遍历所有任务配置
bool assign(object u, mixed task_id, ...)忽略条件检查分配任务
bool try_assign(object u, mixed task_id, ...)进行条件检查后分配任务
void try_advance(object u, mixed task_id, ...)尝试推进任务
void try_submit(object u, mixed task_id)尝试提交任务
void set_post_submit_func(function func = nil)设置提交任务后的处理函数
map get_task_log(object u, mixed task_id)获取实时任务描述信息

样例

// TODO