diff --git a/comm/imodule.go b/comm/imodule.go index 6df2d9b0a..8375fcc99 100644 --- a/comm/imodule.go +++ b/comm/imodule.go @@ -259,6 +259,8 @@ type ( GMGetAllEquip(session IUserSession, ismaxlv bool) (errdata *pb.ErrorData) //创建最高名字装备 NewMaxQualityEquipment(session IUserSession, cid []string) (eruips []*pb.DB_Equipment, errdata *pb.ErrorData) + //自定义装备 + GMGetCustomizeEquip(session IUserSession, id string, lv int32, attribute int32) (errdata *pb.ErrorData) } //任务 diff --git a/modules/equipment/modelEquipment.go b/modules/equipment/modelEquipment.go index 133164946..64b5be02e 100644 --- a/modules/equipment/modelEquipment.go +++ b/modules/equipment/modelEquipment.go @@ -313,7 +313,7 @@ func (this *modelEquipmentComp) newEquipment(uid string, conf *cfg.GameEquipData Value: mattr[index].Attr.N, BaseValue: mattr[index].Attr.N, } - if sattr, err = this.module.configure.GetEquipmentAttrlibraryConfigureById(conf.Addlibrary); err != nil || len(mattr) == 0 { + if sattr, err = this.module.configure.GetEquipmentAttrlibraryConfigureById(conf.Addlibrary); err != nil || len(sattr) == 0 { return } @@ -533,7 +533,101 @@ func (this *modelEquipmentComp) newMaxEquipment(uid string, conf *cfg.GameEquipD BaseValue: mattr[index].Attr.N, } equipment.MainEntry.Value = equipment.MainEntry.BaseValue + int32(math.Floor(float64(equipment.MainEntry.BaseValue*intensify.Bonus)/1000.0)) - if sattr, err = this.module.configure.GetEquipmentAttrlibraryConfigureById(conf.Addlibrary); err != nil || len(mattr) == 0 { + if sattr, err = this.module.configure.GetEquipmentAttrlibraryConfigureById(conf.Addlibrary); err != nil || len(sattr) == 0 { + return + } + + for i, v := range sattr { //移除主属性 + if v.Attr.A == equipment.MainEntry.AttrName { + sattr = append(sattr[0:i], sattr[i+1:]...) + break + } + } + satterNum = int32(len(sattr)) + if satterNum > 0 && satterNum <= 4 { + equipment.Star = satterNum + if conf.EquipId == 1 { + equipment.AdverbEntry = make([]*pb.EquipmentAttributeEntry, 0) + + for _, v := range comm.RandShuffle(len(sattr))[:satterNum] { + adverbEntry := &pb.EquipmentAttributeEntry{ + Id: sattr[v].Key, + Libraryid: sattr[v].Libraryid, + Lv: 5, + AttrName: sattr[v].Attr.A, + Value: sattr[v].Attr.N, + BaseValue: sattr[v].Attr.N, + } + value := adverbEntry.BaseValue + int32(float64(sattr[v].Addition[adverbEntry.Lv-1])/1000.0*float64(adverbEntry.BaseValue)) + if adverbEntry.Value < value { + adverbEntry.Value = value + } + equipment.AdverbEntry = append(equipment.AdverbEntry, adverbEntry) + } + } else { + equipment.Adverbskill = make([]*pb.EquipmentSkillEntry, 0) + for _, v := range comm.RandShuffle(len(sattr))[:satterNum] { + if equipatt, err = this.module.configure.getEquipAttribute(sattr[v].Skill); err != nil { + return + } + if equipatt.SkillId == 0 { + err = fmt.Errorf("equipatt:%d skill is 0", sattr[v].Attr.A) + return + } + equipment.Adverbskill = append(equipment.Adverbskill, &pb.EquipmentSkillEntry{ + Id: sattr[v].Key, + Libraryid: sattr[v].Libraryid, + AttrName: sattr[v].Attr.A, + SkillId: equipatt.SkillId, + Lv: 5, + }) + } + } + } + return +} + +// 自定义装备 +func (this *modelEquipmentComp) newCustomizeEquipment(uid string, eid string, lv int32, attribute int32) (equipment *pb.DB_Equipment, err error) { + var ( + conf *cfg.GameEquipData + mattr *cfg.GameEquipAttrlibrarySData + sattr []*cfg.GameEquipAttrlibrarySData + equipatt *cfg.GameEquipAttributeData + intensify *cfg.GameEquipIntensifyData + satterNum int32 + ) + if conf, err = this.module.configure.GetEquipmentConfigureById(eid); err != nil { + err = fmt.Errorf("no found eid%s", eid) + return + } + if intensify, err = this.module.configure.GetEquipmentIntensifyConfigureById(conf.EquipId, conf.Color, lv); err != nil { + this.module.Errorln(err) + return + } + equipment = &pb.DB_Equipment{ + Id: primitive.NewObjectID().Hex(), + CId: eid, + Lv: intensify.Level + 1, + UId: uid, + OverlayNum: 1, + IsInitialState: false, + } + if mattr, err = this.module.configure.GetEquipmentAttrlibraryConfigureByKey(attribute); err != nil { + err = fmt.Errorf("no found mattr%d", attribute) + this.module.Errorln(err) + return + } + equipment.MainEntry = &pb.EquipmentAttributeEntry{ + Id: mattr.Key, + Libraryid: mattr.Libraryid, + Lv: intensify.Level + 1, + AttrName: mattr.Attr.A, + Value: mattr.Attr.N, + BaseValue: mattr.Attr.N, + } + equipment.MainEntry.Value = equipment.MainEntry.BaseValue + int32(math.Floor(float64(equipment.MainEntry.BaseValue*intensify.Bonus)/1000.0)) + if sattr, err = this.module.configure.GetEquipmentAttrlibraryConfigureById(conf.Addlibrary); err != nil || len(sattr) == 0 { return } diff --git a/modules/equipment/module.go b/modules/equipment/module.go index fe2e04c0c..75f1fcee0 100644 --- a/modules/equipment/module.go +++ b/modules/equipment/module.go @@ -731,6 +731,27 @@ func (this *Equipment) GMGetAllEquip(session comm.IUserSession, ismaxlv bool) (e return } +/* +GM 命令接口 +获取全部装备 +*/ +func (this *Equipment) GMGetCustomizeEquip(session comm.IUserSession, id string, lv int32, attribute int32) (errdata *pb.ErrorData) { + var ( + err error + equipment *pb.DB_Equipment + ) + if equipment, err = this.modelEquipment.newCustomizeEquipment(session.GetUserId(), id, lv, attribute); err != nil { + errdata = &pb.ErrorData{ + Code: pb.ErrorCode_ConfigNoFound, + Title: pb.ErrorCode_ConfigNoFound.ToString(), + Message: err.Error(), + } + return + } + errdata = this.AddEquipment(session, equipment) + return +} + // Evens-------------------------------------------------------------------------------------------------------------------------------- // 推送道具变化消息 func (this *Equipment) equipmentsChangePush(session comm.IUserSession, items []*pb.DB_Equipment) (err error) { diff --git a/modules/gm/module.go b/modules/gm/module.go index 94f6ab466..88bd2ad23 100644 --- a/modules/gm/module.go +++ b/modules/gm/module.go @@ -413,6 +413,36 @@ func (this *GM) CreateCmd(session comm.IUserSession, cmd string) (errdata *pb.Er return } + this.Debug("使用bingo命令:uid = %s ", + log.Field{Key: "uid", Value: session.GetUserId()}, + log.Field{Key: "0", Value: datas[0]}, + ) + } else if len(datas) == 4 && (datas[0] == "cusequip") { // 自定义战备 + module1, err := this.service.GetModule(comm.ModuleEquipment) + if err != nil { + return + } + id := datas[1] + lv, err := strconv.Atoi(datas[2]) + if err != nil { + errdata = &pb.ErrorData{ + Code: pb.ErrorCode_ReqParameterError, + Title: pb.ErrorCode_ReqParameterError.ToString(), + } + return + } + attribute, err := strconv.Atoi(datas[2]) + if err != nil { + errdata = &pb.ErrorData{ + Code: pb.ErrorCode_ReqParameterError, + Title: pb.ErrorCode_ReqParameterError.ToString(), + } + return + } + if errdata = module1.(comm.IEquipment).GMGetCustomizeEquip(session, id, int32(lv), int32(attribute)); errdata != nil { + return + } + this.Debug("使用bingo命令:uid = %s ", log.Field{Key: "uid", Value: session.GetUserId()}, log.Field{Key: "0", Value: datas[0]},