diff --git a/modules/rtask/api_battlefinish.go b/modules/rtask/api_battlefinish.go index d535aadbf..34685eafe 100644 --- a/modules/rtask/api_battlefinish.go +++ b/modules/rtask/api_battlefinish.go @@ -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, diff --git a/modules/rtask/config.go b/modules/rtask/config.go index 91f3cf730..5fccc26a0 100644 --- a/modules/rtask/config.go +++ b/modules/rtask/config.go @@ -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() diff --git a/modules/rtask/module.go b/modules/rtask/module.go index 74f86f2b6..af21006c0 100644 --- a/modules/rtask/module.go +++ b/modules/rtask/module.go @@ -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 diff --git a/modules/task/model_task.go b/modules/task/model_task.go index 359648b1e..abf3a16d1 100644 --- a/modules/task/model_task.go +++ b/modules/task/model_task.go @@ -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)