518 lines
11 KiB
Go
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
|
|
}
|