增加NPC校验

This commit is contained in:
hahwu 2025-12-15 15:05:15 +08:00
parent 9512b7b0e0
commit 8348e26ac4
3 changed files with 33 additions and 2 deletions

View File

@ -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
}

View File

@ -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))

View File

@ -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 {