From 51f790cd622a3267ead026ff0007449d8374b66e Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Mon, 6 Jan 2025 16:22:55 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9D=E7=AE=B1=E9=9B=A8=E6=94=B9=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../conf/limitedTimeEvent/LimitedTimeEventCfg.go | 11 ++++++----- src/server/game/Player.go | 4 ++++ src/server/game/RegisterNetworkFunc.go | 10 +++++++++- src/server/game/UnitTest.go | 12 ++++++++++-- .../game/mod/limitedTimeEvent/LimitedTimeEvent.go | 2 +- src/server/msg/Gameapi.pb.go | 15 ++++++++++++--- 6 files changed, 42 insertions(+), 12 deletions(-) diff --git a/src/server/conf/limitedTimeEvent/LimitedTimeEventCfg.go b/src/server/conf/limitedTimeEvent/LimitedTimeEventCfg.go index cb093176..80bcf11b 100644 --- a/src/server/conf/limitedTimeEvent/LimitedTimeEventCfg.go +++ b/src/server/conf/limitedTimeEvent/LimitedTimeEventCfg.go @@ -51,11 +51,11 @@ func GetMeteorAdd(ChessLv int) int { } // 获取宝箱雨奖励 -func GetChestReward(Star int) ([]*item.Item, int, int) { +func GetChestReward(Star int) ([]*item.Item, int, int, int) { data, err := gamedata.GetData(CFG_LIMITED_TIME_EVENT_CHEST) if err != nil { log.Debug("GetChestReward err:%v", err) - return nil, 0, 0 + return nil, 0, 0, 0 } Grade := 0 for k, v := range data { @@ -70,7 +70,7 @@ func GetChestReward(Star int) ([]*item.Item, int, int) { data, err = gamedata.GetData(CFG_LIMITED_TIME_EVENT_CHEST_JACKPOT) if err != nil { log.Debug("GetChestReward err:%v", err) - return nil, 0, 0 + return nil, 0, 0, 0 } RandMap := make(map[int]int) for k, v := range data { @@ -84,13 +84,14 @@ func GetChestReward(Star int) ([]*item.Item, int, int) { data, err = gamedata.GetDataByIntKey(CFG_LIMITED_TIME_EVENT_CHEST_JACKPOT, Id) if err != nil { log.Debug("GetChestReward err:%v", err) - return nil, 0, 0 + return nil, 0, 0, 0 } Items := gamedata.GetItemList(data, "Items") CardLv := gamedata.GetIntValue(data, "CardLv") Lv := gamedata.GetIntValue(data, "Lv") - return Items, CardLv, Lv + Jackpot := gamedata.GetIntValue(data, "Jackpot") + return Items, CardLv, Lv, Jackpot } // 获取超级订单奖励 diff --git a/src/server/game/Player.go b/src/server/game/Player.go index 29996b57..8fc620a1 100644 --- a/src/server/game/Player.go +++ b/src/server/game/Player.go @@ -491,6 +491,10 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error { "change_num": v.Num, "change_after": p.GetPlayerBaseMod().GetDiamond(), }) + case item.ITEM_TYPE_CARD: // 卡牌 + CardMod := p.PlayMod.getCardMod() + Effect := itemCfg.GetItemEffect(v.Id) + CardMod.AddCard(Effect) case item.ITEM_TYPE_CARD_PACK: // 卡包 CardMod := p.PlayMod.getCardMod() Effect := itemCfg.GetItemEffect(v.Id) diff --git a/src/server/game/RegisterNetworkFunc.go b/src/server/game/RegisterNetworkFunc.go index a964590f..4a7d60b5 100644 --- a/src/server/game/RegisterNetworkFunc.go +++ b/src/server/game/RegisterNetworkFunc.go @@ -7,6 +7,7 @@ import ( "server/GoUtil" "server/MergeConst" cardCfg "server/conf/card" + limitedTimeEventCfg "server/conf/limitedTimeEvent" mergeDataCfg "server/conf/mergeData" miningCfg "server/conf/mining" "server/db" @@ -196,11 +197,12 @@ func ReqRewardOrder(args []interface{}) error { Item = item.Merge(Item, AddItem) } if LimitedTimeEventMod.CheckExist(limitedTimeEvent.EVENT_TYPE_CHEST_RAIN) { //宝箱雨活动 - AddItem, CardLv, ProductLv := LimitedTimeEventMod.GetChestReward(mergeList) + AddItem, CardLv, ProductLv, Jackpot := LimitedTimeEventMod.GetChestReward(mergeList) ChestRainItems := make([]*item.Item, 0) if len(AddItem) > 0 { ChestRainItems = AddItem } + JackpotId := 0 if CardLv > 0 { CardId := CardMod.RandCard(CardLv) ItemId := cardCfg.GetItemIdByCardId(CardId) @@ -211,10 +213,16 @@ func ReqRewardOrder(args []interface{}) error { ChessId := mergeDataCfg.GetChessIdByLvAndColor(ProductLv, Color) ChestRainItems = append(ChestRainItems, &item.Item{Id: ChessId, Num: 1}) } + if Jackpot > 0 { + ProbList := limitedTimeEventCfg.GetSenceJackpotProb() + JackpotId = GoUtil.RandMap(ProbList) + ChestRainItems = limitedTimeEventCfg.GetSenceJackpotReward(JackpotId) + } Item = item.Merge(Item, ChestRainItems) if len(ChestRainItems) > 0 { player.PushClientRes(&msg.ResChessRainReward{ Items: item.ItemToMsg(ChestRainItems), + Id: int32(JackpotId), }) player.TeLog("time_limited_event_action", map[string]interface{}{ "event_type": "chest_rain", diff --git a/src/server/game/UnitTest.go b/src/server/game/UnitTest.go index 60eb9096..671c9ddf 100644 --- a/src/server/game/UnitTest.go +++ b/src/server/game/UnitTest.go @@ -2,7 +2,9 @@ package game import ( "fmt" + "server/GoUtil" cardCfg "server/conf/card" + limitedTimeEventCfg "server/conf/limitedTimeEvent" mergeDataCfg "server/conf/mergeData" "server/game/mod/item" "server/game/mod/order" @@ -107,11 +109,12 @@ func UnitLimitedTimeEvent(p *Player) error { CardMod := p.PlayMod.getCardMod() ChessMod := p.PlayMod.getChessMod() mergeList := []int{1, 2, 30} - AddItem, CardLv, ProductLv := LimitedTimeEventMod.GetChestReward(mergeList) ChestRainItems := make([]*item.Item, 0) + AddItem, CardLv, ProductLv, Jackpot := LimitedTimeEventMod.GetChestReward(mergeList) if len(AddItem) > 0 { ChestRainItems = AddItem } + JackpotId := 0 if CardLv > 0 { CardId := CardMod.RandCard(CardLv) ItemId := cardCfg.GetItemIdByCardId(CardId) @@ -122,6 +125,11 @@ func UnitLimitedTimeEvent(p *Player) error { ChessId := mergeDataCfg.GetChessIdByLvAndColor(ProductLv, Color) ChestRainItems = append(ChestRainItems, &item.Item{Id: ChessId, Num: 1}) } - fmt.Print(ChestRainItems) + if Jackpot > 0 { + ProbList := limitedTimeEventCfg.GetSenceJackpotProb() + JackpotId = GoUtil.RandMap(ProbList) + ChestRainItems = limitedTimeEventCfg.GetSenceJackpotReward(JackpotId) + } + fmt.Print(ChestRainItems, JackpotId) return nil } diff --git a/src/server/game/mod/limitedTimeEvent/LimitedTimeEvent.go b/src/server/game/mod/limitedTimeEvent/LimitedTimeEvent.go index 01a94091..68529109 100644 --- a/src/server/game/mod/limitedTimeEvent/LimitedTimeEvent.go +++ b/src/server/game/mod/limitedTimeEvent/LimitedTimeEvent.go @@ -192,7 +192,7 @@ func (l *LimitedTimeEventMod) GetMeteorReward(MergeList []int) []*item.Item { } // 获取宝箱雨奖励 -func (l *LimitedTimeEventMod) GetChestReward(MergeList []int) ([]*item.Item, int, int) { +func (l *LimitedTimeEventMod) GetChestReward(MergeList []int) ([]*item.Item, int, int, int) { Star := 0 for _, v := range MergeList { Star += mergeDataCfg.GetStarById(v) diff --git a/src/server/msg/Gameapi.pb.go b/src/server/msg/Gameapi.pb.go index 17c7fc66..248a44b6 100644 --- a/src/server/msg/Gameapi.pb.go +++ b/src/server/msg/Gameapi.pb.go @@ -9275,7 +9275,8 @@ type ResChessRainReward struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Items []*ItemInfo `protobuf:"bytes,1,rep,name=Items,proto3" json:"Items,omitempty"` + Items []*ItemInfo `protobuf:"bytes,1,rep,name=Items,proto3" json:"Items,omitempty"` //奖励道具 + Id int32 `protobuf:"varint,2,opt,name=Id,proto3" json:"Id,omitempty"` // 转盘id } func (x *ResChessRainReward) Reset() { @@ -9315,6 +9316,13 @@ func (x *ResChessRainReward) GetItems() []*ItemInfo { return nil } +func (x *ResChessRainReward) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + // 连技快手奖励 type ReqFastProduceReward struct { state protoimpl.MessageState @@ -19103,11 +19111,12 @@ var file_Gameapi_proto_rawDesc = []byte{ 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x3e, 0x0a, 0x12, 0x52, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x4e, 0x0a, 0x12, 0x52, 0x65, 0x73, 0x43, 0x68, 0x65, 0x73, 0x73, 0x52, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x28, 0x0a, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x49, 0x74, 0x65, 0x6d, - 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x2e, 0x0a, 0x14, 0x52, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x49, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x2e, 0x0a, 0x14, 0x52, 0x65, 0x71, 0x46, 0x61, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x45, 0x6e, 0x65, 0x72, 0x67, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x45, 0x6e, 0x65, 0x72, 0x67, 0x79, 0x22, 0x50, 0x0a, 0x14, 0x52,