From 00654c7bae28c89208c544fafa20c1c1b87e91b5 Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Mon, 13 Jan 2025 12:01:12 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E7=BA=A2=E5=8C=85=E4=B8=AD=E5=A5=96?= =?UTF-8?q?=E6=A6=82=E7=8E=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- worldsrv/welfmgr.go | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/worldsrv/welfmgr.go b/worldsrv/welfmgr.go index 3d9432a..00bb254 100644 --- a/worldsrv/welfmgr.go +++ b/worldsrv/welfmgr.go @@ -2363,7 +2363,7 @@ func (this *WelfareMgr) GetRedPacket(p *Player, id int64) *welfare.SCRedPacketDr // 记录参与次数 if id == 0 { for _, v := range this.GetConfig(p.Platform).RedPacketConfig.GetList() { - if v.GetOn() == common.On && now >= common.IntToTime(int(v.GetStartHMS())).Unix() || now < common.IntToTime(int(v.GetEndHMS())).Unix() { + if v.GetOn() == common.On && now >= common.IntToTime(int(v.GetStartHMS())).Unix() && now < common.IntToTime(int(v.GetEndHMS())).Unix() { if p.WelfData.RedPacket[v.GetId()] == nil { p.WelfData.RedPacket[v.GetId()] = &model.RedPacketData{} } @@ -2412,10 +2412,10 @@ func (this *WelfareMgr) GetRedPacket(p *Player, id int64) *welfare.SCRedPacketDr if remain <= 0 || (playerLimit > 0 && playerRN >= playerLimit) { // 空奖 } else { - f := func() { + f := func(total int64) { // 概率抽奖 rate := 0 - n := rand.Int63n(10000) + n := rand.Int63n(total) for _, v := range cfg.GetRedList() { rate += int(v.GetRate()) if n < int64(rate) { @@ -2427,23 +2427,22 @@ func (this *WelfareMgr) GetRedPacket(p *Player, id int64) *welfare.SCRedPacketDr if cfg.GetMaxCount() > 0 { // 保底计算 if data.RN >= cfg.GetLessCount() { - f() + f(10000) } else { sub := cfg.GetLessCount() - data.RN if cfg.GetMaxCount()-data.N <= sub { // 必中 - for i := 0; i < 1000; i++ { - f() - if reward > 0 { - break - } + var total int64 + for _, v := range cfg.GetRedList() { + total += v.GetRate() } + f(total) } else { - f() + f(10000) } } } else { - f() + f(10000) } }