无尽礼包优化

This commit is contained in:
hahwu 2025-09-11 17:54:23 +08:00
parent d80d7adce5
commit 4512648ae7
6 changed files with 19 additions and 17 deletions

View File

@ -67,14 +67,14 @@ func GetPerDiamond(Id int) float64 {
return 0 return 0
} }
func GetItemId(Diamond float64, Type int) []int { func GetItemId(Diamond float64, Type, Lv int) []int {
data, err := gamedata.GetData(CFG_ENDLESS_JACKPOT) data, err := gamedata.GetData(CFG_ENDLESS_JACKPOT)
if err != nil { if err != nil {
return nil return nil
} }
var ItemId []int var ItemId []int
for _, v := range data { for _, v := range data {
if Diamond >= gamedata.GetFloatValue(v, "Diamond") && Type != gamedata.GetIntValue(v, "Type") && gamedata.GetIntValue(v, "ItemId") != item.ITEM_ENERGY_ID { if Lv >= gamedata.GetIntValue(v, "Lv") && Diamond >= gamedata.GetFloatValue(v, "Diamond") && Type != gamedata.GetIntValue(v, "Type") && gamedata.GetIntValue(v, "ItemId") != item.ITEM_ENERGY_ID {
ItemId = append(ItemId, gamedata.GetIntValue(v, "ItemId")) ItemId = append(ItemId, gamedata.GetIntValue(v, "ItemId"))
} }
} }

View File

@ -314,7 +314,7 @@ func (p *Player) ZeroUpdate(a []interface{}) {
p.PushClientRes(p.PlayMod.getChargeMod().BackData()) p.PushClientRes(p.PlayMod.getChargeMod().BackData())
// 无尽礼包 // 无尽礼包
p.PlayMod.getEndlessMod().ZeroUpdate(p.PlayMod.getChargeMod().GetMaxCharge()) p.PlayMod.getEndlessMod().ZeroUpdate(p.PlayMod.getChargeMod().GetMaxCharge(), p.PlayMod.getBaseMod().GetLevel())
p.PushClientRes(p.PlayMod.getEndlessMod().BackData()) p.PushClientRes(p.PlayMod.getEndlessMod().BackData())
// 宠物宝箱 // 宠物宝箱

View File

@ -2553,7 +2553,8 @@ func ReqEndlessReward(player *Player, buf []byte) error {
req := &msg.ReqEndlessReward{} req := &msg.ReqEndlessReward{}
proto.Unmarshal(buf, req) proto.Unmarshal(buf, req)
EndlessMod := player.PlayMod.getEndlessMod() EndlessMod := player.PlayMod.getEndlessMod()
itemList, err := EndlessMod.GetReward() BaseMod := player.PlayMod.getBaseMod()
itemList, err := EndlessMod.GetReward(BaseMod.GetLevel())
if err != nil { if err != nil {
player.SendErrClienRes(&msg.ResEndlessReward{ player.SendErrClienRes(&msg.ResEndlessReward{
Code: msg.RES_CODE_FAIL, Code: msg.RES_CODE_FAIL,

View File

@ -17,7 +17,8 @@ func UnitEndlessReward(p *Player) error {
if EndlessMod == nil { if EndlessMod == nil {
return fmt.Errorf("EndlessMod is nil") return fmt.Errorf("EndlessMod is nil")
} }
Item, err := EndlessMod.GetReward() BaseMod := p.PlayMod.getBaseMod()
Item, err := EndlessMod.GetReward(BaseMod.GetLevel())
if err != nil { if err != nil {
return err return err
} }

View File

@ -33,7 +33,7 @@ func (e *EndlessMod) InitData() {
} }
// 零点更新 重置礼包 // 零点更新 重置礼包
func (e *EndlessMod) ZeroUpdate(MaxMoney float64) { func (e *EndlessMod) ZeroUpdate(MaxMoney float64, Lv int) {
e.List = make(map[int]*Endless) e.List = make(map[int]*Endless)
e.Auto = 1 e.Auto = 1
FirstMoney := 0.0 FirstMoney := 0.0
@ -53,18 +53,18 @@ func (e *EndlessMod) ZeroUpdate(MaxMoney float64) {
} }
var r map[int]*Endless var r map[int]*Endless
r, e.Auto = initGrade(FirstMoney, e.Auto) r, e.Auto = initGrade(FirstMoney, e.Auto, Lv)
for k, v := range r { for k, v := range r {
e.List[k] = v e.List[k] = v
} }
NextMoney := endlessCfg.NextMoney(FirstMoney) NextMoney := endlessCfg.NextMoney(FirstMoney)
r, e.Auto = initGrade(NextMoney, e.Auto) r, e.Auto = initGrade(NextMoney, e.Auto, Lv)
for k, v := range r { for k, v := range r {
e.List[k] = v e.List[k] = v
} }
NextMoney = endlessCfg.NextMoney(NextMoney) NextMoney = endlessCfg.NextMoney(NextMoney)
r, e.Auto = initGrade(NextMoney, e.Auto) r, e.Auto = initGrade(NextMoney, e.Auto, Lv)
for k, v := range r { for k, v := range r {
e.List[k] = v e.List[k] = v
} }
@ -73,7 +73,7 @@ func (e *EndlessMod) ZeroUpdate(MaxMoney float64) {
} }
// 领取免费礼包 // 领取免费礼包
func (e *EndlessMod) GetReward() ([]*item.Item, error) { func (e *EndlessMod) GetReward(Lv int) ([]*item.Item, error) {
v, ok := e.List[e.Id] v, ok := e.List[e.Id]
if !ok { if !ok {
return nil, fmt.Errorf("EndlessMod Reward Id:%d not found", e.Id) return nil, fmt.Errorf("EndlessMod Reward Id:%d not found", e.Id)
@ -87,7 +87,7 @@ func (e *EndlessMod) GetReward() ([]*item.Item, error) {
if v1.Type == ENDLESS_TYPE_CHARGE { //领完一阶段 随机新的一阶段 if v1.Type == ENDLESS_TYPE_CHARGE { //领完一阶段 随机新的一阶段
var r map[int]*Endless var r map[int]*Endless
NextMoney := endlessCfg.NextMoney(e.LastMoney) NextMoney := endlessCfg.NextMoney(e.LastMoney)
r, e.Auto = initGrade(NextMoney, e.Auto) r, e.Auto = initGrade(NextMoney, e.Auto, Lv)
for k, v := range r { for k, v := range r {
e.List[k] = v e.List[k] = v
} }

View File

@ -7,7 +7,7 @@ import (
) )
// 初始化奖励 // 初始化奖励
func InitReward(Diamond float64, Order int) []*item.Item { func InitReward(Diamond float64, Order, Lv int) []*item.Item {
numRand := map[int]int{1: 30, 2: 60, 3: 10} numRand := map[int]int{1: 30, 2: 60, 3: 10}
Num := Util.RandMap(numRand) Num := Util.RandMap(numRand)
PerDiamond := endlessCfg.GetPerDiamond(item.ITEM_ENERGY_ID) PerDiamond := endlessCfg.GetPerDiamond(item.ITEM_ENERGY_ID)
@ -17,7 +17,7 @@ func InitReward(Diamond float64, Order int) []*item.Item {
} }
if Num == 2 { if Num == 2 {
ItemId := endlessCfg.GetItemId(Diamond, 0) ItemId := endlessCfg.GetItemId(Diamond, 0, Lv)
if len(ItemId) == 0 { if len(ItemId) == 0 {
return []*item.Item{item.NewItem(item.ITEM_ENERGY_ID, int(Diamond/PerDiamond))} return []*item.Item{item.NewItem(item.ITEM_ENERGY_ID, int(Diamond/PerDiamond))}
} }
@ -28,7 +28,7 @@ func InitReward(Diamond float64, Order int) []*item.Item {
return []*item.Item{item.NewItem(item.ITEM_ENERGY_ID, ItemNum), item.NewItem(RandItem, 1)} return []*item.Item{item.NewItem(item.ITEM_ENERGY_ID, ItemNum), item.NewItem(RandItem, 1)}
} }
if Num == 3 { if Num == 3 {
ItemId := endlessCfg.GetItemId(Diamond, 0) ItemId := endlessCfg.GetItemId(Diamond, 0, Lv)
if len(ItemId) == 0 { if len(ItemId) == 0 {
return []*item.Item{item.NewItem(item.ITEM_ENERGY_ID, int(Diamond/PerDiamond))} return []*item.Item{item.NewItem(item.ITEM_ENERGY_ID, int(Diamond/PerDiamond))}
} }
@ -36,7 +36,7 @@ func InitReward(Diamond float64, Order int) []*item.Item {
Type := endlessCfg.GetType(RandItem1) Type := endlessCfg.GetType(RandItem1)
ItemDiamond := endlessCfg.GeDiamondByItemId(RandItem1) ItemDiamond := endlessCfg.GeDiamondByItemId(RandItem1)
LastDiamond := Diamond - ItemDiamond LastDiamond := Diamond - ItemDiamond
ItemId = endlessCfg.GetItemId(LastDiamond, Type) ItemId = endlessCfg.GetItemId(LastDiamond, Type, Lv)
if len(ItemId) == 0 { if len(ItemId) == 0 {
ItemNum := int(LastDiamond / PerDiamond) ItemNum := int(LastDiamond / PerDiamond)
return []*item.Item{item.NewItem(item.ITEM_ENERGY_ID, ItemNum), item.NewItem(RandItem1, 1)} return []*item.Item{item.NewItem(item.ITEM_ENERGY_ID, ItemNum), item.NewItem(RandItem1, 1)}
@ -52,7 +52,7 @@ func InitReward(Diamond float64, Order int) []*item.Item {
} }
// 初始化档次奖励 // 初始化档次奖励
func initGrade(Money float64, Auto int) (map[int]*Endless, int) { func initGrade(Money float64, Auto, Lv int) (map[int]*Endless, int) {
Diamond := endlessCfg.GetDiamond(Money) Diamond := endlessCfg.GetDiamond(Money)
Per := []float64{0.5, 0.3, 0.2, 0.1} Per := []float64{0.5, 0.3, 0.2, 0.1}
result := make(map[int]*Endless) result := make(map[int]*Endless)
@ -71,7 +71,7 @@ func initGrade(Money float64, Auto int) (map[int]*Endless, int) {
result[Auto] = &Endless{ result[Auto] = &Endless{
ChargeId: Charge, ChargeId: Charge,
Type: Type, Type: Type,
Items: InitReward(Diamond*Per[i-1], i), Items: InitReward(Diamond*Per[i-1], i, Lv),
} }
Auto++ Auto++
} }