三消获取守护者关联卡片资源

This commit is contained in:
meixiongfeng 2024-01-09 15:35:30 +08:00
parent e3873e4f6e
commit b867c54c4e
10 changed files with 3034 additions and 28 deletions

View File

@ -37,15 +37,15 @@
]
},
{
"key": "43003",
"key": "44003",
"type": 1,
"herocolor": 1,
"herotitel": {
"key": "consume_consume_hero_herotitel_02",
"text": "酒吧新人"
},
"hero": 43003,
"img": "tx_js_43003",
"hero": 44003,
"img": "tx_js_44003",
"intr": {
"key": "consume_consume_hero_intr_02",
"text": "匹诺曹的毒苹果酒吧桌游卡"

File diff suppressed because it is too large Load Diff

View File

@ -3563,7 +3563,7 @@
"MaxEmitTimes": 0,
"MaxEmitTimesInRound": 0,
"Callback": [
124008121
224008114
]
},
{

View File

@ -7,6 +7,7 @@ import (
"go_dreamfactory/modules"
"go_dreamfactory/pb"
"go_dreamfactory/sys/configure"
"go_dreamfactory/sys/db"
"go_dreamfactory/utils"
"time"
@ -41,13 +42,25 @@ func (this *modelComp) queryPlayers(uIds []string) (result []*pb.DBXXLData, err
}
func (this *modelComp) getEntertainmList(uid string) (result *pb.DBXXLData, err error) {
var (
conn *db.DBConn
dbModel *db.DBModel
)
if db.IsCross() {
dbModel = this.DBModel
} else {
if conn, err = db.Cross(); err != nil {
return
}
dbModel = db.NewDBModelByExpired(db.CrossTag(), this.TableName, conn)
}
result = &pb.DBXXLData{
Card: map[string]int32{},
Skill: map[string]int32{},
}
err = this.Get(uid, result)
err = dbModel.Get(uid, result)
if mongo.ErrNoDocuments == err { // 没有数据直接创建新的数据
result.Id = primitive.NewObjectID().Hex()
@ -83,11 +96,25 @@ func (this *modelComp) getEntertainmList(uid string) (result *pb.DBXXLData, err
Lv: user.Lv,
}
}
err = this.Add(uid, result)
err = dbModel.Add(uid, result)
}
return result, err
}
//支持本服数据变更操作
func (this *modelComp) modifyEntertainmList(uid string, data map[string]interface{}) error {
return this.Change(uid, data)
var (
conn *db.DBConn
dbModel *db.DBModel
err error
)
if db.IsCross() {
dbModel = this.DBModel
} else {
if conn, err = db.Cross(); err != nil {
return err
}
dbModel = db.NewDBModelByExpired(db.CrossTag(), this.TableName, conn)
}
return dbModel.Change(uid, data)
}

View File

@ -71,23 +71,20 @@ func (this *Entertainment) Start() (err error) {
func (this *Entertainment) AddXxlCard(session comm.IUserSession, cards map[string]int32, bPush bool) (errdata *pb.ErrorData) {
var (
result *pb.DBXXLData
err error
result *pb.DBXXLData
err error
curCards map[string]int32 // 过滤不存在的资源
)
for k := range cards {
if _, err := this.model.module.configure.GetGameConsumeHero(k); err != nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_ConfigNoFound,
Title: pb.ErrorCode_ConfigNoFound.ToString(),
Message: err.Error(),
}
return
curCards = make(map[string]int32, 0)
for k, v := range cards {
if _, err := this.model.module.configure.GetGameConsumeHero(k); err == nil {
curCards[k] = v
}
}
if result, err = this.model.getEntertainmList(session.GetUserId()); err != nil {
return
}
for k, v := range cards {
for k, v := range curCards {
result.Card[k] += v
}
this.model.modifyEntertainmList(session.GetUserId(), map[string]interface{}{

View File

@ -282,11 +282,17 @@ func (this *apiComp) DrawCard(session comm.IUserSession, req *pb.HeroDrawCardReq
}
var (
res [][]*cfg.Gameatn
add []*pb.DBHero
allres []*cfg.Gameatn
res [][]*cfg.Gameatn
add []*pb.DBHero
allres []*cfg.Gameatn
bImitate bool
)
if res, add, err = this.module.modelHero.ImitateHeros(session, szCards, req.DrawType); err == nil {
if req.DrawType == 1 {
bImitate = true
} else {
bImitate = false
}
if res, add, err = this.module.modelHero.ImitateHeros(session, szCards, bImitate); err == nil {
for _, v := range res {
var atno []*pb.UserAtno
for _, v1 := range v {

View File

@ -61,7 +61,7 @@ func (this *apiComp) SelectCard(session comm.IUserSession, req *pb.HeroSelectCar
add []*pb.DBHero
allres []*cfg.Gameatn
)
if res, add, err = this.module.modelHero.ImitateHeros(session, curSzCard, 2); err == nil {
if res, add, err = this.module.modelHero.ImitateHeros(session, curSzCard, false); err == nil {
for _, v := range res {
var atno []*pb.UserAtno
for _, v1 := range v {

View File

@ -888,9 +888,12 @@ func (this *ModelHero) CheckDrawCardRes(session comm.IUserSession, drawConf *cfg
return
}
// 模拟获得英雄
func (this *ModelHero) ImitateHeros(session comm.IUserSession, cids []string, itype int32) (addres [][]*cfg.Gameatn, add []*pb.DBHero, err error) {
// 模拟获得英雄 (bImitate : true 表示模拟获得 并不发英雄)
func (this *ModelHero) ImitateHeros(session comm.IUserSession, cids []string, bImitate bool) (addres [][]*cfg.Gameatn, add []*pb.DBHero, err error) {
var (
szCard map[string]int32
)
szCard = make(map[string]int32)
heros := make([]*pb.DBHero, 0)
uid := session.GetUserId()
list := this.module.ModuleTools.GetGlobalConf().Moonshopmoney
@ -922,7 +925,7 @@ func (this *ModelHero) ImitateHeros(session comm.IUserSession, cids []string, it
this.module.Errorf("not found hero configID:%s", heroCfgId)
return
}
szCard[heroCfgId] += 1 //统计卡片数量
for _, obj := range heros {
if obj.HeroID == heroCfgId {
hero = obj
@ -937,7 +940,7 @@ func (this *ModelHero) ImitateHeros(session comm.IUserSession, cids []string, it
}
if bFirst { // 没有当前英雄
if itype == 1 {
if bImitate {
hero = this.InitHero(uid, heroCfgId)
} else {
hero, err = this.initHeroOverlying(uid, heroCfgId, 1)
@ -1001,5 +1004,12 @@ func (this *ModelHero) ImitateHeros(session comm.IUserSession, cids []string, it
addres = append(addres, res)
}
if !bImitate { // 获得三消卡片资源数据
go this.module.AsynHandleSession(session.Clone(), func(session comm.IUserSession) {
this.module.ModuleEntertain.AddXxlCard(session, szCard, true)
})
}
return
}

View File

@ -246,6 +246,9 @@ func (this *Hero) CreateRepeatHeros(session comm.IUserSession, heros map[string]
go this.moduleFetter.AddHerosFetterData(session.GetUserId(), szAddHero)
}
}
go this.AsynHandleSession(session.Clone(), func(session comm.IUserSession) {
this.ModuleEntertain.AddXxlCard(session, heros, bPush)
})
return
}

View File

@ -18,6 +18,7 @@ type GameSkillAfteratkData struct {
Order string
Limit int32
ExecuteCnt int32
TriggerAnim string
Type int32
Argu []int32
FollowSK []int32
@ -57,6 +58,7 @@ func (_v *GameSkillAfteratkData)Deserialize(_buf map[string]interface{}) (err er
{ var _ok_ bool; if _v.Order, _ok_ = _buf["Order"].(string); !_ok_ { err = errors.New("Order error"); return } }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["Limit"].(float64); !_ok_ { err = errors.New("Limit error"); return }; _v.Limit = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["ExecuteCnt"].(float64); !_ok_ { err = errors.New("ExecuteCnt error"); return }; _v.ExecuteCnt = int32(_tempNum_) }
{ var _ok_ bool; if _v.TriggerAnim, _ok_ = _buf["TriggerAnim"].(string); !_ok_ { err = errors.New("TriggerAnim error"); return } }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["Type"].(float64); !_ok_ { err = errors.New("Type error"); return }; _v.Type = int32(_tempNum_) }
{
var _arr_ []interface{}