diff --git a/modules/arena/api_buy.go b/modules/arena/api_buy.go index 7f17712a9..34f76a884 100644 --- a/modules/arena/api_buy.go +++ b/modules/arena/api_buy.go @@ -21,10 +21,11 @@ func (this *apiComp) BuyCheck(session comm.IUserSession, req *pb.ArenaBuyReq) (c func (this *apiComp) Buy(session comm.IUserSession, req *pb.ArenaBuyReq) (code pb.ErrorCode, data proto.Message) { var ( // global *cfg.GameGlobalData - info *pb.DBArenaUser - challenge *cfg.GameArenaBuyChallengeData - need []*cfg.Gameatn - err error + info *pb.DBArenaUser + challenge *cfg.GameArenaBuyChallengeData + need []*cfg.Gameatn + maxbuy, vipbuy int + err error ) if code = this.BuyCheck(session, req); code != pb.ErrorCode_Success { return @@ -34,18 +35,19 @@ func (this *apiComp) Buy(session comm.IUserSession, req *pb.ArenaBuyReq) (code p return } this.module.modelArena.recoverTicket(session, info) - // global = this.module.configure.GetGlobalConf() - // if info.Ticket+req.BuyNum > global.ArenaTicketMax { - // code = pb.ErrorCode_ArenaTicketBuyUp - // return - // } + + if maxbuy, err = this.module.configure.GetchallengeDataCount(); err != nil { + code = pb.ErrorCode_ConfigNoFound + return + } + vipbuy = int(this.module.privilege.GetCountByPrivilegeId(session.GetUserId(), comm.PrivilegeType5)) need = make([]*cfg.Gameatn, 0) for i := int32(0); i < req.BuyNum; i++ { - if challenge, err = this.module.configure.GetchallengeData(info.Buynum + i + 1); err != nil { - code = pb.ErrorCode_ConfigNoFound + if int(info.Buynum+i+1) > maxbuy+vipbuy { + code = pb.ErrorCode_ArenaTicketBuyUp return } - if challenge == nil { + if challenge, err = this.module.configure.GetchallengeData(info.Buynum + i + 1); err != nil || challenge == nil { code = pb.ErrorCode_ConfigNoFound return } diff --git a/modules/arena/configure.go b/modules/arena/configure.go index 6abe8a6f1..8d75e7804 100644 --- a/modules/arena/configure.go +++ b/modules/arena/configure.go @@ -62,6 +62,20 @@ func (this *configureComp) Init(service core.IService, module core.IModule, comp return } +///获取月之秘境触购买表 +func (this *configureComp) GetchallengeDataCount() (count int, err error) { + var ( + v interface{} + ) + if v, err = this.GetConfigure(game_arenabuychallenge); err != nil { + this.module.Errorln(err) + return + } else { + count = len(v.(*cfg.GameArenaBuyChallenge).GetDataList()) + } + return +} + ///获取月之秘境触购买表 func (this *configureComp) GetchallengeData(buynum int32) (result *cfg.GameArenaBuyChallengeData, err error) { var ( @@ -71,7 +85,13 @@ func (this *configureComp) GetchallengeData(buynum int32) (result *cfg.GameArena this.module.Errorln(err) return } else { - result = v.(*cfg.GameArenaBuyChallenge).GetDataMap()[buynum] + for _, v := range v.(*cfg.GameArenaBuyChallenge).GetDataList() { + if v.Num == buynum { + result = v + return + } + result = v + } } return } diff --git a/modules/arena/module.go b/modules/arena/module.go index 75e440249..f67b26981 100644 --- a/modules/arena/module.go +++ b/modules/arena/module.go @@ -25,6 +25,7 @@ type Arena struct { service base.IRPCXService mail comm.Imail battle comm.IBattle + privilege comm.IPrivilege api *apiComp configure *configureComp modelArena *modelArena @@ -53,6 +54,10 @@ func (this *Arena) Start() (err error) { return } this.mail = module.(comm.Imail) + if module, err = this.service.GetModule(comm.ModulePrivilege); err != nil { + return + } + this.privilege = module.(comm.IPrivilege) this.service.RegisterFunctionName(string(comm.Rpc_ModuleArenaRaceSettlement), this.Rpc_ModuleArenaRaceSettlement) this.service.RegisterFunctionName(string(comm.Rpc_ModuleArenaModifyIntegral), this.Rpc_ModuleArenaModifyIntegral) return