收集所有卡牌,补发图鉴奖励

This commit is contained in:
hahwu 2025-02-07 11:05:11 +08:00
parent 328b101d05
commit 15e1f476ed
5 changed files with 77 additions and 41 deletions

View File

@ -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)

View File

@ -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() {

View File

@ -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{

View File

@ -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")

View File

@ -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 (