airobot/busi/hero.go
2022-12-14 19:43:31 +08:00

518 lines
11 KiB
Go

package busi
import (
"errors"
"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") // 加阿宝
Sleep(time.Second*0, time.Second*1)
f.AddHero(robot, "44911") // 升级精灵
Sleep(time.Second*0, time.Second*1)
f.AddHero(robot, "45921") // 技能精灵
Sleep(time.Second*0, time.Second*1)
f.AddHero(robot, "45921") // 技能精灵
Sleep(time.Second*0, time.Second*1)
// f.AddAttrGold(robot) // 加金币
// f.AddAttrDiamond(robot) // 加钻石
f.HeroLvUp(robot) // 英雄升级
Sleep(time.Second*0, time.Second*1)
f.HeroSkillLvUp(robot) // 技能升级
// 升星
Sleep(time.Second*0, time.Second*1)
f.HeroStarUp(robot)
Sleep(time.Second*0, time.Second*1)
// time.Sleep(50 * time.Millisecond)
// f.HeroResonance(robot) // 共鸣
f.AddItem(robot, "50001") // 觉醒材料
Sleep(time.Second*0, time.Second*1)
f.HeroAwaken(robot)
Sleep(time.Second*0, time.Second*1)
f.AddItem(robot, "30001") // 抽卡材料
Sleep(time.Second*0, time.Second*1)
f.HeroDraw(robot) // 普通十连
Sleep(time.Second*0, time.Second*1)
// 购买抽卡道具
f.HeroDraw(robot)
Sleep(time.Second*0, time.Second*1)
// 卡牌融合
f.AddHero(robot, "25004") // 加英雄
Sleep(time.Second*0, time.Second*1)
f.AddHero(robot, "25004") // 加英雄
Sleep(time.Second*0, time.Second*1)
f.AddHero(robot, "25004") // 加英雄
Sleep(time.Second*0, time.Second*1)
f.AddHero(robot, "25004") // 加英雄
Sleep(time.Second*0, time.Second*1)
f.HeroFusion(robot)
Sleep(time.Second*0, time.Second*1)
f.AddItem(robot, "25001")
Sleep(time.Second*0, time.Second*1)
f.HeroTalent(robot)
Sleep(time.Second*0, time.Second*1)
f.HeroTalentV2(robot) // 学习其他天赋
Sleep(time.Second*0, time.Second*1)
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
}
}
if lvcard != nil {
// 升级
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
}
}
if lvcard == nil {
return errors.New("data")
}
// 升星
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
}
// 天赋压测
func (f *HeroScene) HeroTalent(robot lib.IRobot) error {
var (
code pb.ErrorCode
)
talentReq := &pb.HeroTalentLearnReq{
TalentID: 1,
ObjId: "",
Heroid: "25001",
}
talentResp := &pb.HeroTalentLearnResp{}
code = robot.SendMsg("hero", "talentlearn", talentReq, talentResp)
if code != pb.ErrorCode_Success {
return nil
}
return nil
}
// 学习其他天赋
func (f *HeroScene) HeroTalentV2(robot lib.IRobot) error {
var (
code pb.ErrorCode
obj string
)
listReq := &pb.HeroTalentListReq{}
listResp := &pb.HeroTalentListResp{}
code = robot.SendMsg("hero", "talentlist", listReq, listResp)
if code != pb.ErrorCode_Success {
return nil
}
for _, v := range listResp.Telnet {
if v.Id != "" {
obj = v.Id
break
}
}
talentReq := &pb.HeroTalentLearnReq{
TalentID: 2,
ObjId: obj,
Heroid: "",
}
talentResp := &pb.HeroTalentLearnResp{}
code = robot.SendMsg("hero", "talentlearn", talentReq, talentResp)
if code != pb.ErrorCode_Success {
return nil
}
return nil
}