上传商队任务接取

This commit is contained in:
liwei 2023-07-03 19:12:37 +08:00
parent 992417d129
commit 960b5fd14a
3 changed files with 54 additions and 153 deletions

View File

@ -402,8 +402,8 @@ type (
JumpTaskByTaskId(session IUserSession, rtaskId int32) error JumpTaskByTaskId(session IUserSession, rtaskId int32) error
// 查询我的世界任务 // 查询我的世界任务
GetMyWorldtask(uid string) *pb.DBWorldtask GetMyWorldtask(uid string) *pb.DBWorldtask
// 获取分组任务 //接取商队任务
GetWorldTaskBy(session IUserSession, groupId int32) int32 AcceptCaravanTask(session IUserSession, groupId int32) (task *pb.Worldtask, errdata *pb.ErrorData)
//更新接取任务 //更新接取任务
UpdateTaskStatus(uid string, taskId int32) UpdateTaskStatus(uid string, taskId int32)
} }

View File

@ -156,30 +156,6 @@ func (this *Worldtask) TCondFinishNotify(uid string, conds []*pb.ConIProgress) {
return return
} }
// taskConds := make(map[int32][]*pb.CurrentTask)
// finishedCondIds := []*pb.ConIProgress{}
// for _, cond := range conds {
// if cfg, ok := this.configure.worldtaskConf[cond.Conid]; ok {
// //校验任务是否是当前任务
// if task, ok := userTask.CurrentTasks[cfg.Group]; ok {
// var currentTasks []*pb.CurrentTask
// for _, t := range task.TaskMap {
// if cfg.Key == t.TaskId {
// finishedCondIds = append(finishedCondIds, cond)
// currentTasks = append(currentTasks, &pb.CurrentTask{
// GroupId: cfg.Group,
// TaskId: cfg.Key,
// Conds: finishedCondIds,
// })
// }
// }
// if currentTasks != nil {
// taskConds[cfg.Group] = currentTasks
// }
// }
// }
// }
tasks := map[int32][]int32{} tasks := map[int32][]int32{}
taskgroup := map[int32]int32{} taskgroup := map[int32]int32{}
allconds := []int32{} allconds := []int32{}
@ -255,116 +231,11 @@ func (this *Worldtask) TCondFinishNotify(uid string, conds []*pb.ConIProgress) {
} }
} }
// var currentTasks []*pb.CurrentTask
// for _, tasks := range taskConds {
// for _, t := range tasks {
// // curTaskConf, err := this.configure.getWorldtaskById(t.TaskId)
// // if err != nil || curTaskConf == nil {
// // return
// // }
// // var flag bool
// // if curTaskConf.DeliverNpc == 0 {
// // //判断当前任务下的条件是否全部是完成状态
// // for _, cond := range t.Conds {
// // if cond.State == pb.BuriedItemFinishState_buried_finish {
// // flag = true
// // } else {
// // flag = false
// // }
// // }
// // if flag {
// // defer func() {
// // this.modelWorldtask.taskFinish(session, t.TaskId, userTask, curTaskConf)
// // this.modelWorldtask.taskFinishPush(session, userTask, curTaskConf)
// // }()
// // }
// // }
// currentTasks = append(currentTasks, t)
// }
// }
// if len(currentTasks) > 0 {
// session.SendMsg(string(this.GetType()), "changecondis", &pb.WorldtaskChangecondisPush{
// Tasks: currentTasks,
// })
// for _, task := range currentTasks {
// curTaskConf, err := this.configure.getWorldtaskById(task.TaskId)
// if err != nil || curTaskConf == nil {
// return
// }
// var newconds []*pb.ConIProgress
// if tasks, ok := userTask.CurrentTasks[task.GroupId]; ok {
// if t, ok := tasks.TaskMap[task.TaskId]; ok {
// //更新cond
// for _, t1 := range task.Conds {
// for _, t2 := range t.Conds {
// if t1.Conid == t2.Conid {
// // t2 = t1
// newconds = append(newconds, t1)
// } else {
// newconds = append(newconds, t2)
// }
// }
// }
// t.Conds = newconds
// //判断所有的条件是都是
// var flag bool
// for _, cond := range t.Conds {
// if cond.State == pb.BuriedItemFinishState_buried_finish {
// flag = true
// } else {
// flag = false
// break
// }
// }
// if curTaskConf.DeliverNpc == 0 {
// if flag {
// this.modelWorldtask.taskFinish(session, t.TaskId, userTask, curTaskConf)
// this.modelWorldtask.taskFinishPush(session, userTask, curTaskConf)
// }
// }
// }
// }
// }
update := map[string]interface{}{ update := map[string]interface{}{
"currentTasks": userTask.CurrentTasks, "currentTasks": userTask.CurrentTasks,
} }
this.modelWorldtask.Change(uid, update) this.modelWorldtask.Change(uid, update)
// for _, task := range currentTasks {
// curTaskConf, err := this.configure.getWorldtaskById(task.TaskId)
// if err != nil || curTaskConf == nil {
// return
// }
// var flag bool
// if curTaskConf.DeliverNpc == 0 {
// if tasks, ok := userTask.CurrentTasks[task.GroupId]; ok {
// if t, ok := tasks.TaskMap[task.TaskId]; ok {
// for _, cond := range t.Conds {
// if cond.State == pb.BuriedItemFinishState_buried_finish {
// flag = true
// } else {
// flag = false
// }
// }
// if flag {
// this.modelWorldtask.taskFinish(session, t.TaskId, userTask, curTaskConf)
// this.modelWorldtask.taskFinishPush(session, userTask, curTaskConf)
// }
// }
// }
// }
// }
// }
return return
} }
@ -537,31 +408,44 @@ func (this *Worldtask) JumpTaskByTaskId(session comm.IUserSession, taskId int32)
} }
// 返回任务ID // 返回任务ID
func (this *Worldtask) GetWorldTaskBy(session comm.IUserSession, groupId int32) (taskId int32) { func (this *Worldtask) AcceptCaravanTask(session comm.IUserSession, groupId int32) (task *pb.Worldtask, errdata *pb.ErrorData) {
uid := session.GetUserId() uid := session.GetUserId()
var (
curTaskConf *cfg.GameWorldTaskData
isfinsh bool
)
mytask, err := this.modelWorldtask.getWorldtask(uid) mytask, err := this.modelWorldtask.getWorldtask(uid)
if err != nil { if err != nil {
return 0 errdata = &pb.ErrorData{
Code: pb.ErrorCode_DBError,
Title: pb.ErrorCode_DBError.String(),
Message: "no found task data",
}
return
} }
if gwt, err := this.configure.getWorldtaskCfg(); err == nil { if gwt, err := this.configure.getWorldtaskCfg(); err == nil {
for _, v := range gwt.GetDataList() { for _, v := range gwt.GetDataList() {
if v.Group == groupId && v.Des == 5 { if v.Group == groupId && v.Des == 5 {
if _, ok := utils.Findx(mytask.TaskList, v.Key); !ok { if _, ok := utils.Findx(mytask.TaskList, v.Key); !ok {
taskId = v.Key task = &pb.Worldtask{
TaskId: v.Key,
TaskType: v.Des,
NpcStatus: 1,
}
curTaskConf = v
break break
} }
} }
} }
} }
if taskId == 0 { if task == nil {
return errdata = &pb.ErrorData{
Code: pb.ErrorCode_ConfigNoFound,
Title: pb.ErrorCode_ConfigNoFound.String(),
Message: fmt.Sprintf("no fond groupId:%d", groupId),
} }
// 当前任务配置
curTaskConf, err := this.configure.getWorldtaskById(taskId)
if err != nil || curTaskConf == nil {
return return
} }
@ -570,27 +454,44 @@ func (this *Worldtask) GetWorldTaskBy(session comm.IUserSession, groupId int32)
} }
if v, ok1 := mytask.CurrentTasks[curTaskConf.Group]; ok1 { if v, ok1 := mytask.CurrentTasks[curTaskConf.Group]; ok1 {
v.TaskMap[taskId] = &pb.Worldtask{ v.TaskMap[task.TaskId] = &pb.Worldtask{
TaskId: taskId, TaskId: task.TaskId,
TaskType: curTaskConf.Des, TaskType: curTaskConf.Des,
NpcStatus: 1, NpcStatus: 1,
} }
} }
if task.Conds, err = this.ModuleBuried.CheckCondition(uid, curTaskConf.Completetask...); err != nil {
log.Errorf("调用接口错误:%s", err.Error())
errdata = &pb.ErrorData{
Code: pb.ErrorCode_ExternalModule,
Title: pb.ErrorCode_ExternalModule.String(),
Message: fmt.Sprintf("ModuleBuried.CheckCondition err:%s", err.Error()),
}
return
}
isfinsh = true
for _, v := range task.Conds {
if v.State != pb.BuriedItemFinishState_buried_finish {
isfinsh = false
}
}
if isfinsh && curTaskConf.DeliverNpc != 0 {
isfinsh = false
}
//判断是否要结束任务
if ((len(curTaskConf.Completetask) >= 1 && curTaskConf.Completetask[0] == 0) ||
len(curTaskConf.Completetask) == 0) && curTaskConf.DeliverNpc == 0 {
isfinsh = true
}
update := map[string]interface{}{ update := map[string]interface{}{
"currentTasks": mytask.CurrentTasks, "currentTasks": mytask.CurrentTasks,
} }
if err := this.modelWorldtask.Change(uid, update); err != nil { if err := this.modelWorldtask.Change(uid, update); err != nil {
} }
if isfinsh { //结束任务
//判断是否要结束任务 this.modelWorldtask.taskFinish(session, task.TaskId, mytask, curTaskConf)
if ((len(curTaskConf.Completetask) >= 1 && curTaskConf.Completetask[0] == 0) ||
len(curTaskConf.Completetask) == 0) &&
curTaskConf.DeliverNpc == 0 {
//结束任务
this.modelWorldtask.taskFinish(session, taskId, mytask, curTaskConf)
this.modelWorldtask.taskFinishPush(session, mytask, curTaskConf) this.modelWorldtask.taskFinishPush(session, mytask, curTaskConf)
} }