package worldtask import ( "go_dreamfactory/comm" "go_dreamfactory/pb" "google.golang.org/protobuf/proto" ) // 剧情对话 func (this *apiComp) StoryCheck(session comm.IUserSession, req *pb.WorldtaskStoryReq) (code pb.ErrorCode) { if req.TaskId == 0 { code = pb.ErrorCode_ReqParameterError } return } func (this *apiComp) Story(session comm.IUserSession, req *pb.WorldtaskStoryReq) (code pb.ErrorCode, data proto.Message) { if code = this.StoryCheck(session, req); code != pb.ErrorCode_Success { return } uid := session.GetUserId() gwtConf, err := this.module.configure.getWorldtaskCfg() if err != nil || gwtConf == nil { code = pb.ErrorCode_ConfigNoFound return } // 获取用户信息 user := this.module.ModuleUser.GetUser(uid) if user == nil { code = pb.ErrorCode_UserSessionNobeing return } // 当前任务配置 curTaskConf, ok := gwtConf.GetDataMap()[req.TaskId] if !ok { code = pb.ErrorCode_ConfigNoFound return } rsp := &pb.WorldtaskStoryResp{} // 判断玩家等级要求 if user.Lv < curTaskConf.Lock { code = pb.ErrorCode_WorldtaskLvNotEnough return } // 下一个任务 if curTaskConf.Ontxe == 0 && curTaskConf.AutoAccept == 0 { rsp.NextTaskId = 0 } else if curTaskConf.Ontxe != 0 && curTaskConf.AutoAccept == 1 { rsp.NextTaskId = curTaskConf.IdAfter } // 当前玩家世界任务 userTask, err := this.module.modelWorldtask.getWorldtask(uid) if err != nil { code = pb.ErrorCode_DBError return } if userTask.Uid == "" { userTask.Uid = uid } // 完成任务 if err := this.module.modelWorldtask.finishTask(req.TaskId, userTask); err != nil { code = pb.ErrorCode_WorldtaskStory return } if err := session.SendMsg(string(this.module.GetType()), WorldtaskSubtypeStory, rsp); err != nil { code = pb.ErrorCode_SystemError } return }