事件模式下任务监听

This commit is contained in:
meixiongfeng 2023-12-08 13:43:59 +08:00
parent d88706afec
commit 253b901833
5 changed files with 89 additions and 11 deletions

View File

@ -6,7 +6,7 @@
"PreviouStage": 0, "PreviouStage": 0,
"StageName": { "StageName": {
"key": "stonehenge_stageconfig_StageName_1", "key": "stonehenge_stageconfig_StageName_1",
"text": "石阵1" "text": "石阵2"
}, },
"RoomId": 1, "RoomId": 1,
"RoomGroup": 110100, "RoomGroup": 110100,

View File

@ -710,4 +710,7 @@ type (
IIsland interface { IIsland interface {
IPayDelivery IPayDelivery
} }
IIntegral interface {
IBuriedUpdateNotify
}
) )

View File

@ -75,6 +75,23 @@ func (this *apiComp) GetList(session comm.IUserSession, req *pb.IntegralGetListR
update["reward2"] = list.Reward2 update["reward2"] = list.Reward2
update["buff"] = list.Buff update["buff"] = list.Buff
update["score"] = list.Score update["score"] = list.Score
if list.Itype == 2 {
var szTaskid []int32
for _, v := range this.module.configure.GetIntegralCondition() {
szTaskid = append(szTaskid, v.TaskId) // 获取任务id
}
if data, err := this.module.ModuleBuried.CheckCondition(session.GetUserId(), szTaskid...); err == nil {
for _, v := range data {
if v.State == pb.BuriedItemFinishState_buried_finish {
if c, e := this.module.configure.GetIntegralConditionByTask(v.Conid); e == nil {
list.Buff[v.Conid] = c.Id
}
}
}
}
}
} }
if len(update) > 0 { if len(update) > 0 {
if err = this.module.modelIntegral.modifyIntegralData(session.GetUserId(), update); err != nil { if err = this.module.modelIntegral.modifyIntegralData(session.GetUserId(), update); err != nil {

View File

@ -60,18 +60,21 @@ func (this *modelIntegral) getIntegralList(uid string) (result *pb.DBIntegralBos
var conf *cfg.GameIntegralBossData var conf *cfg.GameIntegralBossData
if conf, err = this.module.configure.GetStageBoss(result.Hid, 1); err == nil { if conf, err = this.module.configure.GetStageBoss(result.Hid, 1); err == nil {
result.Itype = conf.Itype // 获取类型 result.Itype = conf.Itype // 获取类型 1 难度模式 2 事件模式
result.Nandu = 1 // 初始难度1 result.Nandu = 1 // 初始难度1
var szTaskid []int32 // 只有 事件模式才有buff
for _, v := range this.module.configure.GetIntegralCondition() { if result.Itype == 2 {
szTaskid = append(szTaskid, v.TaskId) // 获取任务id var szTaskid []int32
} for _, v := range this.module.configure.GetIntegralCondition() {
if data, err := this.module.ModuleBuried.CheckCondition(uid, szTaskid...); err == nil { szTaskid = append(szTaskid, v.TaskId) // 获取任务id
for _, v := range data { }
if data, err := this.module.ModuleBuried.CheckCondition(uid, szTaskid...); err == nil {
for _, v := range data {
if v.State == pb.BuriedItemFinishState_buried_finish { if v.State == pb.BuriedItemFinishState_buried_finish {
if c, e := this.module.configure.GetIntegralConditionByTask(v.Conid); e == nil { if c, e := this.module.configure.GetIntegralConditionByTask(v.Conid); e == nil {
result.Buff[v.Conid] = c.Id result.Buff[v.Conid] = c.Id
}
} }
} }
} }

View File

@ -4,7 +4,9 @@ import (
"go_dreamfactory/comm" "go_dreamfactory/comm"
"go_dreamfactory/lego/base" "go_dreamfactory/lego/base"
"go_dreamfactory/lego/core" "go_dreamfactory/lego/core"
"go_dreamfactory/lego/sys/log"
"go_dreamfactory/modules" "go_dreamfactory/modules"
"go_dreamfactory/pb"
) )
type Integral struct { type Integral struct {
@ -52,3 +54,56 @@ func (this *Integral) OnInstallComp() {
this.modelIntegral = this.RegisterComp(new(modelIntegral)).(*modelIntegral) this.modelIntegral = this.RegisterComp(new(modelIntegral)).(*modelIntegral)
this.configure = this.RegisterComp(new(configureComp)).(*configureComp) this.configure = this.RegisterComp(new(configureComp)).(*configureComp)
} }
// 任务条件达成通知
func (this *Integral) BuriedsNotify(session comm.IUserSession, conds []*pb.ConIProgress) {
var bChange bool
this.Debug("积分bossm条件达成通知", log.Field{Key: "uid", Value: session.GetUserId()}, log.Field{Key: "conds", Value: conds})
dt, err := this.modelIntegral.getIntegralList(session.GetUserId())
if dt.Itype != 2 { // 只有事件模式才有debuff
return
}
confList := this.configure.GetIntegralCondition()
if err != nil {
this.Error(err.Error())
return
}
condMap := make(map[int32]*pb.ConIProgress)
for _, conf := range confList {
for _, cond := range conds {
if cond.Conid == conf.TaskId {
condMap[conf.TaskId] = cond
}
}
}
update := make(map[string]interface{})
if dt.Buff == nil {
dt.Buff = make(map[int32]int32)
for _, v := range condMap {
if v.State == pb.BuriedItemFinishState_buried_finish {
if c, err := this.configure.GetIntegralConditionByTask(v.Conid); err == nil {
dt.Buff[c.Id] = 1
bChange = true
}
}
}
}
for k, v := range condMap {
if dt.Buff[k] != 1 && v.State == pb.BuriedItemFinishState_buried_finish {
dt.Buff[k] = 1
bChange = true
}
}
if bChange {
update["buff"] = dt.Buff
if err := this.modelIntegral.modifyIntegralData(session.GetUserId(), update); err != nil {
this.Error(err.Error())
return
}
}
return
}