From bc9fdabfc39d3dcd553d06a795114df6c287832c Mon Sep 17 00:00:00 2001 From: meixiongfeng <766881921@qq.com> Date: Mon, 15 Aug 2022 17:11:45 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8A=BD=E5=8D=A1=E5=8D=8F=E8=AE=AE=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/hero/api_drawCard.go | 86 +++++++++++------------------------- 1 file changed, 27 insertions(+), 59 deletions(-) diff --git a/modules/hero/api_drawCard.go b/modules/hero/api_drawCard.go index 5901b5857..86873bdfc 100644 --- a/modules/hero/api_drawCard.go +++ b/modules/hero/api_drawCard.go @@ -9,7 +9,7 @@ import ( ) func (this *apiComp) DrawCardCheck(session comm.IUserSession, req *pb.HeroDrawCardReq) (code pb.ErrorCode) { - if req.DrawType <= 0 { // 只能是单抽或10抽 + if req.DrawType < 0 { // 只能是单抽或10抽 code = pb.ErrorCode_ReqParameterError } return @@ -27,28 +27,24 @@ func (this *apiComp) DrawCard(session comm.IUserSession, req *pb.HeroDrawCardReq cfgDraw *cfg.GameglobalData costAtn *cfg.Gameatn heroRecord *pb.DBHeroRecord - + pool string //heroRecord *pb.DBHeroRecord // 英雄扩展属性 ) - + req.DrawCount = 10 // test cfgDraw = this.module.configure.GetGlobalConf() // 读取抽卡配置文件 - + code = this.DrawCardCheck(session, req) + if code != pb.ErrorCode_Success { + return + } szCards = make([]string, 0) rsp := &pb.HeroDrawCardResp{} cfg := cfgDraw - + costAtn = cfgDraw.BasePoolCost heroRecord, _ = this.module.modelRecord.GetHeroRecord(session.GetUserId()) drawCount = heroRecord.Drawcount + pool = this.module.modelHero.CheckPool(drawCount, cfg) if req.DrawType == 0 { // 普通卡池抽卡 // 获取普通抽卡池 - pool := this.module.modelHero.CheckPool(drawCount, cfg) - _data := this.module.configure.GetPollByType(pool) - if _data == nil { - code = pb.ErrorCode_ConfigNoFound - return - } - costAtn = cfgDraw.BasePoolCost - costAtn.N *= req.DrawCount // 重新计算消耗数量 costRes = append(costRes, costAtn) code = this.module.CheckRes(session, costRes) if code != pb.ErrorCode_Success { // 消耗数量不足直接返回 @@ -68,35 +64,9 @@ func (this *apiComp) DrawCard(session comm.IUserSession, req *pb.HeroDrawCardReq sz = append(sz, cfgDraw.BasePoolStar5) } - starIndex := this.module.modelHero.GetRandW(sz) - if starIndex == 1 { - star4Max++ - } else if starIndex == 2 { - star5Max++ - } - if star4Max >= cfgDraw.Draw10Star4Max { - starIndex = 0 - } else if star5Max >= cfgDraw.Draw10Star5Max { - starIndex = 0 - } - szStar = append(szStar, starIndex) - if len(szStar) >= int(req.DrawCount) { - break - } + } - for star := range szCards { // szStar 转 szHeroId - - sz := make([]int32, 0) - for _, v := range _data[int32(star)] { - sz = append(sz, v.Weight) - } - randomIndex := this.module.modelHero.GetRandW(sz) - - szCards = append(szCards, _data[int32(star)][randomIndex].Id) - } - } else { // 所有阵营抽卡都走这里 - pool := "" switch req.DrawType { case 1: @@ -115,11 +85,7 @@ func (this *apiComp) DrawCard(session comm.IUserSession, req *pb.HeroDrawCardReq } costAtn.N *= req.DrawCount costRes = append(costRes, costAtn) - _data := this.module.configure.GetPollByType(pool) - if _data == nil { - code = pb.ErrorCode_ConfigNoFound - return - } + //阵营消耗 code = this.module.CheckRes(session, costRes) if code != pb.ErrorCode_Success { // 消耗数量不足直接返回 @@ -144,35 +110,37 @@ func (this *apiComp) DrawCard(session comm.IUserSession, req *pb.HeroDrawCardReq } else if starIndex == 2 { star5Max++ } - if star4Max >= cfgDraw.Draw10Star4Max { - starIndex = 0 - } else if star5Max >= cfgDraw.Draw10Star5Max { + if star4Max >= cfgDraw.Draw10Star4Max || star5Max >= cfgDraw.Draw10Star5Max { starIndex = 0 } - szStar = append(szStar, starIndex) + szStar = append(szStar, starIndex+3) if len(szStar) >= int(req.DrawCount) { break } } - for star := range szCards { // szStar 转 szHeroId - sz := make([]int32, 0) - for _, v := range _data[int32(star)] { - sz = append(sz, v.Weight) - } - randomIndex := this.module.modelHero.GetRandW(sz) - - szCards = append(szCards, _data[int32(star)][randomIndex].Id) - } } + _data := this.module.configure.GetPollByType(pool) + if _data == nil { + code = pb.ErrorCode_ConfigNoFound + return + } + for _, star := range szStar { // szStar 转 szHeroId + sz := make([]int32, 0) + for _, v := range _data[int32(star)] { + sz = append(sz, v.Weight) + } + randomIndex := this.module.modelHero.GetRandW(sz) + + szCards = append(szCards, _data[int32(star)][randomIndex].Id) + } // 更新record 配置信息 update := map[string]interface{}{} if drawCount != -1 { drawCount += req.DrawCount update["drawcount"] = drawCount } - //update["race"+strconv.Itoa(int(race)-1)] = raceData this.module.modelRecord.ChangeHeroRecord(session.GetUserId(), update) // 消耗道具 code = this.module.ConsumeRes(session, costRes, true)