From 65bc278a0694419eae85b71aa8617a5984b6aba1 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Mon, 9 Mar 2026 18:11:23 +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/gm_handler.go | 2 +- src/server/game/mod/friend/Friend.go | 21 ++++++++++++++++++++- src/server/game/player_back.go | 9 +++++++++ src/server/game/player_mod.go | 2 +- src/server/test/friend_test.go | 8 ++++++++ 5 files changed, 39 insertions(+), 3 deletions(-) diff --git a/src/server/game/gm_handler.go b/src/server/game/gm_handler.go index 55584f52..d503df46 100644 --- a/src/server/game/gm_handler.go +++ b/src/server/game/gm_handler.go @@ -417,7 +417,7 @@ func ReqGmCommand_(player *Player, Command string) error { FriendMod.Npc = nil FriendMod.Id = 0 FriendMod.Log = nil - FriendMod.InitData() + FriendMod.InitData(player.M_DwUin) player.FriendListBackData() player.FriendLogBackData() case "addFriend": diff --git a/src/server/game/mod/friend/Friend.go b/src/server/game/mod/friend/Friend.go index dcf4a19f..afd552c8 100644 --- a/src/server/game/mod/friend/Friend.go +++ b/src/server/game/mod/friend/Friend.go @@ -189,7 +189,7 @@ type LogInfo struct { } // 初始化数据 -func (f *FriendMod) InitData() { +func (f *FriendMod) InitData(M_DwUin int64) { if f.FriendList == nil { f.FriendList = make(map[int]struct{}) } @@ -224,6 +224,22 @@ func (f *FriendMod) InitData() { if f.NewApplyList == nil { f.NewApplyList = make(map[int]*ApplyInfo) } + for k, v := range f.Card { + if v.AUid != 0 && !f.CheckFriend(v.AUid) && v.AUid != int(M_DwUin) { + delete(f.Card, k) + continue + } + if v.BUid != 0 && !f.CheckFriend(v.BUid) && v.BUid != int(M_DwUin) { + delete(f.Card, k) + continue + } + } + + for k, v := range f.ReplyList { + if !f.CheckFriend(v.Uid) { + f.ReplyList = append(f.ReplyList[:k], f.ReplyList[k+1:]...) + } + } f.version() } @@ -302,6 +318,9 @@ func (f *FriendMod) Interact(id, t int, T int64) { VisitTime: T, Type: t, }) + if len(f.NewFriendList[id].Interact) > 30 { + f.NewFriendList[id].Interact = f.NewFriendList[id].Interact[len(f.NewFriendList[id].Interact)-30:] + } } // 获取好友交互时间 diff --git a/src/server/game/player_back.go b/src/server/game/player_back.go index 005a8eb9..73666247 100644 --- a/src/server/game/player_back.go +++ b/src/server/game/player_back.go @@ -394,6 +394,9 @@ func (p *Player) FriendLogBackData() { Uid: int64(v.Uid), } } + if !FriendMod.CheckFriend(v.Uid) && v.Uid > 10000 { + continue + } reply = append(reply, &proto.ResFriendReply{ Player: ps, Type: int32(v.Type), @@ -414,6 +417,12 @@ func (p *Player) FriendCardBackData() { FriendMod := p.PlayMod.getFriendMod() msgList := make([]*proto.ResFriendCard, 0, len(FriendMod.Card)) for _, v := range FriendMod.Card { + if !FriendMod.CheckFriend(v.AUid) && v.AUid != int(p.M_DwUin) { + continue + } + if !FriendMod.CheckFriend(v.BUid) && v.BUid != int(p.M_DwUin) { + continue + } msgList = append(msgList, GetCardInfoMsg(v)) } p.PushClientRes(&proto.ResFriendCardMsg{ diff --git a/src/server/game/player_mod.go b/src/server/game/player_mod.go index 89b19f69..d745dcca 100644 --- a/src/server/game/player_mod.go +++ b/src/server/game/player_mod.go @@ -206,7 +206,7 @@ func (p *PlayerModData) InitMod(player *Player) (bool, error) { p.ModList.Base.InitData(int(p.Data.DwUin), Ip) p.ModList.SevenLogin.InitData() p.ModList.LimitedTimeEvent.InitData(BaseMod.GetLevel()) - p.ModList.Friend.InitData() + p.ModList.Friend.InitData(p.Data.DwUin) p.ModList.Mail.InitData() p.ModList.Charge.InitData() p.ModList.Endless.InitData() diff --git a/src/server/test/friend_test.go b/src/server/test/friend_test.go index aaef53f3..866a2b67 100644 --- a/src/server/test/friend_test.go +++ b/src/server/test/friend_test.go @@ -46,3 +46,11 @@ func TestReqApplyFriend(t *testing.T) { game.ReqApplyFriend(p1, buf) p1.FriendListBackData() } + +func TestFriendBackData(t *testing.T) { + p1 := new(game.Player) + p1.InitPlayerByUid(100001) + p1.M_DwUin = 100100129 + p1.FriendLogBackData() + p1.FriendCardBackData() +}