package busi import ( "time" "legu.airobot/lib" "legu.airobot/pb" ) //竞技场场景 var _ lib.IScene = (*ArenaScene)(nil) type ArenaScene struct { lib.Action } func (f *ArenaScene) Info() lib.SceneInfo { return lib.SceneInfo{ Name: "竞技场", Desc: "竞技场压测", } } func (f *ArenaScene) Run(ai lib.IRobot) (err error) { var ( code pb.ErrorCode matche *pb.ArenaMatcheResp = &pb.ArenaMatcheResp{} challenge *pb.ArenaChallengeResp = &pb.ArenaChallengeResp{} herolistrsp *pb.HeroListResp ) if herolist := ai.Get("hero.list"); herolist == nil { ai.Stop() return } else { herolistrsp = herolist.(*pb.HeroListResp) if herolistrsp.List == nil || len(herolistrsp.List) == 0 { ai.Stop() return } } if code = ai.SendMsg("arena", "matche", &pb.ArenaMatcheReq{}, matche); code != pb.ErrorCode_Success { ai.Stop() return } for _, v := range matche.Players { if code = ai.SendMsg("arena", "challenge", &pb.ArenaChallengeReq{ Playerid: v.Uid, Isai: v.Isai, MformatId: v.Mformatid, Battle: &pb.BattleFormation{ Leadpos: 0, Format: []string{herolistrsp.List[0].Id}, }, }, challenge); code != pb.ErrorCode_Success { ai.Stop() return } time.Sleep(time.Second * 5) if code = ai.SendMsg("arena", "challengereward", &pb.ArenaChallengeRewardReq{ Iswin: true, Isai: v.Isai, Aiintegral: v.Integral, Ainame: v.Name, Report: &pb.BattleReport{ Info: challenge.Info, Costtime: 1, Process: []byte{123}, Completetask: []int32{}, }, }, challenge); code != pb.ErrorCode_Success { ai.Stop() return } time.Sleep(time.Second * 2) } return }