diff --git a/src/server/game/message_handler.go b/src/server/game/message_handler.go index cd14be45..9864229b 100644 --- a/src/server/game/message_handler.go +++ b/src/server/game/message_handler.go @@ -67,7 +67,7 @@ func (p *Player) handle(m *msg.Msg) error { if ok { addType = GoUtil.Int(info["type"]) } - ok = FriendMod.AddFriendApply(m.From, addType) + ok = FriendMod.AddFriendApply(m.From, addType, m.SendT) // 已申请 if ok { return nil diff --git a/src/server/game/mod/friend/Friend.go b/src/server/game/mod/friend/Friend.go index 7881f73c..dcf4a19f 100644 --- a/src/server/game/mod/friend/Friend.go +++ b/src/server/game/mod/friend/Friend.go @@ -67,6 +67,7 @@ type FriendInfo struct { AddTime int64 DelTime int64 Interact []*Interact // 拜访记录 + Greeting bool // 是否打过招呼 } type Interact struct { @@ -356,6 +357,12 @@ func (f *FriendMod) DelCardInfo(Id string) { // 删除好友 func (f *FriendMod) DelFriend(id int) { f.NewFriendList[id].DelTime = GoUtil.Now() + // 删除好友后清除打招呼 + for _, v := range f.ReplyList { + if v.Uid == id && (v.Type == REPLY_TYPE_GREETING || v.Type == REPLY_TYPE_GREETING_Get) { + v.Status = 1 + } + } } // 检查是否好友 @@ -420,7 +427,7 @@ func (f *FriendMod) CheckAddBefore(uid int) bool { } // 收到申请 -func (f *FriendMod) AddFriendApply(Uid, Type int) bool { +func (f *FriendMod) AddFriendApply(Uid, Type int, sendTime int64) bool { if f.DailyGetApply >= friendCfg.GetDailyGetApplyLimit() { return true } @@ -450,7 +457,7 @@ func (f *FriendMod) AddFriendApply(Uid, Type int) bool { } f.NewApplyList[Uid] = &ApplyInfo{ Type: Type, - Time: GoUtil.Now(), + Time: sendTime, } f.DailyGetApply++ return false @@ -635,7 +642,7 @@ func (f *FriendMod) GetActLogLast() *ActLogInfo { // 增加待回复请求 func (f *FriendMod) AddReplyInfo(Uid int, Type int, Param string, EndTime int64, Items []*item.Item) *ReplyInfo { f.AutoId++ - ReplyInfo := &ReplyInfo{ + Reply := &ReplyInfo{ Id: f.AutoId, Uid: Uid, Type: Type, @@ -644,8 +651,11 @@ func (f *FriendMod) AddReplyInfo(Uid int, Type int, Param string, EndTime int64, EndTime: EndTime, Items: Items, } - f.ReplyList = append(f.ReplyList, ReplyInfo) - return ReplyInfo + f.ReplyList = append(f.ReplyList, Reply) + if len(f.ReplyList) > 20 { + f.ReplyList = f.ReplyList[len(f.ReplyList)-20:] + } + return Reply } // 回复请求 @@ -715,3 +725,16 @@ func (f *FriendMod) AddDailyRecommend() error { } return nil } + +func (f *FriendMod) GreetingFriend(Uid int) { + if v, ok := f.NewFriendList[Uid]; ok { + v.Greeting = true + } +} + +func (f *FriendMod) CheckGreeting(Uid int) bool { + if v, ok := f.NewFriendList[Uid]; ok { + return v.Greeting + } + return false +} diff --git a/src/server/game/req_func_friend.go b/src/server/game/req_func_friend.go index 349f4972..84129415 100644 --- a/src/server/game/req_func_friend.go +++ b/src/server/game/req_func_friend.go @@ -218,7 +218,7 @@ func ReqAgreeFriend(player *Player, buf []byte) error { return fmt.Errorf("friend list full") } // 新好友才可以打招呼 - if !FriendMod.CheckAddBefore(Uid) { + if !FriendMod.CheckGreeting(Uid) { FriendMod.AddReplyInfo(Uid, friend.REPLY_TYPE_GREETING, "", GoUtil.Now()+oneday, nil) } FriendMod.AddFriend(Uid) @@ -433,6 +433,7 @@ func ReqFriendReplyHandle(player *Player, buf []byte) error { End: now + sevendays, Extra: ReplyData, }) + FriendMod.GreetingFriend(int(ReplyInfo.Uid)) case friend.REPLY_TYPE_CATNIP: // 猫草大作战同意邀请 GameId := GoUtil.Int(ReplyInfo.Param) activityInfo := player.GetActivityInfo(player.GetActivityId(activity.ACT_TYPE_CATNIP))