GM 循环塔跳关

This commit is contained in:
meixiongfeng 2023-07-28 17:43:05 +08:00
parent 1046349550
commit a1d5836ef1
7 changed files with 101 additions and 20 deletions

View File

@ -330,7 +330,7 @@ type (
ModifyPagodaFloor(session IUserSession, d1 int32, d2 int32) (errdata *pb.ErrorData) ModifyPagodaFloor(session IUserSession, d1 int32, d2 int32) (errdata *pb.ErrorData)
CheckUserBasePagodaInfo(uid string) (data *pb.DBPagodaRecord) // 查询玩家最佳通关记录 CheckUserBasePagodaInfo(uid string) (data *pb.DBPagodaRecord) // 查询玩家最佳通关记录
CheckCompletePagoda(uid string) (bComplete bool) // 校验是否通关普通塔 CheckCompletePagoda(uid string) (bComplete bool) // 校验是否通关普通塔
GMModifyRacePagoda(uid string, key int32, floor int32)
///红点 ///红点
IGetReddot IGetReddot
} }

View File

@ -40,6 +40,7 @@ import (
24bingo:cleannpc 24bingo:cleannpc
31bingo:jx // 获得所有教习资源 31bingo:jx // 获得所有教习资源
32bingo:godlike // 一键超神 32bingo:godlike // 一键超神
33bingo:race,1,10
*/ */
//参数校验 //参数校验
func (this *apiComp) CmdCheck(session comm.IUserSession, req *pb.GMCmdReq) (errdata *pb.ErrorData) { func (this *apiComp) CmdCheck(session comm.IUserSession, req *pb.GMCmdReq) (errdata *pb.ErrorData) {

View File

@ -545,6 +545,39 @@ func (this *GM) CreateCmd(session comm.IUserSession, cmd string) (errdata *pb.Er
if errdata = module1.(comm.IHoroscope).GMFulllevel(session); errdata != nil { if errdata = module1.(comm.IHoroscope).GMFulllevel(session); errdata != nil {
return return
} }
this.Debug("使用bingo命令:uid = %s ",
log.Field{Key: "uid", Value: session.GetUserId()},
log.Field{Key: "0", Value: datas[0]},
)
} else if len(datas) == 3 && (datas[0] == "race") { // 一键超神
var (
num1 int
num2 int
err error
)
module1, err := this.service.GetModule(comm.ModulePagoda)
if err != nil {
return
}
num1, err = strconv.Atoi(datas[1])
if err != nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_ReqParameterError,
Title: pb.ErrorCode_ReqParameterError.ToString(),
}
return
}
num2, err = strconv.Atoi(datas[2])
if err != nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_ReqParameterError,
Title: pb.ErrorCode_ReqParameterError.ToString(),
}
return
}
module1.(comm.IPagoda).GMModifyRacePagoda(session.GetUserId(), int32(num1), int32(num2))
this.Debug("使用bingo命令:uid = %s ", this.Debug("使用bingo命令:uid = %s ",
log.Field{Key: "uid", Value: session.GetUserId()}, log.Field{Key: "uid", Value: session.GetUserId()},
log.Field{Key: "0", Value: datas[0]}, log.Field{Key: "0", Value: datas[0]},

View File

@ -18,7 +18,6 @@ func (this *apiComp) GetRace(session comm.IUserSession, req *pb.PagodaGetRaceReq
var ( var (
bChange bool bChange bool
bSesaon bool // 循环塔id
) )
list, err := this.module.modelRacePagoda.getPagodaRaceList(session.GetUserId()) list, err := this.module.modelRacePagoda.getPagodaRaceList(session.GetUserId())
if err != nil { if err != nil {
@ -37,13 +36,24 @@ func (this *apiComp) GetRace(session comm.IUserSession, req *pb.PagodaGetRaceReq
list.Race[k].Defeat = 0 list.Race[k].Defeat = 0
bChange = true bChange = true
} }
if k >= 10 {
bSesaon = true
}
// 校验循环塔是否过期 // 校验循环塔是否过期
if v.Endtime < configure.Now().Unix() { if v.Endtime < configure.Now().Unix() {
list.Race[k] = &pb.RaceData{ var cir int32 // 循环
Race: 10, c := this.module.configure.GetRaceCirculateConf()
for pos, v := range c {
if v == k {
pos += 1
if pos >= len(c) {
cir = c[0]
} else {
cir = c[pos]
}
break
}
}
delete(list.Race, k)
list.Race[cir] = &pb.RaceData{
Race: cir,
Task: []int32{}, Task: []int32{},
Rtime: configure.Now().Unix(), Rtime: configure.Now().Unix(),
Defeat: 0, Defeat: 0,
@ -53,17 +63,7 @@ func (this *apiComp) GetRace(session comm.IUserSession, req *pb.PagodaGetRaceReq
bChange = true bChange = true
} }
} }
if !bSesaon {
list.Race[10] = &pb.RaceData{ // 第一赛季阵营id默认就是10
Race: 10,
Task: []int32{},
Rtime: configure.Now().Unix(),
Defeat: 0,
Endtime: this.module.GetSeasonData(),
Curfloor: 0,
}
bChange = true
}
if bChange { if bChange {
mapData := make(map[string]interface{}, 0) mapData := make(map[string]interface{}, 0)
mapData["race"] = list.Race mapData["race"] = list.Race

View File

@ -30,6 +30,7 @@ type configureComp struct {
_mapPagoda map[int32]*cfg.GamePagodaData _mapPagoda map[int32]*cfg.GamePagodaData
_mapFloor map[int32]int32 // key 页签 value 层数 _mapFloor map[int32]int32 // key 页签 value 层数
_mapRace map[int32]*cfg.GameCirculateData // 阵营塔 _mapRace map[int32]*cfg.GameCirculateData // 阵营塔
circulate []int32
} }
//组件初始化接口 //组件初始化接口
@ -45,7 +46,6 @@ func (this *configureComp) Init(service core.IService, module core.IModule, comp
configure.RegisterConfigure(game_passcheck, cfg.NewGamePassCheck, this.LoadPassCheck) configure.RegisterConfigure(game_passcheck, cfg.NewGamePassCheck, this.LoadPassCheck)
configure.RegisterConfigure(game_pagoda, cfg.NewGamePagoda, this.LoadPagoda) configure.RegisterConfigure(game_pagoda, cfg.NewGamePagoda, this.LoadPagoda)
configure.RegisterConfigure(game_circulate, cfg.NewGameCirculate, this.LoadCirculate) configure.RegisterConfigure(game_circulate, cfg.NewGameCirculate, this.LoadCirculate)
return return
} }
@ -201,7 +201,7 @@ func (this *configureComp) GetPagodaConfBytab(tab int32, ly int32) (data *cfg.Ga
} }
func (this *configureComp) LoadCirculate() { func (this *configureComp) LoadCirculate() {
_m := make(map[int32]struct{}, 0)
if v, err := this.GetConfigure(game_circulate); err == nil { if v, err := this.GetConfigure(game_circulate); err == nil {
if configure, ok := v.(*cfg.GameCirculate); ok { if configure, ok := v.(*cfg.GameCirculate); ok {
this.hlock.Lock() this.hlock.Lock()
@ -209,6 +209,12 @@ func (this *configureComp) LoadCirculate() {
this._mapRace = make(map[int32]*cfg.GameCirculateData) this._mapRace = make(map[int32]*cfg.GameCirculateData)
for _, value := range configure.GetDataList() { for _, value := range configure.GetDataList() {
this._mapRace[value.Restriction<<16+value.Floors] = value this._mapRace[value.Restriction<<16+value.Floors] = value
if value.Name == 1 {
if _, ok := _m[value.Restriction]; !ok {
_m[value.Restriction] = struct{}{}
this.circulate = append(this.circulate, value.Restriction)
}
}
} }
return return
} }
@ -242,3 +248,7 @@ func (this *configureComp) GetPagodaRaceConfById(id int32) (data *cfg.GameCircul
err = comm.NewNotFoundConfErr(moduleName, game_circulate, id) err = comm.NewNotFoundConfErr(moduleName, game_circulate, id)
return return
} }
func (this *configureComp) GetRaceCirculateConf() []int32 {
return this.circulate
}

View File

@ -6,6 +6,7 @@ import (
"go_dreamfactory/lego/sys/mgo" "go_dreamfactory/lego/sys/mgo"
"go_dreamfactory/modules" "go_dreamfactory/modules"
"go_dreamfactory/pb" "go_dreamfactory/pb"
"go_dreamfactory/sys/configure"
"go.mongodb.org/mongo-driver/bson/primitive" "go.mongodb.org/mongo-driver/bson/primitive"
"go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo"
@ -37,6 +38,16 @@ func (this *ModelRace) getPagodaRaceList(uid string) (result *pb.DBPagodaRace, e
result.Id = primitive.NewObjectID().Hex() result.Id = primitive.NewObjectID().Hex()
result.Uid = uid result.Uid = uid
result.Race = make(map[int32]*pb.RaceData) result.Race = make(map[int32]*pb.RaceData)
if c := this.module.configure.GetRaceCirculateConf(); len(c) > 0 {
result.Race[c[0]] = &pb.RaceData{ // 第一赛季阵营id默认就是10
Race: c[0],
Task: []int32{},
Rtime: configure.Now().Unix(),
Defeat: 0,
Endtime: this.module.GetSeasonData(),
Curfloor: 0,
}
}
err = this.addPagodaRace(uid, result) err = this.addPagodaRace(uid, result)
return return

View File

@ -9,6 +9,7 @@ import (
"go_dreamfactory/lego/sys/redis/pipe" "go_dreamfactory/lego/sys/redis/pipe"
"go_dreamfactory/modules" "go_dreamfactory/modules"
"go_dreamfactory/pb" "go_dreamfactory/pb"
"go_dreamfactory/sys/configure"
"go_dreamfactory/sys/db" "go_dreamfactory/sys/db"
"go_dreamfactory/utils" "go_dreamfactory/utils"
@ -226,3 +227,28 @@ func (this *Pagoda) SetRacePagodaRankList(tableName string, score int32, uid str
} }
} }
} }
func (this *Pagoda) GMModifyRacePagoda(uid string, key int32, floor int32) {
if race, err := this.modelRacePagoda.getPagodaRaceList(uid); err == nil {
if _, ok := race.Race[key]; ok {
race.Race[key].Curfloor = floor
} else {
race.Race[key] = &pb.RaceData{
Race: key,
Task: []int32{},
Rtime: configure.Now().Unix(),
Defeat: 0,
Curfloor: 0,
}
if key >= 10 {
race.Race[key].Endtime = this.GetSeasonData()
}
}
mapData := make(map[string]interface{}, 0)
mapData["race"] = race.Race
this.modelRacePagoda.ModifyPagodaRaceDataByObjId(uid, mapData)
return
}
}