From 519c8a7a6843959673657b8416e599941671d96f Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Thu, 19 Mar 2026 18:14:11 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E5=AE=A0=E7=89=A9=E5=AE=9D=E8=97=8F?= =?UTF-8?q?=E5=AE=A0=E7=89=A9=E5=B8=81=E4=B8=8A=E9=99=90=E4=B9=9F=E9=9C=80?= =?UTF-8?q?=E4=B9=98=E4=BB=A5=E7=BF=BB=E5=80=8D=E7=B3=BB=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/gm_handler.go | 2 +- src/server/game/mod/friend_treasure.go/friend_treasure.go | 5 +++-- src/server/game/register_network_func.go | 2 +- src/server/game_util/GoUtil.go | 8 ++++++-- 4 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/server/game/gm_handler.go b/src/server/game/gm_handler.go index 036915a0..97c5dba8 100644 --- a/src/server/game/gm_handler.go +++ b/src/server/game/gm_handler.go @@ -446,7 +446,7 @@ func ReqGmCommand_(player *Player, Command string) error { db.RedisDelKey(fmt.Sprintf("%s_%s", RANK_COUNTRY_USER, conf.Server.CountryCode)) case "addFriendStar": FriendTreasureMod := player.PlayMod.getFriendTreasureMod() - FriendTreasureMod.AddStar(200) + FriendTreasureMod.AddStar(200, player.GetOrderFactor()) case "comfortOrder": BaseMod := player.PlayMod.getBaseMod() BaseMod.LogoutTime = GoUtil.Now() - 7*86400 diff --git a/src/server/game/mod/friend_treasure.go/friend_treasure.go b/src/server/game/mod/friend_treasure.go/friend_treasure.go index 05209023..984a5cd3 100644 --- a/src/server/game/mod/friend_treasure.go/friend_treasure.go +++ b/src/server/game/mod/friend_treasure.go/friend_treasure.go @@ -56,8 +56,9 @@ func (f *FriendTreasureMod) InitGame(List []*msg.TreasureInfo, List2 []int32) { } // 增加星级 -func (f *FriendTreasureMod) AddStar(Star int) { - f.Star = min(200, f.Star+Star) +func (f *FriendTreasureMod) AddStar(star, factor int) { + limit := GoUtil.FormatStarItemNum(200, factor) + f.Star = min(limit, f.Star+star) } // 翻牌 diff --git a/src/server/game/register_network_func.go b/src/server/game/register_network_func.go index daf9d0e6..02c58626 100644 --- a/src/server/game/register_network_func.go +++ b/src/server/game/register_network_func.go @@ -437,7 +437,7 @@ func ReqRewardOrder(player *Player, buf []byte) error { player.HandleInChampshipRank() } FriendTreasureMod := player.PlayMod.getFriendTreasureMod() - FriendTreasureMod.AddStar(Star / 20) + FriendTreasureMod.AddStar(Star/20, player.GetOrderFactor()) player.PushClientRes(FriendTreasureMod.NotifyStar()) // 限时事件增加进度 LimitedTimeEventMod.AddProgress(player.GetPlayerBaseMod().GetLevel()) diff --git a/src/server/game_util/GoUtil.go b/src/server/game_util/GoUtil.go index 114e5a21..1f28a10a 100644 --- a/src/server/game_util/GoUtil.go +++ b/src/server/game_util/GoUtil.go @@ -727,9 +727,13 @@ func GetGeoInfo(ip string) (string, string, error) { func FormatStarItem(items []*item.Item, factor int) []*item.Item { for _, v := range items { if v.Id == item.ITEM_STAR_ID { - Num := math.Round(float64(v.Num) * float64(factor) / 100) - v.Num = int(Num) / 5 * 5 + v.Num = FormatStarItemNum(v.Num, factor) } } return items } + +func FormatStarItemNum(num, factor int) int { + Num := math.Round(float64(num) * float64(factor) / 100) + return int(Num) / 5 * 5 +} From 3c8f9a8eb63108152cd53a5001eac4346f65f5d2 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Thu, 19 Mar 2026 18:32:41 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=AE=A0=E7=89=A9?= =?UTF-8?q?=E5=AE=9D=E8=97=8F=E5=A5=96=E5=8A=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/mod/friend_treasure.go/friend_treasure.go | 1 - 1 file changed, 1 deletion(-) diff --git a/src/server/game/mod/friend_treasure.go/friend_treasure.go b/src/server/game/mod/friend_treasure.go/friend_treasure.go index 984a5cd3..eabdb71c 100644 --- a/src/server/game/mod/friend_treasure.go/friend_treasure.go +++ b/src/server/game/mod/friend_treasure.go/friend_treasure.go @@ -104,7 +104,6 @@ func (f *FriendTreasureMod) EndGame(factor int) ([]*item.Item, int, error) { bigReward := friendTreasureCfg.GetBigReward() reward = append(reward, bigReward...) } - reward = GoUtil.FormatStarItem(reward, factor) return reward, friendItemNum, nil } From d2d31d94abb560ba226a783459db16a5b69f6671 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Thu, 19 Mar 2026 18:48:18 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E4=B8=83=E6=97=A5=E7=AD=BE=E5=88=B0?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../game/mod/seven_login/seven_login_func.go | 26 +++++++++++++++---- src/server/test/seven_test.go | 17 +++++------- 2 files changed, 28 insertions(+), 15 deletions(-) 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 f74f471c..98a9ec27 100644 --- a/src/server/game/mod/seven_login/seven_login_func.go +++ b/src/server/game/mod/seven_login/seven_login_func.go @@ -54,6 +54,9 @@ func randReward(rewardData *gamedata.SevenLoginRewardData, lastType []int, jackp // 召回玩家 每日体力数*2 energyNum = energyNum * energyMul items1 := []*item.Item{item.NewItem(item.ITEM_ENERGY_ID, int(energyNum))} + if rewardData.RewardNum == 3 { + remainEnergy -= 5 + } // 奖励2 newJackpot := make([]*gamedata.SevenLoginJackpotData, 0, len(jackpot)) for _, v := range jackpot { @@ -63,9 +66,6 @@ func randReward(rewardData *gamedata.SevenLoginRewardData, lastType []int, jackp } var items2 []*item.Item itemType := []int{} - if rewardData.RewardNum == 3 { - remainEnergy -= 5 - } if GoUtil.InArray(rewardData.Id, cardPackIds) { cardJackpot := make([]*gamedata.SevenLoginJackpotData, 0, len(jackpot)) for _, v := range jackpot { @@ -115,11 +115,27 @@ func randReward(rewardData *gamedata.SevenLoginRewardData, lastType []int, jackp } } if len(newJackpot3) == 0 { - items3 = []*item.Item{item.NewItem(item.ITEM_ENERGY_ID, int(remainEnergy))} + newJackpot3 := make([]*gamedata.SevenLoginJackpotData, 0, len(jackpot)) + for _, v := range jackpot { + if v.Energy <= remainEnergy { + newJackpot3 = append(newJackpot3, v) + } + } + if len(newJackpot3) == 0 { + items3 = []*item.Item{item.NewItem(item.ITEM_ENERGY_ID, int(remainEnergy))} + return Reward{ + Item1: items1, + Item2: items2, + Item3: items3, + }, itemType + } + sort.Slice(newJackpot3, func(i, j int) bool { + return newJackpot3[i].Energy > newJackpot3[j].Energy + }) return Reward{ Item1: items1, Item2: items2, - Item3: items3, + Item3: newJackpot3[0].Items, }, itemType } sort.Slice(newJackpot3, func(i, j int) bool { diff --git a/src/server/test/seven_test.go b/src/server/test/seven_test.go index 9e436243..5a5006b2 100644 --- a/src/server/test/seven_test.go +++ b/src/server/test/seven_test.go @@ -18,15 +18,12 @@ func TestSevenLoginZeroUpdate(t *testing.T) { p1 := new(game.Player) p1.InitPlayer("3625212") SevenLoginMod := p1.GetSevenLoginMod() - SevenLoginMod.WeekResetTime = 0 - SevenLoginMod.MonthResetTime = 0 - SevenLoginMod.ZeroUpdate(0, 0, p1.GetOrderFactor()) - SevenLoginMod.BackData() - fmt.Printf("order factor:%v\n", p1.GetOrderFactor()) - for k, v := range SevenLoginMod.LoginReward { - t.Logf("Reward:%v\n", v) - fmt.Printf("id :%d ; Reward:%v\n", k, v) + for i := 0; i < 100; i++ { + SevenLoginMod.WeekResetTime = 0 + SevenLoginMod.MonthResetTime = 0 + SevenLoginMod.ZeroUpdate(0, 0, p1.GetOrderFactor()) + SevenLoginMod.BackData() + fmt.Printf("id :%d ; Reward:%v\n", 7, SevenLoginMod.LoginReward[7]) } - t.Logf("SevenLoginMod:%v\n", SevenLoginMod.MonthReward) - fmt.Printf("SevenLoginMod:%v\n", SevenLoginMod.MonthReward) + } From 1b0b77978c1b890c180fc9fd496c68db646b620c 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 4/5] =?UTF-8?q?=E4=B8=83=E6=97=A5=E7=AD=BE=E5=88=B0?= =?UTF-8?q?=E4=BC=98=E5=8C=96-=E5=A2=9E=E5=8A=A0=E7=AD=89=E7=BA=A7?= =?UTF-8?q?=E9=99=90=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]) } From b1c72db3346b129211b36b4256dca72dcae31958 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Thu, 19 Mar 2026 19:43:54 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=89=93=E7=82=B9?= =?UTF-8?q?=E5=B1=9E=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/register_network_func.go | 1 + src/server/test/friendTreasure_test.go | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/src/server/game/register_network_func.go b/src/server/game/register_network_func.go index 02c58626..4cbc55b0 100644 --- a/src/server/game/register_network_func.go +++ b/src/server/game/register_network_func.go @@ -3011,6 +3011,7 @@ func ReqGetInviteReward(player *Player, buf []byte) error { "item_id": Items, "register_score": InviteMod.GetIndex, "player_id": Str, + "is_npc": len(InviteMod.InviteList) == 1, }) return nil } diff --git a/src/server/test/friendTreasure_test.go b/src/server/test/friendTreasure_test.go index 7779dd55..0ea6a007 100644 --- a/src/server/test/friendTreasure_test.go +++ b/src/server/test/friendTreasure_test.go @@ -3,6 +3,7 @@ package test import ( "server/game" friendTreasure "server/game/mod/friend_treasure.go" + GoUtil "server/game_util" "testing" ) @@ -27,3 +28,10 @@ func TestFriendTreasure(t *testing.T) { t.Errorf("EndGame error: expected friend item num 22, got %d", FriendItemNum) } } + +func TestFriendTreasureLimit(t *testing.T) { + player := new(game.Player) + player.InitPlayerByUid(100001) + m := GoUtil.FormatStarItemNum(200, player.GetOrderFactor()) + t.Logf("m:%d", m) +}