修复宝箱雨奖励

This commit is contained in:
hahwu 2025-01-23 15:34:04 +08:00
parent 0f41aa3da8
commit 3fca083518
4 changed files with 16 additions and 106 deletions

View File

@ -51,47 +51,22 @@ func GetMeteorAdd(ChessLv int) int {
} }
// 获取宝箱雨奖励 // 获取宝箱雨奖励
func GetChestReward(Star int) ([]*item.Item, int, int, int) { func GetChestReward(Star int) []*item.Item {
data, err := gamedata.GetData(CFG_LIMITED_TIME_EVENT_CHEST) data, err := gamedata.GetData(CFG_LIMITED_TIME_EVENT_CHEST)
if err != nil { if err != nil {
log.Debug("GetChestReward err:%v", err) log.Debug("GetChestReward err:%v", err)
return nil, 0, 0, 0 return nil
} }
Grade := 0
for k, v := range data { for _, v := range data {
Min := gamedata.GetIntValue(v, "Min") Min := gamedata.GetIntValue(v, "Min")
Max := gamedata.GetIntValue(v, "Max") Max := gamedata.GetIntValue(v, "Max")
if Star >= Min && Star <= Max { if Star >= Min && Star <= Max {
Grade = GoUtil.Int(k) return gamedata.GetItemList(v, "Items")
break
} }
} }
return nil
data, err = gamedata.GetData(CFG_LIMITED_TIME_EVENT_CHEST_JACKPOT)
if err != nil {
log.Debug("GetChestReward err:%v", err)
return nil, 0, 0, 0
}
RandMap := make(map[int]int)
for k, v := range data {
Prob := gamedata.GetIntValue(v, "Prob")
if Grade == gamedata.GetIntValue(v, "Grade") {
Id := GoUtil.Int(k)
RandMap[Id] = Prob
}
}
Id := GoUtil.RandMap(RandMap)
data, err = gamedata.GetDataByIntKey(CFG_LIMITED_TIME_EVENT_CHEST_JACKPOT, Id)
if err != nil {
log.Debug("GetChestReward err:%v", err)
return nil, 0, 0, 0
}
Items := gamedata.GetItemList(data, "Items")
CardLv := gamedata.GetIntValue(data, "CardLv")
Lv := gamedata.GetIntValue(data, "Lv")
Jackpot := gamedata.GetIntValue(data, "Jackpot")
return Items, CardLv, Lv, Jackpot
} }
// 获取超级订单奖励 // 获取超级订单奖励

View File

@ -6,7 +6,6 @@ import (
"math" "math"
"server/GoUtil" "server/GoUtil"
cardCfg "server/conf/card" cardCfg "server/conf/card"
limitedTimeEventCfg "server/conf/limitedTimeEvent"
mergeDataCfg "server/conf/mergeData" mergeDataCfg "server/conf/mergeData"
miningCfg "server/conf/mining" miningCfg "server/conf/mining"
"server/db" "server/db"
@ -183,7 +182,6 @@ func ReqRewardOrder(args []interface{}) error {
proto.Unmarshal(buf, req) proto.Unmarshal(buf, req)
OrderMod := player.PlayMod.getOrderMod() OrderMod := player.PlayMod.getOrderMod()
ChessMod := player.PlayMod.getChessMod() ChessMod := player.PlayMod.getChessMod()
CardMod := player.PlayMod.getCardMod()
LimitedTimeEventMod := player.PlayMod.getLimitedTimeEventMod() LimitedTimeEventMod := player.PlayMod.getLimitedTimeEventMod()
Item, mergeList, OrderType, Star, err := OrderMod.RewardOrder(int(req.OrderId)) Item, mergeList, OrderType, Star, err := OrderMod.RewardOrder(int(req.OrderId))
if OrderType == order.Trigger_type { // playroom触发式订单获取额外道具 if OrderType == order.Trigger_type { // playroom触发式订单获取额外道具
@ -237,36 +235,9 @@ func ReqRewardOrder(args []interface{}) error {
} }
if LimitedTimeEventMod.CheckExist(limitedTimeEvent.EVENT_TYPE_CHEST_RAIN) { //宝箱雨活动 if LimitedTimeEventMod.CheckExist(limitedTimeEvent.EVENT_TYPE_CHEST_RAIN) { //宝箱雨活动
AddItem, CardLv, ProductLv, Jackpot := LimitedTimeEventMod.GetChestReward(mergeList) ChestRainItems := LimitedTimeEventMod.GetChestReward(mergeList)
ChestRainItems := make([]*item.Item, 0)
if len(AddItem) > 0 { player.args["ResItemPopId"] = 0
ChestRainItems = AddItem
}
JackpotId := 0
if CardLv > 0 {
CardId := CardMod.RandCard(CardLv)
ItemId := cardCfg.GetItemIdByCardId(CardId)
if ItemId == 0 {
log.Error("GetItemIdByCardId error cardId:%d", CardId)
return errors.New("GetItemIdByCardId error")
}
ChestRainItems = []*item.Item{{Id: ItemId, Num: 1}}
}
if ProductLv > 0 {
Color := order.RandChessColor(ChessMod.GetEmitList())
ChessId := mergeDataCfg.GetChessIdByLvAndColor(ProductLv, Color)
if ChessId == 0 {
log.Error("GetChessIdByLvAndColor error color:%d, lv:%d", Color, ProductLv)
return errors.New("GetChessIdByLvAndColor error")
}
ChestRainItems = append(ChestRainItems, &item.Item{Id: ChessId, Num: 1})
}
if Jackpot > 0 {
ProbList := limitedTimeEventCfg.GetSenceJackpotProb()
JackpotId = GoUtil.RandMap(ProbList)
ChestRainItems = limitedTimeEventCfg.GetSenceJackpotReward(JackpotId)
}
player.args["ResItemPopId"] = JackpotId
err = player.HandleItem(ChestRainItems, msg.ITEM_POP_LABEL_LimitEventChestRain.String()) err = player.HandleItem(ChestRainItems, msg.ITEM_POP_LABEL_LimitEventChestRain.String())
if err != nil { if err != nil {
player.SendErrClienRes(&msg.ResRewardOrder{ player.SendErrClienRes(&msg.ResRewardOrder{
@ -279,7 +250,7 @@ func ReqRewardOrder(args []interface{}) error {
if len(ChestRainItems) > 0 { if len(ChestRainItems) > 0 {
player.PushClientRes(&msg.ResChessRainReward{ player.PushClientRes(&msg.ResChessRainReward{
Items: item.ItemToMsg(ChestRainItems), Items: item.ItemToMsg(ChestRainItems),
Id: int32(JackpotId), Id: 0,
}) })
player.TeLog("time_limited_event_action", map[string]interface{}{ player.TeLog("time_limited_event_action", map[string]interface{}{
"event_type": "chest_rain", "event_type": "chest_rain",

View File

@ -1,17 +1,10 @@
package game package game
import ( import (
"errors"
"fmt" "fmt"
"server/GoUtil"
cardCfg "server/conf/card"
limitedTimeEventCfg "server/conf/limitedTimeEvent"
mergeDataCfg "server/conf/mergeData"
"server/game/mod/item"
"server/game/mod/order" "server/game/mod/order"
"server/game/mod/sevenLogin" "server/game/mod/sevenLogin"
"server/msg" "server/msg"
"server/pkg/github.com/name5566/leaf/log"
) )
func UnitEndlessReward(p *Player) error { func UnitEndlessReward(p *Player) error {
@ -98,40 +91,10 @@ func UnitLimitProgress(p *Player) error {
func UnitLimitedTimeEvent(p *Player) error { func UnitLimitedTimeEvent(p *Player) error {
LimitedTimeEventMod := p.PlayMod.getLimitedTimeEventMod() LimitedTimeEventMod := p.PlayMod.getLimitedTimeEventMod()
CardMod := p.PlayMod.getCardMod()
ChessMod := p.PlayMod.getChessMod() mergeList := []int{246, 15}
mergeList := []int{246, 5} AddItem := LimitedTimeEventMod.GetChestReward(mergeList)
AddItem, CardLv, ProductLv, Jackpot := LimitedTimeEventMod.GetChestReward(mergeList) fmt.Print(AddItem)
ChestRainItems := make([]*item.Item, 0)
if len(AddItem) > 0 {
ChestRainItems = AddItem
}
JackpotId := 0
if CardLv > 0 {
CardId := CardMod.RandCard(CardLv)
ItemId := cardCfg.GetItemIdByCardId(CardId)
ChestRainItems = []*item.Item{{Id: ItemId, Num: 1}}
}
if ProductLv > 0 {
Color := order.RandChessColor(ChessMod.GetEmitList())
ChessId := mergeDataCfg.GetChessIdByLvAndColor(ProductLv, Color)
if ChessId == 0 {
log.Error("GetChessIdByLvAndColor error color:%d, lv:%d", Color, ProductLv)
return errors.New("GetChessIdByLvAndColor error")
}
ChestRainItems = append(ChestRainItems, &item.Item{Id: ChessId, Num: 1})
}
if Jackpot > 0 {
ProbList := limitedTimeEventCfg.GetSenceJackpotProb()
JackpotId = GoUtil.RandMap(ProbList)
ChestRainItems = limitedTimeEventCfg.GetSenceJackpotReward(JackpotId)
}
for _, v := range ChestRainItems {
if v.Id == 0 {
fmt.Print("item id is 0")
}
fmt.Println(v.Id)
}
return nil return nil
} }

View File

@ -193,11 +193,12 @@ func (l *LimitedTimeEventMod) GetMeteorReward(MergeList []int) []*item.Item {
} }
// 获取宝箱雨奖励 // 获取宝箱雨奖励
func (l *LimitedTimeEventMod) GetChestReward(MergeList []int) ([]*item.Item, int, int, int) { func (l *LimitedTimeEventMod) GetChestReward(MergeList []int) []*item.Item {
Star := 0 Star := 0
for _, v := range MergeList { for _, v := range MergeList {
Star += mergeDataCfg.GetStarById(v) Star += mergeDataCfg.GetStarById(v)
} }
return limitedTimeEventCfg.GetChestReward(Star) return limitedTimeEventCfg.GetChestReward(Star)
} }