From 3a2391769f36117a181923e060427f7e533da7e5 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Thu, 19 Mar 2026 19:10:54 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=83=E6=97=A5=E7=AD=BE=E5=88=B0=E4=BC=98?= =?UTF-8?q?=E5=8C=96-=E5=A2=9E=E5=8A=A0=E7=AD=89=E7=BA=A7=E9=99=90?= =?UTF-8?q?=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/conf/seven_login/seven_login_cfg.go | 8 ++++++-- src/server/game/gm_handler.go | 2 +- src/server/game/mod/seven_login/seven_login.go | 4 ++-- src/server/game/mod/seven_login/seven_login_func.go | 10 +++++----- src/server/game/player_data.go | 2 +- src/server/test/seven_test.go | 3 ++- 6 files changed, 17 insertions(+), 12 deletions(-) diff --git a/src/server/conf/seven_login/seven_login_cfg.go b/src/server/conf/seven_login/seven_login_cfg.go index 2b4d7ec9..67331467 100644 --- a/src/server/conf/seven_login/seven_login_cfg.go +++ b/src/server/conf/seven_login/seven_login_cfg.go @@ -64,7 +64,7 @@ func GetSevenLoginMonthReward(nowMonth int) []*gamedata.SevenLoginRewardData { return result } -func GetSevenLoginJackpot(IsMonth int) []*gamedata.SevenLoginJackpotData { +func GetSevenLoginJackpot(isMonth, level int) []*gamedata.SevenLoginJackpotData { data, err := gamedata.GetData(CFG_SEVEN_LOGIN_JACKPOT) if err != nil { log.Debug("GetSevenLoginJackpot err:%v", err) @@ -76,7 +76,11 @@ func GetSevenLoginJackpot(IsMonth int) []*gamedata.SevenLoginJackpotData { Energy := gamedata.GetFloatValue(v, "Energy") Type := gamedata.GetIntValue(v, "Type") Month := gamedata.GetIntValue(v, "Month") - if IsMonth != Month && IsMonth != 0 { + Level := gamedata.GetIntValue(v, "Level") + if isMonth != Month && isMonth != 0 { + continue + } + if level < Level && level != 0 { continue } ItemMap := gamedata.GetValue(v, "Item") diff --git a/src/server/game/gm_handler.go b/src/server/game/gm_handler.go index 97c5dba8..2d552175 100644 --- a/src/server/game/gm_handler.go +++ b/src/server/game/gm_handler.go @@ -647,7 +647,7 @@ func ReqGmCommand_(player *Player, Command string) error { SevenMod.WeekResetTime = 0 SevenMod.MonthResetTime = 0 PlayerBaseMod := player.GetPlayerBaseMod() - SevenMod.ZeroUpdate(PlayerBaseMod.GetSevenLoginAdd(), PlayerBaseMod.GetLastLoginTime(), player.GetOrderFactor()) + SevenMod.ZeroUpdate(PlayerBaseMod.GetSevenLoginAdd(), PlayerBaseMod.GetLastLoginTime(), player.GetOrderFactor(), player.GetBaseMod().GetLevel()) player.PushClientRes(SevenMod.BackData()) case "addInvite": Id, _ := strconv.Atoi(arg[1]) diff --git a/src/server/game/mod/seven_login/seven_login.go b/src/server/game/mod/seven_login/seven_login.go index ae523bc8..234ccbba 100644 --- a/src/server/game/mod/seven_login/seven_login.go +++ b/src/server/game/mod/seven_login/seven_login.go @@ -30,13 +30,13 @@ func (s *SevenLoginMod) InitData() { } -func (s *SevenLoginMod) ZeroUpdate(Add, LastLoginTime, factor int) { +func (s *SevenLoginMod) ZeroUpdate(Add, LastLoginTime, factor, level int) { WeekZeroTimestamp := GoUtil.WeekZeroTimestamp() Now := GoUtil.Now() if WeekZeroTimestamp > s.WeekResetTime { RewardType := GoUtil.IfTrue(Now-int64(LastLoginTime) > GoUtil.SEVENDAYS && LastLoginTime > 0, BACK_REWARD, DEFAULT_REWARD).(int) s.IsBack = RewardType == BACK_REWARD - s.LoginReward = randWeekReward(Add, RewardType) + s.LoginReward = randWeekReward(Add, RewardType, level) s.LoginReward = formatSevenReward(s.LoginReward, factor) s.WeekResetTime = WeekZeroTimestamp s.DayR = 0 diff --git a/src/server/game/mod/seven_login/seven_login_func.go b/src/server/game/mod/seven_login/seven_login_func.go index 98a9ec27..995dac25 100644 --- a/src/server/game/mod/seven_login/seven_login_func.go +++ b/src/server/game/mod/seven_login/seven_login_func.go @@ -17,12 +17,12 @@ const ( BACK_REWARD = 1 ) -func randWeekReward(Add, Type int) map[int]Reward { +func randWeekReward(add, rtype, level int) map[int]Reward { rewardList := sevenLoginCfg.GetSevenLoginReward() sort.Slice(rewardList, func(i, j int) bool { return rewardList[i].Id < rewardList[j].Id }) - jackpot := sevenLoginCfg.GetSevenLoginJackpot(0) + jackpot := sevenLoginCfg.GetSevenLoginJackpot(0, level) sort.Slice(jackpot, func(i, j int) bool { return jackpot[i].Energy < jackpot[j].Energy }) @@ -34,11 +34,11 @@ func randWeekReward(Add, Type int) map[int]Reward { result := make(map[int]Reward) lastType := []int{} energyMul := 1.0 - if Type == BACK_REWARD { + if rtype == BACK_REWARD { energyMul = 2.0 } for _, v := range rewardList { - v.Energy = float64(v.Energy) * (1 + float64(Add)/100) + v.Energy = float64(v.Energy) * (1 + float64(add)/100) rewardData, randItemType := randReward(v, lastType, jackpot, cardPackIds, 0.5, energyMul) lastType = randItemType result[v.Id] = rewardData @@ -158,7 +158,7 @@ func randMonthReward() map[int]Reward { sort.Slice(rewardList, func(i, j int) bool { return rewardList[i].Id < rewardList[j].Id }) - jackpot := sevenLoginCfg.GetSevenLoginJackpot(1) + jackpot := sevenLoginCfg.GetSevenLoginJackpot(1, 0) sort.Slice(jackpot, func(i, j int) bool { return jackpot[i].Energy < jackpot[j].Energy }) diff --git a/src/server/game/player_data.go b/src/server/game/player_data.go index d7fe5240..d94cf337 100644 --- a/src/server/game/player_data.go +++ b/src/server/game/player_data.go @@ -369,7 +369,7 @@ func (p *Player) ZeroUpdate(a []interface{}) { p.PushClientRes(p.PlayMod.getBaseMod().BackData()) // 七日签到 - p.PlayMod.getSevenLoginMod().ZeroUpdate(PlayerBaseMod.GetSevenLoginAdd(), PlayerBaseMod.GetLastLoginTime(), p.GetOrderFactor()) + p.PlayMod.getSevenLoginMod().ZeroUpdate(PlayerBaseMod.GetSevenLoginAdd(), PlayerBaseMod.GetLastLoginTime(), p.GetOrderFactor(), p.GetBaseMod().GetLevel()) p.PushClientRes(p.PlayMod.getSevenLoginMod().BackData()) // 礼包充值 diff --git a/src/server/test/seven_test.go b/src/server/test/seven_test.go index 5a5006b2..a9d7d34f 100644 --- a/src/server/test/seven_test.go +++ b/src/server/test/seven_test.go @@ -17,11 +17,12 @@ func TestGetSevenLoginMonthReward(t *testing.T) { func TestSevenLoginZeroUpdate(t *testing.T) { p1 := new(game.Player) p1.InitPlayer("3625212") + p1.GetBaseMod().SetLevel(15) SevenLoginMod := p1.GetSevenLoginMod() for i := 0; i < 100; i++ { SevenLoginMod.WeekResetTime = 0 SevenLoginMod.MonthResetTime = 0 - SevenLoginMod.ZeroUpdate(0, 0, p1.GetOrderFactor()) + SevenLoginMod.ZeroUpdate(0, 0, p1.GetOrderFactor(), p1.GetBaseMod().GetLevel()) SevenLoginMod.BackData() fmt.Printf("id :%d ; Reward:%v\n", 7, SevenLoginMod.LoginReward[7]) }