Compare commits

...

2 Commits

1 changed files with 10 additions and 11 deletions

View File

@ -2363,7 +2363,7 @@ func (this *WelfareMgr) GetRedPacket(p *Player, id int64) *welfare.SCRedPacketDr
// 记录参与次数 // 记录参与次数
if id == 0 { if id == 0 {
for _, v := range this.GetConfig(p.Platform).RedPacketConfig.GetList() { 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 { if p.WelfData.RedPacket[v.GetId()] == nil {
p.WelfData.RedPacket[v.GetId()] = &model.RedPacketData{} 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) { if remain <= 0 || (playerLimit > 0 && playerRN >= playerLimit) {
// 空奖 // 空奖
} else { } else {
f := func() { f := func(total int64) {
// 概率抽奖 // 概率抽奖
rate := 0 rate := 0
n := rand.Int63n(10000) n := rand.Int63n(total)
for _, v := range cfg.GetRedList() { for _, v := range cfg.GetRedList() {
rate += int(v.GetRate()) rate += int(v.GetRate())
if n < int64(rate) { if n < int64(rate) {
@ -2427,23 +2427,22 @@ func (this *WelfareMgr) GetRedPacket(p *Player, id int64) *welfare.SCRedPacketDr
if cfg.GetMaxCount() > 0 { if cfg.GetMaxCount() > 0 {
// 保底计算 // 保底计算
if data.RN >= cfg.GetLessCount() { if data.RN >= cfg.GetLessCount() {
f() f(10000)
} else { } else {
sub := cfg.GetLessCount() - data.RN sub := cfg.GetLessCount() - data.RN
if cfg.GetMaxCount()-data.N <= sub { if cfg.GetMaxCount()-data.N <= sub {
// 必中 // 必中
for i := 0; i < 1000; i++ { var total int64
f() for _, v := range cfg.GetRedList() {
if reward > 0 { total += v.GetRate()
break
}
} }
f(total)
} else { } else {
f() f(10000)
} }
} }
} else { } else {
f() f(10000)
} }
} }