diff --git a/modules/items/modelitems.go b/modules/items/modelitems.go index f9680c669..d35fa80dc 100644 --- a/modules/items/modelitems.go +++ b/modules/items/modelitems.go @@ -433,7 +433,7 @@ func (this *ModelItemsComp) addItemToUserPack(uid string, items []*pb.DB_UserIte if leftnum > 0 { //还没有放完 寻找空的格子填充 index := int32(len(items)) for leftnum > 0 { //需要补充格子 - if conf.UpperLimit == 0 || (conf.UpperLimit > 0 && leftnum <= int64(conf.UpperLimit)) { + if conf.UpperLimit == -1 || (conf.UpperLimit > 0 && leftnum <= int64(conf.UpperLimit)) { grid := &pb.DB_UserItemData{ GridId: primitive.NewObjectID().Hex(), UId: uid, diff --git a/modules/wtask/api_finish.go b/modules/wtask/api_finish.go new file mode 100644 index 000000000..4c74d281c --- /dev/null +++ b/modules/wtask/api_finish.go @@ -0,0 +1,34 @@ +package wtask + +import ( + "go_dreamfactory/comm" + "go_dreamfactory/pb" +) + +// 参数校验 +func (this *apiComp) FinishCheck(session comm.IUserSession, req *pb.WTaskFinishReq) (errdata *pb.ErrorData) { + + return +} + +// /获取系统公告 +func (this *apiComp) Finish(session comm.IUserSession, req *pb.WTaskFinishReq) (errdata *pb.ErrorData) { + var ( + wtask *pb.DBWTask + err error + ) + if errdata = this.FinishCheck(session, req); errdata != nil { + return + } + if wtask, err = this.module.modelwtask.getUserWTasks(session.GetUserId()); err != nil { + errdata = &pb.ErrorData{ + Code: pb.ErrorCode_DBError, + Title: pb.ErrorCode_DBError.ToString(), + Message: err.Error(), + } + return + } + + session.SendMsg(string(this.module.GetType()), "info", &pb.WTaskInfoResp{Activations: wtask.Activations, Completes: wtask.Completes}) + return +} diff --git a/modules/wtask/configure.go b/modules/wtask/configure.go index 3b277285f..49ca562ed 100644 --- a/modules/wtask/configure.go +++ b/modules/wtask/configure.go @@ -2,6 +2,7 @@ package wtask import ( "fmt" + "go_dreamfactory/comm" "go_dreamfactory/lego/core" "go_dreamfactory/modules" "go_dreamfactory/sys/configure" @@ -83,3 +84,21 @@ func (this *configureComp) getcondlTask() map[int32][]*cfg.GameWorldTaskData { defer this.lock.RUnlock() return this.condlTask } + +func (this *configureComp) gettaskconfconfigure(tid int32) (conf *cfg.GameWorldTaskData, err error) { + + var ( + v interface{} + ok bool + ) + if v, err = this.GetConfigure(gameWorldTask); err != nil { + return + } else { + if conf, ok = v.(*cfg.GameWorldTask).GetDataMap()[tid]; !ok { + err = comm.NewNotFoundConfErr(modulename, gameWorldTask, tid) + this.module.Errorf("err:%v", err) + return + } + } + return +} diff --git a/modules/wtask/module.go b/modules/wtask/module.go index 831e7c980..6ace7b2a8 100644 --- a/modules/wtask/module.go +++ b/modules/wtask/module.go @@ -13,6 +13,8 @@ const modulename = "世界任务" type WTask struct { modules.ModuleBase + service core.IService + modelSys comm.ISys api *apiComp configure *configureComp modelwtask *ModelWTask @@ -28,6 +30,17 @@ func (this *WTask) GetType() core.M_Modules { func (this *WTask) Init(service core.IService, module core.IModule, options core.IModuleOptions) (err error) { err = this.ModuleBase.Init(service, module, options) + this.service = service + return +} + +func (this *WTask) Start() (err error) { + err = this.ModuleBase.Start() + var module core.IModule + if module, err = this.service.GetModule(comm.ModuleSys); err != nil { + return + } + this.modelSys = module.(comm.ISys) return } @@ -56,7 +69,8 @@ func (this *WTask) BuriedsNotify(uid string, condis []*pb.ConIProgress) { award []*pb.UserAssets = make([]*pb.UserAssets, 0) ok bool needcheck bool //是否需要校验 - err error + + err error ) if utask, err = this.modelwtask.getUserWTasks(uid); err != nil { this.Error("读取玩家世界任务数据 失败", log.Field{Key: "err", Value: err.Error()}) @@ -143,12 +157,36 @@ func (this *WTask) BuriedsNotify(uid string, condis []*pb.ConIProgress) { //发送进度变化消息 session.SendMsg(string(this.GetType()), "accepttaskchange", &pb.WTaskAccepttaskChangePush{Accepttask: detailstasks}) - if len(finishtasks) > 0 { - //发送任务完成推送 - session.SendMsg(string(this.GetType()), "autofinsh", &pb.WTaskAutoFinshPush{Completes: finishtasks, Award: award}) - utask.Completes = append(utask.Completes, finishtasks...) - this.inquireActivations(session, utask, 1, []string{}) +} + +// 完成任务 +func (this *WTask) fishtask(session comm.IUserSession, wtask *pb.DBWTask, finishtasks []int32) { + var ( + opencmdMap map[string]int32 + opencmd []string + user *pb.DBUser + errdata *pb.ErrorData + ) + + if len(finishtasks) == 0 { + return } + + if opencmdMap, errdata = this.modelSys.QueryOpenCondData(session.GetUserId()); errdata != nil { + this.Error("查询用户功能是否开启表 失败!", log.Field{Key: "key", Value: errdata}) + return + } + opencmd = make([]string, 0) + for k, v := range opencmdMap { + if v == 2 { + opencmd = append(opencmd, k) + } + } + if user = this.ModuleUser.GetUser(session.GetUserId()); user != nil { + this.Error("获取用户信息失败!", log.Field{Key: "uid", Value: session.GetUserId()}) + return + } + this.inquireActivations(session, wtask, user.Lv, opencmd) } // 查询可接取任务列表 @@ -186,12 +224,17 @@ func (this *WTask) inquireActivations(session comm.IUserSession, wtask *pb.DBWTa if v.Des == 5 { //商队任务不主动触发 continue } - wtask.Activations = append(wtask.Activations, v.Key) - change = true + if v.AutoAccept == 0 { + wtask.Activations = append(wtask.Activations, v.Key) + change = true + } else if v.AutoAccept == 1 { //自动接取任务 + wtask.Accepttask = append(wtask.Accepttask, v.Key) + } + } if change { - session.SendMsg(string(this.GetType()), "autofinsh", &pb.WTaskActivationsPush{Activations: wtask.Activations}) + session.SendMsg(string(this.GetType()), "activations", &pb.WTaskActivationsPush{Activations: wtask.Activations}) } return } diff --git a/pb/wtask_msg.pb.go b/pb/wtask_msg.pb.go index a30197253..e802af35c 100644 --- a/pb/wtask_msg.pb.go +++ b/pb/wtask_msg.pb.go @@ -618,62 +618,6 @@ func (x *WTaskAccepttaskChangePush) GetAccepttask() []*DBWTaskItem { return nil } -//任务自动完成 推送 -type WTaskAutoFinshPush struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Completes []int32 `protobuf:"varint,1,rep,packed,name=completes,proto3" json:"completes"` //可接取任务列表 - Award []*UserAssets `protobuf:"bytes,2,rep,name=award,proto3" json:"award"` //奖励 -} - -func (x *WTaskAutoFinshPush) Reset() { - *x = WTaskAutoFinshPush{} - if protoimpl.UnsafeEnabled { - mi := &file_wtask_wtask_msg_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *WTaskAutoFinshPush) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*WTaskAutoFinshPush) ProtoMessage() {} - -func (x *WTaskAutoFinshPush) ProtoReflect() protoreflect.Message { - mi := &file_wtask_wtask_msg_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use WTaskAutoFinshPush.ProtoReflect.Descriptor instead. -func (*WTaskAutoFinshPush) Descriptor() ([]byte, []int) { - return file_wtask_wtask_msg_proto_rawDescGZIP(), []int{12} -} - -func (x *WTaskAutoFinshPush) GetCompletes() []int32 { - if x != nil { - return x.Completes - } - return nil -} - -func (x *WTaskAutoFinshPush) GetAward() []*UserAssets { - if x != nil { - return x.Award - } - return nil -} - var File_wtask_wtask_msg_proto protoreflect.FileDescriptor var file_wtask_wtask_msg_proto_rawDesc = []byte{ @@ -729,13 +673,8 @@ var file_wtask_wtask_msg_proto_rawDesc = []byte{ 0x6e, 0x67, 0x65, 0x50, 0x75, 0x73, 0x68, 0x12, 0x2c, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x74, 0x61, 0x73, 0x6b, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x44, 0x42, 0x57, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x0a, 0x61, 0x63, 0x63, 0x65, 0x70, - 0x74, 0x74, 0x61, 0x73, 0x6b, 0x22, 0x55, 0x0a, 0x12, 0x57, 0x54, 0x61, 0x73, 0x6b, 0x41, 0x75, - 0x74, 0x6f, 0x46, 0x69, 0x6e, 0x73, 0x68, 0x50, 0x75, 0x73, 0x68, 0x12, 0x1c, 0x0a, 0x09, 0x63, - 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, - 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x73, 0x12, 0x21, 0x0a, 0x05, 0x61, 0x77, 0x61, - 0x72, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x41, - 0x73, 0x73, 0x65, 0x74, 0x73, 0x52, 0x05, 0x61, 0x77, 0x61, 0x72, 0x64, 0x42, 0x06, 0x5a, 0x04, - 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x74, 0x74, 0x61, 0x73, 0x6b, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -750,7 +689,7 @@ func file_wtask_wtask_msg_proto_rawDescGZIP() []byte { return file_wtask_wtask_msg_proto_rawDescData } -var file_wtask_wtask_msg_proto_msgTypes = make([]protoimpl.MessageInfo, 13) +var file_wtask_wtask_msg_proto_msgTypes = make([]protoimpl.MessageInfo, 12) var file_wtask_wtask_msg_proto_goTypes = []interface{}{ (*WTaskInfoReq)(nil), // 0: WTaskInfoReq (*WTaskInfoResp)(nil), // 1: WTaskInfoResp @@ -764,27 +703,25 @@ var file_wtask_wtask_msg_proto_goTypes = []interface{}{ (*WTaskFinishResp)(nil), // 9: WTaskFinishResp (*WTaskActivationsPush)(nil), // 10: WTaskActivationsPush (*WTaskAccepttaskChangePush)(nil), // 11: WTaskAccepttaskChangePush - (*WTaskAutoFinshPush)(nil), // 12: WTaskAutoFinshPush - (*DBWTaskItem)(nil), // 13: DBWTaskItem - (*BattleFormation)(nil), // 14: BattleFormation - (*BattleInfo)(nil), // 15: BattleInfo - (*BattleReport)(nil), // 16: BattleReport - (*UserAssets)(nil), // 17: UserAssets + (*DBWTaskItem)(nil), // 12: DBWTaskItem + (*BattleFormation)(nil), // 13: BattleFormation + (*BattleInfo)(nil), // 14: BattleInfo + (*BattleReport)(nil), // 15: BattleReport + (*UserAssets)(nil), // 16: UserAssets } var file_wtask_wtask_msg_proto_depIdxs = []int32{ - 13, // 0: WTaskInfoResp.accepttask:type_name -> DBWTaskItem - 13, // 1: WTaskAcceptResp.task:type_name -> DBWTaskItem - 14, // 2: WTaskBattleStartReq.battle:type_name -> BattleFormation - 15, // 3: WTaskBattleStartResp.info:type_name -> BattleInfo - 16, // 4: WTaskBattleFinishReq.report:type_name -> BattleReport - 17, // 5: WTaskFinishResp.award:type_name -> UserAssets - 13, // 6: WTaskAccepttaskChangePush.accepttask:type_name -> DBWTaskItem - 17, // 7: WTaskAutoFinshPush.award:type_name -> UserAssets - 8, // [8:8] is the sub-list for method output_type - 8, // [8:8] is the sub-list for method input_type - 8, // [8:8] is the sub-list for extension type_name - 8, // [8:8] is the sub-list for extension extendee - 0, // [0:8] is the sub-list for field type_name + 12, // 0: WTaskInfoResp.accepttask:type_name -> DBWTaskItem + 12, // 1: WTaskAcceptResp.task:type_name -> DBWTaskItem + 13, // 2: WTaskBattleStartReq.battle:type_name -> BattleFormation + 14, // 3: WTaskBattleStartResp.info:type_name -> BattleInfo + 15, // 4: WTaskBattleFinishReq.report:type_name -> BattleReport + 16, // 5: WTaskFinishResp.award:type_name -> UserAssets + 12, // 6: WTaskAccepttaskChangePush.accepttask:type_name -> DBWTaskItem + 7, // [7:7] is the sub-list for method output_type + 7, // [7:7] is the sub-list for method input_type + 7, // [7:7] is the sub-list for extension type_name + 7, // [7:7] is the sub-list for extension extendee + 0, // [0:7] is the sub-list for field type_name } func init() { file_wtask_wtask_msg_proto_init() } @@ -940,18 +877,6 @@ func file_wtask_wtask_msg_proto_init() { return nil } } - file_wtask_wtask_msg_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WTaskAutoFinshPush); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } } type x struct{} out := protoimpl.TypeBuilder{ @@ -959,7 +884,7 @@ func file_wtask_wtask_msg_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_wtask_wtask_msg_proto_rawDesc, NumEnums: 0, - NumMessages: 13, + NumMessages: 12, NumExtensions: 0, NumServices: 0, },