万能卡

This commit is contained in:
hahwu 2024-11-25 17:29:59 +08:00
parent 10c0d7bea9
commit 6c05584404
8 changed files with 1588 additions and 1406 deletions

View File

@ -158,6 +158,14 @@ func GetAllCardId() []int {
return r
}
func CheckCardIsGold(Id int) bool {
data, err := gamedata.GetDataByIntKey(CARD_DETAIL_CFG_NAME, Id)
if err != nil {
log.Debug("CheckCardIsGold data not found")
}
return gamedata.GetIntValue(data, "IsGold") == 1
}
func GetCardDuration() int64 {
data, err := gamedata.GetDataByKey(CARD_CONST_CFG_NAME, "duration")
if err != nil {

View File

@ -951,6 +951,7 @@ func (ad *GameLogic) RegisterNetWorkFunc() {
RegisterMsgProcessFunc("ReqRefuseCardExchange", ReqRefuseCardExchange) // 拒绝卡牌交换
RegisterMsgProcessFunc("ReqCardSend", ReqCardSend) // 直接赠送卡牌
RegisterMsgProcessFunc("ReqGetFriendCard", ReqGetFriendCard) // 领取好友赠送的卡牌
RegisterMsgProcessFunc("ReqMasterCard", ReqMasterCard) // 万能卡兑换
// 日常任务
RegisterMsgProcessFunc("ReqGetDailyTaskReward", ReqGetDailyTaskReward) // 领取日常任务奖励

View File

@ -50,6 +50,15 @@ func ReqGmCommand(args []interface{}) error {
case "pay":
ChargeId, _ := strconv.Atoi(arg[1])
Charge(player, ChargeId)
case "resetFace":
FaceMod := player.PlayMod.getFaceMod()
FaceMod.List = nil
FaceMod.InitData()
AvatarMod := player.PlayMod.getAvatarMod()
AvatarMod.List = nil
AvatarMod.InitData()
case "resetCardReq":
CardMod := player.PlayMod.getCardMod()
CardMod.ReqFriend = make(map[int]*card.CardInfo)

View File

@ -519,6 +519,12 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error {
}
ResCard = append(ResCard, &msg.CardPack{Id: int32(v.Id), Card: GoUtil.SliceIntToInt32(NewCard)})
}
case item.ITEM_TYPE_MASTER_CARD: // 万能卡
CardMod := p.PlayMod.getCardMod()
Effect := itemCfg.GetItemEffect(v.Id)
for i := 0; i < v.Num; i++ {
CardMod.AddMasterCard(Effect)
}
p.PushClientRes(CardMod.BackData())
case item.ITEM_TYPE_CHESS: // 棋子
ChessMod := p.PlayMod.getChessMod()

View File

@ -3701,3 +3701,26 @@ func ReqUserInfo(args []interface{}) error {
BackUserInfo(player)
return nil
}
func ReqMasterCard(args []interface{}) error {
_, player, buf := ParseArgs(args)
req := &msg.ReqMasterCard{}
proto.Unmarshal(buf, req)
CardMod := player.PlayMod.getCardMod()
err := CardMod.MasterCardEx(int(req.Id), int(req.CardId))
if err != nil {
player.SendErrClienRes(&msg.ResMasterCard{
Code: msg.RES_CODE_FAIL,
Msg: err.Error(),
})
return err
}
player.PlayMod.save()
player.PushClientRes(&msg.ResMasterCard{
Code: msg.RES_CODE_SUCCESS,
})
player.PushClientRes(&msg.ResNotifyCard{
Card: map[int32]int32{int32(req.CardId): 1},
})
return nil
}

View File

@ -344,3 +344,19 @@ func (c *CardMod) SendCard(From, To, CardId int) (*CardInfo, error) {
func (c *CardMod) DelExCard(CardInfo *CardInfo) {
delete(c.ExCard, CardInfo.BUid)
}
func (c *CardMod) AddMasterCard(Id int) {
c.AllCard[Id]++
}
func (c *CardMod) MasterCardEx(Id, CardId int) error {
if c.AllCard[Id] <= 0 {
return fmt.Errorf("MasterCardEx card not enough")
}
if Id == MASTER_CARD_NORMAL && cardCfg.CheckCardIsGold(CardId) {
return fmt.Errorf("MasterCardEx card type err")
}
c.AllCard[Id]--
c.AddCard(CardId)
return nil
}

View File

@ -24,6 +24,7 @@ const (
ITEM_TYPE_CARD_PACK = 101 // 卡包
ITEM_TYPE_LIMIED_TIME_EVENT = 102 //限时事件
ITEM_TYPE_PIGGY_BANK = 103 // 猪猪银行
ITEM_TYPE_MASTER_CARD = 104 // 万能卡
)
// 新建item

File diff suppressed because it is too large Load Diff