From 468e65e8dadc41f530bff3d2ceaf8b5b7ae5edda Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Wed, 25 Feb 2026 11:30:18 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=99=E4=BF=A1=E6=81=AF=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E8=BF=87=E6=9C=9F=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/champship_mgr.go | 6 +- src/server/game/common.go | 6 ++ src/server/game/message_handler.go | 9 ++- src/server/game/player_data.go | 2 +- src/server/game/register_network_func.go | 75 ++++++++++++++++-------- 5 files changed, 67 insertions(+), 31 deletions(-) diff --git a/src/server/game/champship_mgr.go b/src/server/game/champship_mgr.go index d133aab3..a32d4a49 100644 --- a/src/server/game/champship_mgr.go +++ b/src/server/game/champship_mgr.go @@ -110,6 +110,7 @@ func (c *ChampshipMgr) NotifyAll() (interface{}, error) { NotifyAllPlayerMsg(&msg.Msg{ Type: msg.HANDLE_TYPE_CHAMPSHIP_NOTIFY, HandleType: msg.HANDLE_MOD_PLAYER_MSG, + End: GoUtil.Now() + onehour, }) return nil, nil } @@ -234,11 +235,12 @@ func (c *ChampshipMgr) ai() (interface{}, error) { } ChampshipData.Rank[k] = v } - + now := GoUtil.Now() // 在锁外通知玩家,避免在持锁时启动 goroutine 访问可能被并发修改的数据 for uid := range uids { go NotifyPlayer(uid, &msg.Msg{ Type: msg.HANDLE_TYPE_CHAMPSHIP_NOTIFY, + End: now + onehour, }) } @@ -461,6 +463,7 @@ func (c *ChampshipMgr) group() (interface{}, error) { for _, uid := range notifyList { go NotifyPlayer(uid, &msg.Msg{ Type: msg.HANDLE_TYPE_CHAMPSHIP_NOTIFY, + End: GoUtil.Now() + onehour, }) } return nil, nil @@ -552,6 +555,7 @@ func (c *ChampshipMgr) inRank(m *msg.Msg) (interface{}, error) { for _, uid := range notifyList { go NotifyPlayer(uid, &msg.Msg{ Type: msg.HANDLE_TYPE_CHAMPSHIP_NOTIFY, + End: GoUtil.Now() + onehour, }) } return nil, nil diff --git a/src/server/game/common.go b/src/server/game/common.go index 729e1622..d55c1003 100644 --- a/src/server/game/common.go +++ b/src/server/game/common.go @@ -13,6 +13,12 @@ const ( CHESS_MODULE = "chess" ) +const ( + onehour = 3600 + oneday = 24 * onehour + sevendays = 7 * oneday +) + // 解析参数 func ParseArgs(args []interface{}) (gate.Agent, *Player, []byte) { a := args[0].(gate.Agent) diff --git a/src/server/game/message_handler.go b/src/server/game/message_handler.go index a386f267..4b97cbcb 100644 --- a/src/server/game/message_handler.go +++ b/src/server/game/message_handler.go @@ -514,7 +514,7 @@ func (p *Player) handle(m *msg.Msg) error { case msg.HANDLE_TYPE_FRIEND_GREETING_REPLY: FriendMod := p.PlayMod.getFriendMod() if v, ok := m.Extra.(friend.ReplyInfo); ok { - FriendMod.AddReplyInfo(v.Uid, v.Type, v.Param, GoUtil.Now()+24*3600, nil) + FriendMod.AddReplyInfo(v.Uid, v.Type, v.Param, GoUtil.Now()+oneday, nil) p.FriendLogBackData() } case msg.HANDLE_TYPE_FRIEND_SPONSOER: @@ -716,6 +716,8 @@ func NotifyChampshipResult(Uid, Rank int) { if PlayerSimpleData == nil { return } + now := GoUtil.Now() + serveropenday := GoUtil.GetServerOpenDay() for _, v := range PlayerSimpleData.Friend { if CheckPlayerLose(v) { continue @@ -724,8 +726,9 @@ func NotifyChampshipResult(Uid, Rank int) { Type: msg.HANDLE_TYPE_CHAMPSHIP_RESULT, From: Uid, To: v, - SendT: GoUtil.Now(), - Extra: []int{Rank, GoUtil.GetServerOpenDay()}, + SendT: now, + End: now + sevendays, + Extra: []int{Rank, serveropenday}, }) } } diff --git a/src/server/game/player_data.go b/src/server/game/player_data.go index 537d2ab2..c70689ca 100644 --- a/src/server/game/player_data.go +++ b/src/server/game/player_data.go @@ -1253,7 +1253,7 @@ func CheckPlayerLose(Uid int) bool { return true } now := GoUtil.Now() - if now-FriendSimpleData.Loginout > 7*24*3600 { + if now-FriendSimpleData.Loginout > sevendays { return true } return false diff --git a/src/server/game/register_network_func.go b/src/server/game/register_network_func.go index 9cc00cb1..58da4c1f 100644 --- a/src/server/game/register_network_func.go +++ b/src/server/game/register_network_func.go @@ -246,10 +246,12 @@ func RegHandbookAllReward(player *Player, buf []byte) error { player.PushClientRes(&msg.ResHandbookAllReward{ Code: msg.RES_CODE_SUCCESS, }) + now := GoUtil.Now() NotifyAllFriend(player, &MsqMod.Msg{ Type: MsqMod.HANDLE_TYPE_HANDBOOK_COLLECTION, From: int(player.M_DwUin), - SendT: GoUtil.Now(), + SendT: now, + End: now + sevendays, Extra: MsqMod.HandbookMsg{ Type: req.Type, }, @@ -1880,6 +1882,7 @@ func ReqApplyFriend(player *Player, buf []byte) error { }) return fmt.Errorf("already applied") } + now := GoUtil.Now() if req.Type == 1 { Items, err := FriendMod.GetSponsorReward() if err != nil { @@ -1899,12 +1902,13 @@ func ReqApplyFriend(player *Player, buf []byte) error { }) return err } - player.AddLog(int(req.Uid), friend.LOG_TYPE_FRIEND_SPONSOR, "", GoUtil.Now()) + player.AddLog(int(req.Uid), friend.LOG_TYPE_FRIEND_SPONSOR, "", now) FriendMgrSend(&MsqMod.Msg{ Type: MsqMod.HANDLE_TYPE_FRIEND_SPONSOER, From: int(player.M_DwUin), To: Uid, - SendT: GoUtil.Now(), + SendT: now, + End: now + sevendays, }) player.PushClientRes(BaseMod.BackData()) player.TeLog("friend_invite_reward", map[string]interface{}{ @@ -1915,7 +1919,8 @@ func ReqApplyFriend(player *Player, buf []byte) error { Type: MsqMod.HANDLE_TYPE_APPLY, From: int(player.M_DwUin), To: Uid, - SendT: GoUtil.Now(), + SendT: now, + End: now + sevendays, } FriendMgrSend(m) player.PushClientRes(&msg.ResApplyFriend{ @@ -2022,11 +2027,13 @@ func ReqRefuseFriend(player *Player, buf []byte) error { Code: msg.RES_CODE_SUCCESS, Uid: req.Uid, }) + now := GoUtil.Now() m := &MsqMod.Msg{ Type: MsqMod.HANDLE_TYPE_REFUSE, From: int(player.M_DwUin), To: Uid, - SendT: GoUtil.Now(), + SendT: now, + End: now + 86400*7, } FriendMgrSend(m) player.FriendApplyBackData() @@ -2069,13 +2076,6 @@ func ReqCardGive(player *Player, buf []byte) error { }) return fmt.Errorf("card id empty") } - // err = player.SubCard(CardId) - // if err != nil { - // player.SendErrClienRes(&msg.ResCardGive{ - // Code: msg.RES_CODE_FAIL, - // Msg: err.Error(), - // }) - // } Id := GoUtil.CreateCardId(int(player.M_DwUin), 0, int(req.CardId)) for _, v := range req.Uid { Uid := int(v) @@ -2203,11 +2203,13 @@ func ReqRefuseCardGive(player *Player, buf []byte) error { player.TeLog("ReqRefuseCardGive", map[string]interface{}{ "card_id": CardInfo.CardId, }) + now := GoUtil.Now() m := &MsqMod.Msg{ Type: MsqMod.HANDLE_TYPE_REG_CARD_REFUSE, From: int(player.M_DwUin), To: CardInfo.AUid, - SendT: GoUtil.Now(), + SendT: now, + End: now + 86400, Extra: *CardInfo, } FriendMgrSend(m) @@ -3109,12 +3111,14 @@ func ReqFriendTLUpvote(player *Player, buf []byte) error { }) return err } + now := GoUtil.Now() // 添加时间线 m := &MsqMod.Msg{ Type: MsqMod.HANDLE_TYPE_HANDBOOK_UPVOTE, From: int(player.M_DwUin), To: int(FUid), - SendT: GoUtil.Now(), + SendT: now, + End: now + sevendays, } FriendMod.AddActLog(friend.ACT_LOG_TYPE_VISIT_UPVOTE, "") player.UpdateUserInfo() @@ -3304,11 +3308,13 @@ func ReqSelfInvited(player *Player, buf []byte) error { if err != nil { return err } + now := GoUtil.Now() FriendMgrSend(&MsqMod.Msg{ Type: MsqMod.HANDLE_TYPE_INVITE_FRIEND, From: int(player.M_DwUin), To: int(req.InviterId), - SendT: GoUtil.Now(), + SendT: now, + End: now + 86400, }) player.PushClientRes(&msg.ResSelfInvited{ ResultCode: 1, @@ -3887,11 +3893,13 @@ func ReqPlayroomGame(player *Player, buf []byte) error { }) return err } + now := GoUtil.Now() FriendMgrSend(&MsqMod.Msg{ From: int(player.M_DwUin), To: Target, Type: MsqMod.HANDLE_TYPE_PLAYROOM_GAME, - SendT: GoUtil.Now(), + SendT: now, + End: now + sevendays, Extra: GameResult{ T: PlayroomMod.GetGameId(), Emoji: int(req.EmojiId), @@ -3947,11 +3955,13 @@ func ReqPlayroomSelectReward(player *Player, buf []byte) error { }) return fmt.Errorf("no game or target") } + now := GoUtil.Now() FriendMgrSend(&MsqMod.Msg{ From: int(player.M_DwUin), To: Target, Type: MsqMod.HANDLE_TYPE_PLAYROOM_LOSE, - SendT: GoUtil.Now(), + SendT: now, + End: now + sevendays, Item: Items, Extra: GameResult{ T: PlayroomMod.GetGameId(), @@ -4180,11 +4190,13 @@ func ReqPlayroomFlipReward(player *Player, buf []byte) error { FriendMod.AddActLog(friend.ACT_LOG_TYPE_GET_VISIT_GAME_PRIZE, "") player.UpdateUserInfo() } + now := GoUtil.Now() FriendMgrSend(&MsqMod.Msg{ From: int(player.M_DwUin), To: Target, Type: MsqMod.HANDLE_TYPE_PLAYROOM_LOSE, - SendT: GoUtil.Now(), + SendT: now, + End: now + sevendays, Item: Items, Extra: GameResult{ T: playroom.GAME_TYPE_FILP, @@ -4270,17 +4282,20 @@ func ReqPlayroomUpvote(player *Player, buf []byte) error { Msg: err.Error(), }) } + now := GoUtil.Now() FriendMgrSend(&MsqMod.Msg{ From: int(player.M_DwUin), To: int(req.Id), Type: MsqMod.HANDLE_TYPE_PLAYROOM_UPVOTE, - SendT: GoUtil.Now(), + SendT: now, + End: now + sevendays, }) FriendMgrSend(&MsqMod.Msg{ From: int(player.M_DwUin), To: int(req.Id), Type: MsqMod.HANDLE_TYPE_PLAYROOM_KISS, - SendT: GoUtil.Now(), + SendT: now, + End: now + sevendays, }) player.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_PLAYROOM_UPVOTE}) player.AddPlayroomUpvote(int(req.Id)) @@ -4597,13 +4612,15 @@ func ReqFriendTreasureFilp(player *Player, buf []byte) error { ) return err } + now := GoUtil.Now() if Uid != 0 && Items != nil { FriendMgrSend(&MsqMod.Msg{ From: int(player.M_DwUin), To: int(Uid), Type: MsqMod.HANDLE_TYPE_TREASURE_RESULT, Extra: Items[0].Num, - SendT: GoUtil.Now(), + SendT: now, + End: now + sevendays, }) } @@ -4641,6 +4658,7 @@ func ReqFriendTreasureEnd(player *Player, buf []byte) error { ) return err } + now := GoUtil.Now() for _, v := range FriendTreasureMod.List { ItemNum := 0 if v.Status == 1 { @@ -4650,7 +4668,8 @@ func ReqFriendTreasureEnd(player *Player, buf []byte) error { From: int(player.M_DwUin), To: int(v.Uid), Type: MsqMod.FRIEND_TREASURE_HANDLE, - SendT: GoUtil.Now(), + SendT: now, + End: now + sevendays, Extra: []*item.Item{item.NewItem(item.ITEM_STAR_ID, ItemNum)}, }) } @@ -5772,6 +5791,7 @@ func ReqFriendReplyHandle(player *Player, buf []byte) error { return fmt.Errorf("reply info not exist") } ErrType := msg.FRIEND_REPLY_HANDLE_ERR_TYPE_NONE + now := GoUtil.Now() if req.Type == 1 && ReplyInfo.Uid > 10000 { switch ReplyInfo.Type { case friend.REPLY_TYPE_GREETING: @@ -5784,7 +5804,8 @@ func ReqFriendReplyHandle(player *Player, buf []byte) error { From: int(player.M_DwUin), To: int(ReplyInfo.Uid), Type: MsqMod.HANDLE_TYPE_FRIEND_GREETING_REPLY, - SendT: GoUtil.Now(), + SendT: now, + End: now + sevendays, Extra: ReplyData, }) case friend.REPLY_TYPE_CATNIP: // 猫草大作战同意邀请 @@ -5796,7 +5817,7 @@ func ReqFriendReplyHandle(player *Player, buf []byte) error { err := player.SetCatnipPartner(GameId, ReplyInfo.Uid, activityInfo.EndT) if err == nil { CatnipMod := player.PlayMod.getCatnipMod() - ActivityId := player.GetActivityId(activity.ACT_TYPE_MINING) + ActivityId := player.GetActivityId(activity.ACT_TYPE_CATNIP) UserList, _ := CatnipMod.Agree(GameId, ReplyInfo.Uid) player.TeLog("catnip_agree", map[string]interface{}{ "Id": int(GameId), @@ -5809,7 +5830,8 @@ func ReqFriendReplyHandle(player *Player, buf []byte) error { ActivityId: ActivityId, GameId: int(GameId), }, - SendT: GoUtil.Now(), + SendT: now, + End: now + sevendays, }) for _, v := range UserList { @@ -5821,7 +5843,8 @@ func ReqFriendReplyHandle(player *Player, buf []byte) error { ActivityId: ActivityId, GameId: int(GameId), }, - SendT: GoUtil.Now(), + SendT: now, + End: now + sevendays, }) } player.CatnipBackData()