diff --git a/src/server/conf/collect/collect_cfg.go b/src/server/conf/collect/collect_cfg.go index 0394fff4..7dd75dfe 100644 --- a/src/server/conf/collect/collect_cfg.go +++ b/src/server/conf/collect/collect_cfg.go @@ -56,3 +56,12 @@ func GetRewardType(Id int) int { } return gamedata.GetIntValue(data, "Type") } + +func GetRewardLen() int { + data, err := gamedata.GetData(CFG_COLLECT) + if err != nil { + log.Debug("GetRewardLen err:%v", err) + return 0 + } + return len(data) +} diff --git a/src/server/game/mod/collect/Collect.go b/src/server/game/mod/collect/Collect.go index d8e27941..d6eac176 100644 --- a/src/server/game/mod/collect/Collect.go +++ b/src/server/game/mod/collect/Collect.go @@ -22,7 +22,7 @@ const ( COLLECT_TYPE_FACE = 2 COLLECT_TYPE_AVATAR = 3 - jackpotPreviewSize = 18 // 展示的奖池预览数量,同时作为补充阈値 + jackpotPreviewSize = 9 // 展示的奖池预览数量,同时作为补充阈値 ) func (c *Collect) InitData() { @@ -37,8 +37,12 @@ func (c *Collect) InitData() { // ensureJackpot 当奖池剩余少于预览数量时自动补充 func (c *Collect) ensureJackpot() { - if len(c.Jackpot) <= jackpotPreviewSize { - c.Jackpot = initJackpot2(c.Jackpot) + rewardLen := collectCfg.GetRewardLen() + if len(c.Jackpot) <= rewardLen { + loopNum := (rewardLen-len(c.Jackpot))/jackpotPreviewSize + 1 + for i := 0; i < loopNum; i++ { + c.Jackpot = append(c.Jackpot, initJackpot2(nil)...) + } } } @@ -56,9 +60,10 @@ func (c *Collect) GetReward(id, num, factor int) ([]*item.Item, error) { } // 领取奖励 c.Reward = append(c.Reward, id) - jackpotId := 0 - jackpotId, c.Jackpot = GoUtil.PopSlice(c.Jackpot) - c.ensureJackpot() + jackpotId := c.Jackpot[id-1] + if jackpotId == 0 { + return nil, fmt.Errorf("id : %d;奖池数据异常", id) + } items := collectCfg.GetJackpotItems(jackpotId) items = GoUtil.FormatStarItem(items, factor) return items, nil @@ -66,11 +71,11 @@ func (c *Collect) GetReward(id, num, factor int) ([]*item.Item, error) { func (c *Collect) BackData(factor int) *msg.ResCollectInfo { itemsMsg := make([]*msg.CollectItem, 0, jackpotPreviewSize) - for i := 0; i < jackpotPreviewSize; i++ { - items := collectCfg.GetJackpotItems(c.Jackpot[i]) + for k, v := range c.Jackpot { + items := collectCfg.GetJackpotItems(v) items = GoUtil.FormatStarItem(items, factor) itemsMsg = append(itemsMsg, &msg.CollectItem{ - Id: int32(i + 1), + Id: int32(k + 1), Items: item.ItemToMsg(items), }) } diff --git a/src/server/test/fix_test.go b/src/server/test/fix_test.go index 7c77ae4b..21afff50 100644 --- a/src/server/test/fix_test.go +++ b/src/server/test/fix_test.go @@ -96,7 +96,8 @@ func TestFixUserData(t *testing.T) { func TestRandInt(t *testing.T) { p1 := new(game.Player) p1.InitPlayer("3625212") - p1.DeleteHighOrder() + CollectMod := p1.GetCollectMod() + p1.PushClientRes(CollectMod.BackData(p1.GetOrderFactor())) } func TestII(t *testing.T) {