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 {