任务相关的元数据
mission
{
id
title 任务标题
desc 任务描述
next_mission_id 下一个任务的id,如果任务无级联关系的可以不要
level 任务开启的等级
type 任务的类型(日常任务,主线任务等等其他)
status 方便对任务的管理
}
玩家完成任务的进度表
mission_progress
{
player_id 玩家id
mission_id 任务id
max_count 任务要求的达到某个最大数量(比如杀20个怪才能完成任务)
curr_count 玩家当前已完成的数量
status 标记任务的状态(未领取,已领取,进行中,已完成)
}
如果一个任务还分很多个细项,比如一个完成一个任务需要杀20个怪,还需要获得某中100个宝石,这个就可以考虑再加个表,当然对应的misson_progress表也需要做相应的修改。
misssion_progress_item
{
player_id
missonn_progress_id 任务进度id
max_count
curr_count
status
}
另外关于任务的触发也需要分情况考虑,表的设计做相应的处理。
如果任务是通过脚本在客服端触发,处理就简单些,那就只需要提交数据给服务器端更新即可。
若是通过服务器端触发则设计就会变得复杂得多,比方说有的任务是打怪触发的,那就得在服务器端所有实际打怪的处理上做拦截,判断是否触发任务,是否完成任务。同样的如果是捡得宝石触发,那就需要拦截所有捡宝石的操作。如果任务类型很多的话,服务器端的处理就很头痛了。