上传压测机器人代码

This commit is contained in:
liwei1dao 2023-08-24 14:39:44 +08:00
parent f6a5d14e3c
commit 6b0d6cedc8
4 changed files with 206 additions and 2 deletions

View File

@ -13,7 +13,9 @@ const (
gameWorldTask = "game_worldtask.json"
gameWorldtaskBattle = "game_worldbattle.json"
game_buriedcondi = "game_buriedcondi.json"
game_mainstage = "game_mainstage.json" //主线表
game_mainstage = "game_mainstage.json" //主线表
game_equip = "game_equip.json" //装备信息表
equip_intensify = "game_equipintensify.json" //装备等级消耗表
// gameWorldAll = "game_worldall.json"
// gameburiedCond = "game_buriedcondi.json"
// gamerdtasknpc = "game_rdtasknpc.json"
@ -35,7 +37,8 @@ func (this *configureComp) Init(service core.IService, module core.IModule, comp
configure.RegisterConfigure(gameWorldtaskBattle, cfg.NewGameWorldBattle, nil)
configure.RegisterConfigure(game_buriedcondi, cfg.NewGameBuriedCondi, nil)
configure.RegisterConfigure(game_mainstage, cfg.NewGameMainStage, nil)
configure.RegisterConfigure(game_equip, cfg.NewGameEquip, nil)
configure.RegisterConfigure(equip_intensify, cfg.NewGameEquipIntensify, nil)
return
}

View File

@ -0,0 +1,198 @@
package robot
import (
"errors"
"fmt"
"go_dreamfactory/comm"
"go_dreamfactory/pb"
"go_dreamfactory/sys/configure"
cfg "go_dreamfactory/sys/configure/structs"
"sort"
"google.golang.org/protobuf/proto"
)
//用户模块 机器人
type ModuleRobot_Equipment struct {
equipments map[string]*pb.DB_Equipment
}
func (this *ModuleRobot_Equipment) Init() (err error) {
this.equipments = make(map[string]*pb.DB_Equipment)
return
}
//接收到消息
func (this *ModuleRobot_Equipment) Receive(robot IRobot, stype string, message proto.Message) (err error) {
switch stype {
case "getlist":
resp := message.(*pb.EquipmentGetListResp)
for _, v := range resp.Equipments {
this.equipments[v.Id] = v
}
break
case "change":
resp := message.(*pb.EquipmentChangePush)
for _, v := range resp.Equipments {
this.equipments[v.Id] = v
}
break
}
return
}
//机器人执行流
func (this *ModuleRobot_Equipment) DoPipeline(robot IRobot) (err error) {
var (
errdata *pb.ErrorData
)
if _, errdata = robot.SendMessage("equipment", "getlist", &pb.EquipmentGetListReq{}); errdata != nil {
err = errors.New(errdata.Message)
return
}
return
}
//做任务
func (this *ModuleRobot_Equipment) DoTask(robot IRobot, taskconf *cfg.GameWorldTaskData, condconf *cfg.GameBuriedCondiData) (err error) {
var (
errdata *pb.ErrorData
)
switch comm.TaskType(condconf.Type) {
case comm.Rtype5: //穿戴
var (
heromodule *ModuleRobot_Hero
heros map[string]*pb.DBHero
equipments []string
hero *pb.DBHero
change bool
)
heromodule = robot.GetModule(comm.ModuleHero).(*ModuleRobot_Hero)
heros = heromodule.heros
for _, hero = range heros {
if equipments, change, err = this.findcanEquipEquipment(hero); err != nil {
return
}
if change {
break
}
}
if change {
if _, errdata = robot.SendTaskMessage(taskconf.Key, condconf.Id, "equipment", "equip", &pb.EquipmentEquipReq{
HeroCardId: hero.Id,
EquipmentId: equipments,
}); errdata != nil {
err = errors.New(errdata.Message)
return
}
} else {
err = fmt.Errorf("no fund can use equipments")
}
case comm.Rtype92, comm.Rtype96: //强化
var (
equipment *pb.DB_Equipment
)
if equipment, err = this.findcanupgrade(); err != nil {
return
}
if _, errdata = robot.SendTaskMessage(taskconf.Key, condconf.Id, "equipment", "upgrade", &pb.EquipmentUpgradeReq{
EquipmentId: equipment.Id,
}); errdata != nil {
err = errors.New(errdata.Message)
return
}
}
return
}
//查询能穿戴的装备
func (this *ModuleRobot_Equipment) findcanEquipEquipment(hero *pb.DBHero) (equipments []string, change bool, err error) {
var (
conf *cfg.GameEquipData
)
equipments = hero.EquipID
for i, v := range hero.EquipID {
if v == "" {
for _, equipment := range this.equipments {
if equipment.HeroId == "" {
if conf, err = this.getGameEquipData(equipment.CId); err != nil {
return
}
if conf.Pos == int32(i) { //找到匹配装备
equipments[i] = equipment.Id
change = true
}
}
}
}
}
return
}
//查询能强化的装备
func (this *ModuleRobot_Equipment) findcanupgrade() (equipment *pb.DB_Equipment, err error) {
var (
equipments []*pb.DB_Equipment = make([]*pb.DB_Equipment, 0, len(this.equipments))
conf *cfg.GameEquipData
upconf *cfg.GameEquipIntensifyData
)
var ()
for _, v := range this.equipments {
equipments = append(equipments, v)
}
sort.Slice(equipments, func(i, j int) bool {
return equipments[i].Lv < equipments[j].Lv
})
for _, equipment = range equipments {
if conf, err = this.getGameEquipData(equipment.CId); err != nil {
return
}
if upconf, err = this.getEquipmentMaxIntensifyConfigure(conf.EquipId, conf.Color); err == nil && upconf.Level < equipment.Lv {
return
}
}
equipment = nil
err = fmt.Errorf("no fund can upgrade equipment")
return
}
// 读取条件任务id配置
func (this *ModuleRobot_Equipment) getGameEquipData(cid string) (conf *cfg.GameEquipData, err error) {
var (
v interface{}
ok bool
)
if v, err = configure.GetConfigure(game_equip); err != nil {
return
} else {
if conf, ok = v.(*cfg.GameEquip).GetDataMap()[cid]; !ok {
err = comm.NewNotFoundConfErr("robot", game_buriedcondi, cid)
return
}
}
return
}
// 读取条件任务id配置
// 获取武器等级消耗表
func (this *ModuleRobot_Equipment) getEquipmentMaxIntensifyConfigure(etype, star int32) (conf *cfg.GameEquipIntensifyData, err error) {
var (
v interface{}
lv int32
)
if v, err = configure.GetConfigure(equip_intensify); err != nil {
return
} else {
for _, v1 := range v.(*cfg.GameEquipIntensify).GetDataList() {
if v1.TypeId == etype && v1.Star == star && len(v1.Need) > 0 && v1.Level > lv {
lv = v1.Level
conf = v1
}
}
if conf == nil {
err = fmt.Errorf("GetEquipmentMaxIntensifyConfigure not found star :%d lv:%d", star, lv)
return
}
}
return
}

View File

@ -129,6 +129,8 @@ locp:
module = comm.ModulePractice
case comm.Rtype61:
module = comm.ModuleMainline
case comm.Rtype5:
module = comm.ModuleEquipment
default:
log.Error("[Robot DoTask]", log.Field{Key: "ctype", Value: cconf.Type}, log.Field{Key: "conld", Value: cconf.Id}, log.Field{Key: "err", Value: "Not Achieved !"})
break locp

View File

@ -46,6 +46,7 @@ func (this *Robot) Init(addr string, client IClient) (err error) {
this.modules[comm.ModuleUser] = new(ModuleRobot_User)
this.modules[comm.ModuleSys] = new(ModuleRobot_Sys)
this.modules[comm.ModuleHero] = new(ModuleRobot_Hero)
this.modules[comm.ModuleEquipment] = new(ModuleRobot_Equipment)
this.modules[comm.ModuleWtask] = new(ModuleRobot_WTask)
this.modules[comm.ModulePractice] = new(ModuleRobot_Practice)
this.modules[comm.ModuleMainline] = new(ModuleRobot_MainLine)