卡牌交换

This commit is contained in:
hahwu 2024-11-25 16:35:38 +08:00
parent 891d9f40c1
commit 10c0d7bea9
6 changed files with 41 additions and 30 deletions

View File

@ -949,6 +949,8 @@ func (ad *GameLogic) RegisterNetWorkFunc() {
RegisterMsgProcessFunc("ReqAgreeCardExchange", ReqAgreeCardExchange) // 完成交换卡牌
RegisterMsgProcessFunc("ReqRefuseCardSelect", ReqRefuseCardSelect) // 拒绝选择卡牌进行交换
RegisterMsgProcessFunc("ReqRefuseCardExchange", ReqRefuseCardExchange) // 拒绝卡牌交换
RegisterMsgProcessFunc("ReqCardSend", ReqCardSend) // 直接赠送卡牌
RegisterMsgProcessFunc("ReqGetFriendCard", ReqGetFriendCard) // 领取好友赠送的卡牌
// 日常任务
RegisterMsgProcessFunc("ReqGetDailyTaskReward", ReqGetDailyTaskReward) // 领取日常任务奖励

View File

@ -56,7 +56,9 @@ func ReqGmCommand(args []interface{}) error {
CardMod.ExCard = make(map[int]*card.CardInfo)
CardMod.ExTimes = 10
CardMod.ReqTimes = 10
CardMod.AddCard(1)
CardMod.AddCard(2)
CardMod.AddCard(3)
FriendMod := player.PlayMod.getFriendMod()
FriendMod.Card = make(map[string]*card.CardInfo)

View File

@ -78,7 +78,7 @@ func handle(p *Player, m *msg.Msg) error {
Info: GetCardInfoMsg(CardInfo),
},
)
p.PushClientRes(CardMod.BackData())
// p.PushClientRes(CardMod.BackData())
case msg.HANDLE_TYPE_REG_CARD_REFUSE: // A收到B拒绝索要卡牌
CardInfo := m.Extra.(*card.CardInfo)
CardMod := p.PlayMod.getCardMod()
@ -95,7 +95,6 @@ func handle(p *Player, m *msg.Msg) error {
Info: GetCardInfoMsg(CardInfo),
},
)
FriendCardBackData(p)
case msg.HANDLE_TYPE_SELECT_EX_CARD: // A收到B选择卡牌进行置换
FriendMod := p.PlayMod.getFriendMod()
CardInfo := m.Extra.(*card.CardInfo)
@ -106,7 +105,6 @@ func handle(p *Player, m *msg.Msg) error {
Info: GetCardInfoMsg(CardInfo),
},
)
FriendCardBackData(p)
case msg.HANDLE_TYPE_ARGREE_EX_CARD: // B收到A同意置换卡牌
CardInfo := m.Extra.(*card.CardInfo)
FriendMod := p.PlayMod.getFriendMod()
@ -123,8 +121,10 @@ func handle(p *Player, m *msg.Msg) error {
CardMod.AddExTimes()
CardMod.AddCard(CardInfo.CardId)
CardMod.DelExCard(CardInfo)
p.PushClientRes(&proto.ResNotifyCard{
Card: map[int32]int32{int32(CardInfo.CardId): 1},
})
p.PlayMod.save()
p.PushClientRes(CardMod.BackData())
case msg.HANDLE_TYPE_REFUSE_EX_CARD: // B收到A拒绝置换卡牌
CardMod := p.PlayMod.getCardMod()
CardInfo := m.Extra.(*card.CardInfo)
@ -132,7 +132,9 @@ func handle(p *Player, m *msg.Msg) error {
FriendMod := p.PlayMod.getFriendMod()
FriendMod.DelCardInfo(CardInfo.Id)
p.PlayMod.save()
p.PushClientRes(CardMod.BackData())
p.PushClientRes(&proto.ResNotifyCard{
Card: map[int32]int32{int32(CardInfo.ExId): 1},
})
case msg.HANDLE_TYPE_MAIL: // 邮件操作
MailMod := p.PlayMod.getMailMod()
if m.Extra == nil {
@ -198,6 +200,11 @@ func HandleFriendMsg(p *Player, m *msg.Msg) error {
case msg.HANDLE_TYPE_REQ_CARD: // 卡牌申请
CardInfo := m.Extra.(*card.CardInfo)
FriendMod.SetCardInfo(CardInfo)
p.PushClientRes(
&proto.NotifyFriendCard{
Info: GetCardInfoMsg(CardInfo),
},
)
}
return nil
}

View File

@ -96,13 +96,14 @@ func (p *PlayerModData) Reconnect(b bool) []byte {
func (p *PlayerModData) InitMod() (bool, error) {
playerModList := PlayerModList{}
buf := bytes.NewBuffer(p.Data.ModData)
decoder := gob.NewDecoder(buf)
err := decoder.Decode(&playerModList)
// err := json.Unmarshal([]byte(p.Data.ModData), &playerModList)
if err != nil {
log.Debug("playmod get data failed, err:%v\n", err)
return false, fmt.Errorf("playmod get data failed, err:%v\n", err)
if len(p.Data.ModData) > 0 {
buf := bytes.NewBuffer(p.Data.ModData)
decoder := gob.NewDecoder(buf)
err := decoder.Decode(&playerModList)
if err != nil {
log.Debug("playmod get data failed, err:%v\n", err)
return false, fmt.Errorf("playmod get data failed, err:%v", err)
}
}
p.ModList = playerModList
is_update := false

View File

@ -2852,6 +2852,13 @@ func ReqCardGive(args []interface{}) error {
})
return fmt.Errorf("card id empty")
}
err = CardMod.SubCard(CardId)
if err != nil {
player.SendErrClienRes(&msg.ResCardGive{
Code: msg.RES_CODE_FAIL,
Msg: err.Error(),
})
}
Id := GoUtil.CreateCardId(int(player.M_DwUin), 0, int(req.CardId))
for _, v := range req.Uid {
Uid := int(v)
@ -2935,7 +2942,6 @@ func ReqAgreeCardGive(args []interface{}) error {
player.PushClientRes(&msg.ResNotifyCard{
Card: map[int32]int32{int32(CardInfo.CardId): -1},
})
player.PushClientRes(CardMod.BackData())
player.PushClientRes(&msg.ResAgreeCardGive{
Code: msg.RES_CODE_SUCCESS,
})
@ -2976,13 +2982,13 @@ func ReqRefuseCardGive(args []interface{}) error {
// 赠送卡牌
func ReqCardSend(args []interface{}) error {
_, player, buf := ParseArgs(args)
req := &msg.ReqCardExchange{}
req := &msg.ReqCardSend{}
proto.Unmarshal(buf, req)
CardMod := player.PlayMod.getCardMod()
CardId := int(req.CardId)
CardInfo, err := CardMod.SendCard(int(player.M_DwUin), int(req.Uid), CardId)
if err != nil {
player.SendErrClienRes(&msg.ResCardExchange{
player.SendErrClienRes(&msg.ResCardSend{
Code: msg.RES_CODE_FAIL,
Msg: err.Error(),
})
@ -2997,8 +3003,7 @@ func ReqCardSend(args []interface{}) error {
Extra: CardInfo,
}
setRedisLock(CardInfo.Id, "", time.Second*86400)
player.PushClientRes(CardMod.BackData())
player.PushClientRes(&msg.ResCardExchange{
player.PushClientRes(&msg.ResCardSend{
Code: msg.RES_CODE_SUCCESS,
})
player.PushClientRes(&msg.ResNotifyCard{
@ -3210,27 +3215,21 @@ func ReqGetFriendCard(args []interface{}) error {
FriendMod := player.PlayMod.getFriendMod()
CardInfo := FriendMod.GetCardInfo(req.Id)
if CardInfo == nil || CardInfo.EndTime != 0 {
player.SendErrClienRes(&msg.ResRefuseCardExchange{
player.SendErrClienRes(&msg.ResGetFriendCard{
Code: msg.RES_CODE_FAIL,
Msg: "exchange time out",
})
return fmt.Errorf("exchange time out")
}
CardId := 0
if CardInfo.Type == card.TYPE_CARD_EX {
CardId = CardInfo.ExId
} else {
CardId = CardInfo.CardId
}
FriendMod.DelCardInfo(req.Id)
CardMod.AddCard(CardId)
CardMod.AddCard(CardInfo.CardId)
player.PlayMod.save()
player.PushClientRes(CardMod.BackData())
player.PushClientRes(&msg.ResRefuseCardExchange{
// player.PushClientRes(CardMod.BackData())
player.PushClientRes(&msg.ResGetFriendCard{
Code: msg.RES_CODE_SUCCESS,
})
player.PushClientRes(&msg.ResNotifyCard{
Card: map[int32]int32{int32(CardId): 1},
Card: map[int32]int32{int32(CardInfo.CardId): 1},
})
return nil
}

View File

@ -334,7 +334,7 @@ func (c *CardMod) SendCard(From, To, CardId int) (*CardInfo, error) {
AUid: From,
BUid: To,
CardId: CardId,
Type: TYPE_CARD_EX,
Type: TYPE_CARD_SEND,
StartTime: Now,
Status: STATUS_CARD_SEND_1,
}