From ed0890f9d2c34f0af23a00b5cdd07c1352ed24f6 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Mon, 21 Apr 2025 12:13:15 +0800 Subject: [PATCH] =?UTF-8?q?=E6=97=B6=E9=97=B4=E7=BA=BF=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/ChampshipMgr.go | 12 +++++ src/server/game/FriendMgr.go | 2 + src/server/game/Player.go | 1 + src/server/game/PlayerFunc.go | 21 ++++++++ src/server/game/RegisterNetworkFunc.go | 10 +++- src/server/game/Type.go | 1 + src/server/game/mod/friend/Friend.go | 50 +++++++++++-------- .../mod/friendTreasure.go/friendTreasure.go | 8 +-- src/server/game/mod/msg/Msg.go | 4 +- 9 files changed, 83 insertions(+), 26 deletions(-) diff --git a/src/server/game/ChampshipMgr.go b/src/server/game/ChampshipMgr.go index a88dc148..16f19001 100644 --- a/src/server/game/ChampshipMgr.go +++ b/src/server/game/ChampshipMgr.go @@ -145,6 +145,18 @@ func (c *ChampshipMgr) ZeroUpdate(m *msg.Msg) (interface{}, error) { return nil, nil } +func (c *ChampshipMgr) NotifyPlayer() { + List := c.getData().PreRank + for _, v := range List { + for i := 0; i < 3; i++ { + if v[i].Type == RANK_PLAYER_ROBOT { + continue + } + NotifyChampshipResult(v[i].Uid, i+1) + } + } +} + func (c *ChampshipMgr) ai(m *msg.Msg) (interface{}, error) { ChampshipData := c.getData() Now := GoUtil.Now() diff --git a/src/server/game/FriendMgr.go b/src/server/game/FriendMgr.go index 4860edc0..dcdc94b7 100644 --- a/src/server/game/FriendMgr.go +++ b/src/server/game/FriendMgr.go @@ -70,6 +70,8 @@ func (f *FriendMgr) Init() { f.RegisterHandler(msg.HANDLE_TYPE_WISHLIST_SEND, f.sendToPlayer) f.RegisterHandler(msg.HANDLE_TYPE_WISHLIST_AGREE, f.sendToPlayer) f.RegisterHandler(msg.HANDLE_TYPE_PLAYROOM_UPVOTE, f.sendToPlayer) + f.RegisterHandler(msg.HANDLE_TYPE_CHAMPSHIP_RESULT, f.sendToPlayer) + f.RegisterHandler(msg.HANDLE_TYPE_TREASURE_RESULT, f.sendToPlayer) } func (f *FriendMgr) getData() *FirendData { diff --git a/src/server/game/Player.go b/src/server/game/Player.go index 1ff32b85..69a34467 100644 --- a/src/server/game/Player.go +++ b/src/server/game/Player.go @@ -797,6 +797,7 @@ func (p *Player) UpdateUserInfo() { simple.Chip = p.PlayMod.getPlayroomMod().GetChip() simple.PetName = p.PlayMod.getBaseMod().PetName simple.Emoji = p.PlayMod.getEmojiMod().Set + simple.Friend = p.PlayMod.getFriendMod().GetSimpleFriendList() value, _ := json.Marshal(simple) IdStr := strconv.Itoa(int(p.M_DwUin)) db.RedisSetKey(IdStr, string(value), 0) diff --git a/src/server/game/PlayerFunc.go b/src/server/game/PlayerFunc.go index 27f05c29..b9d4ed09 100644 --- a/src/server/game/PlayerFunc.go +++ b/src/server/game/PlayerFunc.go @@ -195,6 +195,10 @@ func handle(p *Player, m *msg.Msg) error { p.PushClientRes(CardMod.NotifyCard()) case msg.HANDLE_TYPE_CHAMPSHIP_NOTIFY: // # 锦标赛排名变动通知 BackChampship(p) + case msg.HANDLE_TYPE_CHAMPSHIP_RESULT: // # 好友锦标赛结果 + p.AddLog(m.From, friend.LOG_TYPE_PLAYROOM_CHAMPSHIP, fmt.Sprintf("%d", m.Extra.(int))) + case msg.HANDLE_TYPE_TREASURE_RESULT: // # 好友宝藏结果 + p.AddLog(m.From, friend.LOG_TYPE_TREASURE, fmt.Sprintf("%d", m.Extra.(int))) case msg.HANDLE_TYPE_MAIL: // 邮件操作 SyncMailMsg(p) case msg.HANDLE_TYPE_PLAYROOM_LOSE: // # 玩家输了 @@ -1004,3 +1008,20 @@ func NotifyAllFriend(p *Player, m1 *msg.Msg) { FriendMgrSend(m) } } + +func NotifyChampshipResult(Uid, Rank int) { + PlayerSimpleData := G_GameLogicPtr.GetSimplePlayerByUid(Uid) + if PlayerSimpleData == nil { + return + } + for _, v := range PlayerSimpleData.Friend { + Msg := &msg.Msg{ + Type: msg.HANDLE_TYPE_CHAMPSHIP_NOTIFY, + From: Uid, + To: v, + Extra: Rank, + } + FriendMgrSend(Msg) + } + +} diff --git a/src/server/game/RegisterNetworkFunc.go b/src/server/game/RegisterNetworkFunc.go index b6881415..80c167ad 100644 --- a/src/server/game/RegisterNetworkFunc.go +++ b/src/server/game/RegisterNetworkFunc.go @@ -3705,7 +3705,7 @@ func ReqFriendTreasureFilp(player *Player, buf []byte) error { req := &msg.ReqFriendTreasureFilp{} proto.Unmarshal(buf, req) FriendTreasureMod := player.PlayMod.getFriendTreasureMod() - Items, err := FriendTreasureMod.Flip(int(req.Pos)) + Items, Uid, err := FriendTreasureMod.Flip(int(req.Pos)) if err != nil { player.SendErrClienRes( &msg.ResFriendTreasureFilp{ @@ -3715,6 +3715,14 @@ func ReqFriendTreasureFilp(player *Player, buf []byte) error { ) return err } + 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, + }) + } err = player.HandleItem(Items, msg.ITEM_POP_LABEL_FriendtreasureFilp.String()) if err != nil { diff --git a/src/server/game/Type.go b/src/server/game/Type.go index 61624d54..3ea1171d 100644 --- a/src/server/game/Type.go +++ b/src/server/game/Type.go @@ -24,6 +24,7 @@ type PlayerSimpleData struct { Chip int PetName string Emoji map[int]int + Friend []int } type VarGoldCard struct { diff --git a/src/server/game/mod/friend/Friend.go b/src/server/game/mod/friend/Friend.go index c214a0fa..7b4e921e 100644 --- a/src/server/game/mod/friend/Friend.go +++ b/src/server/game/mod/friend/Friend.go @@ -32,26 +32,28 @@ type ApplyInfo struct { } const ( - LOG_TYPE_FRIEND_APPLY = 1 // 收到申请好友 - LOG_TYPE_FRIEND_BECOME = 2 // 成为好友 - LOG_TYPE_CARD_EX_SEND = 3 // 发起卡牌交换申请 - LOG_TYPE_CARD_SEND = 4 // 赠送卡牌 - LOG_TYPE_CARD_GIVE = 5 // 请求卡牌 - LOG_TYPE_CARD_SELECT_GET = 6 // 选择卡牌交换 - LOG_TYPE_CARD_ACCEPT_GIVE = 7 // 接受卡牌 - LOG_TYPE_CARD_EX_GET = 8 // 收到卡牌交换申请 - LOG_TYPE_CARD_SELECT_SEND = 9 // 选择卡牌交换 - LOG_TYPE_CARD_EX_SUCCESS_1 = 10 // 卡牌交换成功 - LOG_TYPE_CARD_EX_SUCCESS_2 = 11 // 卡牌交换成功 - LOG_TYPE_FRIEND_DELETE = 14 // 删除好友 - LOG_TYPE_PLAYROOM_VISIT = 15 // 拜访玩家 - LOG_TYPE_HANDBOOK = 16 // 图鉴收集 - LOG_TYPE_HANDBOOK_UPVOTE = 17 // 图鉴点赞 - LOG_TYPE_CHARGE_SEND = 18 // 赠送充值礼物 - LOG_TYPE_CHARGE_RECEIVE = 19 // 收到充值礼物 - LOG_TYPE_WISH = 20 // 心愿单请求 - LOG_TYPE_FRIEND_BECOME_NPC = 21 // npc成为好友 - LOG_TYPE_PLAYROOM_UPVOTE = 22 // playroom点赞 + LOG_TYPE_FRIEND_APPLY = 1 // 收到申请好友 + LOG_TYPE_FRIEND_BECOME = 2 // 成为好友 + LOG_TYPE_CARD_EX_SEND = 3 // 发起卡牌交换申请 + LOG_TYPE_CARD_SEND = 4 // 赠送卡牌 + LOG_TYPE_CARD_GIVE = 5 // 请求卡牌 + LOG_TYPE_CARD_SELECT_GET = 6 // 选择卡牌交换 + LOG_TYPE_CARD_ACCEPT_GIVE = 7 // 接受卡牌 + LOG_TYPE_CARD_EX_GET = 8 // 收到卡牌交换申请 + LOG_TYPE_CARD_SELECT_SEND = 9 // 选择卡牌交换 + LOG_TYPE_CARD_EX_SUCCESS_1 = 10 // 卡牌交换成功 + LOG_TYPE_CARD_EX_SUCCESS_2 = 11 // 卡牌交换成功 + LOG_TYPE_FRIEND_DELETE = 14 // 删除好友 + LOG_TYPE_PLAYROOM_VISIT = 15 // 拜访玩家 + LOG_TYPE_HANDBOOK = 16 // 图鉴收集 + LOG_TYPE_HANDBOOK_UPVOTE = 17 // 图鉴点赞 + LOG_TYPE_CHARGE_SEND = 18 // 赠送充值礼物 + LOG_TYPE_CHARGE_RECEIVE = 19 // 收到充值礼物 + LOG_TYPE_WISH = 20 // 心愿单请求 + LOG_TYPE_FRIEND_BECOME_NPC = 21 // npc成为好友 + LOG_TYPE_PLAYROOM_UPVOTE = 22 // playroom点赞 + LOG_TYPE_PLAYROOM_CHAMPSHIP = 23 // 竞标赛排名 + LOG_TYPE_TREASURE = 24 ) const ( @@ -163,6 +165,14 @@ func (f *FriendMod) GetFriendList() map[int]*FriendInfo { return f.NewFriendList } +func (f *FriendMod) GetSimpleFriendList() []int { + rs := make([]int, 0, len(f.NewFriendList)) + for k := range f.NewFriendList { + rs = append(rs, k) + } + return rs +} + // 收到申请 func (f *FriendMod) AddFriendApply(Uid int) { f.ApplyList[Uid] = GoUtil.Now() diff --git a/src/server/game/mod/friendTreasure.go/friendTreasure.go b/src/server/game/mod/friendTreasure.go/friendTreasure.go index 534ce908..fbad4f74 100644 --- a/src/server/game/mod/friendTreasure.go/friendTreasure.go +++ b/src/server/game/mod/friendTreasure.go/friendTreasure.go @@ -55,9 +55,9 @@ func (f *FriendTreasureMod) AddStar(Star int) { f.Star = min(200, f.Star+Star) } -func (f *FriendTreasureMod) Flip(Pos int) ([]*item.Item, error) { +func (f *FriendTreasureMod) Flip(Pos int) ([]*item.Item, int64, error) { if f.Status == GAME_STATUS_IDLE { - return nil, fmt.Errorf("game not start") + return nil, 0, fmt.Errorf("game not start") } f.Shift++ Info := f.List[Pos] @@ -70,10 +70,10 @@ func (f *FriendTreasureMod) Flip(Pos int) ([]*item.Item, error) { ProbMap := friendTreasureCfg.GetChestProb() Prob := GoUtil.RandMap(ProbMap) Info.Status = GAME_STATUS_START - return friendTreasureCfg.GetChestItems(Prob), nil + return friendTreasureCfg.GetChestItems(Prob), Info.Uid, nil } Info.Status = GAME_STATUS_START - return nil, nil + return nil, 0, nil } func (f *FriendTreasureMod) EndGame() ([]*item.Item, int, error) { diff --git a/src/server/game/mod/msg/Msg.go b/src/server/game/mod/msg/Msg.go index 0a6daf71..89638e29 100644 --- a/src/server/game/mod/msg/Msg.go +++ b/src/server/game/mod/msg/Msg.go @@ -81,7 +81,9 @@ const ( HANDLE_TYPE_WISHLIST_SEND // 发送愿望单请求 HANDLE_TYPE_WISHLIST_AGREE // 收到愿望单请求同意 - HANDLE_TYPE_PLAYROOM_UPVOTE // 收到playroom点赞 + HANDLE_TYPE_PLAYROOM_UPVOTE // 收到playroom点赞 + HANDLE_TYPE_CHAMPSHIP_RESULT //锦标赛结果 + HANDLE_TYPE_TREASURE_RESULT //宝藏结果 ) const (