diff --git a/modules/hero/model_hero.go b/modules/hero/model_hero.go index 78a56d3ee..0dbcc3727 100644 --- a/modules/hero/model_hero.go +++ b/modules/hero/model_hero.go @@ -44,23 +44,24 @@ func (this *ModelHero) InitHero(uid string, heroCfgId string) *pb.DBHero { } objId := primitive.NewObjectID().Hex() newHero := &pb.DBHero{ - Id: objId, - Uid: uid, - HeroID: heroCfg.Hid, - Star: heroCfg.Star, //初始星级 - Lv: 1, //初始等级 - IsOverlying: true, //是否允许叠加, - Block: false, //未锁定 - CardType: heroCfg.Type, //卡片类型 - Skins: []int32{}, - EquipID: make([]string, 8), //初始装备 - SameCount: 1, //默认叠加数量 - AddProperty: make(map[string]int32), - Energy: make(map[string]int32), - Property: make(map[string]int32), - EnergyProperty: make(map[string]int32), - JuexProperty: make(map[string]int32), - TalentProperty: make(map[string]int32), + Id: objId, + Uid: uid, + HeroID: heroCfg.Hid, + Star: heroCfg.Star, //初始星级 + Lv: 1, //初始等级 + IsOverlying: true, //是否允许叠加, + Block: false, //未锁定 + CardType: heroCfg.Type, //卡片类型 + Skins: []int32{}, + EquipID: make([]string, 8), //初始装备 + SameCount: 1, //默认叠加数量 + AddProperty: make(map[string]int32), + Energy: make(map[string]int32), + Property: make(map[string]int32), + EnergyProperty: make(map[string]int32), + JuexProperty: make(map[string]int32), + TalentProperty: make(map[string]int32), + HoroscopeProperty: make(map[string]int32), } this.PropertyCompute(newHero) this.initHeroSkill(newHero) @@ -469,7 +470,8 @@ func (this *ModelHero) PropertyCompute(hero *pb.DBHero) { func (this *ModelHero) ChangeHeroProperty(session comm.IUserSession, hero *pb.DBHero) (err error) { this.PropertyCompute(hero) //重新计算 property 的值 update := map[string]interface{}{ - "property": hero.Property, + "property": hero.Property, + "talentProperty": hero.TalentProperty, } if err = this.ChangeList(session.GetUserId(), hero.Id, update); err != nil { @@ -662,20 +664,22 @@ func (this *ModelHero) InitTempHero(heroCfgId string, star, lv int32) *pb.DBHero } newHero := &pb.DBHero{ - HeroID: heroCfg.Hid, - Star: star, //初始星级 - Lv: lv, //初始等级 - IsOverlying: true, //是否允许叠加, - Block: false, //未锁定 - CardType: heroCfg.Type, //卡片类型 - Skins: []int32{}, - EquipID: make([]string, 8), //初始装备 - SameCount: 1, //默认叠加数量 - AddProperty: make(map[string]int32), - Energy: make(map[string]int32), - Property: make(map[string]int32), - EnergyProperty: make(map[string]int32), - JuexProperty: make(map[string]int32), + HeroID: heroCfg.Hid, + Star: star, //初始星级 + Lv: lv, //初始等级 + IsOverlying: true, //是否允许叠加, + Block: false, //未锁定 + CardType: heroCfg.Type, //卡片类型 + Skins: []int32{}, + EquipID: make([]string, 8), //初始装备 + SameCount: 1, //默认叠加数量 + AddProperty: make(map[string]int32), + Energy: make(map[string]int32), + Property: make(map[string]int32), + EnergyProperty: make(map[string]int32), + JuexProperty: make(map[string]int32), + TalentProperty: make(map[string]int32), + HoroscopeProperty: make(map[string]int32), } this.PropertyCompute(newHero) this.initHeroSkill(newHero) diff --git a/modules/hero/module.go b/modules/hero/module.go index 15ffed1cf..c38b1ef93 100644 --- a/modules/hero/module.go +++ b/modules/hero/module.go @@ -91,10 +91,6 @@ func (this *Hero) CreateRepeatHero(session comm.IUserSession, heroCfgId string, if _, ok := result.GetTujian()[heroCfgId]; !ok { sz[heroCfgId] = 0 initUpdate["tujian"] = sz - } - - if len(initUpdate) != 0 { - this.ModuleUser.ChangeUserExpand(uid, initUpdate) } } @@ -663,16 +659,18 @@ func (this *Hero) GetAllMaxHero(session comm.IUserSession) (code pb.ErrorCode) { hero.JuexingLv = int32(maxJux) hero.ResonateNum = maxGongm hero.SameCount = 1 - _heroMap := map[string]interface{}{ - "lv": hero.Lv, - "star": hero.Star, - "juexingLv": hero.JuexingLv, - "resonateNum": hero.ResonateNum, - "isOverlying": false, - "sameCount": 1, - "normalSkill": hero.NormalSkill, - } this.modelHero.PropertyCompute(hero) // 重新计算属性 + _heroMap := map[string]interface{}{ + "lv": hero.Lv, + "star": hero.Star, + "juexingLv": hero.JuexingLv, + "resonateNum": hero.ResonateNum, + "isOverlying": false, + "sameCount": 1, + "normalSkill": hero.NormalSkill, + "talentProperty": hero.TalentProperty, + } + // 保存数据 err = this.modelHero.ChangeList(session.GetUserId(), hero.Id, _heroMap) if err != nil { diff --git a/stress/robot/robot.go b/stress/robot/robot.go index 7e9a418aa..7aae07d54 100644 --- a/stress/robot/robot.go +++ b/stress/robot/robot.go @@ -7,10 +7,8 @@ import ( "go_dreamfactory/comm" "go_dreamfactory/pb" "io" - "math/rand" "os" "strconv" - "time" "github.com/gorilla/websocket" "github.com/sirupsen/logrus" @@ -300,15 +298,13 @@ func (r Robot) GetRandUser() bool { } //return true } -func (r *Robot) Create() int64 { +func (r *Robot) Create(i uint64) int64 { var byteLen int64 mainType := "user" subType := "create" msg := &pb.UserMessage{MainType: mainType, SubType: subType} - rand.Seed(time.Now().UnixNano()) - n2 := rand.Int63n(9000000) - name := strconv.Itoa(int(n2) + 100000) + name := "a100000" + strconv.Itoa(int(i)) rsp := &pb.UserCreateReq{ NickName: name, Figure: 100, @@ -457,3 +453,55 @@ func (r Robot) GourmetOrder() int64 { } return byteLen } + +// 抽卡压测 参数 0~4 0 普通抽 + +func (r *Robot) DrawCard(drawType int32) int64 { + var byteLen int64 + mainType := "hero" + subType := "drawcard" + msg := &pb.UserMessage{MainType: mainType, SubType: subType} + + rsp := &pb.HeroDrawCardReq{ + DrawType: drawType, + DrawCount: 10, + } + msg.Sec = r.BuildSecStr() + if comm.ProtoMarshal(rsp, msg) { + data, _ := proto.Marshal(msg) + err := r.ws.WriteMessage(websocket.BinaryMessage, data) + if err != nil { + fmt.Printf("WriteMessage err:%v", err) + } + } + + for { + var msg *pb.UserMessage = &pb.UserMessage{} + _, data, err := r.ws.ReadMessage() + if err != nil { + fmt.Printf("readMessage err:%v", err) + continue + } + + if err = proto.Unmarshal(data, msg); err != nil { + fmt.Printf("unmarshal err:%v", err) + } + if msg.MainType == mainType && msg.SubType == subType { + byteLen += int64(len(data)) + resp := &pb.UserCreateResp{} + if !comm.ProtoUnmarshal(msg, resp) { //反序列化失败 + byteLen = 0 + } + break + } else if msg.MainType == "notify" && msg.SubType == "errornotify" { + + rsp := &pb.NotifyErrorNotifyPush{} + if !comm.ProtoUnmarshal(msg, rsp) { // 记录错误码 + fmt.Printf("NotifyErrorNotifyPush ProtoUnmarshal err") + } + byteLen = 0 + break + } + } + return byteLen +} diff --git a/stress/server/dispose.go b/stress/server/dispose.go index 7fba30662..348cb5890 100644 --- a/stress/server/dispose.go +++ b/stress/server/dispose.go @@ -63,7 +63,7 @@ func Dispose(ctx context.Context, concurrency, totalNumber uint64, request *mode // 并发建立长链接 go func(i uint64) { r := robot.NewRobot(request.URL) - r.SetAccount("61112" + strconv.Itoa(int(i))) + r.SetAccount("71112" + strconv.Itoa(int(i))) //head := &pb.UserMessage{MainType: "user", SubType: "login"} // 先登录 diff --git a/stress/server/golink/websocket_link.go b/stress/server/golink/websocket_link.go index e65113a04..f677743c5 100644 --- a/stress/server/golink/websocket_link.go +++ b/stress/server/golink/websocket_link.go @@ -83,7 +83,7 @@ func webSocketRequest(chanID uint64, ch chan<- *model.RequestResults, i uint64, if byteLen == 0 { isSucceed = false } else { - byteLen += r.Create() + byteLen += r.Create(i) } if byteLen == 0 { isSucceed = false