锦标赛奖励配置优化-根据活动类型区分

This commit is contained in:
hahwu 2026-03-05 11:58:08 +08:00
parent 5e9710d2f3
commit 850cceecaa
9 changed files with 152 additions and 20 deletions

View File

@ -90,6 +90,42 @@ func GetActivityList() []*gamedata.ActivityData {
}
return List
}
func GetActivityListOrigin() []*gamedata.ActivityData {
data, err := gamedata.GetData(CFG_ACTIVITY)
if err != nil {
log.Debug("GetActivityList err:%v", err)
return nil
}
List := make([]*gamedata.ActivityData, 0, len(data))
for k, v := range data {
StartTimeStr := gamedata.GetStringValue(v, "StartTime")
EndTimeStr := gamedata.GetStringValue(v, "EndTime")
StartTime := GoUtil.ParseTime(StartTimeStr)
EndTime := GoUtil.ParseTime(EndTimeStr)
Id, err := strconv.Atoi(k)
if err != nil {
log.Debug("GetActivityList parse id err:%v, key:%s", err, k)
continue
}
Type := gamedata.GetIntValue(v, "Type")
Name := gamedata.GetStringValue(v, "Name")
Title := gamedata.GetStringValue(v, "Title")
Level := gamedata.GetIntValue(v, "Level")
ActivityData := &gamedata.ActivityData{
Id: Id,
Type: Type,
AType: gamedata.GetIntValue(v, "AType"),
Name: Name,
Title: Title,
Level: Level,
StartTime: StartTime,
EndTime: EndTime,
}
List = append(List, ActivityData)
}
return List
}
func GetActivityRewardItems(ActId int) []*item.Item {
data, err := gamedata.GetData(CFG_ACTIVITY_GIFT)

View File

@ -5,6 +5,7 @@ import (
GoUtil "server/game_util"
"server/gamedata"
"server/pkg/github.com/name5566/leaf/log"
"strings"
)
const (
@ -12,6 +13,7 @@ const (
CFG_CHAMPSHIP_RANK = "ChampshipRank"
CFG_CHAMPSHIP_JACKPOT = "ChampshipJackpot"
CFG_CHAMPSHIP_GROUP = "ChampshipGroup"
CFG_CHAMPSHIP_CONST = "ChampshipConst"
)
func init() {
@ -19,6 +21,7 @@ func init() {
gamedata.InitCfg(CFG_CHAMPSHIP_RANK)
gamedata.InitCfg(CFG_CHAMPSHIP_JACKPOT)
gamedata.InitCfg(CFG_CHAMPSHIP_GROUP)
gamedata.InitCfg(CFG_CHAMPSHIP_CONST)
}
func GetGroupId(N int) int {
@ -44,7 +47,7 @@ func GetChessScore(ChessLv int) int {
return gamedata.GetIntValue(data, "Score")
}
func GetReward(Reward, Score int) (int, []*item.Item) {
func GetReward(Reward, Score, activityId int) (int, []*item.Item) {
data, err := gamedata.GetData(CFG_CHAMPSHIP_JACKPOT)
if err != nil {
log.Debug("GetReward err:%v, Reward=%d, Score=%d", err, Reward, Score)
@ -53,6 +56,10 @@ func GetReward(Reward, Score int) (int, []*item.Item) {
r := make([]*item.Item, 0, len(data))
NewReward := Reward
for k, v := range data {
rewardGroupType := gamedata.GetIntValue(v, "RewardGroupType")
if rewardGroupType != activityId {
continue
}
Id := GoUtil.Int(k)
if Reward >= Id {
continue
@ -84,14 +91,14 @@ func GetRewardTotalScore(Reward int) int {
return gamedata.GetIntValue(data, "Total")
}
func GetRankReward(Rank int) []*item.Item {
func GetRankReward(Rank, yesterdayActivityId int) []*item.Item {
data, err := gamedata.GetData(CFG_CHAMPSHIP_RANK)
if err != nil {
log.Debug("GetRankReward err:%v, Rank=%d", err, Rank)
log.Debug("GetRankReward err:%v, Rank=%d, yesterdayActivityId=%d", err, Rank, yesterdayActivityId)
return nil
}
for _, v := range data {
if Rank >= gamedata.GetIntValue(v, "Min") && Rank <= gamedata.GetIntValue(v, "Max") {
if Rank >= gamedata.GetIntValue(v, "Min") && Rank <= gamedata.GetIntValue(v, "Max") && yesterdayActivityId == gamedata.GetIntValue(v, "RewardGroupType") {
return gamedata.GetItemList(v, "Items")
}
}
@ -113,3 +120,20 @@ func GetMaxRewardId() int {
}
return MaxId
}
func GetChampshipActivityId() []int {
data, err := gamedata.GetDataByKey(CFG_CHAMPSHIP_CONST, "RewardGroupType_const")
if err != nil {
log.Debug("GetChampshipActivityId err:%v", err)
return nil
}
value := gamedata.GetStringValue(data, "Value")
var res []int
for _, v := range strings.Split(value, "|") {
id := GoUtil.Int(v)
if id > 0 {
res = append(res, id)
}
}
return res
}

View File

@ -4,6 +4,7 @@ import (
"fmt"
activityCfg "server/conf/activity"
catnipCfg "server/conf/catnip"
champshipCfg "server/conf/champship"
guesscolorCfg "server/conf/guess_color"
languageCfg "server/conf/language"
miningCfg "server/conf/mining"
@ -422,3 +423,28 @@ func (p *Player) CatnipBackData() {
}
p.PushClientRes(res)
}
func (p *Player) GetChampshipActivityId() (int, int) {
var todayActivityId int
var yesterdayActivityId int
activiyCfgList := activityCfg.GetActivityListOrigin()
Now := GoUtil.Now()
YesterDay := GoUtil.ZeroTimestamp() - 1
level := p.GetBaseMod().GetLevel()
champshipActivityIds := champshipCfg.GetChampshipActivityId()
for _, v := range activiyCfgList {
if !GoUtil.InArray(v.Id, champshipActivityIds) {
continue
}
if v.Level > level {
continue
}
if v.StartTime <= Now && v.EndTime >= Now {
todayActivityId = v.Id
}
if v.StartTime <= YesterDay && v.EndTime >= YesterDay {
yesterdayActivityId = v.Id
}
}
return todayActivityId, yesterdayActivityId
}

View File

@ -35,12 +35,12 @@ func (c *ChampshipMod) GetScore() int {
return c.Score
}
func (c *ChampshipMod) GetRankReward(Rank int) ([]*item.Item, error) {
func (c *ChampshipMod) GetRankReward(Rank, yesterdayActivityId int) ([]*item.Item, error) {
if c.RankReward {
return nil, fmt.Errorf("rank reward has been received")
}
c.RankReward = true
return champshipCfg.GetRankReward(Rank), nil
return champshipCfg.GetRankReward(Rank, yesterdayActivityId), nil
}
func (c *ChampshipMod) AddScore(Chess []int) {
@ -56,14 +56,14 @@ func (c *ChampshipMod) AddScore(Chess []int) {
c.Score += score
}
func (c *ChampshipMod) GetReward() []*item.Item {
Reward, Items := champshipCfg.GetReward(c.Reward, c.Score)
func (c *ChampshipMod) GetReward(activityId int) []*item.Item {
Reward, Items := champshipCfg.GetReward(c.Reward, c.Score, activityId)
c.Reward = Reward
c.Max = max(c.Max, c.Reward)
return Items
}
func (c *ChampshipMod) BackData(MyRank, MyPreRank int) *msg.ResChampship {
func (c *ChampshipMod) BackData(MyRank, MyPreRank, todayActivityId, yesterdayActivityId int) *msg.ResChampship {
rankReward := 0
if c.RankReward {
rankReward = 2
@ -82,6 +82,8 @@ func (c *ChampshipMod) BackData(MyRank, MyPreRank int) *msg.ResChampship {
Rank: int32(MyRank),
RankReward: int32(rankReward),
Status: int32(status),
TodayActivityId: int32(todayActivityId),
YesterdayActivityId: int32(yesterdayActivityId),
}
}

View File

@ -3,6 +3,7 @@ package game
import (
"server/game/mod/base"
"server/game/mod/card"
"server/game/mod/champship"
"server/game/mod/charge"
"server/game/mod/chess"
"server/game/mod/decorate"
@ -67,3 +68,7 @@ func (p *Player) GetFurMod() *fur.FurMod {
func (p *Player) GetFriendMod() *friend.FriendMod {
return p.PlayMod.getFriendMod()
}
func (p *Player) GetChampshipMod() *champship.ChampshipMod {
return p.PlayMod.getChampshipMod()
}

View File

@ -308,7 +308,8 @@ func (p *Player) ChargeBackData() {
func (p *Player) BackChampship() {
ChampshipMod := p.PlayMod.getChampshipMod()
rank, preRank := p.GetChampshipRank()
p.PushClientRes(ChampshipMod.BackData(rank, preRank))
todayActivityId, yesterdayActivityId := p.GetChampshipActivityId()
p.PushClientRes(ChampshipMod.BackData(rank, preRank, todayActivityId, yesterdayActivityId))
}
// 获取冠军赛排名 redis缓存

View File

@ -2737,7 +2737,8 @@ func ReqShippingOrder(player *Player, buf []byte) error {
// 锦标赛
func ReqChampshipReward(player *Player, buf []byte) error {
ChampshipMod := player.PlayMod.getChampshipMod()
itemList := ChampshipMod.GetReward()
todayActivityId, _ := player.GetChampshipActivityId()
itemList := ChampshipMod.GetReward(todayActivityId)
err := player.HandleItem(itemList, msg.ITEM_POP_LABEL_ChampshipReward.String())
if err != nil {
player.SendErrClienRes(&msg.ResChampshipReward{
@ -2789,7 +2790,8 @@ func ReqKv(player *Player, buf []byte) error {
func ReqChampshipRankReward(player *Player, buf []byte) error {
_, myPreRank := player.GetChampshipRank()
ChampshipMod := player.PlayMod.getChampshipMod()
itemList, err := ChampshipMod.GetRankReward(myPreRank)
_, yesterdayActivityId := player.GetChampshipActivityId()
itemList, err := ChampshipMod.GetRankReward(myPreRank, yesterdayActivityId)
if err != nil {
player.SendErrClienRes(&msg.ResChampshipRankReward{
Code: msg.RES_CODE_FAIL,

View File

@ -5,7 +5,7 @@
### 随机好友推荐
```golang
test function TestFriendRecommendList 2026-3-12
test function TestFriendRecommendList 2026-03-04
ok server/test 1.033s
```
@ -16,6 +16,13 @@ ok server/test 1.033s
3714321 | 100002
```
### 好友申请
```golang
test function TestReqApplyFriend 2026-03-05
ok server/test 0.479s
```
## 充值模块
### 观看广告记录

View File

@ -0,0 +1,29 @@
package test
import (
champshipCfg "server/conf/champship"
"server/game"
"testing"
)
func TestChampshipReward(t *testing.T) {
p1 := new(game.Player)
p1.InitPlayer("3625212")
ChampshipMod := p1.GetChampshipMod()
ChampshipMod.Score = 1000
game.ReqChampshipReward(p1, nil)
}
func TestChampshipRankReward(t *testing.T) {
p1 := new(game.Player)
p1.InitPlayer("3625212")
ChampshipMod := p1.GetChampshipMod()
ChampshipMod.RankReward = false
_, yesterdayActivityId := p1.GetChampshipActivityId()
ChampshipMod.GetRankReward(1, yesterdayActivityId)
}
func TestGetChampshipActivityId(t *testing.T) {
res := champshipCfg.GetChampshipActivityId()
t.Logf("res:%v", res)
}