diff --git a/src/server/conf/card/CardCfg.go b/src/server/conf/card/CardCfg.go index 0f6a29f2..7849b690 100644 --- a/src/server/conf/card/CardCfg.go +++ b/src/server/conf/card/CardCfg.go @@ -40,6 +40,14 @@ func GetStarById(Id int) int { return gamedata.GetIntValue(data, "Star") } +func GetRoundById(Id int) int { + data, err := gamedata.GetDataByIntKey(CARD_DETAIL_CFG_NAME, Id) + if err != nil { + log.Debug("GetRoundById data not found") + } + return gamedata.GetIntValue(data, "Round") +} + // 获取开启卡包获得的卡牌数量 func GetPackRewardCnt(Star int) int { data, err := gamedata.GetDataByIntKey(CARD_PACK_CFG_NAME, Star) diff --git a/src/server/game/Player.go b/src/server/game/Player.go index 853aa101..c7331dd3 100644 --- a/src/server/game/Player.go +++ b/src/server/game/Player.go @@ -350,22 +350,8 @@ func (p *Player) Login() { LoignBack(p) BaseMod.Login() - p.PlayMod.getCardMod().Login(G_GameLogicPtr.SeverInfo.OpenTime) - // if p.PlayerBaseMod.Data.UserName == "388faebe29ffe56666a04ea22b902b0f" { - // VarMod := p.PlayMod.getVarMod() - // Mail1, _ := VarMod.GetVar(1) - // if Mail1 != nil { - // return - // } - // VarMod.SetVar(1, 1) - // Items := make([]*item.Item, 0) - // Items = append(Items, &item.Item{Id: item.ITEM_ENERGY_ID, Num: 200}) - // MailMod := p.PlayMod.getMailMod() - // MailMod.Send("Test Players' Refund", - // `Welcome back to our game! - // Here comes your refund for your scene progress and payment in test version! - // Have fun in new version!`, Items) - // } + HandbookItem := p.PlayMod.getCardMod().Login(G_GameLogicPtr.SeverInfo.OpenTime) + p.HandleItem(HandbookItem, msg.ITEM_POP_LABEL_AllCollectRewardHB.String()) } func (p *Player) Outline() { diff --git a/src/server/game/RegisterNetworkFunc.go b/src/server/game/RegisterNetworkFunc.go index 54293e4d..04ede390 100644 --- a/src/server/game/RegisterNetworkFunc.go +++ b/src/server/game/RegisterNetworkFunc.go @@ -883,7 +883,7 @@ func ReqExStarReward(args []interface{}) error { func ReqAllCollectReward(args []interface{}) error { _, player, _ := ParseArgs(args) CardMod := player.PlayMod.getCardMod() - itemList, err := CardMod.AllCollectReward() + itemList, itemList2, err := CardMod.AllCollectReward() if err != nil { player.SendErrClienRes(&msg.ResAllCollectReward{ Code: msg.RES_CODE_FAIL, @@ -900,6 +900,14 @@ func ReqAllCollectReward(args []interface{}) error { }) return err } + err = player.HandleItem(itemList2, msg.ITEM_POP_LABEL_AllCollectRewardHB.String()) + if err != nil { + player.SendErrClienRes(&msg.ResAllCollectReward{ + Code: msg.RES_CODE_FAIL, + Msg: err.Error(), + }) + return err + } player.PlayMod.save() player.PushClientRes(CardMod.NotifyCard()) player.PushClientRes(&msg.ResAllCollectReward{ diff --git a/src/server/game/mod/card/Card.go b/src/server/game/mod/card/Card.go index 465bb8cb..c3eaa214 100644 --- a/src/server/game/mod/card/Card.go +++ b/src/server/game/mod/card/Card.go @@ -39,6 +39,11 @@ const ( MASTER_CARD_GOLD = 7 ) +const ( + HANDBOOK_STATUS_IDLE = 1 // 未领取 + HANDBOOK_STATUS_GET = 2 // 已领取 +) + const ( TYPE_CARD_GIVE = 1 // 请求卡牌 TYPE_CARD_SEND = 2 // 赠送卡牌 @@ -101,14 +106,15 @@ func (c *CardMod) InitData() { for k := range c.CardList { if _, ok := c.Handbook[k]; !ok { - c.Handbook[k] = 1 + c.Handbook[k] = HANDBOOK_STATUS_IDLE } } } -func (c *CardMod) Login(ServerOpenTime int64) { +func (c *CardMod) Login(ServerOpenTime int64) []*item.Item { Now := GoUtil.Now() Duration := cardCfg.GetCardDuration() + HandbookItemNum := 0 if c.EndTime < Now { c.CardList = make(map[int]int) c.ExchangeStar = 0 @@ -116,10 +122,22 @@ func (c *CardMod) Login(ServerOpenTime int64) { c.AllCollect = 0 c.EndTime = 0 c.Round = 0 + c.Handbook = make(map[int]int) + for k, v := range c.Handbook { + if v == HANDBOOK_STATUS_GET { + continue + } + Round := cardCfg.GetRoundById(k) + if Round < c.Round { + continue + } + HandbookItemNum += cardCfg.GetStarById(k) + } } if c.EndTime == 0 { c.EndTime = ((Now-ServerOpenTime)/Duration+1)*Duration + ServerOpenTime } + return []*item.Item{{Id: item.ITEM_ENERGY_ID, Num: HandbookItemNum}} } func (c *CardMod) ZeroUpdate() { @@ -141,7 +159,7 @@ func (c *CardMod) AddCard(Id int) { } _, ok = c.Handbook[Id] if !ok { - c.Handbook[Id] = 1 + c.Handbook[Id] = HANDBOOK_STATUS_IDLE c.Cache.Handbook[Id] = 1 } c.Cache.Card[Id]++ @@ -267,19 +285,18 @@ func (c *CardMod) ExStarReward(Id int) ([]*item.Item, error) { } // 领取全收集奖励 -func (c *CardMod) AllCollectReward() ([]*item.Item, error) { +func (c *CardMod) AllCollectReward() ([]*item.Item, []*item.Item, error) { if c.AllCollect == 1 { - return nil, fmt.Errorf("AllCollectReward already collect") + return nil, nil, fmt.Errorf("AllCollectReward already collect") } AllCardId := cardCfg.GetAllCardId(c.Round) for _, v := range AllCardId { count, ok := c.CardList[v] if !ok || count <= 0 { - return nil, fmt.Errorf("card not fully collect") + return nil, nil, fmt.Errorf("card not fully collect") } } c.AllCollect = 0 - c.Round++ c.CollectReward = make(map[int]struct{}) ExStar := 0 for k, v := range c.CardList { @@ -290,7 +307,20 @@ func (c *CardMod) AllCollectReward() ([]*item.Item, error) { c.ExchangeStar += ExStar c.Cache.ExStar += ExStar Item := cardCfg.GetAllCollectReward() - return Item, nil + HandbookItemNum := 0 + for k, v := range c.Handbook { + if v == HANDBOOK_STATUS_GET { + continue + } + Round := cardCfg.GetRoundById(k) + if Round < c.Round { + continue + } + HandbookItemNum += cardCfg.GetStarById(k) + } + c.Round++ + c.Handbook = make(map[int]int) + return Item, []*item.Item{{Id: item.ITEM_ENERGY_ID, Num: HandbookItemNum}}, nil } func (c *CardMod) ResetCardFestival() { @@ -526,12 +556,12 @@ func (c *CardMod) AddGoldTimes() { func (c *CardMod) GetHandbookReward(CardId int) ([]*item.Item, error) { if v, ok := c.Handbook[CardId]; ok { - if v == 2 { + if v == HANDBOOK_STATUS_GET { return nil, fmt.Errorf("GetHandbookReward already get") } Star := cardCfg.GetStarById(CardId) - c.Handbook[CardId] = 2 - c.Cache.Handbook[CardId] = 2 + c.Handbook[CardId] = HANDBOOK_STATUS_GET + c.Cache.Handbook[CardId] = HANDBOOK_STATUS_GET return []*item.Item{item.NewItem(item.ITEM_ENERGY_ID, Star)}, nil } return nil, fmt.Errorf("GetHandbookReward not find card") diff --git a/src/server/msg/Gameapi.pb.go b/src/server/msg/Gameapi.pb.go index 08e67a89..41288a6f 100644 --- a/src/server/msg/Gameapi.pb.go +++ b/src/server/msg/Gameapi.pb.go @@ -76,6 +76,7 @@ const ( ITEM_POP_LABEL_SourceChest ITEM_POP_LABEL = 50 // 开启资源宝箱 ITEM_POP_LABEL_PlayroomBuyItem ITEM_POP_LABEL = 51 // playroom打工购买物品 ITEM_POP_LABEL_CardSeasonFirstReward ITEM_POP_LABEL = 52 // 卡牌赛季初奖励 + ITEM_POP_LABEL_AllCollectRewardHB ITEM_POP_LABEL = 53 // 图鉴全收集奖励 图鉴体力补发 ) // Enum value maps for ITEM_POP_LABEL. @@ -134,6 +135,7 @@ var ( 50: "SourceChest", 51: "PlayroomBuyItem", 52: "CardSeasonFirstReward", + 53: "AllCollectRewardHB", } ITEM_POP_LABEL_value = map[string]int32{ "Playroom": 0, @@ -189,6 +191,7 @@ var ( "SourceChest": 50, "PlayroomBuyItem": 51, "CardSeasonFirstReward": 52, + "AllCollectRewardHB": 53, } ) @@ -20896,7 +20899,7 @@ var file_Gameapi_proto_rawDesc = []byte{ 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x20, 0x0a, 0x0c, 0x52, 0x65, 0x71, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x55, 0x69, 0x64, 0x22, 0x0f, 0x0a, 0x0d, - 0x52, 0x65, 0x71, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x2a, 0xfa, 0x07, + 0x52, 0x65, 0x71, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x2a, 0x92, 0x08, 0x0a, 0x0e, 0x49, 0x54, 0x45, 0x4d, 0x5f, 0x50, 0x4f, 0x50, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x12, 0x0c, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x79, 0x72, 0x6f, 0x6f, 0x6d, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x50, 0x69, 0x67, 0x67, 0x79, 0x42, 0x61, 0x6e, 0x6b, 0x10, 0x01, 0x12, 0x0a, 0x0a, @@ -20960,18 +20963,19 @@ var file_Gameapi_proto_rawDesc = []byte{ 0x72, 0x63, 0x65, 0x43, 0x68, 0x65, 0x73, 0x74, 0x10, 0x32, 0x12, 0x13, 0x0a, 0x0f, 0x50, 0x6c, 0x61, 0x79, 0x72, 0x6f, 0x6f, 0x6d, 0x42, 0x75, 0x79, 0x49, 0x74, 0x65, 0x6d, 0x10, 0x33, 0x12, 0x19, 0x0a, 0x15, 0x43, 0x61, 0x72, 0x64, 0x53, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x46, 0x69, 0x72, - 0x73, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x10, 0x34, 0x2a, 0x42, 0x0a, 0x0b, 0x48, 0x41, - 0x4e, 0x44, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x44, 0x44, - 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x4f, 0x4d, 0x50, 0x4f, 0x53, 0x45, 0x10, 0x01, 0x12, - 0x07, 0x0a, 0x03, 0x42, 0x55, 0x59, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x45, 0x4c, 0x4c, - 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x10, 0x04, 0x2a, 0x21, - 0x0a, 0x08, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x12, 0x08, 0x0a, 0x04, 0x46, 0x41, - 0x49, 0x4c, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, - 0x01, 0x2a, 0x2e, 0x0a, 0x09, 0x49, 0x54, 0x45, 0x4d, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x12, 0x0a, - 0x0a, 0x06, 0x45, 0x4e, 0x45, 0x52, 0x47, 0x59, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x54, - 0x41, 0x52, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x49, 0x41, 0x4d, 0x4f, 0x4e, 0x44, 0x10, - 0x02, 0x42, 0x08, 0x5a, 0x06, 0x2e, 0x2e, 0x2f, 0x6d, 0x73, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, + 0x73, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x10, 0x34, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x6c, + 0x6c, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x48, 0x42, + 0x10, 0x35, 0x2a, 0x42, 0x0a, 0x0b, 0x48, 0x41, 0x4e, 0x44, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x44, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x4f, + 0x4d, 0x50, 0x4f, 0x53, 0x45, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x42, 0x55, 0x59, 0x10, 0x02, + 0x12, 0x08, 0x0a, 0x04, 0x53, 0x45, 0x4c, 0x4c, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x45, + 0x4d, 0x4f, 0x56, 0x45, 0x10, 0x04, 0x2a, 0x21, 0x0a, 0x08, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, + 0x44, 0x45, 0x12, 0x08, 0x0a, 0x04, 0x46, 0x41, 0x49, 0x4c, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, + 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x01, 0x2a, 0x2e, 0x0a, 0x09, 0x49, 0x54, 0x45, + 0x4d, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x12, 0x0a, 0x0a, 0x06, 0x45, 0x4e, 0x45, 0x52, 0x47, 0x59, + 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x54, 0x41, 0x52, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, + 0x44, 0x49, 0x41, 0x4d, 0x4f, 0x4e, 0x44, 0x10, 0x02, 0x42, 0x08, 0x5a, 0x06, 0x2e, 0x2e, 0x2f, + 0x6d, 0x73, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var (