package game import ( "errors" "fmt" "math" "server/GoUtil" "server/conf" cardCfg "server/conf/card" collectCfg "server/conf/collect" decorateCfg "server/conf/decorate" emojiCfg "server/conf/emoji" handbookCfg "server/conf/handbook" limitedTimeEventCfg "server/conf/limitedTimeEvent" mergeDataCfg "server/conf/mergeData" miningCfg "server/conf/mining" playroomCfg "server/conf/playroom" "server/db" "server/game/internal" "server/game/mod/activity" "server/game/mod/card" "server/game/mod/collect" "server/game/mod/friend" "server/game/mod/item" "server/game/mod/limitedTimeEvent" MsqMod "server/game/mod/msg" "server/game/mod/order" "server/game/mod/piggyBank" "server/game/mod/playroom" "server/game/mod/quest" "server/msg" "strconv" "server/pkg/github.com/name5566/leaf/gate" "server/pkg/github.com/name5566/leaf/log" "google.golang.org/protobuf/proto" ) func ReqPlayerAsset(player *Player, buf []byte) error { player.PushClientRes(player.PlayerBaseMod.BackAsset()) return nil } // 请求玩家基础信息 func ReqPlayerBaseInfofunction(player *Player, buf []byte) error { // 消息的发送者 detail := &msg.ReqPlayerBaseInfo{} proto.Unmarshal(buf, detail) player.PlayerBaseMod.ResPlayerBaseInfo(player) return nil } func ReqPlayerBriefProfileDataFunc(player *Player, buf []byte) error { detail := &msg.ReqPlayerBriefProfileData{} proto.Unmarshal(buf, detail) Uid := int(detail.DwUin) PlayerSimpleData := G_GameLogicPtr.GetSimplePlayerByUid(Uid) if PlayerSimpleData == nil { log.Debug("玩家不存在, Uid:%d", Uid) player.SendErrClienRes(&msg.ResPlayerBriefProfileData{ DwUin: detail.DwUin, }) return errors.New("玩家不存在") } player.PushClientRes(&msg.ResPlayerBriefProfileData{ DwUin: detail.DwUin, ImageFrame: int32(PlayerSimpleData.Avatar), ImageIcon: int32(PlayerSimpleData.Face), DecorateCnt: int32(PlayerSimpleData.Decorate), PicURL: PlayerSimpleData.FaceBookPic, ActiveTime: int32(max(PlayerSimpleData.Loginout, PlayerSimpleData.Login)), NickName: PlayerSimpleData.Name, SetEmoji: GoUtil.MapIntToInt32(PlayerSimpleData.Emoji), }) return nil } // 移除广告 func ReqRemoveAdFunc(player *Player, buf []byte) error { player.PlayerBaseMod.ReqRemoveAd(player, buf) player.TeLog("remove_ad", map[string]interface{}{}) return nil } // 更新玩家物品 func UpdateBaseItemInfofunction(player *Player, buf []byte) error { detail := &msg.UpdateBaseItemInfo{} proto.Unmarshal(buf, detail) player.PlayerBaseMod.UpdateBaseItemInfo(detail) return nil } // 请求玩家棋盘信息 func ReqPlayerChessDataFunc(player *Player, buf []byte) error { detail := &msg.ReqPlayerChessData{} proto.Unmarshal(buf, detail) playerChessData := &PlayerChessData{} playerChessData.ResPlayerChessData(player) return nil } func ReqBindFacebookAccount(player *Player, buf []byte) error { player.PlayerBaseMod.ReqBindFacebookAccount(player, buf) return nil } func ReqUnBindFacebook(player *Player, buf []byte) error { player.PlayerBaseMod.ReqUnBindFacebook(player, buf) return nil } func ReqOnlyBindFacebook(player *Player, buf []byte) error { player.PlayerBaseMod.ReqOnlyBindFacebook(player, buf) return nil } func ReqSynGameData(player *Player, buf []byte) error { player.PlayerBaseMod.ReqSynGameData(player, buf) return nil } func RegSetEneryFunc(player *Player, buf []byte) error { req := &msg.ReqSetEnergyMul{} proto.Unmarshal(buf, req) MaxEnergyMul := player.GetPlayerBaseMod().GetMaxEnergyMul(player) BaseMod := player.PlayMod.getBaseMod() EnergyMul := BaseMod.GetEnergyMul() if int(req.EnergyMul) > EnergyMul && int(req.EnergyMul) > MaxEnergyMul { player.SendErrClienRes(&msg.ResSetEnergyMul{ ResultCode: msg.RES_CODE_FAIL, Msg: "能量倍数超过最大值", }) return errors.New("能量倍数超过最大值") } player.TeLog("mutil_merge_change", map[string]interface{}{ "change_from": math.Pow(2, float64(BaseMod.GetEnergyMul())), "change_to": math.Pow(2, float64(req.EnergyMul)), "is_auto": false, }) player.PlayMod.getBaseMod().SetEnergyMul(int(req.EnergyMul)) OrderMod := player.PlayMod.getOrderMod() Lv := player.GetPlayerBaseMod().GetLevel() Emit := player.PlayMod.getChessMod().GetOrderEmit() ChessList := player.PlayMod.getChessMod().GetUnlockChessList() OrderMod.ChangeEnergyMul(Lv, Emit, int(req.EnergyMul), ChessList) player.PushClientRes(OrderMod.BackData()) player.PushClientRes(player.PlayMod.getBaseMod().BackData()) return nil } // 领取图鉴奖励 func ReqGetHandbookReward(player *Player, buf []byte) error { req := &msg.ReqGetHandbookReward{} proto.Unmarshal(buf, req) err := player.PlayMod.getHandbookMod().GetHandbookReward(int(req.ChessId)) if err != nil { player.SendErrClienRes(&msg.ResGetHandbookReward{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } itemList := handbookCfg.GetHandbookCollectReward() err = player.HandleItem(itemList, msg.ITEM_POP_LABEL_HandbookReward.String()) if err != nil { player.SendErrClienRes(&msg.ResGetHandbookReward{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.PushClientRes(&msg.ResGetHandbookReward{ Code: msg.RES_CODE_SUCCESS, }) player.PushClientRes(player.PlayMod.getHandbookMod().BackData()) player.PlayMod.save() player.TeLog("collection_reward", map[string]interface{}{ "item_id": int(req.ChessId), "item_name": mergeDataCfg.GetNameById(int(req.ChessId)), }) return nil } func RegHandbookAllReward(player *Player, buf []byte) error { req := &msg.RegHandbookAllReward{} proto.Unmarshal(buf, req) AllChess := mergeDataCfg.GetAllChessBySeries(req.Type) Items, err := player.PlayMod.getHandbookMod().CollectItem(req.Type, AllChess) if err != nil { player.SendErrClienRes(&msg.ResHandbookAllReward{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } err = player.HandleItem(Items, msg.ITEM_POP_LABEL_HandbookAllReward.String()) if err != nil { player.SendErrClienRes(&msg.ResHandbookAllReward{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.PushClientRes(&msg.ResHandbookAllReward{ Code: msg.RES_CODE_SUCCESS, }) NotifyAllFriend(player, &MsqMod.Msg{ Type: MsqMod.HANDLE_TYPE_HANDBOOK_COLLECTION, From: int(player.M_DwUin), SendT: GoUtil.Now(), Extra: MsqMod.HandbookMsg{ Type: req.Type, }, }) player.TeLog("collection_like", map[string]interface{}{ "collection_type": req.Type, "collection_reward": Items, }) player.PushClientRes(player.PlayMod.getHandbookMod().BackData()) player.PlayMod.save() return nil } // 领取订单奖励 func ReqRewardOrder(player *Player, buf []byte) error { req := &msg.ReqRewardOrder{} proto.Unmarshal(buf, req) OrderMod := player.PlayMod.getOrderMod() ChessMod := player.PlayMod.getChessMod() LimitedTimeEventMod := player.PlayMod.getLimitedTimeEventMod() Item, mergeList, OrderType, Star, err := OrderMod.RewardOrder(int(req.OrderId)) ActItem := GetActivityItem(player, GoUtil.Int32ToInt(req.ActType)) Item = item.Merge(Item, ActItem) if !OrderMod.CheckSuperOrder() { if LimitedTimeEventMod.RemoveSuperOrder() { player.PushClientRes(&msg.LimitEventNotify{ Id: limitedTimeEvent.EVENT_TYPE_SUPER_ORDER, Type: limitedTimeEvent.EVENT_NOTIFY_TYPE_DEL, }) } } if LimitedTimeEventMod.CheckExist(limitedTimeEvent.EVENT_TYPE_METEOR_SHOW) { //流星雨活动 AddItem := LimitedTimeEventMod.GetMeteorReward(mergeList) if len(AddItem) > 0 { player.TeLog("time_limited_event_action", map[string]interface{}{ "event_type": limitedTimeEventCfg.GetEventName(limitedTimeEvent.EVENT_TYPE_METEOR_SHOW), "item_list": AddItem, }) } Item = item.Merge(Item, AddItem) } if LimitedTimeEventMod.CheckExist(limitedTimeEvent.EVENT_TYPE_MONEY_CAT) { //招财猫活动 if OrderType != order.Super_type { AddItem := LimitedTimeEventMod.GetMoneyCatReward(mergeList) if len(AddItem) > 0 { player.TeLog("time_limited_event_action", map[string]interface{}{ "event_type": limitedTimeEventCfg.GetEventName(limitedTimeEvent.EVENT_TYPE_MONEY_CAT), "item_list": AddItem, }) } Item = item.Merge(Item, AddItem) } } if err != nil { player.SendErrClienRes(&msg.ResRewardOrder{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } err = ChessMod.FinishOrder(mergeList) if err != nil { player.SendErrClienRes(&msg.ResRewardOrder{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } err = player.HandleItem(Item, msg.ITEM_POP_LABEL_OrderReward.String()) if err != nil { player.SendErrClienRes(&msg.ResRewardOrder{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } if LimitedTimeEventMod.CheckExist(limitedTimeEvent.EVENT_TYPE_CHEST_RAIN) { //宝箱雨活动 ChestRainItems := LimitedTimeEventMod.GetChestReward(mergeList) player.args["ResItemPopId"] = req.OrderId err = player.HandleItem(ChestRainItems, msg.ITEM_POP_LABEL_LimitEventChestRain.String()) if err != nil { player.SendErrClienRes(&msg.ResRewardOrder{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } if len(ChestRainItems) > 0 { player.PushClientRes(&msg.ResChessRainReward{ Items: item.ItemToMsg(ChestRainItems), Id: 0, }) player.TeLog("time_limited_event_action", map[string]interface{}{ "event_type": limitedTimeEventCfg.GetEventName(limitedTimeEvent.EVENT_TYPE_CHEST_RAIN), "item_list": ChestRainItems, }) } } data := &PlayerChessData{} err = data.UpdateChessData(player, req.MChessData) if err != nil { player.SendErrClienRes(&msg.ResRewardOrder{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } // 每日任务 player.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_FINISHORDER}) player.TeLog("order_finish", map[string]interface{}{ "order_id": int(req.OrderId), "order_item_id": mergeList, "order_type": OrderType, "order_star_reward": Star, }) player.PetItemGetLog(Item, nil, "Order") EmitRetireTrigger2(player) Lv := player.GetPlayerBaseMod().GetLevel() EnergyMul := player.PlayMod.getBaseMod().GetEnergyMul() Emit := ChessMod.GetOrderEmit() TriggerSeedSource(player) //NewOrder := TriggerSeedOrder(player) // if NewOrder == nil || len(NewOrder.MergeId) == 0 { // OrderMod.CreateOrder(Lv, Emit, EnergyMul) // } else { // OrderMod.CreateOrderSeed(NewOrder) // } OrderMod.TriggerOrder(Lv, order.TRIGGER_TYPE_ORDER, Emit, EnergyMul) player.CreateNormalOrder() // 存钱罐增加钻石 PiggyBankMod := player.PlayMod.getPiggyBankMod() PiggyBankMod.Trigger() // 锦标赛增加积分 if player.GetPlayerBaseMod().GetLevel() >= 17 { ChampshipMod := player.PlayMod.getChampshipMod() ChampshipMod.AddScore(mergeList) player.HandleInChampshipRank() } FriendTreasureMod := player.PlayMod.getFriendTreasureMod() FriendTreasureMod.AddStar(Star / 20) player.PushClientRes(FriendTreasureMod.NotifyStar()) // 限时事件增加进度 LimitedTimeEventMod.AddProgress(player.GetPlayerBaseMod().GetLevel()) player.PlayMod.save() player.PushClientRes(PiggyBankMod.BackData()) player.PushClientRes(OrderMod.BackData()) BackChampship(player) player.PushClientRes(LimitedTimeEventMod.BackData()) player.PushClientRes(ChessMod.BackData()) player.PushClientRes(LimitedTimeEventMod.ProgressBackData()) player.PushClientRes(&msg.ResRewardOrder{ Code: msg.RES_CODE_SUCCESS, }) return nil } func ReqDelOrder(player *Player, buf []byte) error { req := &msg.ReqDelOrder{} proto.Unmarshal(buf, req) OrderMod := player.PlayMod.getOrderMod() DelOrder, err := OrderMod.DelOrder(int(req.OrderId)) if err != nil { player.SendErrClienRes(&msg.ResDelOrder{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.PushAndSendClienRes(&msg.ResDelOrder{ Code: msg.RES_CODE_SUCCESS, }) player.TeLog("order_delete", map[string]interface{}{ "order_id": int(req.OrderId), "order": DelOrder, }) player.PushClientRes(OrderMod.BackData()) return nil } // 场景装饰 func ReqDecorate(player *Player, buf []byte) error { req := &msg.ReqDecorate{} proto.Unmarshal(buf, req) DecorateMod := player.PlayMod.getDecorateMod() DecorateId := int(req.DecorateId) AreaId := int(req.AreaId) CostItem, PetExp := DecorateMod.GetDecorateCostItem(AreaId, DecorateId) err := player.HandleLoseItem(CostItem, msg.ITEM_POP_LABEL_DecorateCost.String()) // 扣除道具 if err != nil { player.SendErrClienRes(&msg.ResDecorate{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } AddItem, err := DecorateMod.Decorate(AreaId, DecorateId) // 装饰 if err != nil { player.SendErrClienRes(&msg.ResDecorate{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_DECORATE, A: []interface{}{1}}) EnergyItem := DecorateMod.GetDecorateAddEnergy(1) AddItem = item.Merge(AddItem, EnergyItem) err = player.HandleItem(AddItem, msg.ITEM_POP_LABEL_DecorateAdd.String()) // 增加道具 if err != nil { player.SendErrClienRes(&msg.ResDecorate{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } _, err = player.GetPlayerBaseMod().AddExp(player, 10, PetExp) if err != nil { player.SendErrClienRes(&msg.ResDecorate{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } if AddItem != nil { player.TeLog("scene_reward", map[string]interface{}{ "deco_step_id": fmt.Sprintf("%d_%d", DecorateMod.AreaId, DecorateMod.Progress), "item_list": AddItem, }) } if DecorateMod.GetAreaId() != AreaId { // 解锁上报 player.TeLog("plot_unlock", map[string]interface{}{ "plot_id": AreaId, }) } player.TeLog("finish_deco", map[string]interface{}{ "deco_step_id": fmt.Sprintf("%d_%d", AreaId, DecorateId), }) player.PlayMod.save() player.PushClientRes(DecorateMod.BackData()) player.PushClientRes(&msg.ResDecorate{ Code: msg.RES_CODE_SUCCESS, }) player.HandleInUserRank() BackUserInfo(player) player.UpdateUserInfo() return nil } // 场景装饰 func ReqDecorateAll(player *Player, buf []byte) error { req := &msg.ReqDecorateAll{} proto.Unmarshal(buf, req) DecorateMod := player.PlayMod.getDecorateMod() AreaId := DecorateMod.GetAreaId() UnLockLv := decorateCfg.GetOneKeyDecorateUnlockLv() if player.GetPlayerBaseMod().GetLevel() < UnLockLv { player.SendErrClienRes(&msg.ResDecorateAll{ Code: msg.RES_CODE_FAIL, Msg: fmt.Sprintf("等级不足%d级", UnLockLv), }) return errors.New("等级不足") } PlayerBaseMod := player.GetPlayerBaseMod() CostItem, AddItem, DecorateNum, DecorateList, Log, PetExp := DecorateMod.DecorateAll(PlayerBaseMod.GetStar()) err := player.HandleLoseItem(CostItem, msg.ITEM_POP_LABEL_DecorateCost.String()) // 扣除道具 if err != nil { player.SendErrClienRes(&msg.ResDecorateAll{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_DECORATE, A: []interface{}{DecorateNum}}) EnergyItem := DecorateMod.GetDecorateAddEnergy(DecorateNum) AddItem = item.Merge(AddItem, EnergyItem) err = player.HandleItem(AddItem, msg.ITEM_POP_LABEL_DecorateAdd.String()) // 增加道具 if err != nil { player.SendErrClienRes(&msg.ResDecorateAll{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } _, err = player.GetPlayerBaseMod().AddExp(player, 10*DecorateNum, PetExp) if err != nil { player.SendErrClienRes(&msg.ResDecorateAll{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } deco_step_id := []string{} for _, v := range DecorateList { deco_step_id = append(deco_step_id, fmt.Sprintf("%d_%d", AreaId, v)) } player.TeLog("one_click_decoration", map[string]interface{}{ "deco_step_id": fmt.Sprintf("%v", deco_step_id), }) if len(Log) > 0 { for _, v := range Log { player.TeLog("scene_reward", v.(map[string]interface{})) } } player.PlayMod.save() player.PushClientRes(DecorateMod.BackData()) player.PushClientRes(&msg.ResDecorate{ Code: msg.RES_CODE_SUCCESS, }) player.HandleInUserRank() BackUserInfo(player) player.UpdateUserInfo() return nil } func ReqDecorateReward(player *Player, buf []byte) error { // req := &msg.ReqDecorateReward{} // proto.Unmarshal(buf, req) // DecorateMod := player.PlayMod.getDecorateMod() // Item, err := DecorateMod.GetDecorateReward(int(req.AreaId)) // if err != nil { // player.SendErrClienRes(&msg.ResDecorateReward{ // Code: msg.RES_CODE_FAIL, // Msg: err.Error(), // }) // return err // } // err = player.HandleItem(Item, msg.ITEM_POP_LABEL_DecorateReward.String()) // if err != nil { // player.SendErrClienRes(&msg.ResDecorateReward{ // Code: msg.RES_CODE_FAIL, // Msg: err.Error(), // }) // return err // } // player.TeLog("scene_reward", map[string]interface{}{ // "deco_step_id": fmt.Sprintf("%d_%d", DecorateMod.AreaId, DecorateMod.Progress), // "item_list": Item, // }) // player.PushClientRes(&msg.ResDecorateReward{ // Code: msg.RES_CODE_SUCCESS, // }) // player.PushClientRes(DecorateMod.BackData()) // player.PlayMod.save() return nil } // -----------------------ChessApi---------------------- // 更新棋盘信息 func UpdatePlayerChessDataFunc(player *Player, buf []byte) error { data := &PlayerChessData{} err := data.UpdatePlayerChessData(player, buf) RedBackData(player) player.UpdateUserInfo() return err } // 从缓存中获取棋子 func ReqGetChessFromBuff(player *Player, buf []byte) error { req := &msg.ReqGetChessFromBuff{} proto.Unmarshal(buf, req) ChessMod := player.PlayMod.getChessMod() HandbookMod := player.PlayMod.getHandbookMod() OrderMod := player.PlayMod.getOrderMod() BaseMod := player.PlayMod.getBaseMod() ChessId := int(req.ChessId) err := ChessMod.GetChessFromBuff(ChessId) Update := HandbookMod.SetHandbook(ChessId) AddNewEmit := make([]int, 0) if Update { player.PushClientRes(HandbookMod.BackData()) AddNewEmit = append(AddNewEmit, ChessId) } if err != nil { player.SendErrClienRes(&msg.ResGetChessFromBuff{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } data := &PlayerChessData{} err = data.UpdateChessData(player, req.MChessData) if err != nil { player.SendErrClienRes(&msg.ResGetChessFromBuff{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.TeLog("ReqGetChessFromBuff", map[string]interface{}{ "chess_id": ChessId, }) Update = OrderMod.CreateExtraOrder([]int{ChessId}, AddNewEmit, ChessMod.GetUnlockChessList(), BaseMod.GetEnergyMul(), BaseMod.GetLevel()) if Update { player.PushClientRes(OrderMod.BackData()) } triggerComposeChess(player, ChessId, player.PlayMod.getBaseMod().EnergyMul, player.PlayMod.getChessMod().GetEmitList()) EmitRetireTrigger1(player) player.PlayMod.save() player.PushClientRes(ChessMod.BackData()) player.PushClientRes(&msg.ResGetChessFromBuff{ Code: msg.RES_CODE_SUCCESS, }) player.UpdateUserInfo() return nil } // 放置棋子进背包 func ReqPutPartInBag(player *Player, buf []byte) error { req := &msg.ReqPutPartInBag{} proto.Unmarshal(buf, req) ChessMod := player.PlayMod.getChessMod() err := ChessMod.PutPartInBag(int(req.ChessId)) if err != nil { player.SendErrClienRes(&msg.ResPutPartInBag{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } data := &PlayerChessData{} err = data.UpdateChessData(player, req.MChessData) if err != nil { player.SendErrClienRes(&msg.ResPutPartInBag{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.TeLog("ReqPutPartInBag", map[string]interface{}{ "chess_id": req.ChessId, }) player.PlayMod.save() player.PushClientRes(ChessMod.BackData()) player.PushClientRes(&msg.ResPutPartInBag{ Code: msg.RES_CODE_SUCCESS, }) player.UpdateUserInfo() return nil } // 放置棋子进背包 func ReqPutChessInBag(player *Player, buf []byte) error { req := &msg.ReqPutChessInBag{} proto.Unmarshal(buf, req) ChessMod := player.PlayMod.getChessMod() err := ChessMod.PutChessInBag(int(req.BagId), int(req.ChessId), int(req.EmitId)) if err != nil { player.SendErrClienRes(&msg.ResPutChessInBag{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } data := &PlayerChessData{} err = data.UpdateChessData(player, req.MChessData) if err != nil { player.SendErrClienRes(&msg.ResPutChessInBag{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.TeLog("ReqPutChessInBag", map[string]interface{}{ "chess_id": req.ChessId, "bag_id": req.BagId, "emit_id": req.EmitId, }) player.PlayMod.save() player.PushClientRes(ChessMod.BackData()) player.PushClientRes(&msg.ResPutChessInBag{ Code: msg.RES_CODE_SUCCESS, }) player.UpdateUserInfo() return nil } func ReqTakeChessOutBag(player *Player, buf []byte) error { req := &msg.ReqTakeChessOutBag{} proto.Unmarshal(buf, req) ChessMod := player.PlayMod.getChessMod() ChessId, err := ChessMod.TakeChessOutBag(int(req.BagId)) if err != nil { player.SendErrClienRes(&msg.ResTakeChessOutBag{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } data := &PlayerChessData{} err = data.UpdateChessData(player, req.MChessData) if err != nil { player.SendErrClienRes(&msg.ResTakeChessOutBag{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } OrderMod := player.PlayMod.getOrderMod() BaseMod := player.PlayMod.getBaseMod() Update := OrderMod.CreateExtraOrder([]int{ChessId}, nil, ChessMod.GetUnlockChessList(), BaseMod.GetEnergyMul(), BaseMod.GetLevel()) if Update { player.PushClientRes(OrderMod.BackData()) } player.TeLog("ReqTakeChessOutBag", map[string]interface{}{ "bag_id": req.BagId, "chess_id": ChessId, }) player.PlayMod.save() player.PushClientRes(ChessMod.BackData()) player.PushClientRes(&msg.ResTakeChessOutBag{ Code: msg.RES_CODE_SUCCESS, }) player.UpdateUserInfo() return nil } func ReqBuyChessBagGrid(player *Player, buf []byte) error { req := &msg.ReqBuyChessBagGrid{} proto.Unmarshal(buf, req) ChessMod := player.PlayMod.getChessMod() CostItem := ChessMod.GetBuyChessBagGridCost() err := player.HandleItem(CostItem, msg.ITEM_POP_LABEL_BuyChessBagGrid.String()) if err != nil { player.SendErrClienRes(&msg.ResBuyChessBagGrid{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } err = ChessMod.BuyChessBagGrid() if err != nil { player.SendErrClienRes(&msg.ResBuyChessBagGrid{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.PlayMod.save() player.PushClientRes(ChessMod.BackData()) player.PushClientRes(&msg.ResBuyChessBagGrid{ Code: msg.RES_CODE_SUCCESS, }) if len(CostItem) > 0 { player.TeLog("warehouse_unlock", map[string]interface{}{ "unlock_type": "diamond", "unlock_cost": CostItem[0].Num, }) } return nil } func ReqSeparateChess(player *Player, buf []byte) error { req := &msg.ReqSeparateChess{} proto.Unmarshal(buf, req) ChessMod := player.PlayMod.getChessMod() NewChess, err := ChessMod.SeparateChess(int(req.ChessId)) if err != nil { player.SendErrClienRes(&msg.ResSeparateChess{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } data := &PlayerChessData{} err = data.UpdateChessData(player, req.MChessData) if err != nil { player.SendErrClienRes(&msg.ResSeparateChess{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.TeLog("ReqSeparateChess", map[string]interface{}{ "chess_id": req.ChessId, "new_chess": NewChess, }) player.PlayMod.save() player.PushClientRes(ChessMod.BackData()) player.PushClientRes(&msg.ResSeparateChess{ Code: msg.RES_CODE_SUCCESS, }) triggerComposeChess(player, NewChess, player.PlayMod.getBaseMod().EnergyMul, player.PlayMod.getChessMod().GetEmitList()) triggerComposeChess(player, NewChess, player.PlayMod.getBaseMod().EnergyMul, player.PlayMod.getChessMod().GetEmitList()) player.TeLog("scissors_use", map[string]interface{}{ "scissors_item_id": int(req.ChessId), }) player.UpdateUserInfo() return nil } func ReqUpgradeChess(player *Player, buf []byte) error { req := &msg.ReqUpgradeChess{} proto.Unmarshal(buf, req) ChessMod := player.PlayMod.getChessMod() NewChess, err := ChessMod.UpgradeChess(int(req.ChessId)) if err != nil { player.SendErrClienRes(&msg.ResUpgradeChess{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } data := &PlayerChessData{} err = data.UpdateChessData(player, req.MChessData) if err != nil { player.SendErrClienRes(&msg.ResUpgradeChess{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.TeLog("ReqUpgradeChess", map[string]interface{}{ "chess_id": req.ChessId, "new_chess": NewChess, }) Handbook := player.PlayMod.getHandbookMod() Handbook.SetHandbook(NewChess) triggerComposeChess(player, NewChess, player.PlayMod.getBaseMod().EnergyMul, player.PlayMod.getChessMod().GetEmitList()) player.PlayMod.save() player.PushClientRes(ChessMod.BackData()) player.PushClientRes(&msg.ResUpgradeChess{ Code: msg.RES_CODE_SUCCESS, }) player.PushClientRes(Handbook.BackData()) player.UpdateUserInfo() return nil } // 棋子转换 func ReqChessEx(player *Player, buf []byte) error { req := &msg.ReqChessEx{} proto.Unmarshal(buf, req) ChessMod := player.PlayMod.getChessMod() if req.CostDia < 0 { var itemList []*item.Item item := item.NewItem(item.ITEM_DIAMOND_ID, int(req.CostDia)) itemList = append(itemList, item) err := player.HandleItem(itemList, msg.ITEM_POP_LABEL_ChessEx.String()) if err != nil { player.SendErrClienRes(&msg.ResChessEx{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_BUBBLE, A: []interface{}{}}) } err := ChessMod.ExChess(int(req.OldChessId), int(req.NewChessId)) if err != nil { player.SendErrClienRes(&msg.ResChessEx{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } HandbookMod := player.PlayMod.getHandbookMod() HandbookMod.SetHandbook(int(req.NewChessId)) data := &PlayerChessData{} err = data.UpdateChessData(player, req.MChessData) if err != nil { player.SendErrClienRes(&msg.ResChessEx{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } // 限时事件气泡 幸运猫 if req.Type == msg.CHESS_EX_TYPE_CHESS_EX_EVENT { LimitedTimeEventMod := player.PlayMod.getLimitedTimeEventMod() err := LimitedTimeEventMod.LuckyCat(int(req.NewChessId)) if err != nil { player.SendErrClienRes(&msg.ResChessEx{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.TeLog("LimitEventLuckyCat", map[string]interface{}{ "req": int(req.NewChessId), }) } // 限时事件 小学徒 if req.Type == msg.CHESS_EX_TYPE_CHESS_EX_EVENT_LITTLE_APPRENTICE { LimitedTimeEventMod := player.PlayMod.getLimitedTimeEventMod() if LimitedTimeEventMod.CheckExist(limitedTimeEvent.EVENT_TYPE_LITTLE_APPRENTICE) { player.SendErrClienRes(&msg.ResChessEx{ Code: msg.RES_CODE_FAIL, Msg: "小学徒活动已结束", }) return err } player.TeLog("LimitEventLittleApprentice", map[string]interface{}{ "req": int(req.NewChessId), "star": req.CostStar, }) } player.TeLog("ReqChessEx", map[string]interface{}{ "old_chess_id": int(req.OldChessId), "new_chess_id": int(req.NewChessId), "cost_dia": req.CostDia, "cost_star": req.CostStar, }) player.PlayMod.save() player.PushClientRes(ChessMod.BackData()) player.PushClientRes(&msg.ResChessEx{ Code: msg.RES_CODE_SUCCESS, }) return nil } func ReqSourceChest(player *Player, buf []byte) error { req := &msg.ReqSourceChest{} proto.Unmarshal(buf, req) ChessMod := player.PlayMod.getChessMod() ChestId := int(req.ChestId) Items, err := ChessMod.SourceChest(ChestId) if err != nil { player.SendErrClienRes(&msg.ResSourceChest{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } err = player.HandleItem(Items, msg.ITEM_POP_LABEL_SourceChest.String()) if err != nil { player.SendErrClienRes(&msg.ResSourceChest{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } data := &PlayerChessData{} err = data.UpdateChessData(player, req.MChessData) if err != nil { player.SendErrClienRes(&msg.ResSourceChest{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.PlayMod.save() player.TeLog("ReqSourceChest", map[string]interface{}{ "chest_id": ChestId, "item_list": Items, }) player.PushClientRes(ChessMod.BackData()) player.PushClientRes(&msg.ResSourceChest{ Code: msg.RES_CODE_SUCCESS, }) player.UpdateUserInfo() return nil } // ---------------------CardApi---------------------- func ReqCardInfo(player *Player, buf []byte) error { CardMod := player.PlayMod.getCardMod() player.PushClientRes(CardMod.BackData()) return nil } func ReqCardSeasonFirstReward(player *Player, buf []byte) error { req := &msg.ReqCardSeasonFirstReward{} proto.Unmarshal(buf, req) CardMod := player.PlayMod.getCardMod() itemList, err := CardMod.SeasonFirstReward() if err != nil { player.SendErrClienRes(&msg.ResCardSeasonFirstReward{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } err = player.HandleItem(itemList, msg.ITEM_POP_LABEL_CardSeasonFirstReward.String()) if err != nil { player.SendErrClienRes(&msg.ResCardSeasonFirstReward{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.TeLog("ReqCardSeasonFirstReward", map[string]interface{}{ "season_id": CardMod.EndTime, "item_list": itemList, }) player.PlayMod.save() player.PushClientRes(&msg.ResCardSeasonFirstReward{ Code: msg.RES_CODE_SUCCESS, }) return nil } // 领取卡牌系列收集奖励 func ReqCardCollectReward(player *Player, buf []byte) error { req := &msg.ReqCardCollectReward{} proto.Unmarshal(buf, req) CardMod := player.PlayMod.getCardMod() itemList, chess, err := CardMod.GetCollectReward(int(req.Color)) if err != nil { player.SendErrClienRes(&msg.ResCardCollectReward{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } err = player.HandleItem(itemList, msg.ITEM_POP_LABEL_CardCollectReward.String()) if err != nil { player.SendErrClienRes(&msg.ResCardCollectReward{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } if chess != 0 { player.PlayMod.getChessMod().AddChessBuff(chess) player.PushClientRes(player.PlayMod.getOrderMod().BackData()) } player.PlayMod.save() player.PushClientRes(CardMod.NotifyCard()) player.PushClientRes(&msg.ResCardCollectReward{ Code: msg.RES_CODE_SUCCESS, }) player.TeLog("card_book", map[string]interface{}{ "season_id": CardMod.EndTime, "card_book_id": int(req.Color), "item_list": itemList, }) return nil } // 兑换星星奖励 func ReqExStarReward(player *Player, buf []byte) error { req := &msg.ReqExStarReward{} proto.Unmarshal(buf, req) CardMod := player.PlayMod.getCardMod() itemList, CostStar, err := CardMod.ExStarReward(int(req.Id)) if err != nil { player.SendErrClienRes(&msg.ResExStarReward{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } err = player.HandleItem(itemList, msg.ITEM_POP_LABEL_ExStarReward.String()) if err != nil { player.SendErrClienRes(&msg.ResExStarReward{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.TeLog("sticker_exchange", map[string]interface{}{ // "pack_id": int(req.Id), "sticker_cost": CostStar, "item_list": itemList, }) player.PlayMod.save() player.PushClientRes(&msg.ResExStarReward{ Code: msg.RES_CODE_SUCCESS, }) return nil } // 领取全收集奖励 func ReqAllCollectReward(player *Player, buf []byte) error { CardMod := player.PlayMod.getCardMod() itemList, itemList2, err := CardMod.AllCollectReward() if err != nil { player.SendErrClienRes(&msg.ResAllCollectReward{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } err = player.HandleItem(itemList, msg.ITEM_POP_LABEL_AllCollectReward.String()) if err != nil { player.SendErrClienRes(&msg.ResAllCollectReward{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } err = player.HandleItem(itemList2, msg.ITEM_POP_LABEL_AllCollectRewardHB.String()) if err != nil { player.SendErrClienRes(&msg.ResAllCollectReward{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.PlayMod.save() player.TeLog("ReqAllCollectReward", map[string]interface{}{ "item_list": itemList, "item_list2": itemList2, }) player.PushClientRes(CardMod.BackData()) player.PushClientRes(&msg.ResAllCollectReward{ Code: msg.RES_CODE_SUCCESS, }) return nil } // ---------------------GuildApi---------------------- func ReqGuideReward(player *Player, buf []byte) error { req := &msg.ReqGuideReward{} proto.Unmarshal(buf, req) GuideMod := player.PlayMod.getGuideMod() itemList, err := GuideMod.GetReward(int(req.Id)) if err != nil { player.SendErrClienRes(&msg.ResGuideReward{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.args["ResItemPopId"] = int(req.Id) err = player.HandleItem(itemList, msg.ITEM_POP_LABEL_GuideReward.String()) if err != nil { player.SendErrClienRes(&msg.ResGuideReward{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.TeLog("ReqGuideReward", map[string]interface{}{ "guide_id": int(req.Id), "item_list": itemList, }) player.PlayMod.save() player.PushClientRes(GuideMod.BackData()) player.PushClientRes(&msg.ResGuideReward{ Code: msg.RES_CODE_SUCCESS, }) return nil } // -----------------dailyTaskApi--------------------- func ReqGetDailyTaskReward(player *Player, buf []byte) error { req := &msg.ReqGetDailyTaskReward{} proto.Unmarshal(buf, req) DailyTaskMod := player.PlayMod.getDailyTaskMod() itemList, err := DailyTaskMod.GetDailyReward(int(req.Id)) if err != nil { player.SendErrClienRes(&msg.ResGetDailyTaskReward{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.args["ResItemPopId"] = int(req.Id) err = player.HandleItem(itemList, msg.ITEM_POP_LABEL_DailyTaskReward.String()) if err != nil { player.SendErrClienRes(&msg.ResGetDailyTaskReward{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.PlayMod.save() player.PushClientRes(DailyTaskMod.BackData()) player.PushClientRes(&msg.ResGetDailyTaskReward{ Code: msg.RES_CODE_SUCCESS, }) player.TeLog("daily_task", map[string]interface{}{ "task_id": int(req.Id), "item_list": itemList, "task_type": "daily", "task_score_reward": 0, }) return nil } func ReqGetDailyWeekReward(player *Player, buf []byte) error { req := &msg.ReqGetDailyWeekReward{} proto.Unmarshal(buf, req) DailyTaskMod := player.PlayMod.getDailyTaskMod() itemList, err := DailyTaskMod.GetWeekReward(int(req.Id)) if err != nil { player.SendErrClienRes(&msg.ResGetDailyWeekReward{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.args["ResItemPopId"] = int(req.Id) err = player.HandleItem(itemList, msg.ITEM_POP_LABEL_DailyWeekReward.String()) if err != nil { player.SendErrClienRes(&msg.ResGetDailyWeekReward{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.TeLog("ReqGetDailyWeekReward", map[string]interface{}{ "task_id": int(req.Id), "item_list": itemList, "task_type": "week", "task_score_reward": 0, }) player.PlayMod.save() player.PushClientRes(DailyTaskMod.BackData()) player.PushClientRes(&msg.ResGetDailyWeekReward{ Code: msg.RES_CODE_SUCCESS, }) return nil } func ReqDailyUnlock(player *Player, buf []byte) error { req := &msg.ReqDailyUnlock{} proto.Unmarshal(buf, req) DailyTaskMod := player.PlayMod.getDailyTaskMod() DailyTaskMod.Unlock() player.PlayMod.save() player.PushClientRes(DailyTaskMod.BackData()) player.PushClientRes(&msg.ResDailyUnlock{ Code: msg.RES_CODE_SUCCESS, }) return nil } func ReqGetGuideTaskReward(player *Player, buf []byte) error { req := &msg.ReqGetGuideTaskReward{} proto.Unmarshal(buf, req) GuideTaskMod := player.PlayMod.getGuideTaskMod() itemList, err := GuideTaskMod.GetTaskReward(int(req.Id)) if err != nil { player.SendErrClienRes(&msg.ResGetGuideTaskReward{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.args["ResItemPopId"] = int(req.Id) err = player.HandleItem(itemList, msg.ITEM_POP_LABEL_GuideTaskReward.String()) if err != nil { player.SendErrClienRes(&msg.ResGetGuideTaskReward{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.TeLog("ReqGetGuideTaskReward", map[string]interface{}{ "task_id": int(req.Id), "item_list": itemList, }) player.PlayMod.save() player.PushClientRes(GuideTaskMod.BackData()) player.PushClientRes(&msg.ResGetGuideTaskReward{ Code: msg.RES_CODE_SUCCESS, Id: req.Id, }) return nil } func ReqGetGuideActiveReward(player *Player, buf []byte) error { req := &msg.ReqGetGuideActiveReward{} proto.Unmarshal(buf, req) GuideTaskMod := player.PlayMod.getGuideTaskMod() itemList, err := GuideTaskMod.GetActiveReward(int(req.Id)) if err != nil { player.SendErrClienRes(&msg.ResGetGuideActiveReward{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.args["ResItemPopId"] = int(req.Id) err = player.HandleItem(itemList, msg.ITEM_POP_LABEL_GuideActiveReward.String()) if err != nil { player.SendErrClienRes(&msg.ResGetGuideActiveReward{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.TeLog("ReqGetGuideActiveReward", map[string]interface{}{ "active_id": int(req.Id), "item_list": itemList, }) player.PlayMod.save() player.PushClientRes(GuideTaskMod.BackData()) player.PushClientRes(&msg.ResGetGuideActiveReward{ Code: msg.RES_CODE_SUCCESS, Id: req.Id, }) return nil } // 头像框 func ReqSetAvatar(player *Player, buf []byte) error { req := &msg.ReqSetAvatar{} proto.Unmarshal(buf, req) avatarMod := player.PlayMod.getAvatarMod() err := avatarMod.SetAvatar(int(req.Avatar)) if err != nil { player.SendErrClienRes(&msg.ResSetAvatar{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.PlayMod.save() player.PushClientRes(&msg.ResSetAvatar{ Code: msg.RES_CODE_SUCCESS, }) BackUserInfo(player) player.UpdateUserInfo() b := false if req.Avatar == 0 { b = true } player.TeLog("avatar_set", map[string]interface{}{ "avatar_id": req.Avatar, "is_platform": b, }) player.PlayerDecoSetLog("avatar", int(req.Avatar), "") return nil } // 头像 func ReqSetFace(player *Player, buf []byte) error { req := &msg.ReqSetFace{} proto.Unmarshal(buf, req) FaceMod := player.PlayMod.getFaceMod() err := FaceMod.SetFace(int(req.Face)) if err != nil { player.SendErrClienRes(&msg.ResSetFace{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.PlayMod.save() player.PushClientRes(&msg.ResSetFace{ Code: msg.RES_CODE_SUCCESS, }) player.TeLog("face_set", map[string]interface{}{ "face_id": int(req.Face), }) player.PlayerDecoSetLog("face", int(req.Face), "") BackUserInfo(player) player.UpdateUserInfo() return nil } // 购买能量 func ReqBuyEnergy(player *Player, buf []byte) error { req := &msg.ReqBuyEnergy{} proto.Unmarshal(buf, req) BaseMod := player.PlayMod.getBaseMod() Item, Energy, Diamond := BaseMod.BuyEnergy(int(req.Energy)) err := player.HandleItem(Item, msg.ITEM_POP_LABEL_BuyEnergy.String()) if err != nil { player.SendErrClienRes(&msg.ResBuyEnergy{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.PlayMod.save() player.PushClientRes(BaseMod.BackData()) player.PushClientRes(&msg.ResBuyEnergy{ Code: msg.RES_CODE_SUCCESS, }) player.TeLog("buy_energy_diamond", map[string]interface{}{ "diamond_cost": Diamond, "energy_num": Energy, }) return nil } func ReqGetEnergyByAD(player *Player, buf []byte) error { BaseMod := player.PlayMod.getBaseMod() Item, err := BaseMod.GetEnergyByAD() if err != nil { player.SendErrClienRes(&msg.ResGetEnergyByAD{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } err = player.HandleItem(Item, msg.ITEM_POP_LABEL_GetEnergyByAD.String()) if err != nil { player.SendErrClienRes(&msg.ResGetEnergyByAD{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.TeLog("ReqGetEnergyByAD", map[string]interface{}{ "item_list": Item, }) player.PlayMod.save() player.PushClientRes(BaseMod.BackData()) player.PushClientRes(&msg.ResGetEnergyByAD{ Code: msg.RES_CODE_SUCCESS, }) return nil } // 领取七日签到奖励 func ReqGetSevenLoginReward(player *Player, buf []byte) error { req := &msg.ReqGetSevenLoginReward{} proto.Unmarshal(buf, req) SevenLoginMod := player.PlayMod.getSevenLoginMod() itemList, err := SevenLoginMod.GetReward(int(req.Id)) if err != nil { player.SendErrClienRes(&msg.ResGetSevenLoginReward{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.args["ResItemPopId"] = int(req.Id) err = player.HandleItem(itemList, msg.ITEM_POP_LABEL_SevenLoginRewardLabel.String()) if err != nil { player.SendErrClienRes(&msg.ResGetSevenLoginReward{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.PlayMod.save() player.PushClientRes(SevenLoginMod.BackData()) player.PushClientRes(&msg.ResGetSevenLoginReward{ Code: msg.RES_CODE_SUCCESS, }) player.TeLog("weekly_gift", map[string]interface{}{ "reward_type": "week", "reward_step": int(req.Id), "item_list": itemList, }) return nil } // 领取月进度奖励 func ReqGetMonthLoginReward(player *Player, buf []byte) error { req := &msg.ReqGetMonthLoginReward{} proto.Unmarshal(buf, req) SevenLoginMod := player.PlayMod.getSevenLoginMod() itemList, err := SevenLoginMod.GetMonthReward(int(req.Id)) if err != nil { player.SendErrClienRes(&msg.ResGetMonthLoginReward{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.args["ResItemPopId"] = int(req.Id) err = player.HandleItem(itemList, msg.ITEM_POP_LABEL_MonthLoginReward.String()) if err != nil { player.SendErrClienRes(&msg.ResGetMonthLoginReward{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.TeLog("ReqGetMonthLoginReward", map[string]interface{}{ "reward_type": "month", "reward_step": int(req.Id), "item_list": itemList, }) player.PlayMod.save() player.PushClientRes(SevenLoginMod.BackData()) player.PushClientRes(&msg.ResGetMonthLoginReward{ Code: msg.RES_CODE_SUCCESS, }) return nil } func ReqFastProduceInfo(player *Player, buf []byte) error { LimitedTimeEventMod := player.PlayMod.getLimitedTimeEventMod() EndTime, Times := LimitedTimeEventMod.GetFastProduceInfo() player.PushClientRes(&msg.ResFastProduceInfo{ EndTime: EndTime, Num: int32(Times), }) return nil } // 连击快手奖励 func ReqFastProduceReward(player *Player, buf []byte) error { req := &msg.ReqFastProduceReward{} proto.Unmarshal(buf, req) LimitedTimeEventMod := player.PlayMod.getLimitedTimeEventMod() itemList, EndTime, Times, err := LimitedTimeEventMod.GetFastProduceReward(int(req.Energy)) if err != nil { player.SendErrClienRes(&msg.ResFastProduceReward{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } err = player.HandleItem(itemList, msg.ITEM_POP_LABEL_FastProduceReward.String()) if err != nil { player.SendErrClienRes(&msg.ResFastProduceReward{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.PlayMod.save() player.TeLog("ReqFastProduceReward", map[string]interface{}{ "energy": int(req.Energy), "item_list": itemList, "end_time": EndTime, "times": Times, }) player.PushClientRes(LimitedTimeEventMod.BackData()) player.PushClientRes(&msg.ResFastProduceReward{ Code: msg.RES_CODE_SUCCESS, EndTime: EndTime, Num: int32(Times), }) return nil } func ReqLimitSenceReward(player *Player, buf []byte) error { limitedTimeEventMod := player.PlayMod.getLimitedTimeEventMod() if !limitedTimeEventMod.CheckExist(limitedTimeEvent.EVENT_TYPE_SENCE_DASH) { // 场景冲刺奖励 player.SendErrClienRes(&msg.ResLimitSenceReward{ Code: msg.RES_CODE_FAIL, Msg: "not exist", }) return fmt.Errorf("not exist") } Id, Items := limitedTimeEventMod.GetSceneDashReward() player.args["ResItemPopId"] = Id err := player.HandleItem(Items, msg.ITEM_POP_LABEL_LimitSenceReward.String()) if err != nil { player.SendErrClienRes(&msg.ResLimitSenceReward{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.TeLog("ReqLimitSenceReward", map[string]interface{}{ "event_type": limitedTimeEvent.EVENT_TYPE_SENCE_DASH, "item_list": Items, }) player.PlayMod.save() player.PushClientRes(&msg.ResLimitSenceReward{ Code: msg.RES_CODE_SUCCESS, }) return nil } func ReqGetGoldCard(player *Player, buf []byte) error { data := G_GameLogicPtr.VarMgr.GetVar(VAR_GOLD_CARD) if data == nil { player.SendErrClienRes(&msg.ResGetGoldCard{ Four: 0, Five: 0, }) return fmt.Errorf("not exist") } gold := data.(*VarGoldCard) player.PushClientRes(&msg.ResGetGoldCard{ Four: int32(gold.Four), Five: int32(gold.Five), }) return nil } // 搜索用户 func ReqSearchPlayer(player *Player, buf []byte) error { req := &msg.ReqSearchPlayer{} proto.Unmarshal(buf, req) Uid, err := strconv.Atoi(req.Uid) list := make([]*msg.ResPlayerSimple, 0) if err == nil { SearchPlayer := G_GameLogicPtr.GetResSimplePlayerByUid(Uid) if SearchPlayer != nil && SearchPlayer.Level != 0 { list = append(list, SearchPlayer) } } data, err := db.SearchPlayer(req.Uid) if err != nil { player.SendErrClienRes(&msg.ResSearchPlayer{ Code: 0, }) } for _, v := range data { if player.M_DwUin == v.DwUin { continue } SearchPlayer := G_GameLogicPtr.GetResSimplePlayerByUid(int(v.DwUin)) list = append(list, SearchPlayer) } // list 列表去重 l := make(map[int]*msg.ResPlayerSimple) for _, v := range list { if _, ok := l[int(v.Uid)]; !ok { l[int(v.Uid)] = v } } l2 := make([]*msg.ResPlayerSimple, 0) for _, v := range l { l2 = append(l2, v) } player.PushClientRes(&msg.ResSearchPlayer{ List: l2, }) return nil } // 申请好友 func ReqApplyFriend(player *Player, buf []byte) error { req := &msg.ReqApplyFriend{} proto.Unmarshal(buf, req) Uid := int(req.Uid) FriendMod := player.PlayMod.getFriendMod() if Uid == int(player.M_DwUin) { player.SendErrClienRes(&msg.ResApplyFriend{ Code: msg.RES_CODE_FAIL, Msg: "cannot apply yourself", }) return fmt.Errorf("cannot apply yourself") } if FriendMod.CheckFriend(Uid) { player.SendErrClienRes(&msg.ResApplyFriend{ Code: msg.RES_CODE_FAIL, Msg: "already friend", }) return fmt.Errorf("already friend") } if FriendMod.AddSendApply(Uid) { player.SendErrClienRes(&msg.ResApplyFriend{ Code: msg.RES_CODE_FAIL, Msg: "already apply", }) return fmt.Errorf("already apply") } m := &MsqMod.Msg{ Type: MsqMod.HANDLE_TYPE_APPLY, From: int(player.M_DwUin), To: Uid, SendT: GoUtil.Now(), } FriendMgrSend(m) player.PushClientRes(&msg.ResApplyFriend{ Code: msg.RES_CODE_SUCCESS, Uid: req.Uid, }) PlayroomMod := player.PlayMod.getPlayroomMod() BaseMod := player.PlayMod.getBaseMod() PlayroomMod.AddRoomPointInvite(BaseMod.GetLevel()) PlayroomBackData(player) player.TeLog("friend_add", map[string]interface{}{ "player_id": Uid, "add_type": "apply", }) return nil } // 同意申请 func ReqAgreeFriend(player *Player, buf []byte) error { req := &msg.ReqAgreeFriend{} proto.Unmarshal(buf, req) Uid := int(req.Uid) FriendMod := player.PlayMod.getFriendMod() if !FriendMod.CheckApply(Uid) { player.SendErrClienRes(&msg.ResAgreeFriend{ Code: msg.RES_CODE_FAIL, Msg: "apply uid not exist", }) return fmt.Errorf("apply uid not exist") } m := &MsqMod.Msg{ Type: MsqMod.HADNLE_TYPE_AGREE, From: int(player.M_DwUin), To: Uid, SendT: GoUtil.Now(), } FriendMgrSend(m) FriendMod.AddFriend(Uid) player.PushClientRes(&msg.ResAgreeFriend{ Code: msg.RES_CODE_SUCCESS, Uid: req.Uid, Player: G_GameLogicPtr.GetResSimplePlayerByUid(int(req.Uid)), }) player.TeLog("friend_add", map[string]interface{}{ "player_id": Uid, "add_type": "agree", }) player.AddLog(Uid, friend.LOG_TYPE_FRIEND_BECOME, "", GoUtil.Now()) FriendApplyBackData(player) PlayroomMod := player.PlayMod.getPlayroomMod() BaseMod := player.PlayMod.getBaseMod() PlayroomMod.AddRoomPointAdd(BaseMod.GetLevel()) PlayroomBackData(player) player.PlayMod.save() return nil } // 删除好友 func ReqDelFriend(player *Player, buf []byte) error { req := &msg.ReqDelFriend{} proto.Unmarshal(buf, req) Uid := int(req.Uid) m := &MsqMod.Msg{ Type: MsqMod.HANDLE_TYPE_DEL, From: int(player.M_DwUin), To: Uid, SendT: GoUtil.Now(), } FriendMgrSend(m) FriendMod := player.PlayMod.getFriendMod() FriendMod.DelFriend(Uid) player.PlayMod.save() player.PushClientRes(&msg.ResDelFriend{ Code: msg.RES_CODE_SUCCESS, Uid: req.Uid, }) player.AddLog(Uid, friend.LOG_TYPE_FRIEND_DELETE, "", GoUtil.Now()) FriendListBackData(player) player.TeLog("friend_delete", map[string]interface{}{ "player_id": Uid, }) return nil } // 拒绝申请 func ReqRefuseFriend(player *Player, buf []byte) error { req := &msg.ReqRefuseFriend{} proto.Unmarshal(buf, req) Uid := int(req.Uid) FriendMod := player.PlayMod.getFriendMod() FriendMod.RefuseApply(Uid) player.PlayMod.save() player.PushClientRes(&msg.ResRefuseFriend{ Code: msg.RES_CODE_SUCCESS, Uid: req.Uid, }) m := &MsqMod.Msg{ Type: MsqMod.HANDLE_TYPE_REFUSE, From: int(player.M_DwUin), To: Uid, SendT: GoUtil.Now(), } FriendMgrSend(m) FriendApplyBackData(player) return nil } // 向好友请求卡牌 func ReqCardGive(player *Player, buf []byte) error { req := &msg.ReqCardGive{} proto.Unmarshal(buf, req) CardMod := player.PlayMod.getCardMod() EndTime := GoUtil.Now() + 86400 FriendMod := player.PlayMod.getFriendMod() err := CardMod.RequestCard() if err != nil { player.SendErrClienRes(&msg.ResCardGive{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } if len(req.Uid) == 0 { // 请求的UID列表不为空 player.SendErrClienRes(&msg.ResCardGive{ Code: msg.RES_CODE_FAIL, Msg: "uid empty", }) return fmt.Errorf("uid empty") } CardId := int(req.CardId) if CardId == 0 { // 请求交换的卡牌ID不为空 player.SendErrClienRes(&msg.ResCardGive{ Code: msg.RES_CODE_FAIL, Msg: "card id empty", }) 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) if !FriendMod.CheckFriend(Uid) { player.SendErrClienRes(&msg.ResCardGive{ Code: msg.RES_CODE_FAIL, Msg: "not friend", }) return fmt.Errorf("not friend") } CardInfo := &card.CardInfo{ Id: Id, AUid: int(player.M_DwUin), BUid: Uid, CardId: CardId, StartTime: GoUtil.Now(), EndTime: EndTime, Type: card.TYPE_CARD_GIVE, Status: card.STATUS_CARD_GIVE_1, } player.AddLog(Uid, friend.LOG_TYPE_CARD_GIVE, strconv.Itoa(CardId), GoUtil.Now()) err = CardMod.AddRequestCard(CardInfo) // 添加请求卡牌 if err != nil { player.SendErrClienRes(&msg.ResCardGive{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } m := &MsqMod.Msg{ Type: MsqMod.HANDLE_TYPE_REQ_CARD, From: int(player.M_DwUin), To: Uid, SendT: GoUtil.Now(), End: EndTime, Extra: *CardInfo, } FriendMgrSend(m) } player.PushClientRes(&msg.ResCardGive{ Code: msg.RES_CODE_SUCCESS, }) player.PushClientRes(CardMod.NotifyCard()) player.PushClientRes(CardMod.NotifyTimes()) player.PlayMod.save() player.TeLog("card_require", map[string]interface{}{ "card_id": CardId, "player_id_target": req.Uid, }) return nil } // 同意卡牌请求 func ReqAgreeCardGive(player *Player, buf []byte) error { req := &msg.ReqAgreeCardGive{} proto.Unmarshal(buf, req) FriendMod := player.PlayMod.getFriendMod() CardInfo := FriendMod.GetCardInfo(req.Id) if CardInfo == nil { player.SendErrClienRes(&msg.ResAgreeCardGive{ Code: msg.RES_CODE_FAIL, Msg: "card apply not exist", }) return fmt.Errorf("card apply not exist") } CardMod := player.PlayMod.getCardMod() err := player.SubCard(CardInfo.CardId) if err != nil { player.SendErrClienRes(&msg.ResAgreeCardGive{ Code: msg.RES_CODE_FAIL, Msg: "card not exist", }) return fmt.Errorf("card not exist") } CardInfo.Status = card.STATUS_CARD_GIVE_2 CardInfo.EndTime = 0 m := &MsqMod.Msg{ Type: MsqMod.HANDLE_TYPE_AGREE_CARD, From: int(player.M_DwUin), To: CardInfo.AUid, SendT: GoUtil.Now(), Extra: *CardInfo, } FriendMgrSend(m) player.PushClientRes(CardMod.NotifyCard()) player.PushClientRes(CardMod.NotifyTimes()) player.PushClientRes(&msg.ResAgreeCardGive{ Code: msg.RES_CODE_SUCCESS, Id: req.Id, }) player.AddLog(CardInfo.AUid, friend.LOG_TYPE_CARD_GIVE_ACCEPT, strconv.Itoa(CardInfo.CardId), GoUtil.Now()) player.PlayMod.save() player.TeLog("card_require_reply", map[string]interface{}{ "card_id": CardInfo.CardId, "player_id_requirer": CardInfo.AUid, }) return nil } // 拒绝卡牌请求 func ReqRefuseCardGive(player *Player, buf []byte) error { req := &msg.ReqRefuseCardGive{} proto.Unmarshal(buf, req) FriendMod := player.PlayMod.getFriendMod() CardInfo := FriendMod.GetCardInfo(req.Id) if CardInfo == nil { player.SendErrClienRes(&msg.ResRefuseCardGive{ Code: msg.RES_CODE_FAIL, Msg: "card apply not exist", }) return fmt.Errorf("card apply not exist") } FriendMod.DelCardInfo(req.Id) player.PlayMod.save() player.PushClientRes(&msg.ResRefuseCardGive{ Code: msg.RES_CODE_SUCCESS, Id: req.Id, }) player.TeLog("ReqRefuseCardGive", map[string]interface{}{ "card_id": CardInfo.CardId, }) m := &MsqMod.Msg{ Type: MsqMod.HANDLE_TYPE_REG_CARD_REFUSE, From: int(player.M_DwUin), To: CardInfo.AUid, SendT: GoUtil.Now(), Extra: *CardInfo, } FriendMgrSend(m) return nil } // 赠送卡牌 func ReqCardSend(player *Player, buf []byte) error { req := &msg.ReqCardSend{} proto.Unmarshal(buf, req) CardMod := player.PlayMod.getCardMod() CardId := int(req.CardId) CardInfo, err := CardMod.SendCard(int(player.M_DwUin), int(req.Uid), CardId) if err != nil { player.SendErrClienRes(&msg.ResCardSend{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } CardInfo.Emoji = int(req.Emoji) m := &MsqMod.Msg{ Type: MsqMod.HANDLE_TYPE_SEND_CARD, From: int(player.M_DwUin), To: int(req.Uid), SendT: GoUtil.Now(), End: GoUtil.Now() + 86400, Extra: *CardInfo, } player.AddLog(int(req.Uid), friend.LOG_TYPE_CARD_SEND, strconv.Itoa(CardId), GoUtil.Now()) player.PushClientRes(&msg.ResCardSend{ Code: msg.RES_CODE_SUCCESS, }) player.TeLog("card_send", map[string]interface{}{ "card_id": CardId, "player_id_target": int(req.Uid), }) player.PlayerDecoSetLog("emoji", int(req.Emoji), "card_send") player.PushClientRes(CardMod.NotifyCard()) player.PlayMod.save() player.PushClientRes(CardMod.NotifyTimes()) FriendMgrSend(m) return nil } // 卡牌交换 func ReqCardExchange(player *Player, buf []byte) error { req := &msg.ReqCardExchange{} proto.Unmarshal(buf, req) CardMod := player.PlayMod.getCardMod() CardId := int(req.CardId) CardInfo, err := CardMod.ExchangeCard(int(player.M_DwUin), int(req.Uid), CardId) if err != nil { player.SendErrClienRes(&msg.ResCardExchange{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } CardInfo.Emoji = int(req.Emoji) m := &MsqMod.Msg{ Type: MsqMod.HANDLE_TYPE_EX_CARD, From: int(player.M_DwUin), To: int(req.Uid), SendT: GoUtil.Now(), End: GoUtil.Now() + 86400, Extra: *CardInfo, } player.AddLog(int(req.Uid), friend.LOG_TYPE_CARD_EX_SEND, fmt.Sprintf("%d", int(req.CardId)), GoUtil.Now()) player.PushClientRes(&msg.ResCardExchange{ Code: msg.RES_CODE_SUCCESS, }) player.PushClientRes(CardMod.NotifyCard()) player.PlayMod.save() player.PushClientRes(CardMod.NotifyTimes()) FriendMgrSend(m) player.TeLog("card_exchange", map[string]interface{}{ "card_id": CardId, "player_id_target": int(req.Uid), "is_gift": 0, }) return nil } // 选择卡牌进行交换 func ReqSelectCardExchange(player *Player, buf []byte) error { req := &msg.ReqSelectCardExchange{} proto.Unmarshal(buf, req) CardId := int(req.CardId) CardMod := player.PlayMod.getCardMod() FriendMod := player.PlayMod.getFriendMod() CardInfo := FriendMod.GetCardInfo(req.Id) if CardInfo == nil || CardInfo.EndTime < GoUtil.Now() { player.SendErrClienRes(&msg.ResSelectCardExchange{ Code: msg.RES_CODE_FAIL, Msg: "exchange time out", }) return fmt.Errorf("exchange time out") } if CardInfo.ExId != 0 { player.SendErrClienRes(&msg.ResSelectCardExchange{ Code: msg.RES_CODE_FAIL, Msg: "card already selected", }) return fmt.Errorf("card already selected") } CardInfo.ExId = CardId CardInfo.Status = card.STATUS_CARD_EX_2 if cardCfg.CheckCardIsGold(CardInfo.CardId) || cardCfg.CheckCardIsGold(CardInfo.ExId) { err := CardMod.SubGoldTimes() if err != nil { player.SendErrClienRes(&msg.ResSelectCardExchange{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } } FriendMod.DelCardInfo(req.Id) player.AddLog(CardInfo.AUid, friend.LOG_TYPE_CARD_SELECT_SEND, fmt.Sprintf("%d", CardInfo.ExId), GoUtil.Now()) err := player.SubCard(CardId) if err != nil { player.SendErrClienRes(&msg.ResSelectCardExchange{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.PlayMod.save() player.PushClientRes(CardMod.NotifyCard()) player.PushClientRes(&msg.ResSelectCardExchange{ Code: msg.RES_CODE_SUCCESS, Id: req.Id, }) player.PushClientRes(CardMod.NotifyCard()) m := &MsqMod.Msg{ Type: MsqMod.HANDLE_TYPE_SELECT_EX_CARD, From: int(player.M_DwUin), To: CardInfo.AUid, SendT: GoUtil.Now(), Extra: *CardInfo, } FriendMgrSend(m) player.TeLog("card_exchange_reply", map[string]interface{}{ "palyer_id_giver": CardInfo.AUid, "card_id_giver": CardInfo.CardId, "card_id_reply": CardInfo.ExId, }) return nil } // 同意卡牌交换 func ReqAgreeCardExchange(player *Player, buf []byte) error { req := &msg.ReqSelectCardExchange{} proto.Unmarshal(buf, req) CardMod := player.PlayMod.getCardMod() FriendMod := player.PlayMod.getFriendMod() CardInfo := FriendMod.GetCardInfo(req.Id) if CardInfo == nil || CardInfo.EndTime < GoUtil.Now() { player.SendErrClienRes(&msg.ResAgreeCardExchange{ Code: msg.RES_CODE_FAIL, Msg: "exchange time out", }) return fmt.Errorf("exchange time out") } player.AddCard(CardInfo.ExId) CardMod.DelExCard(CardInfo) FriendMod.DelCardInfo(req.Id) if cardCfg.CheckCardIsGold(CardInfo.CardId) || cardCfg.CheckCardIsGold(CardInfo.ExId) { err := CardMod.SubGoldTimes() if err != nil { player.SendErrClienRes(&msg.ResAgreeCardExchange{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } } player.AddLog(CardInfo.BUid, friend.LOG_TYPE_CARD_EX_SUCCESS_1, fmt.Sprintf("%d_%d", CardInfo.CardId, CardInfo.ExId), GoUtil.Now()) CardInfo.Status = card.STATUS_CARD_EX_3 CardInfo.EndTime = 0 player.PlayMod.save() player.PushClientRes(CardMod.NotifyCard()) player.PushClientRes(&msg.ResAgreeCardExchange{ Code: msg.RES_CODE_SUCCESS, Id: req.Id, Emoji: int32(CardInfo.Emoji), }) m := &MsqMod.Msg{ Type: MsqMod.HANDLE_TYPE_ARGREE_EX_CARD, From: int(player.M_DwUin), To: CardInfo.BUid, Extra: *CardInfo, SendT: GoUtil.Now(), } player.PushClientRes(CardMod.NotifyCard()) player.PushClientRes(CardMod.NotifyTimes()) FriendMgrSend(m) player.TeLog("card_exchange_finish", map[string]interface{}{ "player_id_giver": CardInfo.AUid, "card_id_giver": CardInfo.CardId, "card_id_reply": CardInfo.ExId, "player_id_reply": CardInfo.BUid, }) return nil } // 拒绝选择卡牌 func ReqRefuseCardSelect(player *Player, buf []byte) error { req := &msg.ReqRefuseCardSelect{} proto.Unmarshal(buf, req) FriendMod := player.PlayMod.getFriendMod() CardInfo := FriendMod.GetCardInfo(req.Id) if CardInfo == nil { player.SendErrClienRes(&msg.ResRefuseCardSelect{ Code: msg.RES_CODE_FAIL, Msg: "exchange time out", }) return fmt.Errorf("exchange time out") } if CardInfo.Status != 1 { player.SendErrClienRes(&msg.ResRefuseCardSelect{ Code: msg.RES_CODE_FAIL, Msg: "card is not select status", }) return fmt.Errorf("card is not select status") } FriendMod.DelCardInfo(req.Id) m := &MsqMod.Msg{ Type: MsqMod.HANDLE_TYPE_REFUSE_SELECT_CARD, From: int(player.M_DwUin), To: CardInfo.AUid, Extra: *CardInfo, SendT: GoUtil.Now(), } FriendMgrSend(m) player.PushClientRes(&msg.ResRefuseCardSelect{ Code: msg.RES_CODE_SUCCESS, Id: req.Id, }) player.PlayMod.save() return nil } // 拒绝进行交换 func ReqRefuseCardExchange(player *Player, buf []byte) error { req := &msg.ReqRefuseCardExchange{} proto.Unmarshal(buf, req) CardMod := player.PlayMod.getCardMod() FriendMod := player.PlayMod.getFriendMod() CardInfo := FriendMod.GetCardInfo(req.Id) if CardInfo == nil || CardInfo.EndTime < GoUtil.Now() { player.SendErrClienRes(&msg.ResRefuseCardExchange{ Code: msg.RES_CODE_FAIL, Msg: "exchange time out", }) return fmt.Errorf("exchange time out") } if CardInfo.Status != 2 { player.SendErrClienRes(&msg.ResRefuseCardExchange{ Code: msg.RES_CODE_FAIL, Msg: "card is not status 2", }) return fmt.Errorf("card is not status 2") } FriendMod.DelCardInfo(req.Id) player.AddCard(CardInfo.CardId) CardMod.DelExCard(CardInfo) CardMod.AddExTimes(CardInfo) player.PlayMod.save() player.PushClientRes(&msg.ResRefuseCardExchange{ Code: msg.RES_CODE_SUCCESS, Id: req.Id, }) m := &MsqMod.Msg{ Type: MsqMod.HANDLE_TYPE_REFUSE_EX_CARD, From: int(player.M_DwUin), To: CardInfo.BUid, Extra: *CardInfo, SendT: GoUtil.Now(), } player.PushClientRes(CardMod.NotifyCard()) player.PushClientRes(CardMod.NotifyTimes()) FriendMgrSend(m) return nil } // 领取好友卡牌 func ReqGetFriendCard(player *Player, buf []byte) error { req := &msg.ReqRefuseCardExchange{} proto.Unmarshal(buf, req) CardMod := player.PlayMod.getCardMod() FriendMod := player.PlayMod.getFriendMod() CardInfo := FriendMod.GetCardInfo(req.Id) if CardInfo == nil || CardInfo.EndTime != 0 { player.SendErrClienRes(&msg.ResGetFriendCard{ Code: msg.RES_CODE_FAIL, Msg: "exchange time out", }) return fmt.Errorf("exchange time out") } FriendMod.DelCardInfo(req.Id) player.AddCard(CardInfo.CardId) player.AddLog(CardInfo.AUid, friend.LOG_TYPE_CARD_SEND_ACCEPT, fmt.Sprintf("%d", CardInfo.CardId), GoUtil.Now()) player.PlayMod.save() player.PushClientRes(&msg.ResGetFriendCard{ Code: msg.RES_CODE_SUCCESS, Id: req.Id, CardId: int32(CardInfo.CardId), Emoji: int32(CardInfo.Emoji), }) player.PushClientRes(CardMod.NotifyCard()) return nil } // 请求玩家榜单 func ReqRank(player *Player, buf []byte) error { req := &msg.ReqRank{} proto.Unmarshal(buf, req) m := &MsqMod.Msg{ From: int(player.M_DwUin), Type: MsqMod.HANDLE_TYPE_RANK_INFO, Extra: RankMsg{RankType: int(req.Type)}, SendT: GoUtil.Now(), } RankInfo := G_GameLogicPtr.RankMgrCall(m).(*RankInfo) res := make(map[int32]*msg.ResPlayerSimple) for k, rank := range RankInfo.List { res[int32(k+1)] = G_GameLogicPtr.GetResSimplePlayerByUid(rank.Uid) } player.PushClientRes(&msg.ResRank{ Type: req.Type, RankList: res, MyRank: int32(RankInfo.MyRank), MyScore: float32(RankInfo.MyScore), }) return nil } // 请求竞标赛榜单 func ReqChampshipRank(player *Player, buf []byte) error { req := &msg.ReqRank{} proto.Unmarshal(buf, req) m := G_GameLogicPtr.ChampshipMgr.GetRankMsg(int(player.M_DwUin)) player.PushClientRes(m) return nil } func ReqChampshipPreRank(player *Player, buf []byte) error { req := &msg.ReqRank{} proto.Unmarshal(buf, req) m := G_GameLogicPtr.ChampshipMgr.GetPreRankMsg(int(player.M_DwUin)) player.PushClientRes(m) return nil } // 请求邮件列表 func ReqMailList(player *Player, buf []byte) error { MailMod := player.PlayMod.getMailMod() player.PushClientRes(MailMod.BackData()) return nil } // 读邮件 func ReqReadMail(player *Player, buf []byte) error { req := &msg.ReqReadMail{} proto.Unmarshal(buf, req) MailMod := player.PlayMod.getMailMod() err := MailMod.Read(int(req.Id)) if err != nil { player.SendErrClienRes(&msg.ResReadMail{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.PlayMod.save() player.PushClientRes(MailMod.NotifyMail(int(req.Id))) player.PushClientRes(&msg.ResReadMail{ Code: msg.RES_CODE_SUCCESS, Id: req.Id, }) return nil } // 领取邮件奖励 func ReqGetMailReward(player *Player, buf []byte) error { req := &msg.ReqGetMailReward{} proto.Unmarshal(buf, req) MailMod := player.PlayMod.getMailMod() itemList, err := MailMod.Reward(int(req.Id)) if err != nil { player.SendErrClienRes(&msg.ResGetMailReward{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } err = player.HandleItem(itemList, msg.ITEM_POP_LABEL_MailReward.String()) if err != nil { player.SendErrClienRes(&msg.ResGetMailReward{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.TeLog("mail_reward", map[string]interface{}{ "mail_id": req.Id, "item_list": itemList, }) player.PlayMod.save() player.PushClientRes(MailMod.NotifyMail(int(req.Id))) player.PushClientRes(&msg.ResGetMailReward{ Code: msg.RES_CODE_SUCCESS, Id: req.Id, }) return nil } // 删除邮件 func ReqDeleteMail(player *Player, buf []byte) error { req := &msg.ReqDeleteMail{} proto.Unmarshal(buf, req) MailMod := player.PlayMod.getMailMod() err := MailMod.Del(int(req.Id)) if err != nil { player.SendErrClienRes(&msg.ResDeleteMail{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.PlayMod.save() player.PushClientRes(MailMod.NotifyMail(int(req.Id))) player.PushClientRes(&msg.ResDeleteMail{ Code: msg.RES_CODE_SUCCESS, Id: req.Id, }) return nil } // 领取商店免费奖励 func ReqFreeShop(player *Player, buf []byte) error { ChargeMod := player.PlayMod.getChargeMod() Item, err := ChargeMod.FireFreeShop() if err != nil { player.SendErrClienRes(&msg.ResFreeShop{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } err = player.HandleItem(Item, msg.ITEM_POP_LABEL_FreeShop.String()) if err != nil { player.SendErrClienRes(&msg.ResFreeShop{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.PlayMod.save() player.PushClientRes(ChargeMod.BackData()) player.PushClientRes(&msg.ResFreeShop{ Code: msg.RES_CODE_SUCCESS, }) player.TeLog("gift_free", map[string]interface{}{ "gift_type": "store", "item_id": Item[0].Id, "num": Item[0].Num, }) return nil } // 购买棋子商店物品 func ReqBuyChessShop(player *Player, buf []byte) error { req := &msg.ReqBuyChessShop{} proto.Unmarshal(buf, req) ChargeMod := player.PlayMod.getChargeMod() LostItem, Item, _, err := ChargeMod.BuyChess(int(req.Id)) if err != nil { player.SendErrClienRes(&msg.ResBuyChessShop{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } err = player.HandleLoseItem(LostItem, "ChessShop") if err != nil { player.SendErrClienRes(&msg.ResBuyChessShop2{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } err = player.HandleItem(Item, msg.ITEM_POP_LABEL_ChessShop.String()) if err != nil { player.SendErrClienRes(&msg.ResBuyChessShop{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.TeLog("store_buy", map[string]interface{}{ "item_id": int(req.Id), "change_num": 1, "cost_type": "diamond", "cost_num": LostItem[0].Num, }) player.PlayMod.save() player.PushClientRes(ChargeMod.BackData()) player.PushClientRes(&msg.ResBuyChessShop{ Code: msg.RES_CODE_SUCCESS, }) player.TeLog("buy_product_diamond", map[string]interface{}{ "diamond_cost": LostItem[0].Num, "product_id": int(req.Id), "product_name": mergeDataCfg.GetNameById(int(req.Id)), }) return nil } // 购买棋子商店物品 func ReqBuyChessShop2(player *Player, buf []byte) error { req := &msg.ReqBuyChessShop2{} proto.Unmarshal(buf, req) ChargeMod := player.PlayMod.getChargeMod() LostItem, _, ChessId, err := ChargeMod.BuyChess(int(req.Id)) if err != nil { player.SendErrClienRes(&msg.ResBuyChessShop2{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } err = player.HandleLoseItem(LostItem, "ChessShop") if err != nil { player.SendErrClienRes(&msg.ResBuyChessShop2{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } ChessMod := player.PlayMod.getChessMod() err = ChessMod.AddChess(ChessId) if err != nil { player.SendErrClienRes(&msg.ResBuyChessShop2{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } data := &PlayerChessData{} err = data.UpdateChessData(player, req.MChessData) if err != nil { player.SendErrClienRes(&msg.ResBuyChessShop2{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.TeLog("store_buy", map[string]interface{}{ "item_id": int(req.Id), "change_num": 1, "cost_type": "diamond", "cost_num": LostItem[0].Num, }) player.PlayMod.save() player.PushClientRes(ChargeMod.BackData()) player.PushClientRes(&msg.ResBuyChessShop2{ Code: msg.RES_CODE_SUCCESS, }) player.TeLog("buy_product_diamond", map[string]interface{}{ "diamond_cost": LostItem[0].Num, "product_id": int(req.Id), "product_name": mergeDataCfg.GetNameById(int(req.Id)), }) return nil } // 刷新棋子商店 func ReqRefreshChessShop(player *Player, buf []byte) error { ChargeMod := player.PlayMod.getChargeMod() ChessMod := player.PlayMod.getChessMod() ChargeMod.InitChessShop(ChessMod.GetEmitList()) Cost := []*item.Item{item.NewItem(item.ITEM_DIAMOND_ID, -20)} err := player.HandleItem(Cost, msg.ITEM_POP_LABEL_RefreshChessShop.String()) if err != nil { player.SendErrClienRes(&msg.ResRefreshChessShop{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.PlayMod.save() player.PushClientRes(ChargeMod.BackData()) player.TeLog("refresh_store_diamond", map[string]interface{}{ "diamond_cost": 20, }) return nil } // 领取无尽礼包免费奖励 func ReqEndlessReward(player *Player, buf []byte) error { req := &msg.ReqEndlessReward{} proto.Unmarshal(buf, req) EndlessMod := player.PlayMod.getEndlessMod() BaseMod := player.PlayMod.getBaseMod() itemList, err := EndlessMod.GetReward(BaseMod.GetLevel()) if err != nil { player.SendErrClienRes(&msg.ResEndlessReward{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } err = player.HandleItem(itemList, msg.ITEM_POP_LABEL_EndlessReward.String()) if err != nil { player.SendErrClienRes(&msg.ResEndlessReward{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.PlayMod.save() player.PushClientRes(EndlessMod.BackData()) player.PushClientRes(&msg.ResEndlessReward{ Code: msg.RES_CODE_SUCCESS, }) Ids := make([]int, 0) Nums := make([]int, 0) for _, v := range itemList { Ids = append(Ids, v.Id) Nums = append(Nums, v.Num) } player.TeLog("gift_ad", map[string]interface{}{ "gift_type": "endless", "item_id": Ids, "item_number": Nums, }) return nil } // 请求无尽礼包数据 func ReqEndless(player *Player, buf []byte) error { EndlessMod := player.PlayMod.getEndlessMod() player.PushClientRes(EndlessMod.BackData()) return nil } // 请求存钱罐奖励 func ReqPiggyBankReward(player *Player, buf []byte) error { PiggyBankMod := player.PlayMod.getPiggyBankMod() itemList := PiggyBankMod.Fire(0) err := player.HandleItem(itemList, msg.ITEM_POP_LABEL_PiggyBankReward.String()) if err != nil { player.SendErrClienRes(&msg.ResPiggyBankReward{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.PlayMod.save() player.PushClientRes(PiggyBankMod.BackData()) player.PushClientRes(&msg.ResPiggyBankReward{ Code: msg.RES_CODE_SUCCESS, }) player.TeLog("piggy_bank_open", map[string]interface{}{ "piggy_bank_type": piggyBank.PIGGY_BANK_TYPE_AD, "item_list": itemList, }) return nil } // 生成订单号 func ReqCreateOrderSn(player *Player, buf []byte) error { req := &msg.ReqCreateOrderSn{} proto.Unmarshal(buf, req) OrderSn, err := CreateOrderSn(player, req) if err != nil { return err } player.PushClientRes(&msg.ResCreateOrderSn{ OrderSn: OrderSn, }) return nil } // 订单发货 func ReqShippingOrder(player *Player, buf []byte) error { req := &msg.ReqShippingOrder{} proto.Unmarshal(buf, req) go TriggerShippingOrder(player, req) player.PushClientRes(&msg.ResShippingOrder{ Code: msg.RES_CODE_SUCCESS, }) return nil } // 锦标赛 func ReqChampshipReward(player *Player, buf []byte) error { ChampshipMod := player.PlayMod.getChampshipMod() itemList := ChampshipMod.GetReward() err := player.HandleItem(itemList, msg.ITEM_POP_LABEL_ChampshipReward.String()) if err != nil { player.SendErrClienRes(&msg.ResChampshipReward{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.PlayMod.save() BackChampship(player) TriggerSeed(player) player.PushClientRes(&msg.ResChampshipReward{ Code: msg.RES_CODE_SUCCESS, }) player.TeLog("championship_reward", map[string]interface{}{ "season_id": GoUtil.ZeroTimestamp(), "champship_step_id": ChampshipMod.Reward, "reward_type": "step", "item_list": itemList, "champship_score": ChampshipMod.Score, }) return nil } func ReqLimitEvent(player *Player, buf []byte) error { LimitedTimeEventMod := player.PlayMod.getLimitedTimeEventMod() player.PushClientRes(LimitedTimeEventMod.BackData()) return nil } func ReqKv(player *Player, buf []byte) error { req := &msg.ReqKv{} proto.Unmarshal(buf, req) KvMod := player.PlayMod.getKvMod() KvMod.SetVar(int(req.Key), req.Value) return nil } func ReqFriendRecommend(player *Player, buf []byte) error { FriendMod := player.PlayMod.getFriendMod() RecommendList := make([]*msg.ResPlayerSimple, 0) FriendNum := FriendMod.GetFriendNum() var n int if FriendNum < 10 { n = 3 } else { Active := 0 for k := range FriendMod.GetFriendList() { PlayerSimpleData := G_GameLogicPtr.GetSimplePlayerByUid(k) if PlayerSimpleData == nil { continue } if PlayerSimpleData.Login > GoUtil.Now()-86400 { Active++ } } n = max(0, 3-(Active/10)) } PlayerList := GetRecommendPlayer(player, n) for _, v := range PlayerList { PlayerSimpleData := G_GameLogicPtr.GetResSimplePlayerByUid(v) RecommendList = append(RecommendList, PlayerSimpleData) } player.PushClientRes(&msg.ResFriendRecommend{ List: RecommendList, }) player.PlayMod.save() return nil } func ReqFriendList(player *Player, buf []byte) error { FriendListBackData(player) return nil } func ReqFriendApply(player *Player, buf []byte) error { FriendApplyBackData(player) return nil } func ReqFriendCardMsg(player *Player, buf []byte) error { FriendCardBackData(player) return nil } func ReqFriendTimeLine(player *Player, buf []byte) error { FriendLogBackData(player) return nil } func ReqFriendTLUpvote(player *Player, buf []byte) error { req := &msg.ReqFriendTLUpvote{} proto.Unmarshal(buf, req) FriendMod := player.PlayMod.getFriendMod() Items, FUid, err := FriendMod.Upvote(int(req.Id)) if err != nil { player.SendErrClienRes(&msg.ResFriendTLUpvote{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } err = player.HandleItem(Items, msg.ITEM_POP_LABEL_TLUpvote.String()) if err != nil { player.SendErrClienRes(&msg.ResFriendTLUpvote{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } // 添加时间线 m := &MsqMod.Msg{ Type: MsqMod.HANDLE_TYPE_HANDBOOK_UPVOTE, From: int(player.M_DwUin), To: int(FUid), SendT: GoUtil.Now(), } FriendMgrSend(m) player.PlayMod.save() player.PushClientRes(&msg.ResFriendTLUpvote{ Code: msg.RES_CODE_SUCCESS, Id: req.Id, }) player.TeLog("friend_upvote", map[string]interface{}{ "player_id": int(req.Id), }) return nil } func ReqFriendTReward(player *Player, buf []byte) error { req := &msg.ReqFriendTReward{} proto.Unmarshal(buf, req) FriendMod := player.PlayMod.getFriendMod() Items, err := FriendMod.GetReward(int(req.Id)) if err != nil { player.SendErrClienRes(&msg.ResFriendTReward{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } err = player.HandleItem(Items, msg.ITEM_POP_LABEL_FriendTReward.String()) if err != nil { player.SendErrClienRes(&msg.ResFriendTReward{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.PlayMod.save() player.PushClientRes(&msg.ResFriendTReward{ Code: msg.RES_CODE_SUCCESS, Id: req.Id, }) return nil } func ReqChampshipRankReward(player *Player, buf []byte) error { MyLastRank := G_GameLogicPtr.ChampshipMgr.getLastMyRank(int(player.M_DwUin)) ChampshipMod := player.PlayMod.getChampshipMod() itemList, err := ChampshipMod.GetRankReward(MyLastRank) if err != nil { player.SendErrClienRes(&msg.ResChampshipRankReward{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } err = player.HandleItem(itemList, msg.ITEM_POP_LABEL_ChampshipRankReward.String()) if err != nil { player.SendErrClienRes(&msg.ResChampshipRankReward{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.PlayMod.save() BackChampship(player) player.PushClientRes(&msg.ResChampshipRankReward{ Code: msg.RES_CODE_SUCCESS, }) player.TeLog("championship_reward", map[string]interface{}{ "season_id": GoUtil.ZeroTimestamp() - 86400, "champship_step_id": MyLastRank, "reward_type": "rank", "item_list": itemList, "champship_score": ChampshipMod.Score, }) return nil } func ReqSetName(player *Player, buf []byte) error { req := &msg.ReqSetName{} proto.Unmarshal(buf, req) BaseMod := player.PlayMod.getBaseMod() BaseMod.SetNickName(req.Name) player.PushClientRes(&msg.ResSetName{ ResultCode: msg.RES_CODE_SUCCESS, }) player.PlayMod.save() BackUserInfo(player) player.UpdateUserInfo() player.TeLog("nickname_set", map[string]interface{}{ "nickname_name": req.Name, }) return nil } func ReqSetPetName(player *Player, buf []byte) error { req := &msg.ReqSetPetName{} proto.Unmarshal(buf, req) BaseMod := player.PlayMod.getBaseMod() BaseMod.SetPetName(req.Name) player.PushClientRes(&msg.ResSetPetName{ ResultCode: msg.RES_CODE_SUCCESS, }) player.PlayMod.save() BackUserInfo(player) PlayroomMod := player.PlayMod.getPlayroomMod() PlayroomMod.UnLock(BaseMod.GetLevel()) LimitedTimePlayroomTrigger(player) player.UpdateUserInfo() player.TeLog("petname_set", map[string]interface{}{ "petname": req.Name, }) return nil } func ReqUserInfo(player *Player, buf []byte) error { BackUserInfo(player) return nil } func ReqMasterCard(player *Player, buf []byte) error { req := &msg.ReqMasterCard{} proto.Unmarshal(buf, req) CardMod := player.PlayMod.getCardMod() err := CardMod.MasterCardEx(int(req.Id), int(req.CardId)) if err != nil { player.SendErrClienRes(&msg.ResMasterCard{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.PlayMod.save() player.PushClientRes(&msg.ResMasterCard{ Code: msg.RES_CODE_SUCCESS, MasterId: req.Id, CardId: req.CardId, }) player.PushClientRes(CardMod.NotifyCard()) player.TeLog("master_card", map[string]interface{}{ "wild_card_type": req.Id, "card_id": req.CardId, }) return nil } func ReqSetFacebookUrl(player *Player, buf []byte) error { req := &msg.ReqSetFacebookUrl{} proto.Unmarshal(buf, req) BaseMod := player.PlayMod.getBaseMod() BaseMod.SetFacebookUrl(req.Url) player.PlayMod.save() player.PushClientRes(&msg.ResSetFacebookUrl{ Code: msg.RES_CODE_SUCCESS, }) return nil } func ReqInviteFriendData(player *Player, buf []byte) error { InviteMod := player.PlayMod.getInviteMod() player.PushClientRes(InviteMod.BackData()) return nil } func ReqSelfInvited(player *Player, buf []byte) error { req := &msg.ReqSelfInvited{} proto.Unmarshal(buf, req) G_GameLogicPtr.FriendMgrSend(&MsqMod.Msg{ Type: MsqMod.HANDLE_TYPE_INVITE_FRIEND, From: int(player.M_DwUin), To: int(req.InviterId), SendT: GoUtil.Now(), }) player.PushClientRes(&msg.ResSelfInvited{ ResultCode: 1, }) return nil } func ReqGetInviteReward(player *Player, buf []byte) error { req := &msg.ReqGetInviteReward{} proto.Unmarshal(buf, req) InviteMod := player.PlayMod.getInviteMod() Items, err := InviteMod.GetReward(int(req.GetIndex)) if err != nil { log.Debug("ReqGetInviteReward err :%v", err) return err } err = player.HandleItem(Items, msg.ITEM_POP_LABEL_invite.String()) if err != nil { log.Debug("ReqGetInviteReward err :%v", err) return err } player.PlayMod.save() player.PushClientRes(&msg.ResGetInviteReward{ ResultCode: 1, }) player.PushClientRes(InviteMod.BackData()) Str := "" for k := range InviteMod.InviteList { Str += strconv.Itoa(k) + "," } player.TeLog("register_invite_reward", map[string]interface{}{ "register_type": "facebook", "item_id": Items, "register_score": InviteMod.GetIndex, "player_id": Str, }) return nil } func ReqAutoAddInviteFriend(player *Player, buf []byte) error { req := &msg.ReqAutoAddInviteFriend{} proto.Unmarshal(buf, req) FriendMod := player.PlayMod.getFriendMod() Uid := int(req.Id) if Uid == 0 && Uid == int(player.M_DwUin) { player.PushClientRes(&msg.ResAutoAddInviteFriend{ ResultCode: int32(msg.RES_CODE_FAIL), }) return fmt.Errorf("uid wrong %d", Uid) } FriendMod.AddFriend(Uid) player.PlayMod.save() player.PushClientRes(&msg.ResAutoAddInviteFriend{ ResultCode: 1, }) G_GameLogicPtr.FriendMgrSend(&MsqMod.Msg{ From: int(player.M_DwUin), To: Uid, Type: MsqMod.HANDLE_TYPE_INVITE_ADD_FRIEND, SendT: GoUtil.Now(), }) PlayroomMod := player.PlayMod.getPlayroomMod() BaseMod := player.PlayMod.getBaseMod() PlayroomMod.AddRoomPointAdd(BaseMod.GetLevel()) PlayroomBackData(player) player.TeLog("friend_add", map[string]interface{}{ "player_id": req.Id, "add_type": "invite add friend", }) return nil } func ReqAutoAddInviteFriend2(player *Player, buf []byte) error { req := &msg.ReqAutoAddInviteFriend2{} proto.Unmarshal(buf, req) FriendMod := player.PlayMod.getFriendMod() Uid, err := GetUidByFaceBook(req.Id) if Uid == 0 || Uid == int(player.M_DwUin) { player.PushClientRes(&msg.ResAutoAddInviteFriend2{ ResultCode: 0, }) log.Debug("ReqAutoAddInviteFriend2 err :%v", err) return err } if err != nil { player.SendErrClienRes(&msg.ResAutoAddInviteFriend2{ ResultCode: 0, }) log.Debug("ReqAutoAddInviteFriend2 err :%v", err) return err } FriendMod.AddFriend(Uid) player.PlayMod.save() player.PushClientRes(&msg.ResAutoAddInviteFriend2{ ResultCode: 1, }) G_GameLogicPtr.FriendMgrSend(&MsqMod.Msg{ From: int(player.M_DwUin), To: Uid, Type: MsqMod.HANDLE_TYPE_INVITE_ADD_FRIEND, SendT: GoUtil.Now(), }) PlayroomMod := player.PlayMod.getPlayroomMod() BaseMod := player.PlayMod.getBaseMod() PlayroomMod.AddRoomPointAdd(BaseMod.GetLevel()) PlayroomBackData(player) player.TeLog("friend_add", map[string]interface{}{ "player_id": req.Id, "add_type": "invite add friend", }) return nil } func ReqSelectLimitEvent(player *Player, buf []byte) error { req := &msg.ReqSelectLimitEvent{} proto.Unmarshal(buf, req) LimitedTimeEventMod := player.PlayMod.getLimitedTimeEventMod() BaseMod := player.PlayMod.getBaseMod() Items, EventName, slot_order_number, err := LimitedTimeEventMod.SelectProgressReward(int(req.Id), BaseMod.GetLevel(), BaseMod.GetEnergy()) if err != nil { player.SendErrClienRes(&msg.ResSelectLimitEvent{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } err = player.HandleItem(Items, msg.ITEM_POP_LABEL_SelectLimitEvent.String()) if err != nil { player.SendErrClienRes(&msg.ResSelectLimitEvent{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.TeLog("time_limited_slot", map[string]interface{}{ "slot_order_number": slot_order_number, "slot_reward_list": EventName, "slot_reward": EventName, }) player.PlayMod.save() player.PushClientRes(LimitedTimeEventMod.BackData()) player.PushClientRes(LimitedTimeEventMod.ProgressBackData()) player.PushClientRes(&msg.ResSelectLimitEvent{ Code: msg.RES_CODE_SUCCESS, }) return nil } // 请求挖矿基础数据 func ReqMining(player *Player, buf []byte) error { MiningBackData(player) return nil } // 请求挖矿 func ReqMiningTake(player *Player, buf []byte) error { req := &msg.ReqMiningTake{} proto.Unmarshal(buf, req) MiningMod := player.PlayMod.getMiningMod() ActivityInfo := GetActivityInfo(player, activity.ACT_TYPE_MINING) Status := GetActivityStatus(player, activity.ACT_TYPE_MINING) if Status != ACT_STATUS_START { player.SendErrClienRes(&msg.ResMiningTake{ Code: msg.RES_CODE_FAIL, Msg: "activity not start", }) return fmt.Errorf("activity not start") } LoseItem := miningCfg.GetLoseItem(ActivityInfo.Id) err := player.HandleLoseItem(LoseItem, "MiningLose") if err != nil { player.SendErrClienRes(&msg.ResMiningTake{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } itemList, err := MiningMod.Take(req.Map, int(req.Gem)) if err != nil { player.SendErrClienRes(&msg.ResMiningTake{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } err = player.HandleItem(itemList, msg.ITEM_POP_LABEL_MiningTake.String()) if err != nil { player.SendErrClienRes(&msg.ResMiningTake{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.TeLog("ReqMiningTake", map[string]interface{}{}) player.PlayMod.save() player.NotifyRed(activity.ACT_TYPE_MINING) MiningBackData(player) return nil } // 领取关卡奖励 func ReqMiningReward(player *Player, buf []byte) error { MiningMod := player.PlayMod.getMiningMod() Status := GetActivityStatus(player, activity.ACT_TYPE_MINING) if Status != ACT_STATUS_START { player.SendErrClienRes(&msg.ResMiningReward{ Code: msg.RES_CODE_FAIL, Msg: "activity not start", }) return fmt.Errorf("activity not start") } itemList, Mining, err := MiningMod.GetReward() if err != nil { player.SendErrClienRes(&msg.ResMiningReward{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } err = player.HandleItem(itemList, msg.ITEM_POP_LABEL_MiningReward.String()) if err != nil { player.SendErrClienRes(&msg.ResMiningReward{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.TeLog("mining_finish", map[string]interface{}{ "expend_token_num": Mining, "level_ID": MiningMod.Pass - 1, }) player.PushClientRes(&msg.ResMiningReward{ Code: msg.RES_CODE_SUCCESS, }) player.PlayMod.save() MiningBackData(player) return nil } // 请求猜颜色基础数据 func ReqGuessColor(player *Player, buf []byte) error { req := &msg.ReqGuessColor{} proto.Unmarshal(buf, req) GuessColorMod := player.PlayMod.getGuessColorMod() Items := GuessColorMod.FirstIn() err := player.HandleItem(Items, msg.ITEM_POP_LABEL_GuessColor.String()) if err != nil { return err } player.PlayMod.save() GuessColorBackData(player) return nil } // 请求猜颜色 func ReqGuessColorTake(player *Player, buf []byte) error { req := &msg.ReqGuessColorTake{} proto.Unmarshal(buf, req) Status := GetActivityStatus(player, activity.ACT_TYPE_GUESS_COLOR) if Status != ACT_STATUS_START { player.SendErrClienRes(&msg.ResGuessColorTake{ Code: msg.RES_CODE_FAIL, Msg: "activity not start", }) return fmt.Errorf("activity not start") } GuessColorMod := player.PlayMod.getGuessColorMod() LoseItem := GuessColorMod.GetLoseItem() err := player.HandleLoseItem(LoseItem, "GuessColorLose") if err != nil { player.SendErrClienRes(&msg.ResGuessColorTake{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } GuessColorMod.Take(req.Map.Map, req.OMap) player.TeLog("ReqGuessColorTake", map[string]interface{}{ "map": req.Map.Map, "o_map": req.OMap, }) player.PlayMod.save() GuessColorBackData(player) player.NotifyRed(activity.ACT_TYPE_GUESS_COLOR) return nil } // 请求猜颜色奖励 func ReqGuessColorReward(player *Player, buf []byte) error { req := &msg.ReqGuessColorReward{} proto.Unmarshal(buf, req) Status := GetActivityStatus(player, activity.ACT_TYPE_GUESS_COLOR) if Status != ACT_STATUS_START { player.SendErrClienRes(&msg.ResGuessColorReward{ Code: msg.RES_CODE_FAIL, Msg: "activity not start", }) return fmt.Errorf("activity not start") } GuessColorMod := player.PlayMod.getGuessColorMod() itemList, err := GuessColorMod.GetReward() if err != nil { player.SendErrClienRes(&msg.ResGuessColorReward{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } err = player.HandleItem(itemList, msg.ITEM_POP_LABEL_GuessColorReward.String()) if err != nil { player.SendErrClienRes(&msg.ResGuessColorReward{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.TeLog("guess_color_finish", map[string]interface{}{ "item_list": itemList, }) player.PlayMod.save() GuessColorBackData(player) return nil } // 请求竞赛基础数据 func ReqRace(player *Player, buf []byte) error { RaceBackData(player) return nil } // 请求竞赛开始 func ReqRaceStart(player *Player, buf []byte) error { req := &msg.ReqRaceStart{} proto.Unmarshal(buf, req) RaceMod := player.PlayMod.getRaceMod() err := RaceMod.StartGame() if err != nil { player.SendErrClienRes(&msg.ResRaceStart{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } RaceBackData(player) player.PushClientRes(&msg.ResRaceStart{ Code: msg.RES_CODE_SUCCESS, }) return nil } // 领取竞赛奖励 func ReqRaceReward(player *Player, buf []byte) error { req := &msg.ResRaceReward{} proto.Unmarshal(buf, req) RaceMod := player.PlayMod.getRaceMod() Items, err := RaceMod.GetReward() if err != nil { player.SendErrClienRes(&msg.ResRaceReward{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } err = player.HandleItem(Items, msg.ITEM_POP_LABEL_RaceReward.String()) if err != nil { player.SendErrClienRes(&msg.ResRaceReward{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } RaceBackData(player) player.TeLog("ReqRaceReward", map[string]interface{}{ "item_list": Items, }) player.PushClientRes(&msg.ResRaceReward{ Code: msg.RES_CODE_SUCCESS, }) return nil } // 请求playroom基础数据 func ReqPlayroom(player *Player, buf []byte) error { PlayroomBackData(player) return nil } // 请求playroom拜访信息 func ReqPlayroomInfo(player *Player, buf []byte) error { req := &msg.ReqPlayroomInfo{} proto.Unmarshal(buf, req) PlayroomMod := player.PlayMod.getPlayroomMod() Targer := int(req.Uid) if req.Uid == 0 { Targer = PlayroomMod.GetTarget() } if req.Uid == -1 { Targer = GetVisitorPlayer(player) } if Targer == 0 { PlayroomVisit(player, Targer) return nil } PlayerData := G_GameLogicPtr.GetSimplePlayerByUid(Targer) PlayroomMod.SetTarget(Targer) player.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_VISITROOM}) if PlayerData.Loginout > 0 && PlayerData.Loginout < GoUtil.Now()-int64(playroomCfg.GetGameOutline()) { GameType := PlayroomMod.RandGameType() PlayroomMod.SetGameId(GameType) Star := min(500, max(PlayerData.Star/10, 10)) ChessMod := player.PlayMod.getChessMod() EmitList := ChessMod.GetOrderEmit() ColorList := make([]string, 0) for _, v := range EmitList { Color := mergeDataCfg.GetEmitProduceChessType(v) ColorList = append(ColorList, Color...) } RandList := make([]int, 0) for _, v := range PlayerData.Chess { Color := mergeDataCfg.GetColorById(v) Lv := mergeDataCfg.GetLvById(v) if GoUtil.InStringArray(Color, ColorList) && Lv <= 8 && Lv != 0 { RandList = append(RandList, v) } } RandList = GoUtil.UniqueInts(RandList) if len(RandList) == 0 { PlayroomMod.SetGameReward(Star, Star, Star) } else if len(RandList) == 1 { PlayroomMod.SetGameReward(RandList[0], Star, Star) } else { ChessList := GoUtil.RandSliceNum(RandList, 2) PlayroomMod.SetGameReward(ChessList[0], ChessList[1], Star) } } else { PlayroomMod.SetGameId(playroom.GAME_TYPE_FILP) PlayroomMod.SetGameRewardFlip(int(float64(PlayerData.Star)*0.03), int(float64(PlayerData.Star)*0.05), int(float64(PlayerData.Star)*0.1)) } player.PlayMod.save() PlayroomVisit(player, Targer) return nil } // 请求playroom交互 func ReqPlayroomInteract(player *Player, buf []byte) error { req := &msg.ReqPlayroomInteract{} proto.Unmarshal(buf, req) PlayroomMod := player.PlayMod.getPlayroomMod() Items, PType, err := PlayroomMod.Interact(int(req.Id), int(req.Type)) if err != nil { player.SendErrClienRes(&msg.ResPlayroomInteract{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } err = player.HandleLoseItem(Items, "PlayroomInteract") if err != nil { player.SendErrClienRes(&msg.ResPlayroomInteract{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } if GoUtil.InArray(int(req.Id), playroomCfg.GetInteractIdBath()) { G_GameLogicPtr.SetUserData(int(req.Id), VAR_OP_KISS, 0) } PExp := playroomCfg.GetInteractPExp(int(req.Id)) _, err = player.GetPlayerBaseMod().AddExp(player, 0, PExp) if err != nil { player.SendErrClienRes(&msg.ResPlayroomInteract{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) } BaseMod := player.PlayMod.getBaseMod() PlayroomMod.AddInteractNum(BaseMod.GetLevel()) player.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_INTERACT, A: []interface{}{int(req.Id)}}) player.PlayMod.save() G_GameLogicPtr.SetUserData(int(player.M_DwUin), VAR_OP_KISS, 0) LimitedTimePlayroomTrigger_(player, PType) player.NotifyPlayroomKiss() player.TeLog("playroom_interact", map[string]interface{}{ "interact_id": int(req.Id), "interact_type": int(req.Type), }) player.PushClientRes(&msg.ResPlayroomInteract{ Code: msg.RES_CODE_SUCCESS, InteractNum: int32(PlayroomMod.InteractNum), }) return nil } // 请求playroom设置房间 func ReqPlayroomSetRoom(player *Player, buf []byte) error { req := &msg.ReqPlayroomSetRoom{} proto.Unmarshal(buf, req) PlayroomMod := player.PlayMod.getPlayroomMod() Diff, err := PlayroomMod.SetRoom(GoUtil.MapInt32ToInt(req.Playroom)) if err != nil { player.SendErrClienRes(&msg.ResPlayroomSetRoom{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_ROOMDEC}) player.PlayMod.save() player.RoomDecoSetLog(Diff) player.PushClientRes(&msg.ResPlayroomSetRoom{ Code: msg.RES_CODE_SUCCESS, }) return nil } // 玩游戏 func ReqPlayroomGame(player *Player, buf []byte) error { req := &msg.ReqPlayroomGame{} proto.Unmarshal(buf, req) PlayroomMod := player.PlayMod.getPlayroomMod() Target := PlayroomMod.GetTarget() if Target == 0 { player.SendErrClienRes(&msg.ResPlayroomGame{ Code: msg.RES_CODE_FAIL, Msg: "no target", }) return fmt.Errorf("no target") } Items := player.GetPlayroomGameReward(int(req.Type), 0) PlayroomMod.ResetGame() err := player.HandleItem(Items, msg.ITEM_POP_LABEL_PlayroomGame.String()) if err != nil { player.SendErrClienRes(&msg.ResPlayroomGame{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } G_GameLogicPtr.FriendMgrSend(&MsqMod.Msg{ From: int(player.M_DwUin), To: Target, Type: MsqMod.HANDLE_TYPE_PLAYROOM_GAME, SendT: GoUtil.Now(), Extra: GameResult{ T: PlayroomMod.GetGameId(), Emoji: int(req.EmojiId), }, }) ItemsMsg := make(map[int32]*msg.ItemInfo, 0) for k, v := range PlayroomMod.GameReward { ItemsMsg[int32(k)] = &msg.ItemInfo{ Id: int32(v.Id), Num: int32(v.Num), } } player.TeLog("finish_mini_game", map[string]interface{}{ "mini_game_type": PlayroomMod.GetGameId(), "is_chip": false, "item_list": Items, }) PlayroomBackData(player) player.PlayerDecoSetLog("emoji", int(req.EmojiId), "playroom_game") player.PushClientRes(&msg.ResPlayroomGame{ Code: msg.RES_CODE_SUCCESS, Type: req.Type, Items: ItemsMsg, }) player.PlayMod.save() return nil } // 选择奖励 func ReqPlayroomSelectReward(player *Player, buf []byte) error { req := &msg.ReqPlayroomSelectReward{} proto.Unmarshal(buf, req) PlayroomMod := player.PlayMod.getPlayroomMod() Items := player.GetPlayroomGameReward(playroom.GAME_RESULT_HIGH, int(req.Id)) err := player.HandleItem(Items, msg.ITEM_POP_LABEL_PlayroomGame.String()) if err != nil { player.SendErrClienRes(&msg.ResPlayroomSelectReward{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } GameId := PlayroomMod.GetGameId() Target := PlayroomMod.GetTarget() if GameId == 0 || Target == 0 { player.SendErrClienRes(&msg.ResPlayroomSelectReward{ Code: msg.RES_CODE_FAIL, Msg: "no game or target", }) return fmt.Errorf("no game or target") } G_GameLogicPtr.FriendMgrSend(&MsqMod.Msg{ From: int(player.M_DwUin), To: Target, Type: MsqMod.HANDLE_TYPE_PLAYROOM_LOSE, SendT: GoUtil.Now(), Item: Items, Extra: GameResult{ T: PlayroomMod.GetGameId(), Emoji: int(req.EmojiId), }, }) LimitedTimeEventMod := player.PlayMod.getLimitedTimeEventMod() if LimitedTimeEventMod.CheckExist(limitedTimeEvent.EVENT_TYPE_PET_THIEF) { player.GetPetThiefReward(Target) } G_GameLogicPtr.SetUserData(Target, VAR_OP_CHIP, 1) PlayroomMod.ResetGame() player.TeLog("finish_mini_game", map[string]interface{}{ "mini_game_type": PlayroomMod.GetGameId(), "is_chip": true, "item_list": Items, }) player.PlayerDecoSetLog("emoji", int(req.EmojiId), "playroom_select_reward") PlayroomBackData(player) player.PlayMod.save() player.PushClientRes(&msg.ResPlayroomSelectReward{ Code: msg.RES_CODE_SUCCESS, }) return nil } // 处理偷取物品 func ReqPlayroomLose(player *Player, buf []byte) error { PlayroomMod := player.PlayMod.getPlayroomMod() PlayroomMod.ResetLose() player.PushClientRes(PlayroomMod.NotifyLose()) return nil } // 宠物开始工作 func ReqPlayroomWork(player *Player, buf []byte) error { req := &msg.ReqPlayroomWork{} proto.Unmarshal(buf, req) PlayroomMod := player.PlayMod.getPlayroomMod() Items, err := PlayroomMod.Work() if err != nil { player.SendErrClienRes(&msg.ResPlayroomWork{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } // 开始工作 设置定时器 if Items != nil { LimitedTimePlayroomWorkTrigger(player) player.UpdateUserInfo() } err = player.HandleLoseItem(Items, "playroomWork") if err != nil { player.SendErrClienRes(&msg.ResPlayroomWork{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_PETWORK}) player.TeLog("pet_assist_active", map[string]interface{}{ "assist_time_left": PlayroomMod.Endtime - GoUtil.Now(), }) player.PlayMod.save() player.PushClientRes(PlayroomMod.NotifyWork()) // PlayroomBackData(player) player.PushClientRes(&msg.ResPlayroomWork{ Code: msg.RES_CODE_SUCCESS, }) return nil } // 宠物休息 func ReqPlayroomRest(player *Player, buf []byte) error { PlayroomMod := player.PlayMod.getPlayroomMod() PlayroomMod.Rest() player.PlayMod.save() player.TeLog("playroom_rest", map[string]interface{}{}) player.PushClientRes(PlayroomMod.NotifyWork()) player.TeLog("pet_assist_callback", map[string]interface{}{}) return nil } // 抽取转盘 func ReqPlayroomDraw(player *Player, buf []byte) error { PlayroomMod := player.PlayMod.getPlayroomMod() Id, Items, err := PlayroomMod.Draw() if err != nil { player.SendErrClienRes(&msg.ResPlayroomDraw{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.args["ResItemPopId"] = Id err = player.HandleItem(Items, msg.ITEM_POP_LABEL_PlayroomDraw.String()) if err != nil { player.SendErrClienRes(&msg.ResPlayroomDraw{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.PlayMod.save() // PlayroomBackData(player) player.PushClientRes(PlayroomMod.NotifyMood()) player.TeLog("playroom_draw", map[string]interface{}{ "draw_id": Id, "item_list": Items, }) player.PushClientRes(&msg.ResPlayroomDraw{ Code: msg.RES_CODE_SUCCESS, Id: int32(Id), }) return nil } // 清理碎片 func ReqPlayroomChip(player *Player, buf []byte) error { req := &msg.ReqPlayroomChip{} proto.Unmarshal(buf, req) PlayroomMod := player.PlayMod.getPlayroomMod() Items, ChipNum, err := PlayroomMod.RemoveChip(req.Uid) if err != nil { player.SendErrClienRes(&msg.ResPlayroomChip{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } err = player.HandleLoseItem(Items, msg.ITEM_POP_LABEL_PlayroomChip.String()) if err != nil { player.SendErrClienRes(&msg.ResPlayroomChip{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.TeLog("remove_chip", map[string]interface{}{ "remove_chip_number": ChipNum, }) G_GameLogicPtr.SetUserData(int(player.M_DwUin), VAR_OP_CHIP_SET, len(PlayroomMod.ChipList)) player.PlayMod.save() PlayroomBackData(player) player.PushClientRes(&msg.ResPlayroomChip{ Code: msg.RES_CODE_SUCCESS, }) return nil } // 翻牌游戏 func ReqPlayroomFlip(player *Player, buf []byte) error { req := &msg.ReqPlayroomFlip{} proto.Unmarshal(buf, req) PlayroomMod := player.PlayMod.getPlayroomMod() CardId, err := PlayroomMod.FlipCard(int(req.Id)) if err != nil { player.SendErrClienRes(&msg.ResPlayroomFlip{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.Kafka("playroom_flip", map[string]interface{}{ "CardID": CardId, "Id": req.Id, }) player.PlayMod.save() PlayroomBackData(player) player.PushClientRes(&msg.ResPlayroomFlip{ Code: msg.RES_CODE_SUCCESS, Id: req.Id, CardId: int32(CardId), }) return nil } func ReqPlayroomFlipReward(player *Player, buf []byte) error { req := &msg.ReqPlayroomFlipReward{} proto.Unmarshal(buf, req) PlayroomMod := player.PlayMod.getPlayroomMod() Items, Target, Result, err := PlayroomMod.GetFlipReward() if err != nil { player.SendErrClienRes(&msg.ResPlayroomFlipReward{ Code: msg.RES_CODE_FAIL, Msg: err.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) } err = player.HandleItem(Items1, msg.ITEM_POP_LABEL_PlayroomFlip.String()) if err != nil { player.SendErrClienRes(&msg.ResPlayroomFlip{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } G_GameLogicPtr.FriendMgrSend(&MsqMod.Msg{ From: int(player.M_DwUin), To: Target, Type: MsqMod.HANDLE_TYPE_PLAYROOM_LOSE, SendT: GoUtil.Now(), Item: Items, Extra: GameResult{ T: playroom.GAME_TYPE_FILP, Emoji: int(req.EmojiId), }, }) player.TeLog("finish_mini_game", map[string]interface{}{ "mini_game_type": PlayroomMod.GetGameId(), "is_chip": false, "item_list": Items, }) player.PlayerDecoSetLog("emoji", int(req.EmojiId), "playroom_flip_reward") player.PlayMod.save() PlayroomBackData(player) player.PushClientRes(&msg.ResPlayroomFlipReward{ Code: msg.RES_CODE_SUCCESS, }) return nil } func ReqPlayroomBuyItem(player *Player, buf []byte) error { req := &msg.ReqPlayroomBuyItem{} proto.Unmarshal(buf, req) PlayroomMod := player.PlayMod.getPlayroomMod() AddItems, CostItem := PlayroomMod.BuyItem(int(req.Id)) if CostItem == nil { err := fmt.Errorf("can not buy item") player.SendErrClienRes(&msg.ResPlayroomBuyItem{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } err := player.HandleLoseItem(CostItem, msg.ITEM_POP_LABEL_PlayroomBuyItem.String()) if err != nil { player.SendErrClienRes(&msg.ResPlayroomBuyItem{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } err = player.HandleItem(AddItems, msg.ITEM_POP_LABEL_PlayroomBuyItem.String()) if err != nil { player.SendErrClienRes(&msg.ResPlayroomBuyItem{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.TeLog("playroom_buy_item", map[string]interface{}{ "item_id": req.Id, }) player.PlayMod.save() player.PushClientRes(&msg.ResPlayroomBuyItem{ Code: msg.RES_CODE_SUCCESS, }) return nil } func ReqPlayroomUpvote(player *Player, buf []byte) error { req := &msg.ReqPlayroomUpvote{} proto.Unmarshal(buf, req) PlayroomMod := player.PlayMod.getPlayroomMod() Items, err := PlayroomMod.GiveUpvote(int(req.Id)) if err != nil { player.SendErrClienRes(&msg.ResPlayroomUpvote{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } err = player.HandleItem(Items, msg.ITEM_POP_LABEL_PlayroomUpvote.String()) if err != nil { player.SendErrClienRes(&msg.ResPlayroomUpvote{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) } FriendMgrSend(&MsqMod.Msg{ From: int(player.M_DwUin), To: int(req.Id), Type: MsqMod.HANDLE_TYPE_PLAYROOM_UPVOTE, SendT: GoUtil.Now(), }) FriendMgrSend(&MsqMod.Msg{ From: int(player.M_DwUin), To: int(req.Id), Type: MsqMod.HANDLE_TYPE_PLAYROOM_KISS, SendT: GoUtil.Now(), }) G_GameLogicPtr.SetUserData(int(req.Id), VAR_OP_UPVOTE, 1) G_GameLogicPtr.SetUserData(int(req.Id), VAR_OP_KISS, 1) player.TeLog("visit_like", map[string]interface{}{ "user_id": req.Id, }) player.PlayMod.save() player.PushClientRes(&msg.ResPlayroomUpvote{ Code: msg.RES_CODE_SUCCESS, }) return nil } func ReqPlayroomUnlock(player *Player, buf []byte) error { req := &msg.ReqPlayroomUnlock{} proto.Unmarshal(buf, req) PlayroomMod := player.PlayMod.getPlayroomMod() err := PlayroomMod.Unlock(int(req.Id)) if err != nil { player.SendErrClienRes(&msg.ResPlayroomUnlock{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.TeLog("room_unlcok", map[string]interface{}{ "room_type": playroomCfg.GetUnlockName(int(req.Id)), }) player.PlayMod.save() player.PushClientRes(&msg.ResPlayroomUnlock{ Code: msg.RES_CODE_SUCCESS, Id: int32(req.Id), }) PlayroomBackData(player) return nil } func ReqPlayroomTask(player *Player, buf []byte) error { req := &msg.ReqPlayroomTask{} proto.Unmarshal(buf, req) PlayroomMod := player.PlayMod.getPlayroomMod() Items, err := PlayroomMod.GetDailyTaskReward(int(req.Id)) if err != nil { player.SendErrClienRes(&msg.ResPlayroomTask{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } err = player.HandleItem(Items, msg.ITEM_POP_LABEL_PlayroomTask.String()) if err != nil { player.SendErrClienRes(&msg.ResPlayroomTask{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.TeLog("room_daily_task", map[string]interface{}{ "task_id": req.Id, "is_reward": PlayroomMod.DailyTaskCanReward(int(req.Id)), }) player.PlayMod.save() player.PushClientRes(&msg.ResPlayroomTask{ Code: msg.RES_CODE_SUCCESS, Id: int32(req.Id), }) PlayroomBackData(player) return nil } func ReqPlayroomTaskReward(player *Player, buf []byte) error { req := &msg.ReqPlayroomTaskReward{} proto.Unmarshal(buf, req) PlayroomMod := player.PlayMod.getPlayroomMod() Id, Items, err := PlayroomMod.GetTaskReward(int(req.Type)) if err != nil { player.SendErrClienRes(&msg.ResPlayroomTaskReward{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.args["ResItemPopId"] = Id err = player.HandleItem(Items, msg.ITEM_POP_LABEL_PlayroomTaskReward.String()) if err != nil { player.SendErrClienRes(&msg.ResPlayroomTaskReward{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.TeLog("playroom_task_reward", map[string]interface{}{ "task_type": req.Type, "reward_id": Id, "reward": Items, }) player.PlayMod.save() player.PushClientRes(&msg.ResPlayroomTaskReward{ Code: msg.RES_CODE_SUCCESS, Id: int32(Id), Type: req.Type, }) player.NotifyPlayroomTask() return nil } func ReqOfflineReconnectFunc(a gate.Agent, buf []byte) error { req := &msg.ReqOfflineReconnect{} proto.Unmarshal(buf, req) res := &msg.ResOfflineReconnect{} res.DwUin = req.DwUin if v, ok := G_GameLogicPtr.M_Players.Load(req.DwUin); ok { player := v.(*Player) agent := player.GetAgentByPlayer() if agent != a { player.SetAgent(a) internal.AsignPlayerToAgents(a, player) internal.Agents.Delete(agent) } res.Result = 3 } else { res.Result = 2 } data, _ := proto.Marshal(res) G_GameLogicPtr.PackResInfo(a, "ResOfflineReconnect", data) return nil } // playroom 打工离线 func ReqPlayroomOutline(player *Player, buf []byte) error { req := &msg.ReqPlayroomOutline{} proto.Unmarshal(buf, req) ChessMod := player.PlayMod.getChessMod() if req.CostDia < 0 { var itemList []*item.Item item := item.NewItem(item.ITEM_DIAMOND_ID, int(req.CostDia)) itemList = append(itemList, item) err := player.HandleItem(itemList, msg.ITEM_POP_LABEL_ChessEx.String()) if err != nil { player.SendErrClienRes(&msg.ResPlayroomOutline{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } } err := ChessMod.ExChess(int(req.OldChessId), int(req.NewChessId)) if err != nil { player.SendErrClienRes(&msg.ResPlayroomOutline{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } HandbookMod := player.PlayMod.getHandbookMod() HandbookMod.SetHandbook(int(req.NewChessId)) data := &PlayerChessData{} err = data.UpdateChessData(player, req.MChessData) if err != nil { player.SendErrClienRes(&msg.ResPlayroomOutline{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.PlayMod.save() player.PushClientRes(ChessMod.BackData()) player.PushClientRes(&msg.ResPlayroomOutline{ Code: msg.RES_CODE_SUCCESS, }) return nil } func ReqPlayroomWrokOutline(player *Player, buf []byte) error { PlayroomMod := player.PlayMod.getPlayroomMod() PlayroomMod.SetWorkOutline(0) player.PlayMod.save() player.PushClientRes(PlayroomMod.NotifyStatus()) player.PushClientRes(&msg.ResPlayroomWrokOutline{ Code: msg.RES_CODE_SUCCESS, }) return nil } func ReqPlayroomShop(player *Player, buf []byte) error { req := &msg.ReqPlayroomShop{} proto.Unmarshal(buf, req) PlayroomMod := player.PlayMod.getPlayroomMod() AddItems, LoseItem, err := PlayroomMod.ShopBuy(int(req.Id), int(req.Num)) if err != nil { player.SendErrClienRes(&msg.ResPlayroomShop{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } // 消耗道具为0则为广告获取 if LoseItem[0].Num == 0 { err := PlayroomMod.AdWatch(AddItems[0].Id) if err != nil { player.SendErrClienRes(&msg.ResPlayroomBuyItem{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } } err = player.HandleLoseItem(LoseItem, msg.ITEM_POP_LABEL_PlayroomShop.String()) if err != nil { player.SendErrClienRes(&msg.ResPlayroomShop{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } err = player.HandleItem(AddItems, msg.ITEM_POP_LABEL_PlayroomShop.String()) if err != nil { player.SendErrClienRes(&msg.ResPlayroomShop{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.TeLog("playroom_shop", map[string]interface{}{ "shop_id": req.Id, "num": req.Num, "reward": AddItems, }) player.PetItemGetLog(AddItems, LoseItem, "Shop") player.PlayMod.save() player.PushClientRes(PlayroomMod.NotifyMood()) player.PushClientRes(&msg.ResPlayroomShop{ Code: msg.RES_CODE_SUCCESS, }) return nil } func ReqFriendTreasure(player *Player, buf []byte) error { player.PushClientRes(player.PlayMod.getFriendTreasureMod().BackData()) return nil } func ReqFriendTreasureStart(player *Player, buf []byte) error { req := &msg.ReqFriendTreasureStart{} proto.Unmarshal(buf, req) // FriendMod := player.PlayMod.getFriendMod() FriendTreasureMod := player.PlayMod.getFriendTreasureMod() if FriendTreasureMod.Status == 1 { player.SendErrClienRes(&msg.ResFriendTreasureStart{ Code: msg.RES_CODE_FAIL, Msg: "game not over", }) return fmt.Errorf("game not over") } if FriendTreasureMod.Star < 100 { player.SendErrClienRes(&msg.ResFriendTreasureStart{ Code: msg.RES_CODE_FAIL, Msg: "not enough star", }) return fmt.Errorf("not enough star") } player.TeLog("friend_treasure_start", map[string]interface{}{}) player.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_PETTREASURE}) FriendTreasureMod.InitGame(req.List, req.List2) player.PlayMod.save() player.PushClientRes(&msg.ResFriendTreasureStart{ Code: msg.RES_CODE_SUCCESS, }) return nil } func ReqFriendTreasureFilp(player *Player, buf []byte) error { req := &msg.ReqFriendTreasureFilp{} proto.Unmarshal(buf, req) FriendTreasureMod := player.PlayMod.getFriendTreasureMod() Items, Uid, err := FriendTreasureMod.Flip(int(req.Pos)) if err != nil { player.SendErrClienRes( &msg.ResFriendTreasureFilp{ Code: msg.RES_CODE_FAIL, Msg: err.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, SendT: GoUtil.Now(), }) } err = player.HandleItem(Items, msg.ITEM_POP_LABEL_FriendtreasureFilp.String()) if err != nil { player.SendErrClienRes( &msg.ResFriendTreasureFilp{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }, ) return err } player.TeLog("friend_treasure_filp", map[string]interface{}{ "pos": req.Pos, "items": Items, "uid": Uid, }) player.PlayMod.save() player.PushClientRes(&msg.ResFriendTreasureFilp{ Code: msg.RES_CODE_SUCCESS, }) return nil } func ReqFriendTreasureEnd(player *Player, buf []byte) error { FriendTreasureMod := player.PlayMod.getFriendTreasureMod() Items, FriendItemNum, err := FriendTreasureMod.EndGame() if err != nil { player.SendErrClienRes( &msg.ResFriendTreasureEnd{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }, ) return err } for _, v := range FriendTreasureMod.List { ItemNum := 0 if v.Status == 1 { ItemNum = FriendItemNum } G_GameLogicPtr.FriendMgrSend(&MsqMod.Msg{ From: int(player.M_DwUin), To: int(v.Uid), Type: MsqMod.FRIEND_TREASURE_HANDLE, SendT: GoUtil.Now(), Extra: []*item.Item{item.NewItem(item.ITEM_STAR_ID, ItemNum)}, }) } err = player.HandleItem(Items, msg.ITEM_POP_LABEL_FriendtreasureEnd.String()) if err != nil { player.SendErrClienRes( &msg.ResFriendTreasureEnd{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }, ) return err } player.TeLog("friend_treasure_end", map[string]interface{}{ "items": Items, "num": FriendItemNum, }) player.PlayMod.save() player.PushClientRes(&msg.ResFriendTreasureEnd{ Code: msg.RES_CODE_SUCCESS, }) return nil } func ReqKafkaLog(player *Player, buf []byte) error { req := &msg.ReqKafkaLog{} proto.Unmarshal(buf, req) player.Kafka(req.Event, map[string]interface{}{ "From": "Client", "data": req.Data, }) return nil } func ReqCardHandbookReward(player *Player, buf []byte) error { req := &msg.ReqCardHandbookReward{} proto.Unmarshal(buf, req) CardMod := player.PlayMod.getCardMod() Items, err := CardMod.GetHandbookReward(int(req.CardId)) if err != nil { player.SendErrClienRes(&msg.ResCardHandbookReward{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } err = player.HandleItem(Items, msg.ITEM_POP_LABEL_CardHandbookReward.String()) if err != nil { player.SendErrClienRes(&msg.ResCardHandbookReward{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.TeLog("card_handbook_reward", map[string]interface{}{ "CardId": int(req.CardId), "Items": Items, }) player.PlayMod.save() player.PushClientRes(&msg.ResCardHandbookReward{ Code: msg.RES_CODE_SUCCESS, CardId: req.CardId, }) return nil } // 设置表情 func ReqSetEmoji(player *Player, buf []byte) error { req := &msg.ReqSetEmoji{} proto.Unmarshal(buf, req) EmojiMod := player.PlayMod.getEmojiMod() err := EmojiMod.SetEmoji(int(req.Id), int(req.Type)) if err != nil { player.SendErrClienRes(&msg.ResSetEmoji{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.TeLog("playerdeco_emoji_set", map[string]interface{}{ "emoji_name": emojiCfg.GetEmojiName(int(req.Id)), "emoji_id": int(req.Id), "emoji_setplace": int(req.Type), }) player.PlayMod.save() player.PushClientRes(&msg.ResSetEmoji{ Code: msg.RES_CODE_SUCCESS, }) BackUserInfo(player) return nil } // 请求收藏室内 func ReqCollectInfo(player *Player, buf []byte) error { CollectMod := player.PlayMod.getCollectMod() player.PushClientRes(CollectMod.BackData()) return nil } // 领取收集奖励 func ReqCollect(player *Player, buf []byte) error { req := &msg.ReqCollect{} proto.Unmarshal(buf, req) CollectMod := player.PlayMod.getCollectMod() Type := collectCfg.GetRewardType(int(req.Id)) Num := 0 AreaType := "" switch Type { case collect.COLLECT_TYPE_EMOJI: AreaType = "emoji" Num = player.PlayMod.getEmojiMod().GetEmojiNum() case collect.COLLECT_TYPE_FACE: AreaType = "face" Num = player.PlayMod.getFaceMod().GetFaceNum() case collect.COLLECT_TYPE_AVATAR: AreaType = "avatar" Num = player.PlayMod.getAvatarMod().GetAvatarNum() } Items, err := CollectMod.GetReward(int(req.Id), Num) if err != nil { player.SendErrClienRes(&msg.ResCollect{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } err = player.HandleItem(Items, msg.ITEM_POP_LABEL_Collect.String()) if err != nil { player.SendErrClienRes(&msg.ResCollect{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.PlayMod.save() player.PushClientRes(CollectMod.BackData()) player.PushClientRes(&msg.ResCollect{ Code: msg.RES_CODE_SUCCESS, }) player.TeLog("playerdeco_warehouse_unlock", map[string]interface{}{ "area_type": AreaType, "Id": int(req.Id), "Items": Items, }) return nil } // 获取出售棋子获得的星星数量 func ReqSellChessNum(player *Player, buf []byte) error { req := &msg.ReqSellChessNum{} proto.Unmarshal(buf, req) data, _ := mergeDataCfg.GetOne(int(req.ChessId)) Num := data.SellNum limitedTimeEventMod := player.PlayMod.getLimitedTimeEventMod() if limitedTimeEventMod.CheckExist(limitedTimeEvent.EVENT_TYPE_PAYBACK_DAY) { Num = data.Star } player.PushClientRes(&msg.ResSellChessNum{ Num: int32(Num), }) return nil } func ReqPlayroomDressSet(player *Player, buf []byte) error { req := &msg.ReqPlayroomDressSet{} proto.Unmarshal(buf, req) PlayroomMod := player.PlayMod.getPlayroomMod() Parts, Diff, error := PlayroomMod.PlayroomDressSet(GoUtil.MapInt32ToInt(req.DressSet)) if error != nil { player.SendErrClienRes(&msg.ResPlayroomDressSet{ Code: msg.RES_CODE_FAIL, Msg: error.Error(), }) return error } player.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_PETDRESS, A: []interface{}{Parts}}) player.PlayMod.save() player.PetDecoSetLog(Diff) PlayroomBackData(player) player.PushClientRes(&msg.ResPlayroomDressSet{ Code: msg.RES_CODE_SUCCESS, }) return nil } func ReqPlayroomPetAirSet(player *Player, buf []byte) error { req := &msg.ReqPlayroomPetAirSet{} proto.Unmarshal(buf, req) PlayroomMod := player.PlayMod.getPlayroomMod() error := PlayroomMod.PlayroomPetAirSet(int(req.PetAirSet)) if error != nil { player.SendErrClienRes(&msg.ResPlayroomPetAirSet{ Code: msg.RES_CODE_FAIL, Msg: error.Error(), }) return error } player.PlayMod.save() PlayroomBackData(player) player.PushClientRes(&msg.ResPlayroomPetAirSet{ Code: msg.RES_CODE_SUCCESS, }) return nil } func ReqLimitEventLuckyCat(player *Player, buf []byte) error { req := &msg.ReqLimitEventLuckyCat{} LimitedTimeEventMod := player.PlayMod.getLimitedTimeEventMod() err := LimitedTimeEventMod.LuckyCat(int(req.ChessId)) if err != nil { player.SendErrClienRes(&msg.ResLimitEventLuckyCat{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } ChessMod := player.PlayMod.getChessMod() err = ChessMod.AddChess(int(req.ChessId)) if err != nil { player.SendErrClienRes(&msg.ResLimitEventLuckyCat{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) } data := &PlayerChessData{} err = data.UpdateChessData(player, req.MChessData) if err != nil { player.SendErrClienRes(&msg.ResLimitEventLuckyCat{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) player.TeLog("outsync_event", map[string]interface{}{ "outsync_event": "ReqLimitEventLuckyCat", "req": req, }) return err } player.TeLog("limit_event_luckycat", map[string]interface{}{ "ChessId": int(req.ChessId), }) player.PlayMod.save() player.PushClientRes(LimitedTimeEventMod.BackData()) player.PushClientRes(&msg.ResLimitEventLuckyCat{ Code: msg.RES_CODE_SUCCESS, }) return nil } func ReqActivityReward(player *Player, buf []byte) error { req := &msg.ReqActivityReward{} proto.Unmarshal(buf, req) ActivityInfo := GetActivityInfo(player, int(req.Id)) if ActivityInfo == nil { player.SendErrClienRes(&msg.ResActivityReward{ Code: msg.RES_CODE_FAIL, Msg: "activity not exist", }) return fmt.Errorf("activity not exist") } ActivityMod := player.PlayMod.getActivityMod() Items, err := ActivityMod.GetReward(int(req.Id)) if err != nil { player.SendErrClienRes(&msg.ResActivityReward{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } err = player.HandleItem(Items, msg.ITEM_POP_LABEL_ActivityReward.String()) if err != nil { player.SendErrClienRes(&msg.ResActivityReward{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.TeLog("activity_reward", map[string]interface{}{ "Id": int(req.Id), "Items": Items, }) player.PlayMod.save() player.initAcitivity() player.BackDataActivity() player.PushClientRes(&msg.ResActivityReward{ Code: msg.RES_CODE_SUCCESS, }) return nil } func ReqLang(player *Player, buf []byte) error { req := &msg.ReqLang{} proto.Unmarshal(buf, req) BaseMod := player.PlayMod.getBaseMod() BaseMod.SetLang(req.Lang) player.PushClientRes(&msg.ResLang{ ResultCode: msg.RES_CODE_SUCCESS, }) return nil } func ReqCatTrickReward(player *Player, buf []byte) error { req := &msg.ReqCatTrickReward{} proto.Unmarshal(buf, req) LimitedTimeEventMod := player.PlayMod.getLimitedTimeEventMod() if !LimitedTimeEventMod.CheckExist(limitedTimeEvent.EVENT_TYPE_CAT_TRICK) { player.SendErrClienRes(&msg.ResCatTrickReward{ Code: msg.RES_CODE_FAIL, Msg: "cat trick event not exist", }) return fmt.Errorf("cat trick event not exist") } Items, err := LimitedTimeEventMod.GetCatTrickReward() if err != nil { player.SendErrClienRes(&msg.ResCatTrickReward{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } err = player.HandleItem(Items, msg.ITEM_POP_LABEL_CatTrickReward.String()) if err != nil { player.SendErrClienRes(&msg.ResCatTrickReward{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.TeLog("cat_trick_reward", map[string]interface{}{ "Items": Items, }) player.PlayMod.save() player.PushClientRes(LimitedTimeEventMod.BackData()) player.PushClientRes(&msg.ResCatTrickReward{ Code: msg.RES_CODE_SUCCESS, IsClose: !LimitedTimeEventMod.CheckExist(limitedTimeEvent.EVENT_TYPE_CAT_TRICK), }) return nil } func ReqAddNpc(player *Player, buf []byte) error { req := &msg.ReqAddNpc{} proto.Unmarshal(buf, req) FriendMod := player.PlayMod.getFriendMod() FriendMod.SetNpc(int(req.NpcId)) if len(FriendMod.Npc) == 1 { // 首次添加NPC 视为邀请好友成功 InviteMod := player.PlayMod.getInviteMod() InviteMod.AddInvite(int(req.NpcId)) } player.PlayMod.save() FriendListBackData(player) PlayroomMod := player.PlayMod.getPlayroomMod() BaseMod := player.PlayMod.getBaseMod() PlayroomMod.AddRoomPointInvite(BaseMod.GetLevel()) PlayroomMod.AddRoomPointAdd(BaseMod.GetLevel()) PlayroomBackData(player) player.TeLog("add_npc", map[string]interface{}{ "NpcId": int(req.NpcId), }) player.AddLog(int(req.NpcId), friend.LOG_TYPE_FRIEND_BECOME_NPC, GoUtil.String(req.NpcId), GoUtil.Now()) player.PushClientRes(&msg.ResAddNpc{ Code: msg.RES_CODE_SUCCESS, NpcId: req.NpcId, }) return nil } func ReqChargeReceive(player *Player, buf []byte) error { req := &msg.ReqChargeReceive{} proto.Unmarshal(buf, req) FriendMgrSend(&MsqMod.Msg{ From: int(player.M_DwUin), To: int(req.Uid), SendT: GoUtil.Now(), Type: MsqMod.HANDLE_TYPE_CHARGE_RECEIVE, Extra: req.Content, }) player.PushClientRes(&msg.ResChargeReceive{ Code: msg.RES_CODE_SUCCESS, }) return nil } func ReqAddWish(player *Player, buf []byte) error { req := &msg.ReqAddWish{} proto.Unmarshal(buf, req) ChargeMod := player.PlayMod.getChargeMod() Items, err := ChargeMod.AddWish(int(req.Id), int(req.Type)) if err != nil { player.SendErrClienRes(&msg.ResAddWish{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } if Items != nil { err = player.HandleItem(Items, msg.ITEM_POP_LABEL_AddWish.String()) if err != nil { player.SendErrClienRes(&msg.ResAddWish{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } } player.TeLog("wish_add", map[string]interface{}{ "Id": int(req.Id), "Type": int(req.Type), "Items": Items, }) player.PlayMod.save() player.PushClientRes(&msg.ResAddWish{ Code: msg.RES_CODE_SUCCESS, }) return nil } func ReqGetWish(player *Player, buf []byte) error { req := &msg.ReqGetWish{} proto.Unmarshal(buf, req) ChargeMod := player.PlayMod.getChargeMod() Items, err := ChargeMod.GetWish() if err != nil { player.SendErrClienRes(&msg.ResGetWish{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } if Items != nil { err = player.HandleItem(Items, msg.ITEM_POP_LABEL_GetWish.String()) if err != nil { player.SendErrClienRes(&msg.ResGetWish{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } } player.TeLog("wish_get", map[string]interface{}{ "wish": Items, }) player.PlayMod.save() player.PushClientRes(&msg.ResGetWish{ Code: msg.RES_CODE_SUCCESS, }) return nil } func ReqSendWishBeg(player *Player, buf []byte) error { req := &msg.ReqSendWishBeg{} proto.Unmarshal(buf, req) ChargeMod := player.PlayMod.getChargeMod() err := ChargeMod.SendWishBeg(req.Uid) if err != nil { player.SendErrClienRes(&msg.ResSendWishBeg{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } for _, v := range req.Uid { FriendMgrSend(&MsqMod.Msg{ From: int(player.M_DwUin), To: int(v), Type: MsqMod.HANDLE_TYPE_WISHLIST_SEND, SendT: GoUtil.Now(), }) } player.TeLog("wish_send", map[string]interface{}{ "Uid": req.Uid, }) player.PlayMod.save() player.PushClientRes(&msg.ResSendWishBeg{ Code: msg.RES_CODE_SUCCESS, }) return nil } func ReqWishApplyList(player *Player, buf []byte) error { req := &msg.ReqWishApplyList{} proto.Unmarshal(buf, req) FriendMod := player.PlayMod.getFriendMod() List := FriendMod.GetWishApply() rs := make([]*msg.ResFriendApplyInfo, 0) for _, v := range List { PD := G_GameLogicPtr.GetResSimplePlayerByUid(int(v.Uid)) if PD == nil { continue } rs = append(rs, &msg.ResFriendApplyInfo{ Player: PD, Time: int32(v.Time), }) } player.PlayMod.save() player.PushClientRes(&msg.ResWishApplyList{ ApplyList: rs, }) return nil } func ReqWishApply(player *Player, buf []byte) error { req := &msg.ReqWishApply{} proto.Unmarshal(buf, req) FriendMod := player.PlayMod.getFriendMod() err := FriendMod.ApplyWish(req.Uid) if err != nil { player.SendErrClienRes(&msg.ResWishApply{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } FriendMgrSend(&MsqMod.Msg{ From: int(player.M_DwUin), To: int(req.Uid), Type: MsqMod.HANDLE_TYPE_WISHLIST_AGREE, SendT: GoUtil.Now(), }) player.TeLog("wish_apply", map[string]interface{}{ "Uid": int(req.Uid), }) player.PlayMod.save() player.PushClientRes(&msg.ResWishApply{ Code: msg.RES_CODE_SUCCESS, Uid: req.Uid, }) return nil } func ReqGuidePlayroom(player *Player, buf []byte) error { req := &msg.ReqGuidePlayroom{} proto.Unmarshal(buf, req) GuideMod := player.PlayMod.getGuideMod() B := GuideMod.GetPlayroomGuide() if B { player.SendErrClienRes(&msg.ResGuidePlayroom{ Code: msg.RES_CODE_FAIL, Msg: "已领取", }) return fmt.Errorf("已领取") } Items := []*item.Item{item.NewItem(int(req.Id), 1)} err := player.HandleItem(Items, msg.ITEM_POP_LABEL_PlayroomGame.String()) if err != nil { player.SendErrClienRes(&msg.ResWishApply{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } GuideMod.SetPlayroomGuide(true) player.PlayMod.save() player.PushClientRes(&msg.ResGuidePlayroom{ Code: msg.RES_CODE_SUCCESS, }) return nil } func ReqId2Verify(player *Player, buf []byte) error { req := &msg.ReqId2Verify{} proto.Unmarshal(buf, req) if req.Id == "" || req.Name == "" { player.SendErrClienRes(&msg.ResId2Verify{ ResultCode: msg.RES_CODE_FAIL, Msg: "id is zero", }) return fmt.Errorf("id is zero") } err := GoUtil.IdVerify(req.Name, req.Id) if err != nil { player.SendErrClienRes(&msg.ResId2Verify{ ResultCode: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } BaseMod := player.PlayMod.getBaseMod() BaseMod.SetId2Verify(req.Name, req.Id) player.TeLog("id2verify", map[string]interface{}{ "Id": req.Id, "Name": req.Name, }) player.PlayMod.save() player.PushClientRes(&msg.ResId2Verify{ ResultCode: msg.RES_CODE_SUCCESS, }) return nil } func ReqFriendByCode(player *Player, buf []byte) error { req := &msg.ReqFriendByCode{} proto.Unmarshal(buf, req) if req.Code == "" { player.SendErrClienRes(&msg.ResFriendByCode{ Code: msg.RES_CODE_FAIL, Msg: "code is empty", }) return fmt.Errorf("code is empty") } CodeNum := GoUtil.ParseUniqueStringToInt(req.Code) if CodeNum <= 0 { player.SendErrClienRes(&msg.ResFriendByCode{ Code: msg.RES_CODE_FAIL, Msg: "code is invalid", }) return fmt.Errorf("code is invalid") } Uid := int64(CodeNum) + int64(conf.Server.ServerID*100000) + int64(conf.Server.AppID*100000000) if Uid == player.M_DwUin { player.SendErrClienRes(&msg.ResFriendByCode{ Code: msg.RES_CODE_FAIL, Msg: "can not add yourself", }) return fmt.Errorf("can not add yourself") } PlayerSimpleData := G_GameLogicPtr.GetResSimplePlayerByUid(int(Uid)) if PlayerSimpleData == nil { player.SendErrClienRes(&msg.ResFriendByCode{ Code: msg.RES_CODE_FAIL, Msg: "player not exist", }) return fmt.Errorf("player not exist") } player.PushClientRes(&msg.ResFriendByCode{ Code: msg.RES_CODE_SUCCESS, Player: PlayerSimpleData, }) return nil } func ReqPlayroomGameShowReward(player *Player, buf []byte) error { req := &msg.ReqPlayroomGameShowReward{} proto.Unmarshal(buf, req) Items := player.GetPlayroomGameReward(int(req.Type), int(req.SelectId)) player.PushClientRes(&msg.ResPlayroomGameShowReward{ Items: item.ItemToMsg(Items), }) return nil } func ReqPlayroomGuide(player *Player, buf []byte) error { req := &msg.ReqPlayroomGuide{} proto.Unmarshal(buf, req) PlayroomMod := player.PlayMod.getPlayroomMod() err := PlayroomMod.Guide(int(req.Type)) if err != nil { player.SendErrClienRes(&msg.ResPlayroomGuide{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.TeLog("playroom_guide", map[string]interface{}{ "Physiology": req.Type, }) player.PlayMod.save() player.PushClientRes(PlayroomMod.NotifyMood()) player.PushClientRes(&msg.ResPlayroomGuide{ Code: msg.RES_CODE_SUCCESS, }) return nil } func ReqCatnip(player *Player, buf []byte) error { player.CatnipBackData() return nil } // TODO : 猫草大作战邀请好友 func ReqCatnipInvite(player *Player, buf []byte) error { req := &msg.ReqCatnipInvite{} proto.Unmarshal(buf, req) ActivityId := GetActivityId(player, activity.ACT_TYPE_MINING) CatnipMod := player.PlayMod.getCatnipMod() err := CatnipMod.Invite(int(req.Id), int(req.Uid)) if err != nil { player.SendErrClienRes(&msg.ResCatnipInvite{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.TeLog("catnip_invite", map[string]interface{}{ "Id": int(req.Id), }) FriendMgrSend(&MsqMod.Msg{ From: int(player.M_DwUin), To: int(req.Uid), Type: MsqMod.HANDLE_TYPE_CATNIP_INVITE, Extra: CatnipMsg{ ActivityId: ActivityId, GameId: int(req.Id), }, SendT: GoUtil.Now(), }) player.PlayMod.save() player.PushClientRes(&msg.ResCatnipInvite{ Code: msg.RES_CODE_SUCCESS, }) return nil } func ReqCatnipAgree(player *Player, buf []byte) error { req := &msg.ReqCatnipAgree{} proto.Unmarshal(buf, req) CatnipMod := player.PlayMod.getCatnipMod() ActivityId := GetActivityId(player, activity.ACT_TYPE_MINING) UserList, err := CatnipMod.Agree(int(req.Id), int(req.Uid)) if err != nil { player.SendErrClienRes(&msg.ResCatnipAgree{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.TeLog("catnip_agree", map[string]interface{}{ "Id": int(req.Id), }) FriendMgrSend(&MsqMod.Msg{ From: int(player.M_DwUin), To: int(req.Uid), Type: MsqMod.HANDLE_TYPE_CATNIP_AGREE, Extra: CatnipMsg{ ActivityId: ActivityId, GameId: int(req.Id), }, SendT: GoUtil.Now(), }) for _, v := range UserList { FriendMgrSend(&MsqMod.Msg{ From: int(player.M_DwUin), To: int(v), Type: MsqMod.HANDLE_TYPE_CATNIP_AGREE, Extra: CatnipMsg{ ActivityId: ActivityId, GameId: int(req.Id), }, SendT: GoUtil.Now(), }) } player.PlayMod.save() player.PushClientRes(&msg.ResCatnipAgree{ Code: msg.RES_CODE_SUCCESS, }) return nil } // TODO : 猫草大作战设置倍数 func ReqCatnipMultiply(player *Player, buf []byte) error { req := &msg.ReqCatnipMultiply{} proto.Unmarshal(buf, req) CatnipMod := player.PlayMod.getCatnipMod() err := CatnipMod.Multiply(int(req.Id), int(req.Multiply)) if err != nil { player.SendErrClienRes(&msg.ResCatnipMultiply{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.TeLog("catnip_multiply", map[string]interface{}{ "Id": int(req.Id), "Mul": int(req.Multiply), }) player.PlayMod.save() player.PushClientRes(&msg.ResCatnipMultiply{ Code: msg.RES_CODE_SUCCESS, }) return nil } // TODO : 猫草大作战开始游戏 func ReqCatnipPlay(player *Player, buf []byte) error { req := &msg.ReqCatnipPlay{} proto.Unmarshal(buf, req) CatnipMod := player.PlayMod.getCatnipMod() Id, Growth, PartnerId, Items, ItemCost, err := CatnipMod.Play(int(req.Id)) if err != nil { player.SendErrClienRes(&msg.ResCatnipPlay{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } err = player.HandleLoseItem(ItemCost, msg.ITEM_POP_LABEL_CatnipPlay.String()) if err != nil { player.SendErrClienRes(&msg.ResCatnipPlay{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) } err = player.HandleItem(Items, msg.ITEM_POP_LABEL_CatnipPlay.String()) if err != nil { player.SendErrClienRes(&msg.ResCatnipPlay{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) } player.TeLog("catnip_play", map[string]interface{}{ "Id": int(req.Id), "Growth": Growth, "PartnerId": PartnerId, "Items": Items, }) if Growth > 0 { player.CatnipGrowthMsg(PartnerId, int(req.Id), Growth) } player.PlayMod.save() player.PushClientRes(&msg.ResCatnipPlay{ Code: msg.RES_CODE_SUCCESS, Id: int32(Id), }) return nil } // TODO : 猫草大作战领取奖励 func ReqCatnipReward(player *Player, buf []byte) error { req := &msg.ReqCatnipReward{} proto.Unmarshal(buf, req) CatnipMod := player.PlayMod.getCatnipMod() Items, err := CatnipMod.Reward(int(req.Id), int(req.Progress)) if err != nil { player.SendErrClienRes(&msg.ResCatnipReward{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } err = player.HandleItem(Items, msg.ITEM_POP_LABEL_CatnipReward.String()) if err != nil { player.SendErrClienRes(&msg.ResCatnipReward{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.TeLog("catnip_reward", map[string]interface{}{ "Id": int(req.Id), "Progress": int(req.Progress), "Items": Items, }) player.PlayMod.save() player.PushClientRes(&msg.ResCatnipReward{ Code: msg.RES_CODE_SUCCESS, }) return nil } // 猫草大作战领取大奖 func ReqCatnipGrandReward(player *Player, buf []byte) error { req := &msg.ReqCatnipGrandReward{} proto.Unmarshal(buf, req) CatnipMod := player.PlayMod.getCatnipMod() Items, err := CatnipMod.GrandReward() if err != nil { player.SendErrClienRes(&msg.ResCatnipGrandReward{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } err = player.HandleItem(Items, msg.ITEM_POP_LABEL_CatnipGrandReward.String()) if err != nil { player.SendErrClienRes(&msg.ResCatnipGrandReward{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.TeLog("catnip_grand_reward", map[string]interface{}{ "Items": Items, }) player.PlayMod.save() player.PushClientRes(&msg.ResCatnipGrandReward{ Code: msg.RES_CODE_SUCCESS, }) return nil } func ReqCatnipRefuse(player *Player, buf []byte) error { req := &msg.ReqCatnipRefuse{} proto.Unmarshal(buf, req) CatnipMod := player.PlayMod.getCatnipMod() err := CatnipMod.Refuse(int(req.Id), int(req.Uid)) if err != nil { player.SendErrClienRes(&msg.ResCatnipRefuse{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) return err } player.TeLog("catnip_refuse", map[string]interface{}{ "Id": int(req.Id), }) FriendMgrSend(&MsqMod.Msg{ From: int(player.M_DwUin), To: int(req.Uid), Type: MsqMod.HANDLE_TYPE_CATNIP_REFUSE, SendT: GoUtil.Now(), Extra: CatnipMsg{ ActivityId: GetActivityId(player, activity.ACT_TYPE_MINING), GameId: int(req.Id), }, }) player.PlayMod.save() player.PushClientRes(&msg.ResCatnipRefuse{ Code: msg.RES_CODE_SUCCESS, }) return nil }