update condi配置

This commit is contained in:
wh_zcy 2023-04-04 17:53:14 +08:00
parent 4a18a075f5
commit b77c28dd0d
3 changed files with 83 additions and 47 deletions

View File

@ -1435,8 +1435,8 @@
"NPC": 1, "NPC": 1,
"data1": 1, "data1": 1,
"data2": 111, "data2": 111,
"data3": 1, "data3": 0,
"data4": 1, "data4": 0,
"data5": 0 "data5": 0
}, },
{ {
@ -1451,8 +1451,8 @@
"NPC": 2, "NPC": 2,
"data1": 1, "data1": 1,
"data2": 112, "data2": 112,
"data3": 2, "data3": 0,
"data4": 2, "data4": 0,
"data5": 0 "data5": 0
}, },
{ {
@ -1467,8 +1467,8 @@
"NPC": 3, "NPC": 3,
"data1": 1, "data1": 1,
"data2": 113, "data2": 113,
"data3": 3, "data3": 0,
"data4": 3, "data4": 0,
"data5": 0 "data5": 0
}, },
{ {
@ -1483,8 +1483,8 @@
"NPC": 10110, "NPC": 10110,
"data1": 1, "data1": 1,
"data2": 114, "data2": 114,
"data3": 4, "data3": 0,
"data4": 4, "data4": 0,
"data5": 0 "data5": 0
}, },
{ {

View File

@ -198,44 +198,6 @@ func (this *apiComp) Finish(session comm.IUserSession, req *pb.WorldtaskFinishRe
} }
} }
finishCall := func() {
// 完成任务
if err := this.module.modelWorldtask.finishTask(req.GroupId, req.TaskId, userTask); err != nil {
code = pb.ErrorCode_WorldtaskFinish
this.module.Error("完成任务失败",
log.Field{Key: "uid", Value: uid},
log.Field{Key: "groupId", Value: req.GroupId},
log.Field{Key: "taskId", Value: req.TaskId},
log.Field{Key: "err", Value: err.Error()},
)
return
}
// 发奖
if code = this.module.DispenseRes(session, curTaskConf.Reword, true); code != pb.ErrorCode_Success {
this.module.Error("资源发放",
log.Field{Key: "uid", Value: uid},
log.Field{Key: "groupId", Value: req.GroupId},
log.Field{Key: "taskId", Value: req.TaskId},
log.Field{Key: "reword", Value: curTaskConf.Reword},
log.Field{Key: "code", Value: code},
)
}
//判断是否配置了通知module
for _, m := range curTaskConf.Module {
i, err := this.service.GetModule(core.M_Modules(m))
if err != nil {
this.module.Errorln(err)
continue
}
if ic, ok := i.(comm.ITaskComplete); ok {
ic.TaskComplete(session, req.TaskId)
}
}
}
//判断任务是否已完成 //判断任务是否已完成
for _, v := range userTask.TaskList { for _, v := range userTask.TaskList {
if v == req.TaskId { if v == req.TaskId {
@ -248,7 +210,64 @@ func (this *apiComp) Finish(session comm.IUserSession, req *pb.WorldtaskFinishRe
} }
} }
finishCall() var (
condiId int32
condiFlag bool
)
for _, condId := range curTaskConf.Completetask {
if this.module.modelWorldtask.checkCondi(uid, condId) {
condiFlag = true
} else {
condiFlag = false
condiId = condId
}
}
if !condiFlag {
rsp.Code = pb.ErrorCode_RtaskCondiNoReach
rsp.CondiId = condiId
rsp.TaskId = req.TaskId
if err := session.SendMsg(string(this.module.GetType()), WorldtaskSubtypeFinish, rsp); err != nil {
code = pb.ErrorCode_SystemError
return
}
return
}
// 完成任务
if err := this.module.modelWorldtask.finishTask(req.GroupId, req.TaskId, userTask); err != nil {
code = pb.ErrorCode_WorldtaskFinish
this.module.Error("完成任务失败",
log.Field{Key: "uid", Value: uid},
log.Field{Key: "groupId", Value: req.GroupId},
log.Field{Key: "taskId", Value: req.TaskId},
log.Field{Key: "err", Value: err.Error()},
)
return
}
// 发奖
if code = this.module.DispenseRes(session, curTaskConf.Reword, true); code != pb.ErrorCode_Success {
this.module.Error("资源发放",
log.Field{Key: "uid", Value: uid},
log.Field{Key: "groupId", Value: req.GroupId},
log.Field{Key: "taskId", Value: req.TaskId},
log.Field{Key: "reword", Value: curTaskConf.Reword},
log.Field{Key: "code", Value: code},
)
}
//判断是否配置了通知module
for _, m := range curTaskConf.Module {
i, err := this.service.GetModule(core.M_Modules(m))
if err != nil {
this.module.Errorln(err)
continue
}
if ic, ok := i.(comm.ITaskComplete); ok {
ic.TaskComplete(session, req.TaskId)
}
}
finishRsp() finishRsp()

View File

@ -134,6 +134,23 @@ func (this *ModelWorldtask) findNextTasks(parentTaskId int32) (taskIds []int32)
return return
} }
func (this *ModelWorldtask) checkCondi(uid string, condiId int32) bool {
if m, err := this.service.GetModule(comm.ModuleRtask); err == nil {
iwt, ok := m.(comm.IRtask)
if ok {
if mc := iwt.CheckCondi(uid, condiId); mc != pb.ErrorCode_Success {
this.moduleWorldtask.Debug("任务完成条件不满足",
log.Field{Key: "uid", Value: uid},
log.Field{Key: "condiId", Value: condiId},
)
return false
}
return true
}
}
return false
}
func (this *ModelWorldtask) updateCheckCond(uid string, userTask *pb.DBWorldtask, nextTaskId int32) *pb.DBWorldtask { func (this *ModelWorldtask) updateCheckCond(uid string, userTask *pb.DBWorldtask, nextTaskId int32) *pb.DBWorldtask {
//检查下个任务的完成条件 //检查下个任务的完成条件
nextTaskConf, err := this.moduleWorldtask.configure.getWorldtaskById(nextTaskId) nextTaskConf, err := this.moduleWorldtask.configure.getWorldtaskById(nextTaskId)