package busi import ( "time" "legu.airobot/lib" "legu.airobot/pb" ) //好友场景 var _ lib.IScene = (*HeroScene)(nil) type HeroScene struct { lib.Action } func (f *HeroScene) Info() lib.SceneInfo { return lib.SceneInfo{ Name: "英雄模块", Desc: "aaa", } } func (f *HeroScene) Run(robot lib.IRobot) error { f.AddHero(robot, "25001") // 加阿宝 f.AddHero(robot, "44911") // 升级精灵 f.AddHero(robot, "45921") // 技能精灵 f.AddAttrGold(robot) // 加金币 f.AddAttrDiamond(robot) // 加钻石 time.Sleep(10 * time.Millisecond) // 等待10ms f.HeroLvUp(robot) // 英雄升级 time.Sleep(10 * time.Millisecond) // 等待10ms f.HeroSkillLvUp(robot) // 技能升级 // 升星 time.Sleep(10 * time.Millisecond) // 等待10ms f.HeroStarUp(robot) time.Sleep(50 * time.Millisecond) f.HeroResonance(robot) // 共鸣 f.AddItem(robot, "50001") // 觉醒材料 f.HeroAwaken(robot) f.AddItem(robot, "30001") // 抽卡材料 f.HeroDraw(robot) // 普通十连 // 购买抽卡道具 f.HeroDraw(robot) // 卡牌融合 f.AddHero(robot, "25004") // 加英雄 f.AddHero(robot, "25004") // 加英雄 f.AddHero(robot, "25004") // 加英雄 f.AddHero(robot, "25004") // 加英雄 return nil } // 加金币 func (f *HeroScene) AddAttrGold(robot lib.IRobot) error { var ( code pb.ErrorCode ) req := &pb.GMCmdReq{ Cmod: "bingo:attr,gold,1000000", } rsp := &pb.GMCmdResp{} code = robot.SendMsg("gm", "cmd", req, rsp) if code != pb.ErrorCode_Success { return nil } return nil } // 加钻石 func (f *HeroScene) AddAttrDiamond(robot lib.IRobot) error { var ( code pb.ErrorCode ) req := &pb.GMCmdReq{ Cmod: "bingo:attr,diamond,1000000", } rsp := &pb.GMCmdResp{} code = robot.SendMsg("gm", "cmd", req, rsp) if code != pb.ErrorCode_Success { return nil } return nil } // 加英雄 func (f *HeroScene) AddHero(robot lib.IRobot, cid string) error { var ( code pb.ErrorCode ) req := &pb.GMCmdReq{ Cmod: "bingo:hero," + cid + ",1", } rsp := &pb.GMCmdResp{} code = robot.SendMsg("gm", "cmd", req, rsp) if code != pb.ErrorCode_Success { return nil } return nil } func (f *HeroScene) AddItem(robot lib.IRobot, cid string) error { var ( code pb.ErrorCode ) req := &pb.GMCmdReq{ Cmod: "bingo:item," + cid + ",1000", } rsp := &pb.GMCmdResp{} code = robot.SendMsg("gm", "cmd", req, rsp) if code != pb.ErrorCode_Success { return nil } return nil } func (f *HeroScene) HeroLvUp(robot lib.IRobot) error { var ( code pb.ErrorCode expCard *pb.DBHero // 消耗的英雄 lvcard *pb.DBHero // 升级的英雄 ) req := &pb.HeroListReq{} rsp := &pb.HeroListResp{} code = robot.SendMsg("hero", "list", req, rsp) if code != pb.ErrorCode_Success { return nil } for _, v := range rsp.List { if v.CardType == 3 { expCard = v // 找到升级卡 break } } for _, v := range rsp.List { if v.HeroID == "25001" { lvcard = v break } } // 升级 lvReq := &pb.HeroStrengthenUplvReq{ HeroObjID: lvcard.Id, ExpCards: []*pb.MapStringInt32{}, } lvReq.ExpCards = append(lvReq.ExpCards, &pb.MapStringInt32{ Key: expCard.Id, Value: 1, }) lvRsp := &pb.HeroStrengthenUplvResp{} code = robot.SendMsg("hero", "strengthenuplv", lvReq, lvRsp) if code != pb.ErrorCode_Success { return nil } return nil } //技能升级 func (f *HeroScene) HeroSkillLvUp(robot lib.IRobot) error { var ( code pb.ErrorCode skillCard *pb.DBHero // 消耗的英雄 lvcard *pb.DBHero // 升级的英雄 ) req := &pb.HeroListReq{} rsp := &pb.HeroListResp{} code = robot.SendMsg("hero", "list", req, rsp) if code != pb.ErrorCode_Success { return nil } for _, v := range rsp.List { if v.CardType == 4 { skillCard = v // 找到技能升级卡 break } } for _, v := range rsp.List { if v.HeroID == "25001" { lvcard = v break } } // 升级 lvReq := &pb.HeroStrengthenUpSkillReq{ HeroObjID: lvcard.Id, CostCardObj: []string{}, } lvReq.CostCardObj = append(lvReq.CostCardObj, skillCard.Id) lvRsp := &pb.HeroStrengthenUpSkillResp{} code = robot.SendMsg("hero", "strengthenupskill", lvReq, lvRsp) if code != pb.ErrorCode_Success { return nil } return nil } // 升星 func (f *HeroScene) HeroStarUp(robot lib.IRobot) error { var ( code pb.ErrorCode costCard *pb.DBHero // 消耗的英雄 lvcard *pb.DBHero // 升级的英雄 ) req := &pb.GMCmdReq{ Cmod: "bingo:hero,15002,5", } rsp := &pb.GMCmdResp{} code = robot.SendMsg("gm", "cmd", req, rsp) if code != pb.ErrorCode_Success { return nil } listReq := &pb.HeroListReq{} listResp := &pb.HeroListResp{} code = robot.SendMsg("hero", "list", listReq, listResp) if code != pb.ErrorCode_Success { return nil } for _, v := range listResp.List { if v.HeroID == "15002" { costCard = v // 找到技能升级卡 break } } for _, v := range listResp.List { if v.HeroID == "25001" { lvcard = v break } } // 升星 starReq := &pb.HeroStrengthenUpStarReq{ HeroObjID: lvcard.Id, HeroRace: []*pb.CostCardData{}, } starReq.HeroRace = append(starReq.HeroRace, &pb.CostCardData{ CostCardObj: costCard.Id, Amount: 5, }) starRsp := &pb.HeroStrengthenUpStarResp{} code = robot.SendMsg("hero", "strengthenupstar", starReq, starRsp) if code != pb.ErrorCode_Success { return nil } return nil } // 英雄共鸣 func (f *HeroScene) HeroResonance(robot lib.IRobot) error { var ( code pb.ErrorCode costCard *pb.DBHero // 消耗的英雄 resonCard *pb.DBHero // 共鸣的英雄 ) f.AddHero(robot, "25001") // 加阿宝 listReq := &pb.HeroListReq{} listResp := &pb.HeroListResp{} code = robot.SendMsg("hero", "list", listReq, listResp) if code != pb.ErrorCode_Success { return nil } for _, v := range listResp.List { if v.HeroID == "25001" && v.Lv > 1 { resonCard = v // 找到目标卡 break } } for _, v := range listResp.List { if v.HeroID == "25001" && v.Lv == 1 { costCard = v break } } resonReq := &pb.HeroResonanceReq{ HeroObjID: resonCard.Id, CostObjID: []string{}, } resonReq.CostObjID = append(resonReq.CostObjID, costCard.Id) resonResp := &pb.HeroResonanceResp{} code = robot.SendMsg("hero", "resonance", resonReq, resonResp) if code != pb.ErrorCode_Success { return nil } return nil } // 英雄觉醒 func (f *HeroScene) HeroAwaken(robot lib.IRobot) error { var ( code pb.ErrorCode awakenCard *pb.DBHero // 觉醒的英雄 ) listReq := &pb.HeroListReq{} listResp := &pb.HeroListResp{} code = robot.SendMsg("hero", "list", listReq, listResp) if code != pb.ErrorCode_Success { return nil } for _, v := range listResp.List { if v.HeroID == "25001" && v.Lv > 1 { awakenCard = v // 找到目标卡 break } } awakenReq := &pb.HeroAwakenReq{ HeroObjID: awakenCard.Id, } awakenResp := &pb.HeroAwakenResp{} code = robot.SendMsg("hero", "awaken", awakenReq, awakenResp) if code != pb.ErrorCode_Success { return nil } return nil } // 抽卡 func (f *HeroScene) HeroDraw(robot lib.IRobot) error { var ( code pb.ErrorCode ) req := &pb.HeroDrawCardReq{ DrawType: 0, DrawCount: 10, } resp := &pb.HeroDrawCardResp{} code = robot.SendMsg("hero", "drawcard", req, resp) if code != pb.ErrorCode_Success { return nil } return nil } // 购买抽卡道具 func (f *HeroScene) HeroBuy(robot lib.IRobot) error { var ( code pb.ErrorCode ) req := &pb.HeroBuyReq{ BuyType: 1000001, BuyCount: 10, } resp := &pb.HeroBuyResp{} code = robot.SendMsg("hero", "buy", req, resp) if code != pb.ErrorCode_Success { return nil } return nil } // 英雄融合 func (f *HeroScene) HeroFusion(robot lib.IRobot) error { var ( code pb.ErrorCode delCard string ) listReq := &pb.HeroListReq{} listResp := &pb.HeroListResp{} code = robot.SendMsg("hero", "list", listReq, listResp) if code != pb.ErrorCode_Success { return nil } for _, v := range listResp.List { if v.HeroID == "25004" { delCard = v.Id // 找到目标卡 break } } req := &pb.HeroFusionReq{ HeroId: "25001", Heros: map[string]int32{}, } req.Heros[delCard] = 4 resp := &pb.HeroFusionResp{} code = robot.SendMsg("hero", "fusion", req, resp) if code != pb.ErrorCode_Success { return nil } return nil } // 使用能量 func (f *HeroScene) HerouseEnegry(robot lib.IRobot) error { var ( code pb.ErrorCode card *pb.DBHero // 共鸣 ) listReq := &pb.HeroListReq{} listResp := &pb.HeroListResp{} code = robot.SendMsg("hero", "list", listReq, listResp) if code != pb.ErrorCode_Success { return nil } for _, v := range listResp.List { if v.HeroID == "25001" && v.Lv > 1 { card = v // 找到目标卡 break } } energyReq := &pb.HeroResonanceUseEnergyReq{ HeroObjID: card.Id, Energy: []*pb.EnergyData{}, } energyReq.Energy = append(energyReq.Energy, &pb.EnergyData{ UseEnergy: 6, UseType: "hppro", }) energyResp := &pb.HeroResonanceUseEnergyResp{} code = robot.SendMsg("hero", "resonanceuseenergy", energyReq, energyResp) if code != pb.ErrorCode_Success { return nil } return nil }