From a4efd1bac1f76b20f463f38e6d3d7b22a6e69fd2 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Tue, 24 Mar 2026 14:24:23 +0800 Subject: [PATCH] =?UTF-8?q?playroom=E7=A0=B4=E4=BA=A7=E6=9C=BA=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/message_handler.go | 543 +++++++++++------------ src/server/game/register_network_func.go | 29 +- 2 files changed, 288 insertions(+), 284 deletions(-) diff --git a/src/server/game/message_handler.go b/src/server/game/message_handler.go index f352ee5b..c378ef09 100644 --- a/src/server/game/message_handler.go +++ b/src/server/game/message_handler.go @@ -88,10 +88,6 @@ func (p *Player) handle(m *msg.Msg) error { Type: friend.FRIEND_NOTIFY_AGREE, Time: int32(GoUtil.Now()), }) - // PlayroomMod := p.PlayMod.getPlayroomMod() - // BaseMod := p.PlayMod.getBaseMod() - // PlayroomMod.AddRoomPointAdd(BaseMod.GetLevel()) - // p.PlayroomBackData() p.TeLog("friend_add", map[string]interface{}{ "player_id": m.From, "add_type": "接受申请", @@ -118,14 +114,14 @@ func (p *Player) handle(m *msg.Msg) error { }) case msg.HANDLE_TYPE_REQ_CARD: // 卡牌申请 FriendMod := p.PlayMod.getFriendMod() - CardInfo, ok := m.Extra.(card.CardInfo) + cardInfo, ok := m.Extra.(card.CardInfo) if !ok { return nil } - FriendMod.SetCardInfo(&CardInfo) + FriendMod.SetCardInfo(&cardInfo) p.PushClientRes( &proto.NotifyFriendCard{ - Info: GetCardInfoMsg(&CardInfo), + Info: GetCardInfoMsg(&cardInfo), }, ) case msg.HANDLE_TYPE_FACEBOOK_UNBIND: // facebook解绑 @@ -158,56 +154,56 @@ func (p *Player) handle(m *msg.Msg) error { p.PlayMod.save() p.PushClientRes(InviteMod.NotifySuccess()) case msg.HANDLE_TYPE_SEND_CARD: // B收到A赠送的卡牌 - CardInfo := m.Extra.(card.CardInfo) + cardInfo := m.Extra.(card.CardInfo) FriendMod := p.PlayMod.getFriendMod() - FriendMod.SetCardInfo(&CardInfo) - FriendMod.Interact(CardInfo.AUid, friend.INTERACT_TYPE_CARD, m.SendT) + FriendMod.SetCardInfo(&cardInfo) + FriendMod.Interact(cardInfo.AUid, friend.INTERACT_TYPE_CARD, m.SendT) p.PushClientRes( &proto.NotifyFriendCard{ - Info: GetCardInfoMsg(&CardInfo), + Info: GetCardInfoMsg(&cardInfo), }, ) p.PlayMod.save() case msg.HANDLE_TYPE_EX_CARD_SELECT_TIMEOUT: // A收到B置换卡牌选择超时 - CardInfo := m.Extra.(card.CardInfo) + cardInfo := m.Extra.(card.CardInfo) CardMod := p.PlayMod.getCardMod() - p.AddCard(CardInfo.CardId) - CardMod.DelExCard(&CardInfo) + p.AddCard(cardInfo.CardId) + CardMod.DelExCard(&cardInfo) p.PushClientRes(CardMod.NotifyCard()) p.PushClientRes(CardMod.NotifyTimes()) case msg.HANDLE_TYPE_EX_CARD_TIMEOUT: // B收到A同意置换卡牌超时 - CardInfo, ok := m.Extra.(card.CardInfo) + cardInfo, ok := m.Extra.(card.CardInfo) if !ok { return nil } CardMod := p.PlayMod.getCardMod() - p.AddCard(CardInfo.ExId) + p.AddCard(cardInfo.ExId) p.PushClientRes(CardMod.NotifyCard()) p.PushClientRes(CardMod.NotifyTimes()) case msg.HANDLE_TYPE_REG_CARD_FINISH, msg.HANDLE_TYPE_AGREE_CARD_FAIL: // B收到A的请求已结束 - CardInfo, ok := m.Extra.(card.CardInfo) + cardInfo, ok := m.Extra.(card.CardInfo) if !ok { return nil } FriendMod := p.PlayMod.getFriendMod() - FriendMod.DelCardInfo(CardInfo.Id) + FriendMod.DelCardInfo(cardInfo.Id) p.PushClientRes( &proto.NotifyFriendCard{ - Info: GetCardInfoMsg(&CardInfo), + Info: GetCardInfoMsg(&cardInfo), }, ) p.PlayMod.save() case msg.HANDLE_TYPE_AGREE_CARD: // A收到B同意卡牌 - CardInfo, ok := m.Extra.(card.CardInfo) + cardInfo, ok := m.Extra.(card.CardInfo) if !ok { return nil } CardMod := p.PlayMod.getCardMod() - OtherUid, err := CardMod.DelRequestCard(CardInfo.BUid) + OtherUid, err := CardMod.DelRequestCard(cardInfo.BUid) FriendMod := p.PlayMod.getFriendMod() - FriendMod.SetCardInfo(&CardInfo) + FriendMod.SetCardInfo(&cardInfo) if err != nil { // 同意失败,请求已失效 - msg := &msg.Msg{Type: msg.HANDLE_TYPE_AGREE_CARD_FAIL, From: CardInfo.AUid, End: CardInfo.EndTime, Extra: CardInfo} + msg := &msg.Msg{Type: msg.HANDLE_TYPE_AGREE_CARD_FAIL, From: cardInfo.AUid, End: cardInfo.EndTime, Extra: cardInfo} FriendMgrSend(msg) return nil } @@ -219,83 +215,83 @@ func (p *Player) handle(m *msg.Msg) error { p.PlayMod.save() p.PushClientRes( &proto.NotifyFriendCard{ - Info: GetCardInfoMsg(&CardInfo), + Info: GetCardInfoMsg(&cardInfo), }, ) p.PushClientRes(CardMod.NotifyTimes()) case msg.HANDLE_TYPE_REG_CARD_REFUSE: // A收到B拒绝索要卡牌 - CardInfo, ok := m.Extra.(card.CardInfo) + cardInfo, ok := m.Extra.(card.CardInfo) if !ok { return nil } CardMod := p.PlayMod.getCardMod() - CardMod.DelRequestCard(CardInfo.BUid) - CardMod.AddReqTimes(CardInfo.Id, CardInfo.StartTime) + CardMod.DelRequestCard(cardInfo.BUid) + CardMod.AddReqTimes(cardInfo.Id, cardInfo.StartTime) p.PlayMod.save() p.PushClientRes(CardMod.NotifyTimes()) p.PushClientRes(CardMod.NotifyCard()) case msg.HANDLE_TYPE_EX_CARD: // B收到A置换卡牌 FriendMod := p.PlayMod.getFriendMod() - CardInfo, ok := m.Extra.(card.CardInfo) + cardInfo, ok := m.Extra.(card.CardInfo) if !ok { return nil } - FriendMod.SetCardInfo(&CardInfo) - FriendMod.Interact(CardInfo.AUid, friend.INTERACT_TYPE_EX, m.SendT) + FriendMod.SetCardInfo(&cardInfo) + FriendMod.Interact(cardInfo.AUid, friend.INTERACT_TYPE_EX, m.SendT) p.PlayMod.save() p.PushClientRes( &proto.NotifyFriendCard{ - Info: GetCardInfoMsg(&CardInfo), + Info: GetCardInfoMsg(&cardInfo), }, ) case msg.HANDLE_TYPE_SELECT_EX_CARD: // A收到B选择卡牌进行置换 FriendMod := p.PlayMod.getFriendMod() - CardInfo, ok := m.Extra.(card.CardInfo) + cardInfo, ok := m.Extra.(card.CardInfo) if !ok { return nil } - FriendMod.SetCardInfo(&CardInfo) + FriendMod.SetCardInfo(&cardInfo) p.PlayMod.save() p.PushClientRes( &proto.NotifyFriendCard{ - Info: GetCardInfoMsg(&CardInfo), + Info: GetCardInfoMsg(&cardInfo), }, ) case msg.HANDLE_TYPE_ARGREE_EX_CARD: // B收到A同意置换卡牌 - CardInfo, ok := m.Extra.(card.CardInfo) + cardInfo, ok := m.Extra.(card.CardInfo) if !ok { return nil } FriendMod := p.PlayMod.getFriendMod() - FriendMod.SetCardInfo(&CardInfo) + FriendMod.SetCardInfo(&cardInfo) p.PushClientRes( &proto.NotifyFriendCard{ - Info: GetCardInfoMsg(&CardInfo), + Info: GetCardInfoMsg(&cardInfo), }, ) p.PlayMod.save() case msg.HANDLE_TYPE_REFUSE_SELECT_CARD: // A收到B拒绝置换卡牌 CardMod := p.PlayMod.getCardMod() - CardInfo, ok := m.Extra.(card.CardInfo) + cardInfo, ok := m.Extra.(card.CardInfo) if !ok { return nil } - CardMod.AddExTimes(&CardInfo) - p.AddCard(CardInfo.CardId) - CardMod.DelExCard(&CardInfo) + CardMod.AddExTimes(&cardInfo) + p.AddCard(cardInfo.CardId) + CardMod.DelExCard(&cardInfo) p.PushClientRes(CardMod.NotifyCard()) p.PushClientRes(CardMod.NotifyTimes()) p.PlayMod.save() case msg.HANDLE_TYPE_REFUSE_EX_CARD: // B收到A拒绝置换卡牌 CardMod := p.PlayMod.getCardMod() - CardInfo, ok := m.Extra.(card.CardInfo) + cardInfo, ok := m.Extra.(card.CardInfo) if !ok { return nil } - p.AddCard(CardInfo.ExId) + p.AddCard(cardInfo.ExId) FriendMod := p.PlayMod.getFriendMod() - FriendMod.DelCardInfo(CardInfo.Id) - if cardCfg.CheckCardIsGold(CardInfo.CardId) || cardCfg.CheckCardIsGold(CardInfo.ExId) { + FriendMod.DelCardInfo(cardInfo.Id) + if cardCfg.CheckCardIsGold(cardInfo.CardId) || cardCfg.CheckCardIsGold(cardInfo.ExId) { CardMod.AddGoldTimes() } p.PlayMod.save() @@ -311,58 +307,67 @@ func (p *Player) handle(m *msg.Msg) error { SyncMailMsg(p) case msg.HANDLE_TYPE_PLAYROOM_LOSE: // # 玩家输了 PlayroomMod := p.PlayMod.getPlayroomMod() - Items := m.Item - GameId := playroom.GAME_TYPE_HOOK - Emoji := 0 + gameId := playroom.GAME_TYPE_HOOK + emoji := 0 if m.Extra != nil { if val, ok := m.Extra.(GameResult); ok { - GameId = val.T - Emoji = val.Emoji + gameId = val.T + emoji = val.Emoji } } - if len(Items) == 0 { + if len(m.Item) == 0 { return nil } - if GameId == playroom.GAME_TYPE_HOOK || GameId == playroom.GAME_TYPE_HIDE { - PlayroomMod.AddChip(m.From, m.SendT, Emoji) - p.AddLog(m.From, friend.LOG_TYPE_PLAYROOM_CAT_WIN, fmt.Sprintf("%d_%d_%d", Items[0].Id, Items[0].Num, Emoji), m.SendT) + var broken bool + if gameId == playroom.GAME_TYPE_HOOK || gameId == playroom.GAME_TYPE_HIDE { + PlayroomMod.AddChip(m.From, m.SendT, emoji) + p.AddLog(m.From, friend.LOG_TYPE_PLAYROOM_CAT_WIN, fmt.Sprintf("%d_%d_%d", m.Item[0].Id, m.Item[0].Num, emoji), m.SendT) } else { - p.AddLog(m.From, friend.LOG_TYPE_PLAYROOM_VISIT, fmt.Sprintf("%d_%d_%d", Items[0].Id, Items[0].Num, Emoji), m.SendT) + p.AddLog(m.From, friend.LOG_TYPE_PLAYROOM_VISIT, fmt.Sprintf("%d_%d_%d", m.Item[0].Id, m.Item[0].Num, emoji), m.SendT) } PlayroomMod.AddMood(playroom.MOOD_TYPE_FOOD, -50) PlayroomMod.AddMood(playroom.MOOD_TYPE_CLEAN, -50) PlayroomMod.AddVisitor(m.From, m.SendT) - if Items[0].Id == item.ITEM_STAR_ID { + if m.Item[0].Id == item.ITEM_STAR_ID { BaseMod := p.PlayMod.getBaseMod() - StarNum := BaseMod.GetStar() - Items[0].Num = min(Items[0].Num, StarNum) - p.HandleLoseItem(Items, "HANDLE_TYPE_PLAYROOM_LOSE") + starNum := BaseMod.GetStar() + m.Item[0].Num = min(m.Item[0].Num, starNum) + if m.Item[0].Num >= starNum { + broken = true + } + p.HandleLoseItem(m.Item, "HANDLE_TYPE_PLAYROOM_LOSE") } else { - PlayroomMod.Lose(Items) + PlayroomMod.Lose(m.Item) + } + if broken { + playerSimpleData := G_GameLogicPtr.GetResSimplePlayerByUid(m.From) + p.PushClientRes(&proto.NotifyPlayroomBroken{ + Player: playerSimpleData, + }) } FriendMod := p.PlayMod.getFriendMod() FriendMod.Interact(m.From, friend.INTERACT_TYPE_VISIT, m.SendT) p.UpdateUserInfo() - p.TeLog("playroom_lost", map[string]interface{}{"uid": m.From, "item": Items}) + p.TeLog("playroom_lost", map[string]interface{}{"uid": m.From, "item": m.Item}) p.PushClientRes(PlayroomMod.NotifyLose()) case msg.HANDLE_TYPE_PLAYROOM_GAME: FriendMod := p.PlayMod.getFriendMod() - Emoji := 0 + emoji := 0 if m.Extra != nil { if val, ok := m.Extra.(GameResult); ok { - Emoji = val.Emoji + emoji = val.Emoji } } - p.AddLog(m.From, friend.LOG_TYPE_PLAYROOM_CAT_LOSE, fmt.Sprintf("%d", Emoji), m.SendT) + p.AddLog(m.From, friend.LOG_TYPE_PLAYROOM_CAT_LOSE, fmt.Sprintf("%d", emoji), m.SendT) FriendMod.Interact(m.From, friend.INTERACT_TYPE_VISIT, m.SendT) case msg.FRIEND_TREASURE_HANDLE: // # 好友宝藏 - Items, ok := m.Extra.([]*item.Item) + items, ok := m.Extra.([]*item.Item) if !ok { - Items = []*item.Item{} + items = []*item.Item{} } p.AddLog(m.From, friend.LOG_TYPE_TREASURE_HELP, "", m.SendT) - p.HandleItem(Items, proto.ITEM_POP_LABEL_Friendtreasure.String()) + p.HandleItem(items, proto.ITEM_POP_LABEL_Friendtreasure.String()) case msg.HANDLE_TYPE_HANDBOOK_COLLECTION: // 图鉴收集奖励 if m.Extra == nil { return nil @@ -384,13 +389,13 @@ func (p *Player) handle(m *msg.Msg) error { PlayerSimpleData := G_GameLogicPtr.GetResSimplePlayerByUid(m.From) MailMod := p.PlayMod.getMailMod() mt, mc, mt_en, mc_en := mailCfg.GetChargeSendMail(PlayerSimpleData.Name) - Items := p.ChargeItem(C.ChargeId) + items := p.ChargeItem(C.ChargeId) mailId := MailMod.SendMail(&mail.MailStruct{ Title: mt, Content: mc, TitleEn: mt_en, ContentEn: mc_en, - Items: Items, + Items: items, Type: mail.MAIL_TYPE_GIFT, }) p.AddLog(m.From, friend.LOG_TYPE_CHARGE_SEND, fmt.Sprintf("%d", mailId), m.SendT) @@ -431,83 +436,83 @@ func (p *Player) handle(m *msg.Msg) error { p.NotifyPlayroomKiss() case msg.HANDLE_TYPE_CATNIP_INVITE: // 邀请好友参与猫咪游戏 CatnipMod := p.PlayMod.getCatnipMod() - CatnipMsg, ok := m.Extra.(CatnipMsg) + catnipMsg, ok := m.Extra.(CatnipMsg) if !ok { return nil } - ActivityId := p.GetActivityId(activity.ACT_TYPE_CATNIP) - if ActivityId != CatnipMsg.ActivityId { // 活动ID不匹配 + activityId := p.GetActivityId(activity.ACT_TYPE_CATNIP) + if activityId != catnipMsg.ActivityId { // 活动ID不匹配 return nil } CatnipMod.BeInvited(int(m.From), m.SendT) FriendMod := p.PlayMod.getFriendMod() - ReplyInfo := FriendMod.AddReplyInfo(m.From, friend.REPLY_TYPE_CATNIP, fmt.Sprintf("%d", CatnipMsg.GameId), m.End, nil) + replyInfo := FriendMod.AddReplyInfo(m.From, friend.REPLY_TYPE_CATNIP, fmt.Sprintf("%d", catnipMsg.GameId), m.End, nil) PlayerSimpleData := G_GameLogicPtr.GetResSimplePlayerByUid(m.From) p.PushClientRes(&proto.ResFriendReplyNotify{ Info: &proto.ResFriendReply{ Player: PlayerSimpleData, - Param: ReplyInfo.Param, - Type: int32(ReplyInfo.Type), - Id: int32(ReplyInfo.Id), + Param: replyInfo.Param, + Type: int32(replyInfo.Type), + Id: int32(replyInfo.Id), }, Type: int32(friend.REPLY_TYPE_CATNIP), Time: int32(m.SendT), }) case msg.HANDLE_TYPE_CATNIP_AGREE: // 同意好友参与猫咪游戏 CatnipMod := p.PlayMod.getCatnipMod() - CatnipMsg, ok := m.Extra.(CatnipMsg) + catnipMsg, ok := m.Extra.(CatnipMsg) if !ok { return nil } - ActivityId := p.GetActivityId(activity.ACT_TYPE_CATNIP) - if ActivityId != CatnipMsg.ActivityId { // 活动ID不匹配 + activityId := p.GetActivityId(activity.ACT_TYPE_CATNIP) + if activityId != catnipMsg.ActivityId { // 活动ID不匹配 return nil } - CatnipMod.BeAgree(CatnipMsg.GameId, int(m.From)) + CatnipMod.BeAgree(catnipMsg.GameId, int(m.From)) case msg.HANDLE_TYPE_CATNIP_AGREE_DEL: // 同意好友参与猫咪游戏后删除邀请 CatnipMod := p.PlayMod.getCatnipMod() - CatnipMsg, ok := m.Extra.(CatnipMsg) + catnipMsg, ok := m.Extra.(CatnipMsg) if !ok { return nil } - ActivityId := p.GetActivityId(activity.ACT_TYPE_CATNIP) - if ActivityId != CatnipMsg.ActivityId { // 活动ID不匹配 + activityId := p.GetActivityId(activity.ACT_TYPE_CATNIP) + if activityId != catnipMsg.ActivityId { // 活动ID不匹配 return nil } - CatnipMod.DelInvited(CatnipMsg.GameId, int(m.From)) + CatnipMod.DelInvited(catnipMsg.GameId, int(m.From)) case msg.HANDLE_TYPE_CATNIP_REFUSE: // 拒绝好友参与猫咪游戏 CatnipMod := p.PlayMod.getCatnipMod() - CatnipMsg, ok := m.Extra.(CatnipMsg) + catnipMsg, ok := m.Extra.(CatnipMsg) if !ok { return nil } - ActivityId := p.GetActivityId(activity.ACT_TYPE_CATNIP) - if ActivityId != CatnipMsg.ActivityId { // 活动ID不匹配 + activityId := p.GetActivityId(activity.ACT_TYPE_CATNIP) + if activityId != catnipMsg.ActivityId { // 活动ID不匹配 return nil } - CatnipMod.DelInvited(CatnipMsg.GameId, int(m.From)) + CatnipMod.DelInvited(catnipMsg.GameId, int(m.From)) case msg.HANDLE_TYPE_CATNIP_GROWTH: CatnipMod := p.PlayMod.getCatnipMod() - CatnipMsg, ok := m.Extra.(CatnipMsg) + catnipMsg, ok := m.Extra.(CatnipMsg) if !ok { return nil } - ActivityId := p.GetActivityId(activity.ACT_TYPE_CATNIP) - if ActivityId != CatnipMsg.ActivityId { // 活动ID不匹配 + activityId := p.GetActivityId(activity.ACT_TYPE_CATNIP) + if activityId != catnipMsg.ActivityId { // 活动ID不匹配 return nil } - CatnipMod.GrowthByUid(m.From, CatnipMsg.Growth) - if CatnipMsg.FriendItems > 0 { - Items := catnipCfg.GetItemCost(ActivityId, CatnipMsg.FriendItems) + CatnipMod.GrowthByUid(m.From, catnipMsg.Growth) + if catnipMsg.FriendItems > 0 { + Items := catnipCfg.GetItemCost(activityId, catnipMsg.FriendItems) FriendMod := p.PlayMod.getFriendMod() - ReplyInfo := FriendMod.AddReplyInfo(m.From, friend.REPLY_TYPE_CATNIP_ITEMS, "", m.End, Items) + replyInfo := FriendMod.AddReplyInfo(m.From, friend.REPLY_TYPE_CATNIP_ITEMS, "", m.End, Items) PlayerSimpleData := G_GameLogicPtr.GetResSimplePlayerByUid(m.From) p.PushClientRes(&proto.ResFriendReplyNotify{ Info: &proto.ResFriendReply{ Player: PlayerSimpleData, - Param: ReplyInfo.Param, - Type: int32(ReplyInfo.Type), - Id: int32(ReplyInfo.Id), + Param: replyInfo.Param, + Type: int32(replyInfo.Type), + Id: int32(replyInfo.Id), }, Type: int32(friend.REPLY_TYPE_CATNIP_ITEMS), Time: int32(m.SendT), @@ -516,8 +521,8 @@ func (p *Player) handle(m *msg.Msg) error { p.CatnipBackData() case msg.HANDLE_TYPE_CATNIP_SEND_EMOJI: CatnipMod := p.PlayMod.getCatnipMod() - EmojiId := GoUtil.Int(m.Extra) - CatnipMod.SetEmoji(m.From, EmojiId) + emojiId := GoUtil.Int(m.Extra) + CatnipMod.SetEmoji(m.From, emojiId) p.CatnipBackData() case msg.HANDLE_TYPE_FRIEND_GREETING_REPLY: FriendMod := p.PlayMod.getFriendMod() @@ -592,9 +597,9 @@ func (p *Player) handle(m *msg.Msg) error { } func SyncMailMsg(p *Player) { - ServerMailList := G_GameLogicPtr.MailMgr.Sync(int(p.M_DwUin), p.GetPlayerBaseMod().GetRegisterTime()) + serverMailList := G_GameLogicPtr.MailMgr.Sync(int(p.M_DwUin), p.GetPlayerBaseMod().GetRegisterTime()) MailMod := p.PlayMod.getMailMod() - for _, v := range ServerMailList { + for _, v := range serverMailList { if GoUtil.InArray(v.Id, MailMod.ServerMail) { continue } @@ -616,14 +621,14 @@ func SyncMailMsg(p *Player) { } func (p *Player) CatnipGrowthMsg(To, Id, Growth, FriendItems int) error { - ActivityId := p.GetActivityId(activity.ACT_TYPE_CATNIP) + activityId := p.GetActivityId(activity.ACT_TYPE_CATNIP) FriendMgrSend(&msg.Msg{ From: int(p.M_DwUin), To: To, Type: msg.HANDLE_TYPE_CATNIP_GROWTH, SendT: GoUtil.Now(), Extra: CatnipMsg{ - ActivityId: ActivityId, + ActivityId: activityId, GameId: Id, Growth: Growth, FriendItems: FriendItems, @@ -637,76 +642,76 @@ func ClusterSendMsg(ServerId int, m *msg.Msg) { mergeCluster.SendServerMsg(m, ServerId) } -func GetCardInfoMsg(CardInfo *card.CardInfo) *proto.ResFriendCard { - Uid := 0 - if CardInfo.Type == card.TYPE_CARD_SEND { - Uid = CardInfo.AUid +func GetCardInfoMsg(cardInfo *card.CardInfo) *proto.ResFriendCard { + uid := 0 + if cardInfo.Type == card.TYPE_CARD_SEND { + uid = cardInfo.AUid } - if CardInfo.Type == card.TYPE_CARD_GIVE { - if CardInfo.Status == card.STATUS_CARD_GIVE_1 { - Uid = CardInfo.AUid + if cardInfo.Type == card.TYPE_CARD_GIVE { + if cardInfo.Status == card.STATUS_CARD_GIVE_1 { + uid = cardInfo.AUid } else { - Uid = CardInfo.BUid + uid = cardInfo.BUid } } - if CardInfo.Type == card.TYPE_CARD_EX { - if CardInfo.Status == card.STATUS_CARD_EX_2 { - Uid = CardInfo.AUid + if cardInfo.Type == card.TYPE_CARD_EX { + if cardInfo.Status == card.STATUS_CARD_EX_2 { + uid = cardInfo.AUid } else { - Uid = CardInfo.BUid + uid = cardInfo.BUid } } - ps := G_GameLogicPtr.GetSimplePlayerByUid(Uid) + ps := G_GameLogicPtr.GetSimplePlayerByUid(uid) if ps == nil { return &proto.ResFriendCard{} } return &proto.ResFriendCard{ - Uid: int64(Uid), + Uid: int64(uid), Name: ps.Name, Face: int32(ps.Face), Avatar: int32(ps.Avatar), Level: int32(ps.Level), - CardId: int32(CardInfo.CardId), - ExCardId: int32(CardInfo.ExId), - Time: int32(CardInfo.StartTime), - Type: int32(CardInfo.Type), - Status: int32(CardInfo.Status), - Id: CardInfo.Id, - Emoji: int32(CardInfo.Emoji), + CardId: int32(cardInfo.CardId), + ExCardId: int32(cardInfo.ExId), + Time: int32(cardInfo.StartTime), + Type: int32(cardInfo.Type), + Status: int32(cardInfo.Status), + Id: cardInfo.Id, + Emoji: int32(cardInfo.Emoji), } } // 发射器退役第一步 不再生成此发射器订单 func (p *Player) EmitRetireTrigger1() { ChessMod := p.PlayMod.getChessMod() - EmitList := ChessMod.GetEmitList() - EmitId := make(map[string]struct{}) - for _, v := range EmitList { - Emit_Id := mergeDataCfg.GetEmitId(v) - if Emit_Id == "" { + emitList := ChessMod.GetEmitList() + emitId := make(map[string]struct{}) + for _, v := range emitList { + emit_Id := mergeDataCfg.GetEmitId(v) + if emit_Id == "" { continue } - EmitId[Emit_Id] = struct{}{} + emitId[emit_Id] = struct{}{} } - var EmitId1 []string - for k := range EmitId { - EmitId1 = append(EmitId1, k) + var emitId1 []string + for k := range emitId { + emitId1 = append(emitId1, k) } - if len(EmitId1) <= 5 { + if len(emitId1) <= 5 { return } - sort.Slice(EmitId1, func(i, j int) bool { - return EmitId1[i] < EmitId1[j] + sort.Slice(emitId1, func(i, j int) bool { + return emitId1[i] < emitId1[j] }) OrderMod := p.PlayMod.getOrderMod() - OrderMod.Retire(EmitId1[0]) + OrderMod.Retire(emitId1[0]) p.TeLog("launcher_retire", map[string]interface{}{ - "launcher_type": EmitId1[0], + "launcher_type": emitId1[0], }) - ChessMod.BeginRetire(EmitId1[0]) + ChessMod.BeginRetire(emitId1[0]) } // 发射器退役第二步 生成清理订单 @@ -714,12 +719,12 @@ func (p *Player) EmitRetireTrigger2() { ChessMod := p.PlayMod.getChessMod() OrderMod := p.PlayMod.getOrderMod() BaseMod := p.PlayMod.getBaseMod() - OrderList := OrderMod.GetOrderList() - AllChess := make(map[string]struct{}) - for _, v := range OrderList { + orderList := OrderMod.GetOrderList() + allChess := make(map[string]struct{}) + for _, v := range orderList { for _, v1 := range v.MergeId { Color := mergeDataCfg.GetColorById(v1) - AllChess[Color] = struct{}{} + allChess[Color] = struct{}{} } } RetireEmit := ChessMod.GetRetireEmit() @@ -738,7 +743,7 @@ func (p *Player) EmitRetireTrigger2() { NeedFinishOrder := false Produce := mergeDataCfg.GetEmitOrderProduce(k) for _, v1 := range Produce { - if _, ok := AllChess[v1]; ok { + if _, ok := allChess[v1]; ok { NeedFinishOrder = true break } @@ -748,7 +753,7 @@ func (p *Player) EmitRetireTrigger2() { } ChessMod.RetireOrder(k) } - for _, v := range OrderList { + for _, v := range orderList { if v.Type == order.Clean_type { return } @@ -802,13 +807,13 @@ func (player *Player) GetPetOrderItemExp() int { itemList := make([]*item.Item, 0) ItemMod := player.PlayMod.getItemMod() for _, v := range OrderItemCfgList { - Num := ItemMod.GetItem(v) - if Num <= 0 { + num := ItemMod.GetItem(v) + if num <= 0 { continue } itemList = append(itemList, &item.Item{ Id: v, - Num: Num, + Num: num, }) } return playroomCfg.GetPetOrderItemExpByList(itemList) @@ -817,11 +822,11 @@ func (player *Player) GetPetOrderItemExp() int { // 触发生成新的固定订单 func (player *Player) TriggerOrder(lv int, Type string, Emit []int, EnergyMul int) error { OrderMod := player.PlayMod.getOrderMod() - TriggerOrderList := orderCfg.GetStartOrderList() - FixedOrder := 0 + triggerOrderList := orderCfg.GetStartOrderList() + fixedOrder := 0 for _, v := range OrderMod.OrderList { if v.Type == order.Fixed_type { - FixedOrder++ + fixedOrder++ } } OrderList := make(map[int]order.Order, len(OrderMod.OrderList)) @@ -829,7 +834,7 @@ func (player *Player) TriggerOrder(lv int, Type string, Emit []int, EnergyMul in OrderList[k] = v } // 触发生成新的固定订单 - for _, v := range TriggerOrderList { + for _, v := range triggerOrderList { if GoUtil.InArray(v.Id, OrderMod.FinishOrder) { continue } @@ -839,13 +844,13 @@ func (player *Player) TriggerOrder(lv int, Type string, Emit []int, EnergyMul in } // 预览条件不为空且未存在且未完成 if v.Preview != "" && !exists && !GoUtil.InArray(v.Id, OrderMod.FinishOrder) { - if OrderMod.CheckCondition(lv, v.Preview, Type, Emit, FixedOrder, OrderList) { + if OrderMod.CheckCondition(lv, v.Preview, Type, Emit, fixedOrder, OrderList) { OrderMod.AddFixOrder(v.Id, v.MergeList, order.Preview_type, v.Items) } } if v.Appear != "" { - if OrderMod.CheckCondition(lv, v.Appear, Type, Emit, FixedOrder, OrderList) { + if OrderMod.CheckCondition(lv, v.Appear, Type, Emit, fixedOrder, OrderList) { Type := order.Fixed_type OrderType := orderCfg.GetOrderType(v.Id) if OrderType != 0 { @@ -880,20 +885,20 @@ func (player *Player) AddOrder() { BaseMod := player.PlayMod.getBaseMod() OrderMod := player.PlayMod.getOrderMod() ChessMod := player.PlayMod.getChessMod() - MaxOrderNum := orderCfg.GetOrderNum(BaseMod.GetLevel()) + maxOrderNum := orderCfg.GetOrderNum(BaseMod.GetLevel()) n := 0 if OrderMod.LastOrder.Type == order.Preheat_type { - ChessId := OrderMod.LastOrder.MergeId[0] - ChessColor := mergeDataCfg.GetColorById(ChessId) - PreheatStep := OrderMod.PreheatStep[ChessColor] - OrderMod.PreheatStep[ChessColor]++ - if PreheatStep < 4 { - NewChessId := mergeDataCfg.GetChessIdByLvAndColor(BaseMod.GetEnergyMul()+PreheatStep+1, ChessColor) - Items, ok := order.PreheatItems[OrderMod.PreheatStep[ChessColor]] + chessId := OrderMod.LastOrder.MergeId[0] + chessColor := mergeDataCfg.GetColorById(chessId) + preheatStep := OrderMod.PreheatStep[chessColor] + OrderMod.PreheatStep[chessColor]++ + if preheatStep < 4 { + newChessId := mergeDataCfg.GetChessIdByLvAndColor(BaseMod.GetEnergyMul()+preheatStep+1, chessColor) + items, ok := order.PreheatItems[OrderMod.PreheatStep[chessColor]] if !ok { - Items = []*item.Item{item.NewItem(item.ITEM_STAR_ID, order.GetOrderStar([]int{NewChessId}, ChessMod.GetStarEmitList()))} + items = []*item.Item{item.NewItem(item.ITEM_STAR_ID, order.GetOrderStar([]int{newChessId}, ChessMod.GetStarEmitList()))} } - OrderMod.AddPreheatOrder([]int{NewChessId}, order.DIFF_LOW, order.Preheat_type, Items) + OrderMod.AddPreheatOrder([]int{newChessId}, order.DIFF_LOW, order.Preheat_type, items) } } for _, v := range OrderMod.OrderList { @@ -901,7 +906,7 @@ func (player *Player) AddOrder() { n++ } } - for i := n; i < MaxOrderNum; i++ { + for i := n; i < maxOrderNum; i++ { player.CreateNormalOrder() } } @@ -914,28 +919,28 @@ func (player *Player) FixOrderBug() { if v > 4 { continue } - Exit := false + exit := false for _, o := range OrderMod.OrderList { if o.Type != order.Preheat_type { continue } - Color := mergeDataCfg.GetColorById(o.MergeId[0]) - if Color == k { - Exit = true + color := mergeDataCfg.GetColorById(o.MergeId[0]) + if color == k { + exit = true break } } - if Exit { + if exit { continue } - NewChessId := mergeDataCfg.GetChessIdByLvAndColor(BaseMod.GetEnergyMul()+v+1, k) + newChessId := mergeDataCfg.GetChessIdByLvAndColor(BaseMod.GetEnergyMul()+v+1, k) OrderMod.PreheatStep[k]++ - Items, ok := order.PreheatItems[OrderMod.PreheatStep[k]] + items, ok := order.PreheatItems[OrderMod.PreheatStep[k]] if !ok { - Items = []*item.Item{item.NewItem(item.ITEM_STAR_ID, order.GetOrderStar([]int{NewChessId}, ChessMod.GetStarEmitList()))} + items = []*item.Item{item.NewItem(item.ITEM_STAR_ID, order.GetOrderStar([]int{newChessId}, ChessMod.GetStarEmitList()))} } - OrderMod.AddPreheatOrder([]int{NewChessId}, order.DIFF_LOW, order.Preheat_type, Items) + OrderMod.AddPreheatOrder([]int{newChessId}, order.DIFF_LOW, order.Preheat_type, items) } } @@ -1008,14 +1013,14 @@ func (player *Player) CreatePetOrder() { BaseMod := player.PlayMod.getBaseMod() ChessMod := player.PlayMod.getChessMod() OrderMod := player.PlayMod.getOrderMod() - PetTrigger := true + petTrigger := true for _, v := range OrderMod.GetOrderList() { if v.Type == order.Pet_type { - PetTrigger = false + petTrigger = false break } } - if PetTrigger && BaseMod.GetLevel() >= 17 { + if petTrigger && BaseMod.GetLevel() >= 17 { OrderMod.CreateOrder(BaseMod.GetLevel(), ChessMod.GetOrderEmit(), BaseMod.GetEnergyMul(), order.Pet_type) for k, v := range OrderMod.GetOrderList() { if len(v.Items) != 0 { @@ -1024,16 +1029,16 @@ func (player *Player) CreatePetOrder() { if v.Type != order.Pet_type { continue } - var Items []*item.Item + var items []*item.Item Star := order.GetOrderStar(v.MergeId, ChessMod.GetStarEmitList()) // Star = int(float64(Star)*float64(OrderFactor)/1000) * 10 - Items = player.GetPetOrderReward(Star, Items) - if len(Items) == 1 && Items[0].Id == item.ITEM_STAR_ID { + items = player.GetPetOrderReward(Star, items) + if len(items) == 1 && items[0].Id == item.ITEM_STAR_ID { v.Type = order.Common_type } else { v.Type = order.Pet_type } - v.Items = Items + v.Items = items OrderMod.OrderList[k] = v } return @@ -1041,43 +1046,43 @@ func (player *Player) CreatePetOrder() { } func (player *Player) CreateNormalOrder() { - Exp, PExp := userCfg.GetLevUpExp(player.GetPlayerBaseMod().GetLevel()) + exp, pExp := userCfg.GetLevUpExp(player.GetPlayerBaseMod().GetLevel()) BaseMod := player.PlayMod.getBaseMod() DecorateMod := player.PlayMod.getDecorateMod() ChessMod := player.PlayMod.getChessMod() - OrderFactor := orderCfg.GetOrderFactor(DecorateMod.GetAreaId()) - ExpCoin := (Exp-BaseMod.GetExp())*decorateCfg.GetAreaPerPExp(DecorateMod.GetAreaId()) - BaseMod.GetStar() - PExpCoin := (PExp-BaseMod.GetPExp())*50 - player.GetPetOrderItemExp() + orderFactor := orderCfg.GetOrderFactor(DecorateMod.GetAreaId()) + expCoin := (exp-BaseMod.GetExp())*decorateCfg.GetAreaPerPExp(DecorateMod.GetAreaId()) - BaseMod.GetStar() + pExpCoin := (pExp-BaseMod.GetPExp())*50 - player.GetPetOrderItemExp() OrderMod := player.PlayMod.getOrderMod() // 预热订单 // 安慰订单 - Now := GoUtil.Now() - if OrderMod.LastOrder.Type == order.COMFORT_TYPE && Now < int64(OrderMod.ComfortEndTime) { + now := GoUtil.Now() + if OrderMod.LastOrder.Type == order.COMFORT_TYPE && now < int64(OrderMod.ComfortEndTime) { OrderMod.CreateOrder(BaseMod.GetLevel(), ChessMod.GetOrderEmit(), BaseMod.GetEnergyMul(), order.COMFORT_TYPE) for k, v := range OrderMod.GetOrderList() { if k == OrderMod.Auto_id { if v.Type != order.COMFORT_TYPE { continue } - Star := order.GetOrderStar(v.MergeId, ChessMod.GetStarEmitList()) - Star = int(float64(Star)*float64(OrderFactor)/1000) * 10 - v.Items = []*item.Item{{Id: item.ITEM_STAR_ID, Num: Star}} + star := order.GetOrderStar(v.MergeId, ChessMod.GetStarEmitList()) + star = int(float64(star)*float64(orderFactor)/1000) * 10 + v.Items = []*item.Item{{Id: item.ITEM_STAR_ID, Num: star}} OrderMod.OrderList[k] = v } } return } - PetTrigger := true + petTrigger := true for _, v := range OrderMod.GetOrderList() { if v.Type == order.Pet_type { - PetTrigger = false + petTrigger = false break } } - if PExpCoin > ExpCoin && PetTrigger && BaseMod.GetLevel() >= 17 { + if pExpCoin > expCoin && petTrigger && BaseMod.GetLevel() >= 17 { OrderMod.CreateOrder(BaseMod.GetLevel(), ChessMod.GetOrderEmit(), BaseMod.GetEnergyMul(), order.Pet_type) for k, v := range OrderMod.GetOrderList() { if len(v.Items) != 0 { @@ -1086,37 +1091,37 @@ func (player *Player) CreateNormalOrder() { if v.Type != order.Pet_type { continue } - var Items []*item.Item - Star := order.GetOrderStar(v.MergeId, ChessMod.GetStarEmitList()) + var items []*item.Item + star := order.GetOrderStar(v.MergeId, ChessMod.GetStarEmitList()) // Star = int(float64(Star)*float64(OrderFactor)/1000) * 10 - Items = player.GetPetOrderReward(Star, Items) - if len(Items) == 1 && Items[0].Id == item.ITEM_STAR_ID { + items = player.GetPetOrderReward(star, items) + if len(items) == 1 && items[0].Id == item.ITEM_STAR_ID { v.Type = order.Common_type } else { v.Type = order.Pet_type } - v.Items = Items + v.Items = items OrderMod.OrderList[k] = v } return } // 触发式订单 满足条件生成零件订单 - PartCost := DecorateMod.GetPartCost() - PartBag := ChessMod.GetPartBag() - Trigger := true + partCost := DecorateMod.GetPartCost() + partBag := ChessMod.GetPartBag() + trigger := true for _, v := range OrderMod.GetOrderList() { if v.Type == order.Part_type { - Trigger = false + trigger = false } } - Trigger2 := false - for k, v := range PartCost { - if v > PartBag[k] { - Trigger2 = true + trigger2 := false + for k, v := range partCost { + if v > partBag[k] { + trigger2 = true } } - if Trigger && Trigger2 && BaseMod.GetLevel() >= 12 { + if trigger && trigger2 && BaseMod.GetLevel() >= 12 { OrderMod.CreateOrder(BaseMod.GetLevel(), ChessMod.GetOrderPartEmit(), BaseMod.GetEnergyMul(), order.Part_type) for k, v := range OrderMod.GetOrderList() { if v.Type == order.Part_type { @@ -1133,7 +1138,7 @@ func (player *Player) InitOrderItem() { OrderMod := player.PlayMod.getOrderMod() DecorateMod := player.PlayMod.getDecorateMod() ChessMod := player.PlayMod.getChessMod() - OrderFactor := orderCfg.GetOrderFactor(DecorateMod.GetAreaId()) + orderFactor := orderCfg.GetOrderFactor(DecorateMod.GetAreaId()) for k, v := range OrderMod.GetOrderList() { if v.Type == order.Super_type { continue @@ -1141,108 +1146,98 @@ func (player *Player) InitOrderItem() { if len(v.Items) != 0 { continue } - Star := order.GetOrderStar(v.MergeId, ChessMod.GetStarEmitList()) - Star = int(float64(Star)*float64(OrderFactor)/1000) * 10 - v.Items = []*item.Item{{Id: item.ITEM_STAR_ID, Num: Star}} + star := order.GetOrderStar(v.MergeId, ChessMod.GetStarEmitList()) + star = int(float64(star)*float64(orderFactor)/1000) * 10 + v.Items = []*item.Item{{Id: item.ITEM_STAR_ID, Num: star}} OrderMod.OrderList[k] = v } } -func (player *Player) GetPetOrderReward(Star int, Items []*item.Item) []*item.Item { - HighNum := Star / 225 - if HighNum > 0 { - HighNum = min(HighNum, 3) - Items = append(Items, item.NewItem(item.ITEM_PLAYROOM_BOX_HIGH_ID, HighNum)) - Star -= HighNum * 225 +func (player *Player) GetPetOrderReward(star int, items []*item.Item) []*item.Item { + highNum := star / 225 + if highNum > 0 { + highNum = min(highNum, 3) + items = append(items, item.NewItem(item.ITEM_PLAYROOM_BOX_HIGH_ID, highNum)) + star -= highNum * 225 } - MidNum := Star / 150 - if MidNum > 0 { - MidNum = min(MidNum, 3) - Items = append(Items, item.NewItem(item.ITEM_PLAYROOM_BOX_MID_ID, MidNum)) - Star -= MidNum * 150 + midNum := star / 150 + if midNum > 0 { + midNum = min(midNum, 3) + items = append(items, item.NewItem(item.ITEM_PLAYROOM_BOX_MID_ID, midNum)) + star -= midNum * 150 } - if len(Items) >= 2 { - Items = append(Items, item.NewItem(item.ITEM_STAR_ID, Star)) - return Items + if len(items) >= 2 { + items = append(items, item.NewItem(item.ITEM_STAR_ID, star)) + return items } - LowNum := Star / 75 - if LowNum > 0 { - LowNum = min(LowNum, 3) - Items = append(Items, item.NewItem(item.ITEM_PLAYROOM_BOX_LOW_ID, LowNum)) - Star -= LowNum * 75 + lowNum := star / 75 + if lowNum > 0 { + lowNum = min(lowNum, 3) + items = append(items, item.NewItem(item.ITEM_PLAYROOM_BOX_LOW_ID, lowNum)) + star -= lowNum * 75 } - if Star > 0 { - Items = append(Items, item.NewItem(item.ITEM_STAR_ID, Star)) + if star > 0 { + items = append(items, item.NewItem(item.ITEM_STAR_ID, star)) } - return Items + return items } -func ExcludeCardStar(CardList []int) []int { - StarList := make([]int, 0, len(CardList)) - for _, v := range CardList { - Star := cardCfg.GetStarById(v) - if Star < 2 || Star > 4 { - continue - } - StarList = append(StarList, v) - } - return StarList -} - -func (p *Player) GetPlayroomGameReward(Type, SelectId int) []*item.Item { +// 获取playroom小游戏奖励 +func (p *Player) GetPlayroomGameReward(gType, selectId int) []*item.Item { PlayroomMod := p.PlayMod.getPlayroomMod() BaseMod := p.PlayMod.getBaseMod() - Level := BaseMod.GetLevel() - var Items []*item.Item - switch Type { + level := BaseMod.GetLevel() + var items []*item.Item + switch gType { case playroom.GAME_RESULT_LOSE: - Items = append(Items, item.NewItem(item.ITEM_STAR_ID, 20)) + items = append(items, item.NewItem(item.ITEM_STAR_ID, 20)) case playroom.GAME_RESULT_LOW: - Items = append(Items, item.NewItem(item.ITEM_STAR_ID, Level*2)) + items = append(items, item.NewItem(item.ITEM_STAR_ID, level*2)) case playroom.GAME_RESULT_MIDDLE: - Items = append(Items, item.NewItem(item.ITEM_STAR_ID, Level*3)) + items = append(items, item.NewItem(item.ITEM_STAR_ID, level*3)) default: - Items = PlayroomMod.SelectReward(SelectId) + items = PlayroomMod.SelectReward(selectId) } - return Items + return items } -func (p *Player) GetPetThiefReward(Target int) error { - PlayerData := G_GameLogicPtr.GetSimplePlayerByUid(Target) +// 获取宠物小偷奖励 +func (p *Player) GetPetThiefReward(target int) error { + PlayerData := G_GameLogicPtr.GetSimplePlayerByUid(target) if PlayerData == nil { - return fmt.Errorf("target %d not exist", Target) + return fmt.Errorf("target %d not exist", target) } - CardStar := limitedTimeEventCfg.GetThiefProb() + cardStar := limitedTimeEventCfg.GetThiefProb() starMap := make(map[int][]int) var cardList []int for _, v := range PlayerData.CardInfo { - Star := cardCfg.GetStarById(v) - starMap[Star] = append(starMap[Star], v) + star := cardCfg.GetStarById(v) + starMap[star] = append(starMap[star], v) } for { - if l, ok := starMap[CardStar]; ok { + if l, ok := starMap[cardStar]; ok { cardList = l break } - if CardStar <= 1 { + if cardStar <= 1 { break } - CardStar-- + cardStar-- } - ItemId := 0 + itemId := 0 if len(cardList) == 0 { - List := cardCfg.GetCardListByStar(0, 1, 0) - CardId := GoUtil.RandSlice(List) - ItemId = cardCfg.GetItemIdByCardId(CardId) - if ItemId == 0 { - log.Error("LimitEventPetTheif ItemId %d not exist", ItemId) - return fmt.Errorf("ItemId %d not exist", ItemId) + list := cardCfg.GetCardListByStar(0, 1, 0) + cardId := GoUtil.RandSlice(list) + itemId = cardCfg.GetItemIdByCardId(cardId) + if itemId == 0 { + log.Error("LimitEventPetTheif ItemId %d not exist", itemId) + return fmt.Errorf("ItemId %d not exist", itemId) } } else { - CardId := GoUtil.RandSlice(cardList) - ItemId = cardCfg.GetItemIdByCardId(CardId) + cardId := GoUtil.RandSlice(cardList) + itemId = cardCfg.GetItemIdByCardId(cardId) } - p.HandleItem([]*item.Item{{Id: ItemId, Num: 1}}, proto.ITEM_POP_LABEL_PetTheif.String()) + p.HandleItem([]*item.Item{{Id: itemId, Num: 1}}, proto.ITEM_POP_LABEL_PetTheif.String()) return nil } diff --git a/src/server/game/register_network_func.go b/src/server/game/register_network_func.go index 44ec8e1c..e276000f 100644 --- a/src/server/game/register_network_func.go +++ b/src/server/game/register_network_func.go @@ -3839,7 +3839,7 @@ func ReqPlayroomFlipReward(player *Player, buf []byte) error { return err } PlayroomMod := player.PlayMod.getPlayroomMod() - Items, Target, Result, err := PlayroomMod.GetFlipReward() + items, target, result, err := PlayroomMod.GetFlipReward() if err != nil { player.SendErrClienRes(&msg.ResPlayroomFlipReward{ Code: msg.RES_CODE_FAIL, @@ -3847,13 +3847,21 @@ func ReqPlayroomFlipReward(player *Player, buf []byte) error { }) return err } - Items1 := Items LimitedTimeEventMod := player.PlayMod.getLimitedTimeEventMod() - if LimitedTimeEventMod.CheckExist(limitedTimeEvent.EVENT_TYPE_PET_THIEF) && Result == playroom.FLIP_TYPE_GOLD { - player.GetPetThiefReward(Target) + if LimitedTimeEventMod.CheckExist(limitedTimeEvent.EVENT_TYPE_PET_THIEF) && result == playroom.FLIP_TYPE_GOLD { + player.GetPetThiefReward(target) + } + var broken bool + playerSimple := G_GameLogicPtr.GetSimplePlayerByUid(target) + if playerSimple != nil { + if len(items) > 0 { + if playerSimple.Star < items[0].Num { + broken = true + } + } } - err = player.HandleItem(Items1, msg.ITEM_POP_LABEL_PlayroomFlip.String()) + err = player.HandleItem(items, msg.ITEM_POP_LABEL_PlayroomFlip.String()) if err != nil { player.SendErrClienRes(&msg.ResPlayroomFlip{ Code: msg.RES_CODE_FAIL, @@ -3861,7 +3869,7 @@ func ReqPlayroomFlipReward(player *Player, buf []byte) error { }) return err } - if Result == playroom.FLIP_TYPE_GOLD { + if result == playroom.FLIP_TYPE_GOLD { FriendMod := player.PlayMod.getFriendMod() FriendMod.AddActLog(friend.ACT_LOG_TYPE_GET_VISIT_GAME_PRIZE, "") player.UpdateUserInfo() @@ -3869,11 +3877,11 @@ func ReqPlayroomFlipReward(player *Player, buf []byte) error { now := GoUtil.Now() FriendMgrSend(&MsqMod.Msg{ From: int(player.M_DwUin), - To: Target, + To: target, Type: MsqMod.HANDLE_TYPE_PLAYROOM_LOSE, SendT: now, End: now + sevendays, - Item: Items, + Item: items, Extra: GameResult{ T: playroom.GAME_TYPE_FILP, Emoji: int(req.EmojiId), @@ -3882,13 +3890,14 @@ func ReqPlayroomFlipReward(player *Player, buf []byte) error { player.TeLog("finish_mini_game", map[string]interface{}{ "mini_game_type": playroom.GAME_TYPE_FILP, "is_chip": false, - "item_list": Items, + "item_list": items, }) player.PlayerDecoSetLog("emoji", int(req.EmojiId), "playroom_flip_reward") player.PlayMod.save() player.PlayroomBackData() player.PushClientRes(&msg.ResPlayroomFlipReward{ - Code: msg.RES_CODE_SUCCESS, + Code: msg.RES_CODE_SUCCESS, + Broken: broken, }) return nil }