上传装备产出随机
This commit is contained in:
parent
50a630dc7a
commit
73ced03a17
15
comm/core.go
15
comm/core.go
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user