更新随机任务流程

This commit is contained in:
wh_zcy 2022-09-27 18:17:29 +08:00
parent 9aa7af41d2
commit 4d171b8901
4 changed files with 42 additions and 37 deletions

View File

@ -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,

View File

@ -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()

View File

@ -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

View File

@ -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)