From 10c0d7bea9849938f2c0eaaf6b0e715121607740 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Mon, 25 Nov 2024 16:35:38 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8D=A1=E7=89=8C=E4=BA=A4=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/GameLogic.go | 2 ++ src/server/game/Gm.go | 4 +++- src/server/game/PlayerFunc.go | 17 +++++++++----- src/server/game/PlayerMod.go | 15 +++++++------ src/server/game/RegisterNetworkFunc.go | 31 +++++++++++++------------- src/server/game/mod/card/Card.go | 2 +- 6 files changed, 41 insertions(+), 30 deletions(-) diff --git a/src/server/game/GameLogic.go b/src/server/game/GameLogic.go index 5d70189c..90d73160 100644 --- a/src/server/game/GameLogic.go +++ b/src/server/game/GameLogic.go @@ -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) // 领取日常任务奖励 diff --git a/src/server/game/Gm.go b/src/server/game/Gm.go index 6a3693a8..591dc188 100644 --- a/src/server/game/Gm.go +++ b/src/server/game/Gm.go @@ -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) diff --git a/src/server/game/PlayerFunc.go b/src/server/game/PlayerFunc.go index a6d984a2..ac1e7dfb 100644 --- a/src/server/game/PlayerFunc.go +++ b/src/server/game/PlayerFunc.go @@ -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 } diff --git a/src/server/game/PlayerMod.go b/src/server/game/PlayerMod.go index 8e7e0467..4df2e189 100644 --- a/src/server/game/PlayerMod.go +++ b/src/server/game/PlayerMod.go @@ -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 diff --git a/src/server/game/RegisterNetworkFunc.go b/src/server/game/RegisterNetworkFunc.go index 2145abdc..24231c37 100644 --- a/src/server/game/RegisterNetworkFunc.go +++ b/src/server/game/RegisterNetworkFunc.go @@ -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 } diff --git a/src/server/game/mod/card/Card.go b/src/server/game/mod/card/Card.go index 825091b3..92287f18 100644 --- a/src/server/game/mod/card/Card.go +++ b/src/server/game/mod/card/Card.go @@ -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, }