更新随机任务流程
This commit is contained in:
parent
9aa7af41d2
commit
4d171b8901
@ -50,27 +50,30 @@ func (this *apiComp) BattleFinish(session comm.IUserSession, req *pb.RtaskBattle
|
||||
}
|
||||
|
||||
if _, ok := utils.Findx(frtaskArr.RtaskIds, req.RtaskId); !ok {
|
||||
// 更新完成的任务
|
||||
frtaskArr.RtaskIds = append(frtaskArr.RtaskIds, req.RtaskId)
|
||||
if rtask.FrtaskIds == nil {
|
||||
rtask.FrtaskIds = make(map[int32]*pb.FrtaskIds)
|
||||
}
|
||||
rtask.FrtaskIds[conf.Group] = frtaskArr
|
||||
if len(sideConf.ChooseId) == 0 && sideConf.EndTid[0] == -1 {
|
||||
// 更新完成的任务
|
||||
frtaskArr.RtaskIds = append(frtaskArr.RtaskIds, req.RtaskId)
|
||||
if rtask.FrtaskIds == nil {
|
||||
rtask.FrtaskIds = make(map[int32]*pb.FrtaskIds)
|
||||
}
|
||||
rtask.FrtaskIds[conf.Group] = frtaskArr
|
||||
|
||||
update := map[string]interface{}{
|
||||
"frtaskIds": rtask.FrtaskIds,
|
||||
}
|
||||
if err := this.moduleRtask.modelRtask.Change(session.GetUserId(), update); err != nil {
|
||||
code = pb.ErrorCode_SystemError
|
||||
return
|
||||
}
|
||||
update := map[string]interface{}{
|
||||
"frtaskIds": rtask.FrtaskIds,
|
||||
}
|
||||
if err := this.moduleRtask.modelRtask.Change(session.GetUserId(), update); err != nil {
|
||||
code = pb.ErrorCode_SystemError
|
||||
return
|
||||
}
|
||||
|
||||
// 发奖
|
||||
for _, v := range sideConf.Reward {
|
||||
if v.ChooseId == 0 {
|
||||
this.moduleRtask.DispenseRes(session, v.Reward, true)
|
||||
// 发奖
|
||||
for _, v := range sideConf.Reward {
|
||||
if v.ChooseId == 0 {
|
||||
this.moduleRtask.DispenseRes(session, v.Reward, true)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if err := session.SendMsg(string(this.moduleRtask.GetType()), RtaskSubTypeBattleFinish,
|
||||
|
@ -150,6 +150,21 @@ func (this *configureComp) getRtaskTypeById(typeId int32) (data *cfg.GameRdtaskC
|
||||
return
|
||||
}
|
||||
|
||||
func (this *configureComp) getRtaskCondis(typeId int32) (list []*cfg.GameRdtaskCondiData) {
|
||||
cfg, err := this.getRtaskCondiCfg()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
if cfg != nil {
|
||||
for _, v := range cfg.GetDataList() {
|
||||
if v.Type == typeId {
|
||||
list = append(list, v)
|
||||
}
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// 任务
|
||||
func (this *configureComp) getRtaskById(taskId int32) (data *cfg.GameRdtaskData) {
|
||||
cfg, err := this.getRtaskCfg()
|
||||
|
@ -209,41 +209,28 @@ func (this *ModuleRtask) SendToRtask(session comm.IUserSession, rtaskType comm.T
|
||||
return
|
||||
}
|
||||
|
||||
for _, v := range this.handleMap {
|
||||
// 找到任务类型
|
||||
if int32(rtaskType) == v.cfg.Type {
|
||||
for _, codi := range this.configure.getRtaskCondis(int32(rtaskType)) {
|
||||
if v, ok := this.handleMap[codi.Id]; ok {
|
||||
if v.find == nil {
|
||||
break
|
||||
return
|
||||
}
|
||||
if condiId, err = v.find(v.cfg, params...); condiId == 0 {
|
||||
if err != nil {
|
||||
this.Error(err.Error())
|
||||
}
|
||||
continue
|
||||
} else {
|
||||
//数据记录方式是1
|
||||
// if v.cfg.Datatype == 1 ||
|
||||
// v.cfg.Datatype == 2 && this.ModuleSys.IsAccess("task", user.Lv) {
|
||||
condis = append(condis, v)
|
||||
// }
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if len(condis) == 0 {
|
||||
this.Warnf("没有找到符合的条件任务, typeId: %v params: %v", rtaskType, params)
|
||||
code = pb.ErrorCode_RtaskCondiNoFound
|
||||
return
|
||||
}
|
||||
|
||||
// update
|
||||
for _, v := range condis {
|
||||
if v.update != nil {
|
||||
if err := v.update(session.GetUserId(), v.cfg, params...); err != nil {
|
||||
code = pb.ErrorCode_DBError
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return
|
||||
|
@ -101,9 +101,10 @@ func (this *ModelTask) getTaskListByTag(uid string, taskTag comm.TaskTag) (newli
|
||||
} else {
|
||||
if isReceived(curTask.Key) {
|
||||
newlist = append(newlist, v)
|
||||
} else {
|
||||
break
|
||||
}
|
||||
// else {
|
||||
// break
|
||||
// }
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -259,7 +260,6 @@ func (this *ModelTask) inStrategy(uid string, heroCfgId int32) (taskIds []int32,
|
||||
func (this *ModelTask) doTaskHandle(event interface{}, next func(event interface{})) {
|
||||
tl := event.(*TaskListen)
|
||||
|
||||
// 获取玩家的指定事件列表
|
||||
data, err := this.moduleTask.configure.getTasks(int32(tl.TaskType))
|
||||
if err != nil {
|
||||
this.moduleTask.Errorf("taskHandle err %v", err)
|
||||
|
Loading…
Reference in New Issue
Block a user