diff --git a/comm/imodule.go b/comm/imodule.go index 141f165f0..9fbc3d606 100644 --- a/comm/imodule.go +++ b/comm/imodule.go @@ -251,7 +251,7 @@ type ( dyweight: 动态权重 isepic:是否史诗 与 dyweight 互斥 */ - GetForgeEquip(session IUserSession, suiteId int32, pos int32, lv int32, dyweight []int32, isepic bool) (eruip *pb.DB_Equipment, errdata *pb.ErrorData) + GetForgeEquip(session IUserSession, num, suiteId int32, pos int32, lv int32, dyweight []int32, isepic bool) (eruip *pb.DB_Equipment, errdata *pb.ErrorData) //GM接口 获取全部装备 GMGetAllEquip(session IUserSession, ismaxlv bool) (errdata *pb.ErrorData) diff --git a/modules/equipment/module.go b/modules/equipment/module.go index 93cc483b7..2e8ea1545 100644 --- a/modules/equipment/module.go +++ b/modules/equipment/module.go @@ -232,12 +232,12 @@ func (this *Equipment) NewEquipment(uid, cid string) (errdata *pb.ErrorData, equ } // 创建新的装备 -func (this *Equipment) AddEquipment(session comm.IUserSession, equip *pb.DB_Equipment) (errdata *pb.ErrorData) { +func (this *Equipment) AddEquipment(session comm.IUserSession, equips ...*pb.DB_Equipment) (errdata *pb.ErrorData) { var ( err error configure *cfg.GameEquipData ) - if err = this.modelEquipment.addEquipment(equip); err != nil { + if err = this.modelEquipment.addEquipments(session.GetUserId(), equips); err != nil { errdata = &pb.ErrorData{ Code: pb.ErrorCode_DBError, Title: pb.ErrorCode_DBError.ToString(), @@ -245,32 +245,35 @@ func (this *Equipment) AddEquipment(session comm.IUserSession, equip *pb.DB_Equi } return } - if configure, err = this.configure.GetEquipmentConfigureById(equip.CId); err != nil { - errdata = &pb.ErrorData{ - Code: pb.ErrorCode_ConfigNoFound, - Title: pb.ErrorCode_ConfigNoFound.ToString(), - Message: err.Error(), - } - return - } tasks := make([]*pb.BuriedParam, 0) - //随机任务 - tasks = append(tasks, comm.GetBuriedParam(comm.Rtype50, 1, configure.Color)) - tasks = append(tasks, comm.GetBuriedParam(comm.Rtype97, 1, configure.Suittype, configure.Color)) - unm := int32(1) - if equip.AdverbEntry != nil { - unm += int32(len(equip.AdverbEntry)) + for _, equip := range equips { + if configure, err = this.configure.GetEquipmentConfigureById(equip.CId); err != nil { + errdata = &pb.ErrorData{ + Code: pb.ErrorCode_ConfigNoFound, + Title: pb.ErrorCode_ConfigNoFound.ToString(), + Message: err.Error(), + } + return + } + + //随机任务 + tasks = append(tasks, comm.GetBuriedParam(comm.Rtype50, 1, configure.Color)) + tasks = append(tasks, comm.GetBuriedParam(comm.Rtype97, 1, configure.Suittype, configure.Color)) + unm := int32(1) + if equip.AdverbEntry != nil { + unm += int32(len(equip.AdverbEntry)) + } + if equip.Adverbskill != nil { + unm += int32(len(equip.Adverbskill)) + } + tasks = append(tasks, comm.GetBuriedParam(comm.Rtype99, 1, unm, configure.Color)) + if configure.Pos == 7 { + tasks = append(tasks, comm.GetBuriedParam(comm.Rtype103, 1, configure.Color)) + } else if configure.Pos == 6 { + tasks = append(tasks, comm.GetBuriedParam(comm.Rtype101, 1, configure.Color)) + } } - if equip.Adverbskill != nil { - unm += int32(len(equip.Adverbskill)) - } - tasks = append(tasks, comm.GetBuriedParam(comm.Rtype99, 1, unm, configure.Color)) - if configure.Pos == 7 { - tasks = append(tasks, comm.GetBuriedParam(comm.Rtype103, 1, configure.Color)) - } else if configure.Pos == 6 { - tasks = append(tasks, comm.GetBuriedParam(comm.Rtype101, 1, configure.Color)) - } - this.equipmentsChangePush(session, []*pb.DB_Equipment{equip}) + this.equipmentsChangePush(session, equips) go this.AsynHandleSession(session.Clone(), func(session comm.IUserSession) { this.ModuleBuried.TriggerBuried(session, tasks...) }) @@ -571,10 +574,11 @@ func (this *Equipment) GetActionableSuit(uid string) (errdata *pb.ErrorData, Sui dyweight: 动态权重 isepic:是否史诗 与 动态权重互斥 */ -func (this *Equipment) GetForgeEquip(session comm.IUserSession, suiteId int32, pos int32, lv int32, dyweight []int32, isepic bool) (eruip *pb.DB_Equipment, errdata *pb.ErrorData) { +func (this *Equipment) GetForgeEquip(session comm.IUserSession, num int32, suiteId int32, pos int32, lv int32, dyweight []int32, isepic bool) (eruips []*pb.DB_Equipment, errdata *pb.ErrorData) { var ( configures []*cfg.GameEquipData lvs []*cfg.GameEquipData + configure *cfg.GameEquipData err error ) if configures, err = this.configure.GetSuitEquipmentConfigure(suiteId); err != nil { @@ -585,30 +589,8 @@ func (this *Equipment) GetForgeEquip(session comm.IUserSession, suiteId int32, p } return } - if pos != -1 { - for _, v := range configures { - if v.Pos == pos && v.Color == lv { - if eruip, err = this.modelEquipment.newEquipment(session.GetUserId(), v, dyweight, isepic); err == nil { - errdata = this.AddEquipment(session, eruip) - // this.equipmentsChangePush(session, []*pb.DB_Equipment{eruip}) - return - } - this.Errorf("err%v", err) - errdata = &pb.ErrorData{ - Code: pb.ErrorCode_SystemError, - Title: pb.ErrorCode_SystemError.ToString(), - Message: err.Error(), - } - return - } - } - errdata = &pb.ErrorData{ - Code: pb.ErrorCode_ConfigNoFound, - Title: pb.ErrorCode_ConfigNoFound.ToString(), - Message: fmt.Sprintf("no fond pos:%d intlv:%d", pos, lv), - } - return - } else { + + if pos == -1 { lvs = make([]*cfg.GameEquipData, 0) for _, v := range configures { if v.Color == lv { @@ -622,21 +604,53 @@ func (this *Equipment) GetForgeEquip(session comm.IUserSession, suiteId int32, p } return } - r := rand.New(rand.NewSource(time.Now().Unix())) - index := r.Perm(len(lvs))[0] - if eruip, err = this.modelEquipment.newEquipment(session.GetUserId(), lvs[index], dyweight, isepic); err == nil { - errdata = this.AddEquipment(session, eruip) - // this.equipmentsChangePush(session, []*pb.DB_Equipment{eruip}) + } else { + for _, v := range configures { + if v.Pos == pos && v.Color == lv { + configure = v + break + } + } + if configure == nil { + errdata = &pb.ErrorData{ + Code: pb.ErrorCode_ConfigNoFound, + Message: fmt.Sprintf("no found SuiteId:%d Pos:%d Color:%d", suiteId, pos, lv), + } return } - this.Errorf("err%v", err) - errdata = &pb.ErrorData{ - Code: pb.ErrorCode_SystemError, - Title: pb.ErrorCode_SystemError.ToString(), - Message: err.Error(), - } - return } + eruips = make([]*pb.DB_Equipment, num) + for i := 0; i < int(num); i++ { + if pos != -1 { + for _, v := range configures { + if v.Pos == pos && v.Color == lv { + if eruips[i], err = this.modelEquipment.newEquipment(session.GetUserId(), v, dyweight, isepic); err != nil { + this.Errorf("err%v", err) + errdata = &pb.ErrorData{ + Code: pb.ErrorCode_SystemError, + Title: pb.ErrorCode_SystemError.ToString(), + Message: err.Error(), + } + return + } + } + } + } else { + r := rand.New(rand.NewSource(time.Now().Unix())) + index := r.Perm(len(lvs))[0] + if eruips[i], err = this.modelEquipment.newEquipment(session.GetUserId(), lvs[index], dyweight, isepic); err != nil { + this.Errorf("err%v", err) + errdata = &pb.ErrorData{ + Code: pb.ErrorCode_SystemError, + Title: pb.ErrorCode_SystemError.ToString(), + Message: err.Error(), + } + return + } + } + } + errdata = this.AddEquipment(session, eruips...) + return } func (this *Equipment) NewMaxQualityEquipment(session comm.IUserSession, cid []string) (eruips []*pb.DB_Equipment, errdata *pb.ErrorData) {