From 87aef362376e68c4aba8d8005c06565622242080 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Tue, 3 Feb 2026 17:40:08 +0800 Subject: [PATCH] =?UTF-8?q?=E9=80=9A=E8=BF=87=E5=88=A0=E9=99=A4=E9=87=8D?= =?UTF-8?q?=E5=A4=8D=E6=B7=BB=E5=8A=A0=E5=90=8C=E4=B8=80=E4=B8=AA=E5=A5=BD?= =?UTF-8?q?=E5=8F=8B=EF=BC=8C=E4=BC=9A=E9=87=8D=E5=A4=8D=E8=A7=A6=E5=8F=91?= =?UTF-8?q?=E5=A5=BD=E5=8F=8B=E4=BD=93=E5=8A=9B=EF=BC=8C=E9=80=A0=E6=88=90?= =?UTF-8?q?=E5=88=B7=E4=BD=93=E5=8A=9B=E7=9A=84=E6=83=85=E5=86=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/GameLogic.go | 2 +- src/server/game/mod/friend/Friend.go | 34 ++++++++++++++++++++---- src/server/game/register_network_func.go | 18 ++++++++----- 3 files changed, 41 insertions(+), 13 deletions(-) diff --git a/src/server/game/GameLogic.go b/src/server/game/GameLogic.go index 0f077a53..e7a08f94 100644 --- a/src/server/game/GameLogic.go +++ b/src/server/game/GameLogic.go @@ -757,7 +757,7 @@ func (ad *GameLogic) RegisterNetWorkFunc() { RegisterMsgProcessFunc("ReqFriendTimeLine", ReqFriendTimeLine) // 请求好友时间线 RegisterMsgProcessFunc("ReqFriendRecommend", ReqFriendRecommend) // 获取推荐好友 RegisterMsgProcessFunc("ReqFriendTLUpvote", ReqFriendTLUpvote) // 请求时间线点赞 - RegisterMsgProcessFunc("ReqFriendTReward", ReqFriendTReward) // 请求时间线点赞 + RegisterMsgProcessFunc("ReqFriendTReward", ReqFriendTReward) // 获取时间线奖励 RegisterMsgProcessFunc("ReqAddNpc", ReqAddNpc) // 增加npc RegisterMsgProcessFunc("ReqWishApply", ReqWishApply) // 同意好友心愿单请求 RegisterMsgProcessFunc("ReqFriendByCode", ReqFriendByCode) // 根据邀请码查询好友 diff --git a/src/server/game/mod/friend/Friend.go b/src/server/game/mod/friend/Friend.go index 65c43ab9..f251e99b 100644 --- a/src/server/game/mod/friend/Friend.go +++ b/src/server/game/mod/friend/Friend.go @@ -54,6 +54,7 @@ type BubbleInfo struct { type FriendInfo struct { AddTime int64 + DelTime int64 Interact []*Interact // 拜访记录 } @@ -276,6 +277,7 @@ func (f *FriendMod) GetAddTime(id int) int64 { func (f *FriendMod) AddFriend(id int) { f.NewFriendList[id] = &FriendInfo{ AddTime: GoUtil.Now(), + DelTime: 0, } delete(f.ApplyList, id) } @@ -297,12 +299,15 @@ func (f *FriendMod) DelCardInfo(Id string) { } func (f *FriendMod) DelFriend(id int) { - delete(f.NewFriendList, id) + f.NewFriendList[id].DelTime = GoUtil.Now() } func (f *FriendMod) CheckFriend(Uid int) bool { _, ok := f.NewFriendList[Uid] - return ok + if !ok { + return false + } + return f.NewFriendList[Uid].DelTime == 0 } func (f *FriendMod) RefuseApply(id int) { @@ -315,19 +320,38 @@ func (f *FriendMod) CheckApply(id int) bool { return ok } func (f *FriendMod) GetFriendNum() int { - return len(f.NewFriendList) + i := 0 + for _, v := range f.NewFriendList { + if v.DelTime == 0 { + i++ + } + } + return i } func (f *FriendMod) GetFriendList() map[int]*FriendInfo { - return f.NewFriendList + res := make(map[int]*FriendInfo) + for k, v := range f.NewFriendList { + if v.DelTime == 0 { + res[k] = v + } + } + return res } func (f *FriendMod) GetSimpleFriendList() []int { rs := make([]int, 0, len(f.NewFriendList)) - for k := range f.NewFriendList { + for k, v := range f.NewFriendList { + if v.DelTime != 0 { + continue + } rs = append(rs, k) } return rs } +func (f *FriendMod) CheckAddBefore(uid int) bool { + _, ok := f.NewFriendList[uid] + return ok +} // 收到申请 func (f *FriendMod) AddFriendApply(Uid int) bool { diff --git a/src/server/game/register_network_func.go b/src/server/game/register_network_func.go index de334ea5..5b81176d 100644 --- a/src/server/game/register_network_func.go +++ b/src/server/game/register_network_func.go @@ -1928,15 +1928,12 @@ func ReqAgreeFriend(player *Player, buf []byte) error { }) return fmt.Errorf("apply uid not exist") } - m := &MsqMod.Msg{ - Type: MsqMod.HADNLE_TYPE_AGREE, - From: int(player.M_DwUin), - To: Uid, - SendT: GoUtil.Now(), + + // 新好友才可以打招呼 + if !FriendMod.CheckAddBefore(Uid) { + FriendMod.AddReplyInfo(Uid, friend.REPLY_TYPE_GREETING, "", GoUtil.Now()+24*3600, nil) } - FriendMgrSend(m) FriendMod.AddFriend(Uid) - FriendMod.AddReplyInfo(Uid, friend.REPLY_TYPE_GREETING, "", GoUtil.Now()+24*3600, nil) player.PushClientRes(&msg.ResAgreeFriend{ Code: msg.RES_CODE_SUCCESS, Uid: req.Uid, @@ -1947,6 +1944,13 @@ func ReqAgreeFriend(player *Player, buf []byte) error { "add_type": "接受申请", }) player.AddLog(Uid, friend.LOG_TYPE_FRIEND_BECOME, "", GoUtil.Now()) + m := &MsqMod.Msg{ + Type: MsqMod.HADNLE_TYPE_AGREE, + From: int(player.M_DwUin), + To: Uid, + SendT: GoUtil.Now(), + } + FriendMgrSend(m) player.FriendApplyBackData() player.FriendLogBackData() player.PlayMod.save()