worldtask npc配置校验

This commit is contained in:
wh_zcy 2023-06-20 18:16:20 +08:00
parent 81c17bf1ec
commit 23f1bee9fc
4 changed files with 655 additions and 187 deletions

File diff suppressed because it is too large Load Diff

View File

@ -4878,5 +4878,425 @@
10030
],
"goto": 0
},
{
"id": 11100,
"heroid": 25001,
"datas": [
"GameMain",
"20030_邦尼兔4",
"901"
],
"event": [
2,
10031
],
"goto": 0
},
{
"id": 11104,
"heroid": 25001,
"datas": [
"GameMain",
"20030_邦尼兔5",
"901"
],
"event": [
2,
10032
],
"goto": 0
},
{
"id": 11108,
"heroid": 25001,
"datas": [
"GameMain",
"20030_邦尼兔6",
"901"
],
"event": [
2,
10033
],
"goto": 0
},
{
"id": 11110,
"heroid": 25001,
"datas": [
"GameMain",
"20030_邦尼兔7",
"901"
],
"event": [
2,
10034
],
"goto": 0
},
{
"id": 11114,
"heroid": 25001,
"datas": [
"GameMain",
"20030_邦尼兔8",
"901"
],
"event": [
2,
10035
],
"goto": 0
},
{
"id": 11118,
"heroid": 25001,
"datas": [
"GameMain",
"20030_邦尼兔9",
"901"
],
"event": [
2,
10036
],
"goto": 0
},
{
"id": 11120,
"heroid": 25001,
"datas": [
"GameMain",
"20030_邦尼兔10",
"901"
],
"event": [
2,
10037
],
"goto": 0
},
{
"id": 11124,
"heroid": 25001,
"datas": [
"GameMain",
"20030_邦尼兔11",
"901"
],
"event": [
2,
10038
],
"goto": 0
},
{
"id": 11128,
"heroid": 25001,
"datas": [
"GameMain",
"20030_邦尼兔12",
"901"
],
"event": [
2,
10039
],
"goto": 0
},
{
"id": 11130,
"heroid": 25001,
"datas": [
"GameMain",
"20030_邦尼兔13",
"901"
],
"event": [
2,
10040
],
"goto": 0
},
{
"id": 11134,
"heroid": 25001,
"datas": [
"GameMain",
"20030_邦尼兔14",
"901"
],
"event": [
2,
10041
],
"goto": 0
},
{
"id": 11138,
"heroid": 25001,
"datas": [
"GameMain",
"20030_邦尼兔15",
"901"
],
"event": [
2,
10042
],
"goto": 0
},
{
"id": 11140,
"heroid": 25001,
"datas": [
"GameMain",
"20030_邦尼兔16",
"901"
],
"event": [
2,
10043
],
"goto": 0
},
{
"id": 11144,
"heroid": 25001,
"datas": [
"GameMain",
"20030_邦尼兔17",
"901"
],
"event": [
2,
10044
],
"goto": 0
},
{
"id": 11148,
"heroid": 25001,
"datas": [
"GameMain",
"20030_邦尼兔18",
"901"
],
"event": [
2,
10045
],
"goto": 0
},
{
"id": 11150,
"heroid": 25001,
"datas": [
"GameMain",
"20030_邦尼兔19",
"901"
],
"event": [
2,
10046
],
"goto": 0
},
{
"id": 11154,
"heroid": 25001,
"datas": [
"GameMain",
"20030_邦尼兔20",
"901"
],
"event": [
2,
10047
],
"goto": 0
},
{
"id": 11158,
"heroid": 25001,
"datas": [
"GameMain",
"20030_邦尼兔21",
"901"
],
"event": [
2,
10048
],
"goto": 0
},
{
"id": 11160,
"heroid": 25001,
"datas": [
"GameMain",
"20030_邦尼兔22",
"901"
],
"event": [
2,
10049
],
"goto": 0
},
{
"id": 11164,
"heroid": 25001,
"datas": [
"GameMain",
"20030_邦尼兔23",
"901"
],
"event": [
2,
10050
],
"goto": 0
},
{
"id": 11168,
"heroid": 25001,
"datas": [
"GameMain",
"20030_邦尼兔24",
"901"
],
"event": [
2,
10051
],
"goto": 0
},
{
"id": 11170,
"heroid": 25001,
"datas": [
"GameMain",
"20030_邦尼兔25",
"901"
],
"event": [
2,
10052
],
"goto": 0
},
{
"id": 11174,
"heroid": 25001,
"datas": [
"GameMain",
"20030_邦尼兔26",
"901"
],
"event": [
2,
10053
],
"goto": 0
},
{
"id": 11178,
"heroid": 25001,
"datas": [
"GameMain",
"20030_邦尼兔27",
"901"
],
"event": [
2,
10054
],
"goto": 0
},
{
"id": 11180,
"heroid": 25001,
"datas": [
"GameMain",
"20030_邦尼兔28",
"901"
],
"event": [
2,
10055
],
"goto": 0
},
{
"id": 11184,
"heroid": 25001,
"datas": [
"GameMain",
"20030_邦尼兔29",
"901"
],
"event": [
2,
10056
],
"goto": 0
},
{
"id": 11188,
"heroid": 25001,
"datas": [
"GameMain",
"20030_邦尼兔30",
"901"
],
"event": [
2,
10057
],
"goto": 0
},
{
"id": 11190,
"heroid": 25001,
"datas": [
"GameMain",
"20030_邦尼兔31",
"901"
],
"event": [
2,
10058
],
"goto": 0
},
{
"id": 11194,
"heroid": 25001,
"datas": [
"GameMain",
"20030_邦尼兔32",
"901"
],
"event": [
2,
10059
],
"goto": 0
},
{
"id": 11198,
"heroid": 25001,
"datas": [
"GameMain",
"20030_邦尼兔33",
"901"
],
"event": [
2,
10060
],
"goto": 0
}
]

View File

@ -15,6 +15,7 @@ const (
gameWorldtaskBattle = "game_worldbattle.json"
gameWorldAll = "game_worldall.json"
gameburiedCond = "game_buriedcondi.json"
gamerdtasknpc = "game_rdtasknpc.json"
)
type configureComp struct {
@ -30,6 +31,7 @@ func (this *configureComp) Init(service core.IService, module core.IModule, comp
gameWorldtaskBattle: cfg.NewGameWorldBattle,
gameWorldAll: cfg.NewGameWorldAll,
gameburiedCond: cfg.NewGameBuriedCondi,
gamerdtasknpc: cfg.NewGameRdtaskNpc,
})
this.worldtaskConf = make(map[int32]*cfg.GameWorldTaskData)
configure.RegisterConfigure(gameWorldTask, cfg.NewGameBuriedCondi, this.updateconfigure)
@ -90,6 +92,26 @@ func (this *configureComp) getWorldtaskById(taskId int32) (*cfg.GameWorldTaskDat
return nil, comm.NewNotFoundConfErr(moduleName_cn, gameWorldTask, taskId)
}
func (this *configureComp) getNPCById(npcId int32) (npc *cfg.GameRdtaskNpcData, err error) {
var (
v interface{}
)
if v, err = this.GetConfigure(gamerdtasknpc); err != nil {
return
} else {
data, ok := v.(*cfg.GameRdtaskNpc)
if !ok {
err = fmt.Errorf("%T is *cfg.GameRdtaskNpc", v)
return
}
if npc, ok = data.GetDataMap()[npcId]; ok {
return
}
err = comm.NewNotFoundConfErr(moduleName_cn, gamerdtasknpc, npc)
}
return
}
func (this *configureComp) getWorldtaskBattleCfg() (data *cfg.GameWorldBattle, err error) {
var (
v interface{}

View File

@ -11,6 +11,7 @@ import (
"go_dreamfactory/pb"
cfg "go_dreamfactory/sys/configure/structs"
"go_dreamfactory/utils"
"strings"
)
var _ comm.IWorldtask = (*Worldtask)(nil)
@ -60,6 +61,8 @@ func (this *Worldtask) Start() (err error) {
return
}
var errs []string
// 配置文件校验
func (this *Worldtask) checkWorldtaskConf() (err error) {
worldtaskConf, err := this.configure.getWorldtaskCfg()
@ -73,26 +76,49 @@ func (this *Worldtask) checkWorldtaskConf() (err error) {
for _, data := range worldtaskConf.GetDataList() {
// 检查 lock
if data.Lock < 1 {
return fmt.Errorf("taskId:%v lock:%v可能存在问题", data.Key, data.Lock)
errs = append(errs, fmt.Sprintf("taskId:%v lock:%v可能存在问题", data.Key, data.Lock))
}
//检查group
if data.Group <= 0 {
return fmt.Errorf("taskId:%v group:%v可能存在问题", data.Key, data.Group)
errs = append(errs, fmt.Sprintf("taskId:%v group:%v可能存在问题", data.Key, data.Group))
}
//检查des
if data.Des < 1 || data.Des > 5 {
return fmt.Errorf("taskId:%v des:%v可能存在问题", data.Key, data.Des)
errs = append(errs, fmt.Sprintf("taskId:%v des:%v可能存在问题", data.Key, data.Des))
}
// 检查completetask 是否有效
for _, condId := range data.Completetask {
if condId == 0 {
continue
if condId > 0 {
if _, ok := buriedCondConf.GetDataMap()[condId]; !ok {
errs = append(errs, fmt.Sprintf("taskId:%v completetask:%v可能是无效的ID", data.Key, condId))
}
}
if _, ok := buriedCondConf.GetDataMap()[condId]; !ok {
return fmt.Errorf("taskId:%v completetask:%v可能是无效的ID", data.Key, condId)
}
//检查NPC
if data.Npc > 0 {
if _, err := this.configure.getNPCById(data.Npc); err != nil {
errs = append(errs, fmt.Sprintf("npcId:%v 可能无效,检查world_task表字段Npc值是否存在于buried/rdtasknpc", data.Npc))
}
}
if data.DeliverNpc > 0 {
if _, err := this.configure.getNPCById(data.Npc); err != nil {
errs = append(errs, fmt.Sprintf("npcId:%v 可能无效,检查world_task表字段deliver_npc值是否存在于buried/rdtasknpc", data.Npc))
}
}
}
for _, data := range buriedCondConf.GetDataList() {
if data.NPC > 0 {
if _, err := this.configure.getNPCById(data.NPC); err != nil {
errs = append(errs, fmt.Sprintf("npcId:%v 可能无效,检查buried_condi表字段NPC值是否存在于buried/rdtasknpc", data.NPC))
}
}
}
if len(errs) > 0 {
return fmt.Errorf("%s", strings.Join(errs, "|"))
}
this.Debug("check worldtask conf completed")
return
}