多余英雄转碎片处理

This commit is contained in:
meixiongfeng 2023-02-01 16:23:06 +08:00
parent 5c4b5ffd0c
commit 4a3296a4db
5 changed files with 1975 additions and 145 deletions

File diff suppressed because it is too large Load Diff

View File

@ -6332,5 +6332,49 @@
"key": "itemtipstxt_10017",
"text": "体力药剂不足"
}
},
{
"id": "625001",
"name": {
"key": "itemname_90001",
"text": "阿宝碎片"
},
"usetype": 3,
"color": 5,
"bagtype": 1,
"index": 99,
"special_type": 0,
"time": 0,
"effects": "effect_ui_wuping_2",
"box_id": 0,
"synthetize_num": 0,
"access": [
155
],
"use_skip": 155,
"upper_limit": 999,
"uselv": 0,
"isani": 0,
"star": 0,
"race": 0,
"img": "ytx_js_25001",
"ico": "ytx_js_25001",
"intr": {
"key": "itemdesc_625001",
"text": "阿宝天赋点"
},
"sale": [
{
"a": "attr",
"t": "gold",
"n": 1000
}
],
"synthetize_deplete": [],
"decompose_deplete": [],
"tipstxt": {
"key": "itemtipstxt_625001",
"text": "阿宝的天赋点不足"
}
}
]

View File

@ -135,7 +135,7 @@ func (this *ModelHero) initHeroOverlying(uid string, heroCfgId string, count int
)
hero = this.InitHero(uid, heroCfgId)
if hero != nil {
hero.SameCount = count
hero.SameCount = 1 // 新需求 不需要判断叠加
if this.moduleHero.IsCross() {
if model, err = this.moduleHero.GetDBModuleByUid(uid, this.TableName, this.Expired); err != nil {
this.moduleHero.Errorln(err)
@ -171,35 +171,38 @@ func (this *ModelHero) createHeroOverlying(uid string, heroCfgId string, count i
this.moduleHero.Errorf("err:%v", err)
}
}
for _, obj := range heros {
if obj.HeroID == heroCfgId { // z
return
}
}
for _, h := range heros {
if h.HeroID == heroCfgId &&
h.IsOverlying {
h.SameCount += count
data := map[string]interface{}{
"sameCount": h.SameCount, //叠加数
}
hero = h
if len(heros) >= 0 {
for _, h := range heros {
if h.HeroID == heroCfgId &&
h.IsOverlying {
h.SameCount += count
data := map[string]interface{}{
"sameCount": h.SameCount, //叠加数
}
hero = h
if this.moduleHero.IsCross() {
if model, err := this.moduleHero.GetDBModuleByUid(uid, this.TableName, this.Expired); err != nil {
this.moduleHero.Errorln(err)
} else {
if err := model.ChangeList(uid, h.Id, data); err != nil {
return nil, err
}
}
if this.moduleHero.IsCross() {
if model, err := this.moduleHero.GetDBModuleByUid(uid, this.TableName, this.Expired); err != nil {
this.moduleHero.Errorln(err)
} else {
if err := this.ChangeList(uid, h.Id, data); err != nil {
if err := model.ChangeList(uid, h.Id, data); err != nil {
return nil, err
}
}
return
} else {
if err := this.ChangeList(uid, h.Id, data); err != nil {
return nil, err
}
}
return
}
}
return this.initHeroOverlying(uid, heroCfgId, count)
}
@ -881,3 +884,48 @@ func (this *ModelHero) resetTalentProperty(hero *pb.DBHero) {
}
}
// 创建一条英雄信息,如果有这个英雄 则转换成对应的碎片
func (this *ModelHero) createHero(session comm.IUserSession, heroCfgId string, count int32) (hero *pb.DBHero, err error) {
heros := make([]*pb.DBHero, 0)
uid := session.GetUserId()
bNew := false // 新活得的英雄
if this.moduleHero.IsCross() {
if dbModel, err := this.moduleHero.GetDBModuleByUid(uid, this.TableName, this.Expired); err != nil {
this.moduleHero.Errorln(err)
} else {
if err = dbModel.GetList(uid, &heros); err != nil {
this.moduleHero.Errorf("err:%v", err)
}
}
} else {
if err = this.GetList(uid, &heros); err != nil {
this.moduleHero.Errorf("err:%v", err)
}
}
for _, obj := range heros {
if obj.HeroID == heroCfgId { // z
bNew = true
break
}
}
if !bNew { // 没有当前英雄
count -= 1
hero, err = this.initHeroOverlying(uid, heroCfgId, 1)
}
// 转碎片处理
if count > 0 {
heroCfg := this.moduleHero.configure.GetHeroConfig(heroCfgId)
if heroCfg != nil {
res := make([]*cfg.Gameatn, 0)
for i := 0; i < int(count); i++ {
res = append(res, heroCfg.Herofrag...)
}
this.moduleHero.DispenseRes(session, res, true)
}
}
return
}

View File

@ -78,7 +78,7 @@ func (this *Hero) Start() (err error) {
//创建单个叠加英雄
func (this *Hero) createRepeatHero(session comm.IUserSession, heroCfgId string, num int32) (hero *pb.DBHero, code pb.ErrorCode) {
var err error
hero, err = this.modelHero.createHeroOverlying(session.GetUserId(), heroCfgId, num)
hero, err = this.modelHero.createHero(session, heroCfgId, num)
if err == nil {
//go func(uid string, heroCfgId string) { // 携程处理 图鉴数据
if db.IsCross() {

View File

@ -43,6 +43,8 @@ type GameHeroData struct {
Angle int32
Deviation int32
Show int32
Herofrag []*Gameatn
Heroskillup []*Gameatn
}
const TypeId_GameHeroData = 1513828672
@ -129,6 +131,34 @@ func (_v *GameHeroData)Deserialize(_buf map[string]interface{}) (err error) {
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["angle"].(float64); !_ok_ { err = errors.New("angle error"); return }; _v.Angle = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["deviation"].(float64); !_ok_ { err = errors.New("deviation error"); return }; _v.Deviation = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["show"].(float64); !_ok_ { err = errors.New("show error"); return }; _v.Show = int32(_tempNum_) }
{
var _arr_ []interface{}
var _ok_ bool
if _arr_, _ok_ = _buf["herofrag"].([]interface{}); !_ok_ { err = errors.New("herofrag error"); return }
_v.Herofrag = make([]*Gameatn, 0, len(_arr_))
for _, _e_ := range _arr_ {
var _list_v_ *Gameatn
{ var _ok_ bool; var _x_ map[string]interface{}; if _x_, _ok_ = _e_.(map[string]interface{}); !_ok_ { err = errors.New("_list_v_ error"); return }; if _list_v_, err = DeserializeGameatn(_x_); err != nil { return } }
_v.Herofrag = append(_v.Herofrag, _list_v_)
}
}
{
var _arr_ []interface{}
var _ok_ bool
if _arr_, _ok_ = _buf["heroskillup"].([]interface{}); !_ok_ { err = errors.New("heroskillup error"); return }
_v.Heroskillup = make([]*Gameatn, 0, len(_arr_))
for _, _e_ := range _arr_ {
var _list_v_ *Gameatn
{ var _ok_ bool; var _x_ map[string]interface{}; if _x_, _ok_ = _e_.(map[string]interface{}); !_ok_ { err = errors.New("_list_v_ error"); return }; if _list_v_, err = DeserializeGameatn(_x_); err != nil { return } }
_v.Heroskillup = append(_v.Heroskillup, _list_v_)
}
}
return
}