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

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, "type": 1,
"herocolor": 1, "herocolor": 1,
"herotitel": { "herotitel": {
"key": "consume_consume_hero_herotitel_02", "key": "consume_consume_hero_herotitel_02",
"text": "酒吧新人" "text": "酒吧新人"
}, },
"hero": 43003, "hero": 44003,
"img": "tx_js_43003", "img": "tx_js_44003",
"intr": { "intr": {
"key": "consume_consume_hero_intr_02", "key": "consume_consume_hero_intr_02",
"text": "匹诺曹的毒苹果酒吧桌游卡" "text": "匹诺曹的毒苹果酒吧桌游卡"

File diff suppressed because it is too large Load Diff

View File

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

View File

@ -7,6 +7,7 @@ import (
"go_dreamfactory/modules" "go_dreamfactory/modules"
"go_dreamfactory/pb" "go_dreamfactory/pb"
"go_dreamfactory/sys/configure" "go_dreamfactory/sys/configure"
"go_dreamfactory/sys/db"
"go_dreamfactory/utils" "go_dreamfactory/utils"
"time" "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) { 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{ result = &pb.DBXXLData{
Card: map[string]int32{}, Card: map[string]int32{},
Skill: map[string]int32{}, Skill: map[string]int32{},
} }
err = this.Get(uid, result) err = dbModel.Get(uid, result)
if mongo.ErrNoDocuments == err { // 没有数据直接创建新的数据 if mongo.ErrNoDocuments == err { // 没有数据直接创建新的数据
result.Id = primitive.NewObjectID().Hex() result.Id = primitive.NewObjectID().Hex()
@ -83,11 +96,25 @@ func (this *modelComp) getEntertainmList(uid string) (result *pb.DBXXLData, err
Lv: user.Lv, Lv: user.Lv,
} }
} }
err = this.Add(uid, result) err = dbModel.Add(uid, result)
} }
return result, err return result, err
} }
//支持本服数据变更操作
func (this *modelComp) modifyEntertainmList(uid string, data map[string]interface{}) error { 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) { func (this *Entertainment) AddXxlCard(session comm.IUserSession, cards map[string]int32, bPush bool) (errdata *pb.ErrorData) {
var ( var (
result *pb.DBXXLData result *pb.DBXXLData
err error err error
curCards map[string]int32 // 过滤不存在的资源
) )
for k := range cards { curCards = make(map[string]int32, 0)
if _, err := this.model.module.configure.GetGameConsumeHero(k); err != nil { for k, v := range cards {
errdata = &pb.ErrorData{ if _, err := this.model.module.configure.GetGameConsumeHero(k); err == nil {
Code: pb.ErrorCode_ConfigNoFound, curCards[k] = v
Title: pb.ErrorCode_ConfigNoFound.ToString(),
Message: err.Error(),
}
return
} }
} }
if result, err = this.model.getEntertainmList(session.GetUserId()); err != nil { if result, err = this.model.getEntertainmList(session.GetUserId()); err != nil {
return return
} }
for k, v := range cards { for k, v := range curCards {
result.Card[k] += v result.Card[k] += v
} }
this.model.modifyEntertainmList(session.GetUserId(), map[string]interface{}{ 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 ( var (
res [][]*cfg.Gameatn res [][]*cfg.Gameatn
add []*pb.DBHero add []*pb.DBHero
allres []*cfg.Gameatn 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 { for _, v := range res {
var atno []*pb.UserAtno var atno []*pb.UserAtno
for _, v1 := range v { for _, v1 := range v {

View File

@ -61,7 +61,7 @@ func (this *apiComp) SelectCard(session comm.IUserSession, req *pb.HeroSelectCar
add []*pb.DBHero add []*pb.DBHero
allres []*cfg.Gameatn 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 { for _, v := range res {
var atno []*pb.UserAtno var atno []*pb.UserAtno
for _, v1 := range v { for _, v1 := range v {

View File

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

View File

@ -18,6 +18,7 @@ type GameSkillAfteratkData struct {
Order string Order string
Limit int32 Limit int32
ExecuteCnt int32 ExecuteCnt int32
TriggerAnim string
Type int32 Type int32
Argu []int32 Argu []int32
FollowSK []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; 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["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; 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 _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{} var _arr_ []interface{}