From 3860669bfe4c4313609677d67579c0d0d3cd5314 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Wed, 22 Jan 2025 17:51:20 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A5=BD=E5=8F=8B=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/PlayerFunc.go | 2 +- src/server/game/RegisterNetworkFunc.go | 15 +++++++++++++++ src/server/game/mod/friend/Friend.go | 13 +++++++++++++ 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/src/server/game/PlayerFunc.go b/src/server/game/PlayerFunc.go index bd979b11..4db6a08d 100644 --- a/src/server/game/PlayerFunc.go +++ b/src/server/game/PlayerFunc.go @@ -694,7 +694,7 @@ func GetRecommendPlayer(p *Player, Num int) []int { if v.Uid == int(p.M_DwUin) { continue } - if FriendMod.CheckApply(v.Uid) { + if FriendMod.CheckSendApply(v.Uid) { continue } if FriendMod.CheckFriend(v.Uid) { diff --git a/src/server/game/RegisterNetworkFunc.go b/src/server/game/RegisterNetworkFunc.go index 1d1fe3f0..9593bfd5 100644 --- a/src/server/game/RegisterNetworkFunc.go +++ b/src/server/game/RegisterNetworkFunc.go @@ -1311,6 +1311,21 @@ func ReqApplyFriend(args []interface{}) error { req := &msg.ReqApplyFriend{} proto.Unmarshal(buf, req) Uid := int(req.Uid) + FriendMod := player.PlayMod.getFriendMod() + if FriendMod.CheckFriend(Uid) { + player.SendErrClienRes(&msg.ResApplyFriend{ + Code: msg.RES_CODE_FAIL, + Msg: "already friend", + }) + return fmt.Errorf("already friend") + } + if FriendMod.CheckSendApply(Uid) { + player.SendErrClienRes(&msg.ResApplyFriend{ + Code: msg.RES_CODE_FAIL, + Msg: "already apply", + }) + return fmt.Errorf("already apply") + } m := &MsqMod.Msg{ Type: MsqMod.HANDLE_TYPE_APPLY, From: int(player.M_DwUin), diff --git a/src/server/game/mod/friend/Friend.go b/src/server/game/mod/friend/Friend.go index 0f74b5a1..ec35c259 100644 --- a/src/server/game/mod/friend/Friend.go +++ b/src/server/game/mod/friend/Friend.go @@ -9,6 +9,7 @@ import ( type FriendMod struct { FriendList map[int]struct{} // 好友列表 ApplyList map[int]int64 // 请求列表 + SendApply map[int]int64 // 发送的申请 Card map[string]*card.CardInfo // 收到的申请交换 Log []*LogInfo // 日志 AutoId int @@ -106,12 +107,24 @@ func (f *FriendMod) GetFriendList() []int { return list } +// 收到申请 func (f *FriendMod) AddFriendApply(Uid int) { f.ApplyList[Uid] = GoUtil.Now() } +// 发送申请 +func (f *FriendMod) AddSendApply(Uid int) { + f.SendApply[Uid] = GoUtil.Now() +} + +func (f *FriendMod) CheckSendApply(Id int) bool { + _, ok := f.SendApply[Id] + return ok +} + func (f *FriendMod) AgreeApply(UId int) { f.AddFriend(UId) + delete(f.SendApply, UId) delete(f.ApplyList, UId) }