上传装备初始化动态权重参数添加

This commit is contained in:
liwei1dao 2023-02-22 11:03:44 +08:00
parent 6d297358e4
commit d2a3af4dac
3 changed files with 30 additions and 15 deletions

View File

@ -159,7 +159,7 @@ type (
pos: 位置(-1 表示随机位置 大于0 表示获得指定位置 ) pos: 位置(-1 表示随机位置 大于0 表示获得指定位置 )
lv: 装备等级 lv: 装备等级
*/ */
GetForgeEquip(session IUserSession, suiteId int32, pos int32, lv int32) (eruip *pb.DB_Equipment, code pb.ErrorCode) GetForgeEquip(session IUserSession, suiteId int32, pos int32, lv int32, dyweight []int32) (eruip *pb.DB_Equipment, code pb.ErrorCode)
} }
IMainline interface { IMainline interface {
ModifyMainlineDataByNanduID(uid string, nandu, id int32) (code pb.ErrorCode) ModifyMainlineDataByNanduID(uid string, nandu, id int32) (code pb.ErrorCode)

View File

@ -106,7 +106,7 @@ func (this *modelEquipmentComp) AddEquipments(session comm.IUserSession, cIds ma
for k, v := range cIds { for k, v := range cIds {
if c, ok := configure.GetDataMap()[k]; ok { if c, ok := configure.GetDataMap()[k]; ok {
for i := uint32(0); i < v; i++ { for i := uint32(0); i < v; i++ {
if equipment, err := this.newEquipment(uId, c); err != nil { if equipment, err := this.newEquipment(uId, c, nil); err != nil {
return nil, err return nil, err
} else { } else {
//随机任务 //随机任务
@ -242,11 +242,12 @@ func (this *modelEquipmentComp) UpdateByHeroId(uid string, equipments ...*pb.DB_
} }
//创建新的武器对象 //创建新的武器对象
func (this *modelEquipmentComp) newEquipment(uid string, conf *cfg.GameEquipData) (equipment *pb.DB_Equipment, err error) { func (this *modelEquipmentComp) newEquipment(uid string, conf *cfg.GameEquipData, dyweight []int32) (equipment *pb.DB_Equipment, err error) {
var ( var (
mattr []*cfg.GameEquipAttrlibraryData mattr []*cfg.GameEquipAttrlibraryData
sattr []*cfg.GameEquipAttrlibraryData sattr []*cfg.GameEquipAttrlibraryData
equipatt *cfg.GameEquipAttributeData equipatt *cfg.GameEquipAttributeData
weight []int32
total int total int
satterNum int32 satterNum int32
) )
@ -281,12 +282,22 @@ func (this *modelEquipmentComp) newEquipment(uid string, conf *cfg.GameEquipData
break break
} }
} }
weight = make([]int32, len(conf.Addattrnump))
for i, v := range conf.Addattrnump {
weight[i] = v
}
if dyweight != nil && len(dyweight) >= len(weight) {
for i, _ := range weight {
weight[i] += dyweight[i]
}
}
for _, v := range conf.Addattrnump { for _, v := range weight {
total += int(v) total += int(v)
} }
n := rand.Intn(total) n := rand.Intn(total)
for i, v := range conf.Addattrnump { for i, v := range weight {
if int32(n) <= v { if int32(n) <= v {
satterNum = conf.Addattrnum[i] satterNum = conf.Addattrnum[i]
break break

View File

@ -158,7 +158,7 @@ func (this *Equipment) NewEquipment(uid, cid string) (code pb.ErrorCode, equip *
code = pb.ErrorCode_ConfigNoFound code = pb.ErrorCode_ConfigNoFound
return return
} }
if equip, err = this.modelEquipment.newEquipment(uid, conf); err != nil { if equip, err = this.modelEquipment.newEquipment(uid, conf, nil); err != nil {
code = pb.ErrorCode_ConfigNoFound code = pb.ErrorCode_ConfigNoFound
return return
} }
@ -332,11 +332,10 @@ func (this *Equipment) GetActionableSuit(uid string) (code pb.ErrorCode, Suit []
pos: 位置(-1 表示随机位置 大于0 表示获得指定位置 ) pos: 位置(-1 表示随机位置 大于0 表示获得指定位置 )
lv: 装备等级 lv: 装备等级
*/ */
func (this *Equipment) GetForgeEquip(session comm.IUserSession, suiteId int32, pos int32, lv int32) (eruip *pb.DB_Equipment, code pb.ErrorCode) { func (this *Equipment) GetForgeEquip(session comm.IUserSession, suiteId int32, pos int32, lv int32, dyweight []int32) (eruip *pb.DB_Equipment, code pb.ErrorCode) {
var ( var (
configures []*cfg.GameEquipData configures []*cfg.GameEquipData
lvs []*cfg.GameEquipData lvs []*cfg.GameEquipData
change []*pb.DB_Equipment
err error err error
) )
if configures, err = this.configure.GetSuitEquipmentConfigure(suiteId); err != nil { if configures, err = this.configure.GetSuitEquipmentConfigure(suiteId); err != nil {
@ -346,10 +345,14 @@ func (this *Equipment) GetForgeEquip(session comm.IUserSession, suiteId int32, p
if pos != -1 { if pos != -1 {
for _, v := range configures { for _, v := range configures {
if v.Pos == pos && v.Star == lv { if v.Pos == pos && v.Star == lv {
if change, code = this.AddNewEquipments(session, map[string]uint32{v.Id: 1}, true); code == pb.ErrorCode_Success { if eruip, err = this.modelEquipment.newEquipment(session.GetUserId(), v, dyweight); err == nil {
eruip = change[0] code = pb.ErrorCode_Success
this.equipmentsChangePush(session, []*pb.DB_Equipment{eruip})
return return
} }
this.Errorf("err%v", err)
code = pb.ErrorCode_SystemError
return
} }
} }
code = pb.ErrorCode_ConfigNoFound code = pb.ErrorCode_ConfigNoFound
@ -363,14 +366,15 @@ func (this *Equipment) GetForgeEquip(session comm.IUserSession, suiteId int32, p
} }
r := rand.New(rand.NewSource(time.Now().Unix())) r := rand.New(rand.NewSource(time.Now().Unix()))
index := r.Perm(len(lvs))[0] index := r.Perm(len(lvs))[0]
if eruip, err = this.modelEquipment.newEquipment(session.GetUserId(), lvs[index], dyweight); err == nil {
if change, code = this.AddNewEquipments(session, map[string]uint32{lvs[index].Id: 1}, true); code == pb.ErrorCode_Success { code = pb.ErrorCode_Success
eruip = change[0] this.equipmentsChangePush(session, []*pb.DB_Equipment{eruip})
return return
} }
this.Errorf("err%v", err)
code = pb.ErrorCode_SystemError
return
} }
return
} }
//Evens-------------------------------------------------------------------------------------------------------------------------------- //Evens--------------------------------------------------------------------------------------------------------------------------------