上传装备产出随机

This commit is contained in:
liwei1dao 2023-06-08 22:02:56 +08:00
parent 50a630dc7a
commit 73ced03a17
2 changed files with 26 additions and 16 deletions

View File

@ -110,6 +110,21 @@ func GetRandW(sz []int32) int32 {
return 0
}
func RandShuffle(leng int) []int {
if leng < 0 {
return make([]int, 0)
}
slist := make([]int, leng)
for i, _ := range slist {
slist[i] = i
}
for i := leng - 1; i > 0; i-- {
j, _ := rand.Int(rand.Reader, big.NewInt(int64(i+1)))
slist[i], slist[j.Int64()] = slist[j.Int64()], slist[i]
}
return slist
}
func GetRandNum(min, max int32) int32 {
if max < min {
return 0

View File

@ -1,15 +1,15 @@
package equipment
import (
"crypto/rand"
"fmt"
"go_dreamfactory/comm"
"go_dreamfactory/lego/core"
"go_dreamfactory/modules"
"go_dreamfactory/pb"
"go_dreamfactory/sys/configure"
cfg "go_dreamfactory/sys/configure/structs"
"go_dreamfactory/sys/db"
"math/rand"
"math/big"
"go.mongodb.org/mongo-driver/bson/primitive"
"go.mongodb.org/mongo-driver/mongo"
@ -249,12 +249,11 @@ func (this *modelEquipmentComp) UpdateByHeroId(uid string, equipments ...*pb.DB_
//创建新的武器对象
func (this *modelEquipmentComp) newEquipment(uid string, conf *cfg.GameEquipData, dyweight []int32, isepic bool) (equipment *pb.DB_Equipment, err error) {
var (
r *rand.Rand
mattr []*cfg.GameEquipAttrlibrarySData
sattr []*cfg.GameEquipAttrlibrarySData
equipatt *cfg.GameEquipAttributeData
weight []int32
total int
total int64
maxindex int
satterNum int32
)
@ -289,7 +288,6 @@ func (this *modelEquipmentComp) newEquipment(uid string, conf *cfg.GameEquipData
break
}
}
r = rand.New(rand.NewSource(configure.Now().UnixNano()))
if !isepic {
weight = make([]int32, len(conf.Addattrnump))
for i, v := range conf.Addattrnump {
@ -301,11 +299,11 @@ func (this *modelEquipmentComp) newEquipment(uid string, conf *cfg.GameEquipData
}
}
for _, v := range weight {
total += int(v)
total += int64(v)
}
n := r.Intn(total)
result, _ := rand.Int(rand.Reader, big.NewInt(total))
for i, v := range weight {
if int32(n) <= v {
if int32(result.Int64()) <= v {
satterNum = conf.Addattrnum[i]
break
}
@ -331,7 +329,7 @@ func (this *modelEquipmentComp) newEquipment(uid string, conf *cfg.GameEquipData
if conf.EquipId == 1 {
equipment.AdverbEntry = make([]*pb.EquipmentAttributeEntry, 0)
for _, v := range r.Perm(len(sattr))[:satterNum] {
for _, v := range comm.RandShuffle(len(sattr))[:satterNum] {
equipment.AdverbEntry = append(equipment.AdverbEntry, &pb.EquipmentAttributeEntry{
Id: sattr[v].Key,
Libraryid: sattr[v].Libraryid,
@ -343,7 +341,7 @@ func (this *modelEquipmentComp) newEquipment(uid string, conf *cfg.GameEquipData
}
} else {
equipment.Adverbskill = make([]*pb.EquipmentSkillEntry, 0)
for _, v := range r.Perm(len(sattr))[:satterNum] {
for _, v := range comm.RandShuffle(len(sattr))[:satterNum] {
if equipatt, err = this.module.configure.getEquipAttribute(sattr[v].Attrkey); err != nil {
return
}
@ -397,8 +395,7 @@ func (this *modelEquipmentComp) upgradeEquipment(equipment *pb.DB_Equipment, equ
}
}
if len(sattr) > 0 {
r := rand.New(rand.NewSource(configure.Now().Unix()))
index := r.Perm(len(sattr))[0]
index := comm.RandShuffle(len(sattr))[0]
if equip.EquipId == 1 {
equipment.AdverbEntry = append(equipment.AdverbEntry, &pb.EquipmentAttributeEntry{
Id: sattr[index].Key,
@ -431,8 +428,7 @@ func (this *modelEquipmentComp) upgradeEquipment(equipment *pb.DB_Equipment, equ
return
}
var attrlibrary *cfg.GameEquipAttrlibrarySData
r := rand.New(rand.NewSource(configure.Now().Unix()))
index := r.Perm(len(equipment.AdverbEntry))[0]
index := comm.RandShuffle(len(equipment.AdverbEntry))[0]
if attrlibrary, err = this.module.configure.GetEquipmentAttrlibraryConfigureByKey(equipment.AdverbEntry[index].Id); err != nil {
return
}
@ -442,8 +438,7 @@ func (this *modelEquipmentComp) upgradeEquipment(equipment *pb.DB_Equipment, equ
}
equipment.AdverbEntry[index].Lv++
} else {
r := rand.New(rand.NewSource(configure.Now().Unix()))
index := r.Perm(len(equipment.Adverbskill))[0]
index := comm.RandShuffle(len(equipment.Adverbskill))[0]
equipment.Adverbskill[index].Lv++
}
return