七日签到优化-增加等级限制

This commit is contained in:
hahwu 2026-03-19 19:10:54 +08:00
parent d2d31d94ab
commit 1b0b77978c
6 changed files with 17 additions and 12 deletions

View File

@ -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")

View File

@ -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])

View File

@ -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

View File

@ -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
})

View File

@ -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())
// 礼包充值

View File

@ -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])
}