From 8348e26ac49e0d41a0df25233258feed2fe94671 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Mon, 15 Dec 2025 15:05:15 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0NPC=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/conf/friend/friendCfg.go | 19 +++++++++++++++++++ src/server/game/RegisterNetworkFunc.go | 9 ++++++++- src/server/game/mod/friend/Friend.go | 7 ++++++- 3 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 src/server/conf/friend/friendCfg.go diff --git a/src/server/conf/friend/friendCfg.go b/src/server/conf/friend/friendCfg.go new file mode 100644 index 00000000..187ff260 --- /dev/null +++ b/src/server/conf/friend/friendCfg.go @@ -0,0 +1,19 @@ +package friendCfg + +import "server/gamedata" + +const ( + CFG_NPC_FRIENDS = "NPCFriends" +) + +func init() { + gamedata.InitCfg(CFG_NPC_FRIENDS) +} + +func IsNpcFriend(Id int) bool { + _, err := gamedata.GetDataByIntKey(CFG_NPC_FRIENDS, Id) + if err != nil { + return false + } + return true +} diff --git a/src/server/game/RegisterNetworkFunc.go b/src/server/game/RegisterNetworkFunc.go index f61c40cc..d6d0af2d 100644 --- a/src/server/game/RegisterNetworkFunc.go +++ b/src/server/game/RegisterNetworkFunc.go @@ -5004,7 +5004,14 @@ func ReqAddNpc(player *Player, buf []byte) error { return err } FriendMod := player.PlayMod.getFriendMod() - FriendMod.SetNpc(int(req.NpcId)) + err = FriendMod.SetNpc(int(req.NpcId)) + if err != nil { + player.SendErrClienRes(&msg.ResAddNpc{ + Code: msg.RES_CODE_FAIL, + Msg: err.Error(), + }) + return err + } if len(FriendMod.Npc) == 1 { // 首次添加NPC 视为邀请好友成功 InviteMod := player.PlayMod.getInviteMod() InviteMod.AddInvite(int(req.NpcId)) diff --git a/src/server/game/mod/friend/Friend.go b/src/server/game/mod/friend/Friend.go index 3623036d..4fbf7399 100644 --- a/src/server/game/mod/friend/Friend.go +++ b/src/server/game/mod/friend/Friend.go @@ -4,6 +4,7 @@ import ( "fmt" "server/GoUtil" cardCfg "server/conf/card" + friendCfg "server/conf/friend" "server/game/mod/card" "server/game/mod/item" "server/msg" @@ -214,8 +215,12 @@ func (f *FriendMod) GetNpc() []int { return f.Npc } -func (f *FriendMod) SetNpc(id int) { +func (f *FriendMod) SetNpc(id int) error { + if !friendCfg.IsNpcFriend(id) { + return fmt.Errorf("not npc friend") + } f.Npc = append(f.Npc, id) + return nil } func (f *FriendMod) GetSyncId() int64 {