掠夺排行奖励

This commit is contained in:
meixiongfeng 2024-02-02 17:17:14 +08:00
parent a9523967e5
commit 0b35002b42
5 changed files with 74 additions and 3 deletions

View File

@ -410,6 +410,7 @@ func (this *ModelHero) setEquipProperty(hero *pb.DBHero, equip []*pb.DB_Equipmen
})
}
}
}
for _, v := range hero.Suits {

View File

@ -7,6 +7,7 @@ import (
"go_dreamfactory/lego/sys/redis"
"go_dreamfactory/pb"
"go_dreamfactory/sys/configure"
cfg "go_dreamfactory/sys/configure/structs"
"go_dreamfactory/utils"
"reflect"
@ -25,6 +26,7 @@ func (this *apiComp) GetList(session comm.IUserSession, req *pb.PlunderGetListRe
land *pb.DBPlunderLand
update map[string]interface{}
)
if errdata = this.GetListCheck(session, req); errdata != nil {
return
}
@ -58,6 +60,8 @@ func (this *apiComp) GetList(session comm.IUserSession, req *pb.PlunderGetListRe
var uids []string
// 清理岛数据
if land.Etime < configure.Now().Unix() {
// 清理之前先发奖
this.sendRankReward(land.Score)
for _, v := range land.Uinfo { // 重置成员信息
uids = append(uids, v.Uid)
}
@ -73,6 +77,7 @@ func (this *apiComp) GetList(session comm.IUserSession, req *pb.PlunderGetListRe
}
return
}
list.Landid = land.Id
update["landid"] = land.Id
list.Etime = land.Etime
@ -144,3 +149,45 @@ func (this *apiComp) GetList(session comm.IUserSession, req *pb.PlunderGetListRe
})
return
}
func (this *apiComp) sendRankReward(data map[string]int32) (err error) {
var (
list []Pair
rewardConf []*cfg.GamePlunderRankData
uid []string //
reward []*pb.UserAssets
)
list = sortMap(data)
for _, v := range list {
if v.Value > 0 { // 只算 分数大于0 的玩家
uid = append(uid, v.Key)
}
}
if rewardConf, err = this.module.configure.getPlunderRandConf(); err != nil {
return
}
for _, v := range rewardConf {
var sz []string
if true {
for i := v.ScoreLow; i <= v.ScoreUp; i++ {
sz = append(sz, uid[i-1])
}
}
for _, v := range v.Reward {
reward = append(reward, &pb.UserAssets{
A: v.A,
T: v.T,
N: v.N,
})
}
this.module.mail.SendNewMail(&pb.DBMailData{
Cid: "XXLRankingReward",
Param: []string{fmt.Sprintf("%d-%d", v.ScoreLow, v.ScoreUp)}, // 参数 分数下线和分数上限之间
CreateTime: uint64(configure.Now().Unix()),
Items: reward,
}, sz...)
}
return
}

View File

@ -11,6 +11,7 @@ const (
game_plunder = "game_plunder.json"
game_plunderbattle = "game_plunderbattle.json"
game_plunderdevelop = "game_plunderdevelop.json"
game_plunderrank = "game_plunderrank.json"
)
type configureComp struct {
@ -26,6 +27,7 @@ func (this *configureComp) Init(service core.IService, module core.IModule, comp
game_plunder: cfg.NewGamePlunder,
game_plunderbattle: cfg.NewGamePlunderBattle,
game_plunderdevelop: cfg.NewGamePlunderDevelop,
game_plunderrank: cfg.NewGamePlunderRank,
})
return
}
@ -93,3 +95,18 @@ func (this *configureComp) getPlunderDevelopById(id int32) (result *cfg.GamePlun
err = comm.NewNotFoundConfErr(string(this.module.GetType()), game_plunderdevelop, id)
return
}
func (this *configureComp) getPlunderRandConf() (result []*cfg.GamePlunderRankData, err error) {
var (
v interface{}
)
if v, err = this.GetConfigure(game_plunderrank); err == nil {
if configure, ok := v.(*cfg.GamePlunderRank); ok {
if result = configure.GetDataList(); result != nil {
return
}
}
}
err = comm.NewNotFoundConfErr(string(this.module.GetType()), game_plunderdevelop, "")
return
}

View File

@ -24,6 +24,7 @@ type Plunder struct {
battle comm.IBattle
modelRecord *modelRecord
battlerecord comm.IBattleRecord // 战报模块
mail comm.Imail
}
// 模块名
@ -53,6 +54,11 @@ func (this *Plunder) Start() (err error) {
return
}
this.battlerecord = module.(comm.IBattleRecord)
if module, err = this.service.GetModule(comm.ModuleMail); err != nil {
return
}
this.mail = module.(comm.Imail)
return
}

View File

@ -5,16 +5,16 @@ import "sort"
//根据value排序
type Pair struct {
Key string
Value int
Value int32
}
type PairList []Pair
func (p PairList) Swap(i, j int) { p[i], p[j] = p[j], p[i] }
func (p PairList) Len() int { return len(p) }
func (p PairList) Less(i, j int) bool { return p[i].Value < p[j].Value }
func (p PairList) Less(i, j int) bool { return p[i].Value > p[j].Value }
func sortMap(m map[string]int) PairList {
func sortMap(m map[string]int32) PairList {
p := make(PairList, len(m))
i := 0
for k, v := range m {