diff --git a/.gitignore b/.gitignore index e65e11c5..a6745817 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,5 @@ src/server/unit_test.go src/server/teLog/* src/server/teLog/log.2024-11-28 src/server/logs/ga_log/*.log +src/server/goroutine.prof +src/server/heap_after.pb.gz diff --git a/src/server/cluster/ClusterFunc.go b/src/server/cluster/ClusterFunc.go index 6bdcd475..b610540b 100644 --- a/src/server/cluster/ClusterFunc.go +++ b/src/server/cluster/ClusterFunc.go @@ -126,6 +126,7 @@ func SendServerMsg(m *msg.Msg, serverId int) error { } func CallServerMsg(m *msg.Msg, serverId int) (*msg.Msg, error) { + m.UniKey = GoUtil.UniKey(fmt.Sprintf("%v,Cluster Msg", m)) if v, ok := serverAgent.Load(serverId); ok { data, err := GoUtil.GobMarshal(m) if err != nil { @@ -134,7 +135,6 @@ func CallServerMsg(m *msg.Msg, serverId int) (*msg.Msg, error) { } v.(network.Agent).WriteMsg(data) } - m.UniKey = GoUtil.UniKey("clusterGlobal") newChan := make(chan *msg.Msg, 1) registerChanel(m.UniKey, newChan) timeout := time.After(15 * time.Second) diff --git a/src/server/conf/charge/ChargeCfg.go b/src/server/conf/charge/ChargeCfg.go index 77691546..b9153c61 100644 --- a/src/server/conf/charge/ChargeCfg.go +++ b/src/server/conf/charge/ChargeCfg.go @@ -314,6 +314,14 @@ func GetChargeInfo(ChargeId int) (float64, string) { return gamedata.GetFloatValue(data, "Money"), gamedata.GetStringValue(data, "Unit") } +func GetProduceName(ChargeId int) string { + data, err := gamedata.GetDataByIntKey(CFG_CHARGE, ChargeId) + if err != nil { + return "" + } + return gamedata.GetStringValue(data, "Remark") +} + func GetWishCount(ItemId int) int { data, err := gamedata.GetDataByIntKey(CFG_CHARGE_WISH, ItemId) if err != nil { diff --git a/src/server/conf/json.go b/src/server/conf/json.go index 471018f0..64bd3ec7 100644 --- a/src/server/conf/json.go +++ b/src/server/conf/json.go @@ -47,6 +47,7 @@ var Server struct { ListenAddr string CenterAddr string + CenterNode int RemoteAddr string GameConfPath string diff --git a/src/server/conf/language/languageCfg.go b/src/server/conf/language/languageCfg.go index b6782225..b67d268a 100644 --- a/src/server/conf/language/languageCfg.go +++ b/src/server/conf/language/languageCfg.go @@ -6,23 +6,27 @@ import ( ) const ( - CFG_LANGUAGE = "LanguageData" + CFG_LANGUAGE = "LanguageData" + CFG_ALLLANGUAGE = "AllLanguage" ) func init() { gamedata.InitCfg(CFG_LANGUAGE) + gamedata.InitCfg(CFG_ALLLANGUAGE) } func GetLanguage(lang msg.LANG_TYPE, key string) string { - data, err := gamedata.GetDataByKey(CFG_LANGUAGE, key) + data, err := gamedata.GetDataByKey(CFG_ALLLANGUAGE, key) if err != nil { return key } switch lang { case msg.LANG_TYPE_LANG_EN: - return gamedata.GetStringValue(data, "English") + return gamedata.GetStringValue(data, "en_US") case msg.LANG_TYPE_LANG_PTBR: return gamedata.GetStringValue(data, "pt_BR") + case msg.LANG_TYPE_LANG_CN: + return gamedata.GetStringValue(data, "zh_CN") default: return key } diff --git a/src/server/conf/limitedTimeEvent/LimitedTimeEventCfg.go b/src/server/conf/limitedTimeEvent/LimitedTimeEventCfg.go index 6ed133ae..6c4e30b7 100644 --- a/src/server/conf/limitedTimeEvent/LimitedTimeEventCfg.go +++ b/src/server/conf/limitedTimeEvent/LimitedTimeEventCfg.go @@ -24,6 +24,7 @@ const ( CFG_LIMITED_TIME_EVENT_MONEY = "LimitedTimeEventMoney" CFG_LIMITED_TIME_EVENT_LUCKY = "LimitedTimeEventLucky" CFG_LIMITED_TIME_EVENT_CAT_TRICK = "LimitedTimeEventCatTrick" + CFG_LIMTTED_TIME_EVENT_DECORATE_OFF = "LimitedTimeEventDecorateOff" ) func init() { @@ -41,6 +42,7 @@ func init() { gamedata.InitCfg(CFG_LIMITED_TIME_EVENT_MONEY) gamedata.InitCfg(CFG_LIMITED_TIME_EVENT_LUCKY) gamedata.InitCfg(CFG_LIMITED_TIME_EVENT_CAT_TRICK) + gamedata.InitCfg(CFG_LIMTTED_TIME_EVENT_DECORATE_OFF) } // 获取限时事件触发列表 @@ -417,3 +419,21 @@ func GetCatTrickDiamond(Type int) (int, int) { } return gamedata.GetIntValue(data, "Diamond"), gamedata.GetIntValue(data, "Energy") } + +func GetDecorateOffDiscount(AreaId, StepId int) int { + data, err := gamedata.GetData(CFG_LIMTTED_TIME_EVENT_DECORATE_OFF) + if err != nil { + log.Debug("GetDecorateOffDiscount err:%v", err) + return 100 + } + for _, v := range data { + StartAreaId := gamedata.GetIntValue(v, "StartArea") + EndAreaId := gamedata.GetIntValue(v, "EndArea") + StartStepId := gamedata.GetIntValue(v, "StartStep") + EndStepId := gamedata.GetIntValue(v, "EndStep") + if AreaId >= StartAreaId && AreaId <= EndAreaId && StepId >= StartStepId && StepId <= EndStepId { + return gamedata.GetIntValue(v, "Off") + } + } + return 100 +} diff --git a/src/server/conf/server.json b/src/server/conf/server.json index e139badd..c6779e49 100644 --- a/src/server/conf/server.json +++ b/src/server/conf/server.json @@ -24,6 +24,10 @@ "ServerStatus" : 1, "ServerCenter" : 1, "GameConfPath": "D:/Github/pet_home_server/src/server/gamedata/config/", + + "ListenAddr":":9001", + "CenterAddr": "pethome.bywaystudios.com:9000", + "RemoteAddr":"host.docker.internal:9001", "RedisAddr":"127.0.0.1", "RedisPort" :"6379", @@ -35,7 +39,6 @@ "RedisConnType":"Direct", "GoogleVerify":false, - "RemoteAddr":"host.docker.internal:9001", "Partition":3, "KafkaHost":"kafka-server", "CountryCode":"004", diff --git a/src/server/game/ActivityFunc.go b/src/server/game/ActivityFunc.go index d7d5bf49..a23348f3 100644 --- a/src/server/game/ActivityFunc.go +++ b/src/server/game/ActivityFunc.go @@ -3,6 +3,7 @@ package game import ( "server/GoUtil" activityCfg "server/conf/activity" + catnipCfg "server/conf/catnip" guesscolorCfg "server/conf/guessColor" itemCfg "server/conf/item" mailCfg "server/conf/mail" @@ -55,6 +56,13 @@ func ActivityLogin(p *Player) { SendActivityMail(p, ItemId, ItemNum, ActivityId, nil) } } + // 猫草大作战 + ActivityId = GetActivityId(p, activity.ACT_TYPE_CATNIP) + CatnipMod := p.PlayMod.getCatnipMod() + OldId = CatnipMod.Login(ActivityId) + if OldId != 0 { + // 清空猫草大作战数据无需发邮件 + } // 通行证 ActivityId = GetActivityId(p, activity.ACT_TYPE_PASS) @@ -99,6 +107,16 @@ func ActivityZeroUpdate(p *Player) { RaceMod := p.PlayMod.getRaceMod() RaceMod.ZeroUpdate(ActivityInfo.Id) } + ActivityInfo = GetActivityInfo(p, activity.ACT_TYPE_PASS) + if ActivityInfo != nil { + PassMod := p.PlayMod.getPassMod() + PassMod.ZeroUpdate(ActivityInfo.Id) + } + ActivityInfo = GetActivityInfo(p, activity.ACT_TYPE_CATNIP) + if ActivityInfo != nil { + CatnipMod := p.PlayMod.getCatnipMod() + CatnipMod.ZeroUpdate(ActivityInfo.Id) + } } func GetActivityInfo(p *Player, actType int) *ActivityInfo { @@ -287,6 +305,10 @@ func GetActivityItem(p *Player, ActType []int) []*item.Item { } func (p *Player) CatnipBackData() { + ActivityInfo := GetActivityInfo(p, activity.ACT_TYPE_PASS) + if ActivityInfo == nil { + return + } CatnipMod := p.PlayMod.getCatnipMod() Status := GetActivityStatus(p, activity.ACT_TYPE_CATNIP) if CatnipMod == nil { @@ -298,6 +320,8 @@ func (p *Player) CatnipBackData() { Id: int32(v.Id), Progress: int32(v.Progress), Status: int32(v.Status), + Reward: GoUtil.SliceIntToInt32(v.Reward), + Emoji: int32(v.EmojiId), } if v.Partner != 0 { PlayerData := G_getGameLogic().GetResSimplePlayerByUid(v.Partner) @@ -305,12 +329,32 @@ func (p *Player) CatnipBackData() { GameInfo.Partner = PlayerData } } + InviteList := make([]*msg.CatnipInvite, 0) + for _, iv := range v.InviteList { + InviteList = append(InviteList, &msg.CatnipInvite{ + Uid: int64(iv.InviteId), + Time: int64(iv.Time), + }) + } + GameInfo.InviteList = InviteList + BeInvitedList := make([]*msg.CatnipInvite, 0) + for _, iv := range v.BeInvitedList { + BeInvitedList = append(BeInvitedList, &msg.CatnipInvite{ + Uid: int64(iv.InviteId), + Time: int64(iv.Time), + }) + } + GameInfo.BeInviteList = BeInvitedList GameList = append(GameList, GameInfo) } + Template := catnipCfg.GetTemplateId(CatnipMod.Id) res := &msg.ResCatnip{ Id: int32(CatnipMod.Id), + EndTime: int32(ActivityInfo.EndT), Status: int32(Status), + Template: int32(Template), GameList: GameList, + Multiply: int32(CatnipMod.Mul), } p.PushClientRes(res) } diff --git a/src/server/game/ChargeFunc.go b/src/server/game/ChargeFunc.go index fff89eb1..4b6cd5e3 100644 --- a/src/server/game/ChargeFunc.go +++ b/src/server/game/ChargeFunc.go @@ -47,7 +47,7 @@ func ADPetWorkFire(p *Player, ChargeId int) { } } p.PlayMod.save() - p.PushClientRes(ChargeMod.BackData()) + p.ChargeBackData() } func ActivityFire(p *Player, ChargeId int) { @@ -154,7 +154,7 @@ func ChargeFire(p *Player, ChargeId int) { log.Debug("ChargeFire err : %s", err) } p.PlayMod.save() - p.PushClientRes(ChargeMod.BackData()) + p.ChargeBackData() } func ChargeItem(p *Player, ChargeId int) []*item.Item { diff --git a/src/server/game/ClusterMgr.go b/src/server/game/ClusterMgr.go index 6eec04b3..e3b1ba4e 100644 --- a/src/server/game/ClusterMgr.go +++ b/src/server/game/ClusterMgr.go @@ -37,4 +37,20 @@ func init() { RegisterClusterHandler(msg.HANDLE_TYPE_REQ_CARD, FriendMgrSend) RegisterClusterHandler(msg.HANDLE_TYPE_AGREE_CARD, FriendMgrSend) RegisterClusterHandler(msg.CLUSTER_FRIEND_SYNC, ClusterFriendSync) + RegisterClusterHandler(msg.HANDLE_TYPE_CHAMPSHIP_INRANK, champshipInrankHandler) + RegisterClusterHandler(msg.HANDLE_TYPE_CHAMPSHIP_RANK_INFO, champshipRankInfoHandler) +} + +func champshipInrankHandler(m *msg.Msg) error { + G_GameLogicPtr.ChampshipMgrSend(m) + return nil +} + +func champshipRankInfoHandler(m *msg.Msg) error { + data := G_GameLogicPtr.ChampshipMgrCall(m) + m.To = m.From + m.From = 0 + m.Extra = data + FriendMgrSend(m) + return nil } diff --git a/src/server/game/FriendMgr.go b/src/server/game/FriendMgr.go index 677de96e..12cd18ef 100644 --- a/src/server/game/FriendMgr.go +++ b/src/server/game/FriendMgr.go @@ -91,6 +91,8 @@ func (f *FriendMgr) Init() { f.RegisterHandler(msg.HANDLE_TYPE_VAR_USER_SET, f.SetVarUserData) f.RegisterHandler(msg.HANDLE_TYPE_VAR_EXPIRE_SET, f.SetExpireVarData) + + f.RegisterHandler(msg.HANDLE_TYPE_CHAMPSHIP_LOGIN, f.SendMsgToCenter) } func (f *FriendMgr) getData() *FirendData { @@ -253,6 +255,15 @@ func ClusterFriendSync(m *msg.Msg) error { return nil } +// 异步发送消息给中心服 +func (f *FriendMgr) SendMsgToCenter(m *msg.Msg) (interface{}, error) { + return nil, mergeCluster.SendServerMsg(m, conf.Server.CenterNode) +} + +func (f *FriendMgr) CallMsgToCenter(m *msg.Msg) (interface{}, error) { + return mergeCluster.CallServerMsg(m, conf.Server.CenterNode) +} + func FriendMgrCall(m *msg.Msg) interface{} { ToServer := GoUtil.GetServerIdByUid(m.To) if ToServer != conf.Server.ServerID { diff --git a/src/server/game/GameLogic.go b/src/server/game/GameLogic.go index 373faf68..3fed32b5 100644 --- a/src/server/game/GameLogic.go +++ b/src/server/game/GameLogic.go @@ -287,7 +287,7 @@ func (ad *GameLogic) SetUserData(Uid int, Op int, Data interface{}) { } func (ad *GameLogic) SetDataSync(Uid int, Op int, Data interface{}) error { - _, err := ad.FriendMgr.Call(&MsgMod.Msg{ + _, err := ad.VarMgr.Call(&MsgMod.Msg{ From: Uid, To: Uid, Type: MsgMod.HANDLE_TYPE_VAR_EXPIRE_SET, @@ -297,6 +297,21 @@ func (ad *GameLogic) SetDataSync(Uid int, Op int, Data interface{}) error { return err } +func (ad *GameLogic) SetCatnipPartner(Uid int, GameId int, PartnerUid int) error { + _, err := ad.VarMgr.Call(&MsgMod.Msg{ + From: Uid, + To: Uid, + Type: MsgMod.HANDLE_TYPE_SET_CATNIP_PARTNER, + SendT: GoUtil.Now(), + Extra: map[string]interface{}{ + "uid": Uid, + "game_id": GameId, + "partner_uid": PartnerUid, + }, + }) + return err +} + func (ad *GameLogic) GetUserData(Uid int) *VarUserData { result, err := ad.FriendMgr.Call(&MsgMod.Msg{ From: Uid, @@ -891,6 +906,7 @@ func (ad *GameLogic) RegisterNetWorkFunc() { RegisterMsgProcessFunc("ReqCatnipPlay", ReqCatnipPlay) // 猫草大作战游戏转盘 RegisterMsgProcessFunc("ReqCatnipReward", ReqCatnipReward) // 猫草大作战领取奖励 RegisterMsgProcessFunc("ReqCatnipGrandReward", ReqCatnipGrandReward) // 猫草大作战领取大奖 + RegisterMsgProcessFunc("ReqCatnipEmoji", ReqCatnipEmoji) // 活动通行证 RegisterMsgProcessFunc("ReqActPass", ReqActPass) // 请求活动通行证数据 RegisterMsgProcessFunc("ReqActPassReward", ReqActPassReward) // 领取活动通行证奖励 diff --git a/src/server/game/Gm.go b/src/server/game/Gm.go index 13cd3314..2e8cd6d7 100644 --- a/src/server/game/Gm.go +++ b/src/server/game/Gm.go @@ -540,7 +540,7 @@ func ReqGmCommand_(player *Player, Command string) error { case "resetWeekly": ChargeMod := player.PlayMod.getChargeMod() ChargeMod.WeeklyDiscount = make(map[int]int) - player.PushClientRes(ChargeMod.BackData()) + player.ChargeBackData() PlayroomMod := player.PlayMod.getPlayroomMod() PlayroomMod.WeeklyDiscount = make(map[int]int) PlayroomBackData(player) diff --git a/src/server/game/LimitedTimeTrigger.go b/src/server/game/LimitedTimeTrigger.go index 52c2bd27..1e853efe 100644 --- a/src/server/game/LimitedTimeTrigger.go +++ b/src/server/game/LimitedTimeTrigger.go @@ -76,6 +76,15 @@ func LimitedTimeEventTrigger(p *Player, AddEventId int) { p.PushClientRes(p.PlayMod.getOrderMod().BackData()) case limitedTimeEvent.EVENT_TYPE_CARD_FESTIVAL: p.PlayMod.getCardMod().CreateCardFestival() + case limitedTimeEvent.EVENT_TYPE_CAT_DAY_SALE: // 猫咪大甩卖 + ChargeMod := p.PlayMod.getChargeMod() + PlayroomMod := p.PlayMod.getPlayroomMod() + if !ChargeMod.IsWeeklyDiscountDay() { + ChargeMod.ResetWeeklyDiscount() + PlayroomMod.ResetWeeklyDiscount() + } + + p.ChargeBackData() } } p.PushClientRes(p.PlayMod.getLimitedTimeEventMod().BackData()) diff --git a/src/server/game/LogMgr.go b/src/server/game/LogMgr.go index cbc3393f..0cf459ad 100644 --- a/src/server/game/LogMgr.go +++ b/src/server/game/LogMgr.go @@ -2,10 +2,11 @@ package game import ( "encoding/json" + "runtime" kafkaMiddleware "server/middleware/kafka" + "server/pkg/github.com/name5566/leaf/log" "sync" - - "github.com/robfig/cron/v3" + "time" ) const ( @@ -15,13 +16,18 @@ const ( ) const ( PLAYROOM_LOST = "playroom_lost" - LOG_LENGTH = 10000 + // 增大缓冲:针对 ~1000 条/s,保留足够秒数的缓冲(可按需调整) + LOG_LENGTH = 100000 + WORKER_COUNT = 16 ) type LogMgr struct { - L []*Log - McronSave *cron.Cron - Lock sync.Mutex + // 将切片改为带缓冲通道 + L chan *Log + Lock sync.Mutex + wg sync.WaitGroup + stopOnce sync.Once + closing bool } type Log struct { @@ -34,46 +40,101 @@ type Log struct { } func (L *LogMgr) InitManager() { - L.McronSave = cron.New() - L.L = make([]*Log, 0, LOG_LENGTH) - L.McronSave.AddFunc("@every 10s", func() { - L.Lock.Lock() - defer L.Lock.Unlock() - if kafkaMiddleware.KafkaMod == nil { - if len(L.L) > LOG_LENGTH { - L.L = L.L[:0] - } else if len(L.L) > LOG_LENGTH { - L.L = L.L[len(L.L)-LOG_LENGTH:] + // 初始化通道与启动 worker 循环写入 kafka + L.L = make(chan *Log, LOG_LENGTH) + + // 启动 worker(允许基于 CPU 动态扩展) + workerCount := WORKER_COUNT + if cpuWorkers := runtime.NumCPU() * 2; cpuWorkers > workerCount { + workerCount = cpuWorkers + } + for i := 0; i < workerCount; i++ { + L.wg.Add(1) + go func() { + defer L.wg.Done() + for v := range L.L { + // 如果 kafka 未就绪,尝试重入队列并等待一小段时间(缩短等待) + if kafkaMiddleware.KafkaMod == nil { + // 尝试非阻塞重入,否则丢弃最旧再试一次 + select { + case L.L <- v: + default: + select { + case <-L.L: + default: + } + select { + case L.L <- v: + default: + } + } + time.Sleep(10 * time.Millisecond) + continue + } + + value, _ := json.Marshal(v) + if err := kafkaMiddleware.SendMsg([]byte(v.EventName), value); err != nil { + log.Debug("kafka log send err:%s", err.Error()) + // 发送失败,尝试将消息放回通道(非阻塞策略) + select { + case L.L <- v: + default: + // 通道满,丢弃最旧一条后再尝试一次入队 + select { + case <-L.L: + default: + } + select { + case L.L <- v: + default: + // 放不下则丢弃 + } + } + // 缩短退避,避免快速循环阻塞 + time.Sleep(10 * time.Millisecond) + } } - return - } - Quene := L.L - NewQuene := make([]*Log, 0, LOG_LENGTH) - for _, v := range Quene { - value, _ := json.Marshal(v) - err := kafkaMiddleware.SendMsg([]byte(v.EventName), value) - if err != nil { - NewQuene = append(NewQuene, v) - } - } - L.L = NewQuene - }) - L.McronSave.Start() + }() + } } func (L *LogMgr) AddLog(logs *Log) { + // 如果已经开始关闭,直接丢弃 L.Lock.Lock() - defer L.Lock.Unlock() - L.L = append(L.L, logs) + if L.closing { + L.Lock.Unlock() + return + } + // 非阻塞入队:若通道满则先丢弃最旧一条再入队,避免阻塞调用者 + select { + case L.L <- logs: + L.Lock.Unlock() + return + default: + // 丢弃最旧一条以腾出空间(若有) + select { + case <-L.L: + default: + } + // 再尝试入队一次 + select { + case L.L <- logs: + default: + // 放不下就直接丢弃 + } + L.Lock.Unlock() + } } func (L *LogMgr) Close() { - L.McronSave.Stop() - L.Lock.Lock() - defer L.Lock.Unlock() - for _, v := range L.L { - value, _ := json.Marshal(v) - kafkaMiddleware.SendMsg([]byte(v.EventName), value) - } - L.L = L.L[:0] + L.stopOnce.Do(func() { + L.Lock.Lock() + // 标记为正在关闭,阻止后续入队 + L.closing = true + // 关闭通道,通知所有 worker 退出(workers 会消费完所有已入队的消息) + close(L.L) + L.Lock.Unlock() + // 等待所有 worker 处理完 + L.wg.Wait() + }) } diff --git a/src/server/game/Player.go b/src/server/game/Player.go index ecaa0654..4084d709 100644 --- a/src/server/game/Player.go +++ b/src/server/game/Player.go @@ -327,7 +327,7 @@ func (p *Player) ZeroUpdate(a []interface{}) { ChessMod := p.PlayMod.getChessMod() ChargeMod := p.PlayMod.getChargeMod() ChargeMod.ZeroUpdate(ChessMod.GetEmitList()) - p.PushClientRes(p.PlayMod.getChargeMod().BackData()) + p.ChargeBackData() // 无尽礼包 p.PlayMod.getEndlessMod().ZeroUpdate(p.PlayMod.getChargeMod().GetMaxCharge(), p.PlayMod.getBaseMod().GetLevel()) @@ -344,6 +344,9 @@ func (p *Player) ZeroUpdate(a []interface{}) { // playroom PlayroomMod := p.PlayMod.getPlayroomMod() PlayroomMod.ZeroUpdate() + if ChargeMod.IsWeeklyDiscountDay() { + PlayroomMod.ResetWeeklyDiscount() + } PlayroomBackData(p) p.PlayMod.getChampshipMod().ZeroUpdate() p.initAcitivity() @@ -375,7 +378,7 @@ func (p *Player) NoonUpdate(a []interface{}) { ChessMod := p.PlayMod.getChessMod() // 礼包充值 p.PlayMod.getChargeMod().NoonUpdate(ChessMod.GetEmitList()) - p.PushClientRes(p.PlayMod.getChargeMod().BackData()) + p.ChargeBackData() p.PlayMod.save() } @@ -414,17 +417,30 @@ func (p *Player) Login() { ChargeMod.WeeklyEndTime = WeeklyEndTime } if WeeklyStartTime > now { - go func() { - time.Sleep(time.Duration(WeeklyStartTime-now) * time.Second) + p.CallEvent(time.Duration(WeeklyStartTime-now)*time.Second, func() { ChargeMod.WeeklyEndTime = WeeklyEndTime - p.PushClientRes(ChargeMod.BackData()) + ChargeMod.ResetWeeklyDiscount() + PlayroomMod := p.PlayMod.getPlayroomMod() + PlayroomMod.ResetWeeklyDiscount() + p.ChargeBackData() PlayroomBackData(p) - }() + }, "WeeklyDiscountStart") + } + if WeeklyEndTime > now { + p.CallEvent(time.Duration(WeeklyEndTime-now)*time.Second, func() { + ChargeMod.WeeklyEndTime = 0 + p.ChargeBackData() + PlayroomBackData(p) + LimitEventMod := p.PlayMod.getLimitedTimeEventMod() + LimitEventMod.EndCatDaySale() + p.PushClientRes(LimitEventMod.BackData()) + }, "WeeklyDiscountEnd") } if Duration > 604800 { FriendMod := p.PlayMod.getFriendMod() FriendMod.AddActLog(friend.ACT_LOG_TYPE_LOST_USER_RETURN, "") } + } func (p *Player) Outline() { @@ -879,7 +895,6 @@ func (p *Player) LoginBackData() { p.PushClientRes(p.PlayMod.mod_list.DailyTask.BackData()) p.PushClientRes(p.PlayMod.mod_list.SevenLogin.BackData()) p.PushClientRes(p.PlayMod.mod_list.LimitedTimeEvent.ProgressBackData()) - p.PushClientRes(p.PlayMod.mod_list.Charge.BackData()) p.PushClientRes(p.PlayMod.mod_list.Charge.PetWorkBackData()) p.PushClientRes(p.PlayMod.mod_list.Endless.BackData()) p.PushClientRes(p.PlayMod.mod_list.PiggyBank.BackData()) @@ -890,6 +905,7 @@ func (p *Player) LoginBackData() { p.PushClientRes(p.PlayMod.mod_list.Friend.BubbleBackData()) p.PushClientRes(p.PlayMod.mod_list.Guide.BackData()) p.BackDataActivity() + p.ChargeBackData() BackChampship(p) BackUserInfo(p) } diff --git a/src/server/game/PlayerBack.go b/src/server/game/PlayerBack.go index d38c795c..cdcafad7 100644 --- a/src/server/game/PlayerBack.go +++ b/src/server/game/PlayerBack.go @@ -2,8 +2,10 @@ package game import ( "server/GoUtil" + chargeCfg "server/conf/charge" playroomCfg "server/conf/playroom" "server/game/mod/item" + "server/game/mod/limitedTimeEvent" proto "server/msg" ) @@ -125,7 +127,9 @@ func PlayroomBackData(p *Player) { } weeklyDiscount := make(map[int32]*proto.WeeklyDiscountInfo) ChargeMod := p.PlayMod.getChargeMod() - if ChargeMod.IsWeeklyDiscountDay() { + LimitedEventMod := p.PlayMod.getLimitedTimeEventMod() + // 优惠日开启或者猫咪闪促开启 + if ChargeMod.IsWeeklyDiscountDay() || LimitedEventMod.CheckExist(limitedTimeEvent.EVENT_TYPE_CAT_DAY_SALE) { w1 := playroomCfg.GetShopWeeklyLimit() for k, v := range w1 { limitNum := PlayroomMod.WeeklyDiscount[k] @@ -196,7 +200,6 @@ func PlayroomVisit(p *Player, Uid int) { r.Chip = int32(data.Chip) r.Kiss = int32(data.Kiss) r.DressSet = GoUtil.MapIntToInt32(PlayerData.DressSet) - p.PushClientRes(r) } @@ -229,3 +232,65 @@ func BackUserInfo(p *Player) { AddCode: BaseMod.AddCode, }) } + +func (p *Player) ChargeBackData() { + c := p.PlayMod.getChargeMod() + LimitedEvnetMod := p.PlayMod.getLimitedTimeEventMod() + SpecialShop := make(map[int32]*proto.ResSpecialShop) + ChessShop := make(map[int32]*proto.ResChessShop) + for k, v := range c.SpecialShop { + SpecialShop[int32(k)] = &proto.ResSpecialShop{ + Grade: int32(v.Grade), + Count: int32(v.Count), + } + } + + for k, v := range c.ChessShop { + ChessShop[int32(k)] = &proto.ResChessShop{ + Diamond: int32(v.Diamond), + Count: int32(v.Count), + ChessId: int32(v.Id), + } + } + resWish := &proto.WishList{} + if c.WishList != nil { + resWish = &proto.WishList{ + Id: int32(c.WishList.ItemId), + Count: int32(c.WishList.Count), + Uid: c.WishList.SendList, + } + } + WeeklyDiscount := make(map[int32]*proto.WeeklyDiscountInfo) + WeeklyDiscountInfo := chargeCfg.GetWeeklyInfoAll() + // 优惠日开启或者猫咪闪促开启 + if c.IsWeeklyDiscountDay() || LimitedEvnetMod.CheckExist(limitedTimeEvent.EVENT_TYPE_CAT_DAY_SALE) { + for k, v := range WeeklyDiscountInfo { + LimitNum := c.WeeklyDiscount[k] + WeeklyDiscount[int32(k)] = &proto.WeeklyDiscountInfo{ + Discount: int32(v.Discount), + Count: int32(v.WeeklyLimit - LimitNum), + Id: int32(k), + } + } + } + CatDaySaleEndTime := LimitedEvnetMod.GetCatDaySaleEndTime() + p.PushClientRes(&proto.ResCharge{ + Charge: float32(c.Charge), + Total: int32(c.Total), + First: GoUtil.MapIntToSlice(c.EnergyShop), + SpecialShop: SpecialShop, + FreeShop: int32(c.FreeShop), + ChessShop: ChessShop, + Gift: GoUtil.MapIntToInt32(c.Gift), + Ad: c.Ad, + SpecialCharge: float32(c.SpecialCharge), + SpecialChargeWeek: int32(GoUtil.FullWeeksSince(c.LastSpecialCharge)), + TodayCharge: float32(c.TodayCharge), + MonthCharge: float32(c.MonthCharge), + Wish: resWish, + AdEndTime: c.AdEndTime, + WeeklyDiscount: WeeklyDiscount, + PetWorkRemainTime: c.PetWorkTime, + WeeklyEndTime: max(c.WeeklyEndTime, CatDaySaleEndTime), + }) +} diff --git a/src/server/game/PlayerBaseMod.go b/src/server/game/PlayerBaseMod.go index 2d407bec..f1eaf9fd 100644 --- a/src/server/game/PlayerBaseMod.go +++ b/src/server/game/PlayerBaseMod.go @@ -213,7 +213,10 @@ func (p *PlayerBaseData) ResPlayerBaseInfo(player *Player) { func (p *PlayerBaseData) ReqBindFacebookAccount(player *Player, buf []byte) { req := &msg.ReqBindFacebookAccount{} res := &msg.ResBindFacebookAccount{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return + } sqlStr := "SELECT * FROM t_player_baseinfo WHERE FaceBookId = ?" sqlStruck := db.ResPlayerBaseInfo{} @@ -251,7 +254,10 @@ func (p *PlayerBaseData) ReqBindFacebookAccount(player *Player, buf []byte) { func (p *PlayerBaseData) ReqUnBindFacebook(player *Player, buf []byte) { req := &msg.ReqUnBindFacebook{} res := &msg.ResUnBindFacebook{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return + } res.ResultCode = 0 res.BindAccountId = req.BindAccountId @@ -270,12 +276,15 @@ func (p *PlayerBaseData) ReqUnBindFacebook(player *Player, buf []byte) { func (p *PlayerBaseData) ReqOnlyBindFacebook(player *Player, buf []byte) { req := &msg.ReqOnlyBindFacebook{} res := &msg.ResOnlyBindFacebook{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return + } sqlStr := "SELECT * FROM t_player_baseinfo WHERE FaceBookId = ?" sqlStruck := db.ResPlayerBaseInfo{} isHaveOther := false - err := db.SqlDb.Get(&sqlStruck, sqlStr, req.BindAccountId) + err = db.SqlDb.Get(&sqlStruck, sqlStr, req.BindAccountId) if err != nil { isHaveOther = false } else { @@ -334,7 +343,10 @@ func (p *PlayerBaseData) ReqOnlyBindFacebook(player *Player, buf []byte) { func (p *PlayerBaseData) ReqSynGameData(player *Player, buf []byte) { req := &msg.ReqSynGameData{} res := &msg.ResSynGameData{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return + } sqlStr := "SELECT * FROM t_player_baseinfo WHERE FaceBookId = ?" sqlStruck := db.ResPlayerBaseInfo{} @@ -524,7 +536,7 @@ func (p *PlayerBaseData) AddExp(player *Player, exp int, pexp int) (int, error) } ChargeMod := player.PlayMod.getChargeMod() ChargeMod.TriggerChargeUnlock(int(BaseMod.Level), ChessMod.GetEmitList()) - player.PushClientRes(ChargeMod.BackData()) + player.ChargeBackData() OrderMod := player.PlayMod.getOrderMod() player.TriggerOrder(BaseMod.Level, order.TRIGGER_TYPE_LV, ChessMod.GetOrderEmit(), player.PlayMod.getBaseMod().GetEnergyMul()) player.PushClientRes(OrderMod.BackData()) diff --git a/src/server/game/PlayerFunc.go b/src/server/game/PlayerFunc.go index 3ff6f698..b083dac2 100644 --- a/src/server/game/PlayerFunc.go +++ b/src/server/game/PlayerFunc.go @@ -23,6 +23,7 @@ import ( "server/game/mod/card" "server/game/mod/friend" "server/game/mod/item" + "server/game/mod/limitedTimeEvent" "server/game/mod/mail" "server/game/mod/msg" "server/game/mod/order" @@ -320,7 +321,7 @@ func handle(p *Player, m *msg.Msg) error { ChargeMod := p.PlayMod.getChargeMod() ChargeMod.AddWishCount() p.AddLog(m.From, friend.LOG_TYPE_WISH, "", m.SendT) - p.PushClientRes(ChargeMod.BackData()) + p.ChargeBackData() case msg.HANDLE_TYPE_PLAYROOM_KISS: // playroom亲吻 p.NotifyPlayroomKiss() case msg.HANDLE_TYPE_CATNIP_INVITE: // 邀请好友参与猫咪游戏 @@ -331,6 +332,8 @@ func handle(p *Player, m *msg.Msg) error { return nil } CatnipMod.BeInvited(CatnipMsg.GameId, int(m.From), m.SendT) + FriendMod := p.PlayMod.getFriendMod() + FriendMod.AddReplyInfo(m.From, friend.REPLY_TYPE_CATNIP, fmt.Sprintf("%d", CatnipMsg.GameId), m.End) case msg.HANDLE_TYPE_CATNIP_AGREE: // 同意好友参与猫咪游戏 CatnipMod := p.PlayMod.getCatnipMod() CatnipMsgInfo := m.Extra.(CatnipMsg) @@ -378,7 +381,7 @@ func handle(p *Player, m *msg.Msg) error { case msg.HANDLE_TYPE_FRIEND_GREETING_REPLY: FriendMod := p.PlayMod.getFriendMod() if v, ok := m.Extra.(friend.ReplyInfo); ok { - FriendMod.AddReplyInfo(v.Uid, v.Type, v.Param) + FriendMod.AddReplyInfo(v.Uid, v.Type, v.Param, GoUtil.Now()+24*3600) FriendLogBackData(p) } case msg.HANDLE_TYPE_FRIEND_SPONSOER: @@ -965,7 +968,7 @@ func EmitRetireTrigger2(p *Player) { ChessMod.FinishRetire(k) ChargeMod := p.PlayMod.getChargeMod() ChargeMod.InitChessShop(ChessMod.GetEmitList()) - p.PushClientRes(ChargeMod.BackData()) + p.ChargeBackData() continue } OrderMod.CreateCleanOrder(ChessList) @@ -1576,3 +1579,9 @@ func (player *Player) GetPlayroomClean() map[int]int { } return Item } + +func (player *Player) IsWeeklyDiscount() bool { + ChargeMod := player.PlayMod.getChargeMod() + LimitEventMod := player.PlayMod.getLimitedTimeEventMod() + return ChargeMod.IsWeeklyDiscountDay() || LimitEventMod.CheckExist(limitedTimeEvent.EVENT_TYPE_CAT_DAY_SALE) +} diff --git a/src/server/game/RegisterNetworkFunc.go b/src/server/game/RegisterNetworkFunc.go index 6e1be934..c271a146 100644 --- a/src/server/game/RegisterNetworkFunc.go +++ b/src/server/game/RegisterNetworkFunc.go @@ -50,14 +50,21 @@ func ReqPlayerAsset(player *Player, buf []byte) error { func ReqPlayerBaseInfofunction(player *Player, buf []byte) error { // 消息的发送者 detail := &msg.ReqPlayerBaseInfo{} - proto.Unmarshal(buf, detail) + err := proto.Unmarshal(buf, detail) + if err != nil { + return err + } + player.PlayerBaseMod.ResPlayerBaseInfo(player) return nil } func ReqPlayerBriefProfileDataFunc(player *Player, buf []byte) error { detail := &msg.ReqPlayerBriefProfileData{} - proto.Unmarshal(buf, detail) + err := proto.Unmarshal(buf, detail) + if err != nil { + return err + } Uid := int(detail.DwUin) PlayerSimpleData := G_GameLogicPtr.GetSimplePlayerByUid(Uid) if PlayerSimpleData == nil { @@ -82,7 +89,10 @@ func ReqPlayerBriefProfileDataFunc(player *Player, buf []byte) error { func ReqFriendPlayerSimple(player *Player, buf []byte) error { detail := &msg.ReqFriendPlayerSimple{} - proto.Unmarshal(buf, detail) + err := proto.Unmarshal(buf, detail) + if err != nil { + return err + } Uid := int(detail.Uid) PlayerSimpleData := G_GameLogicPtr.GetResFriendPlayerByUid(Uid) if PlayerSimpleData == nil { @@ -112,7 +122,10 @@ func ReqRemoveAdFunc(player *Player, buf []byte) error { // 更新玩家物品 func UpdateBaseItemInfofunction(player *Player, buf []byte) error { detail := &msg.UpdateBaseItemInfo{} - proto.Unmarshal(buf, detail) + err := proto.Unmarshal(buf, detail) + if err != nil { + return err + } player.PlayerBaseMod.UpdateBaseItemInfo(detail) return nil } @@ -120,7 +133,10 @@ func UpdateBaseItemInfofunction(player *Player, buf []byte) error { // 请求玩家棋盘信息 func ReqPlayerChessDataFunc(player *Player, buf []byte) error { detail := &msg.ReqPlayerChessData{} - proto.Unmarshal(buf, detail) + err := proto.Unmarshal(buf, detail) + if err != nil { + return err + } playerChessData := &PlayerChessData{} playerChessData.ResPlayerChessData(player) return nil @@ -148,7 +164,10 @@ func ReqSynGameData(player *Player, buf []byte) error { func RegSetEneryFunc(player *Player, buf []byte) error { req := &msg.ReqSetEnergyMul{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } MaxEnergyMul := player.GetPlayerBaseMod().GetMaxEnergyMul(player) BaseMod := player.PlayMod.getBaseMod() EnergyMul := BaseMod.GetEnergyMul() @@ -180,8 +199,11 @@ func RegSetEneryFunc(player *Player, buf []byte) error { // 领取图鉴奖励 func ReqGetHandbookReward(player *Player, buf []byte) error { req := &msg.ReqGetHandbookReward{} - proto.Unmarshal(buf, req) - err := player.PlayMod.getHandbookMod().GetHandbookReward(int(req.ChessId)) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } + err = player.PlayMod.getHandbookMod().GetHandbookReward(int(req.ChessId)) if err != nil { player.SendErrClienRes(&msg.ResGetHandbookReward{ Code: msg.RES_CODE_FAIL, @@ -213,7 +235,10 @@ func ReqGetHandbookReward(player *Player, buf []byte) error { func RegHandbookAllReward(player *Player, buf []byte) error { req := &msg.RegHandbookAllReward{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } AllChess := mergeDataCfg.GetAllChessBySeries(req.Type) Items, err := player.PlayMod.getHandbookMod().CollectItem(req.Type, AllChess) if err != nil { @@ -254,7 +279,10 @@ func RegHandbookAllReward(player *Player, buf []byte) error { // 领取订单奖励 func ReqRewardOrder(player *Player, buf []byte) error { req := &msg.ReqRewardOrder{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } OrderMod := player.PlayMod.getOrderMod() ChessMod := player.PlayMod.getChessMod() LimitedTimeEventMod := player.PlayMod.getLimitedTimeEventMod() @@ -443,7 +471,10 @@ func ReqCreatePetOrder(player *Player, buf []byte) error { func ReqDelOrder(player *Player, buf []byte) error { req := &msg.ReqDelOrder{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } OrderMod := player.PlayMod.getOrderMod() DelOrder, err := OrderMod.DelOrder(int(req.OrderId)) if err != nil { @@ -467,12 +498,17 @@ func ReqDelOrder(player *Player, buf []byte) error { // 场景装饰 func ReqDecorate(player *Player, buf []byte) error { req := &msg.ReqDecorate{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } DecorateMod := player.PlayMod.getDecorateMod() DecorateId := int(req.DecorateId) AreaId := int(req.AreaId) - CostItem, PetExp, PartItem := DecorateMod.GetDecorateCostItem(AreaId, DecorateId) - err := player.HandleLoseItem(CostItem, msg.ITEM_POP_LABEL_DecorateCost.String()) // 扣除道具 + LimitEventMod := player.PlayMod.getLimitedTimeEventMod() + DecorateOffIsExist := LimitEventMod.CheckExist(limitedTimeEvent.EVENT_TYPE_DECORATE_OFF) + CostItem, PetExp, PartItem := DecorateMod.GetDecorateCostItem(AreaId, DecorateId, DecorateOffIsExist) + err = player.HandleLoseItem(CostItem, msg.ITEM_POP_LABEL_DecorateCost.String()) // 扣除道具 if err != nil { player.SendErrClienRes(&msg.ResDecorate{ Code: msg.RES_CODE_FAIL, @@ -550,7 +586,10 @@ func ReqDecorate(player *Player, buf []byte) error { // 场景装饰 func ReqDecorateAll(player *Player, buf []byte) error { req := &msg.ReqDecorateAll{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } DecorateMod := player.PlayMod.getDecorateMod() AreaId := DecorateMod.GetAreaId() UnLockLv := decorateCfg.GetOneKeyDecorateUnlockLv() @@ -562,8 +601,10 @@ func ReqDecorateAll(player *Player, buf []byte) error { 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()) // 扣除道具 + LimitEventMod := player.PlayMod.getLimitedTimeEventMod() + DecorateOffIsExist := LimitEventMod.CheckExist(limitedTimeEvent.EVENT_TYPE_DECORATE_OFF) + CostItem, AddItem, DecorateNum, DecorateList, Log, PetExp := DecorateMod.DecorateAll(PlayerBaseMod.GetStar(), DecorateOffIsExist) + err = player.HandleLoseItem(CostItem, msg.ITEM_POP_LABEL_DecorateCost.String()) // 扣除道具 if err != nil { player.SendErrClienRes(&msg.ResDecorateAll{ Code: msg.RES_CODE_FAIL, @@ -616,34 +657,7 @@ func ReqDecorateAll(player *Player, buf []byte) error { } 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 } @@ -660,13 +674,16 @@ func UpdatePlayerChessDataFunc(player *Player, buf []byte) error { // 从缓存中获取棋子 func ReqGetChessFromBuff(player *Player, buf []byte) error { req := &msg.ReqGetChessFromBuff{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } ChessMod := player.PlayMod.getChessMod() HandbookMod := player.PlayMod.getHandbookMod() OrderMod := player.PlayMod.getOrderMod() BaseMod := player.PlayMod.getBaseMod() ChessId := int(req.ChessId) - err := ChessMod.GetChessFromBuff(ChessId) + err = ChessMod.GetChessFromBuff(ChessId) Update := HandbookMod.SetHandbook(ChessId) AddNewEmit := make([]int, 0) if Update { @@ -711,9 +728,12 @@ func ReqGetChessFromBuff(player *Player, buf []byte) error { // 放置棋子进背包 func ReqPutPartInBag(player *Player, buf []byte) error { req := &msg.ReqPutPartInBag{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } ChessMod := player.PlayMod.getChessMod() - err := ChessMod.PutPartInBag(int(req.ChessId)) + err = ChessMod.PutPartInBag(int(req.ChessId)) if err != nil { player.SendErrClienRes(&msg.ResPutPartInBag{ Code: msg.RES_CODE_FAIL, @@ -745,9 +765,12 @@ func ReqPutPartInBag(player *Player, buf []byte) error { // 放置棋子进背包 func ReqPutChessInBag(player *Player, buf []byte) error { req := &msg.ReqPutChessInBag{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } ChessMod := player.PlayMod.getChessMod() - err := ChessMod.PutChessInBag(int(req.BagId), int(req.ChessId), int(req.EmitId)) + err = ChessMod.PutChessInBag(int(req.BagId), int(req.ChessId), int(req.EmitId)) if err != nil { player.SendErrClienRes(&msg.ResPutChessInBag{ Code: msg.RES_CODE_FAIL, @@ -780,7 +803,10 @@ func ReqPutChessInBag(player *Player, buf []byte) error { func ReqTakeChessOutBag(player *Player, buf []byte) error { req := &msg.ReqTakeChessOutBag{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } ChessMod := player.PlayMod.getChessMod() ChessId, err := ChessMod.TakeChessOutBag(int(req.BagId)) if err != nil { @@ -821,10 +847,13 @@ func ReqTakeChessOutBag(player *Player, buf []byte) error { func ReqBuyChessBagGrid(player *Player, buf []byte) error { req := &msg.ReqBuyChessBagGrid{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } ChessMod := player.PlayMod.getChessMod() CostItem := ChessMod.GetBuyChessBagGridCost() - err := player.HandleItem(CostItem, msg.ITEM_POP_LABEL_BuyChessBagGrid.String()) + err = player.HandleItem(CostItem, msg.ITEM_POP_LABEL_BuyChessBagGrid.String()) if err != nil { player.SendErrClienRes(&msg.ResBuyChessBagGrid{ Code: msg.RES_CODE_FAIL, @@ -857,7 +886,10 @@ func ReqBuyChessBagGrid(player *Player, buf []byte) error { func ReqSeparateChess(player *Player, buf []byte) error { req := &msg.ReqSeparateChess{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } ChessMod := player.PlayMod.getChessMod() NewChess, err := ChessMod.SeparateChess(int(req.ChessId)) if err != nil { @@ -896,7 +928,10 @@ func ReqSeparateChess(player *Player, buf []byte) error { func ReqUpgradeChess(player *Player, buf []byte) error { req := &msg.ReqUpgradeChess{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } ChessMod := player.PlayMod.getChessMod() NewChess, err := ChessMod.UpgradeChess(int(req.ChessId)) if err != nil { @@ -936,7 +971,10 @@ func ReqUpgradeChess(player *Player, buf []byte) error { // 棋子转换 func ReqChessEx(player *Player, buf []byte) error { req := &msg.ReqChessEx{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } ChessMod := player.PlayMod.getChessMod() if req.CostDia < 0 { var itemList []*item.Item @@ -953,7 +991,7 @@ func ReqChessEx(player *Player, buf []byte) error { player.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_BUBBLE, A: []interface{}{}}) } - err := ChessMod.ExChess(int(req.OldChessId), int(req.NewChessId)) + err = ChessMod.ExChess(int(req.OldChessId), int(req.NewChessId)) if err != nil { player.SendErrClienRes(&msg.ResChessEx{ Code: msg.RES_CODE_FAIL, @@ -1020,7 +1058,10 @@ func ReqChessEx(player *Player, buf []byte) error { func ReqSourceChest(player *Player, buf []byte) error { req := &msg.ReqSourceChest{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } ChessMod := player.PlayMod.getChessMod() ChestId := int(req.ChestId) Items, err := ChessMod.SourceChest(ChestId) @@ -1071,7 +1112,10 @@ func ReqCardInfo(player *Player, buf []byte) error { func ReqCardSeasonFirstReward(player *Player, buf []byte) error { req := &msg.ReqCardSeasonFirstReward{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } CardMod := player.PlayMod.getCardMod() itemList, err := CardMod.SeasonFirstReward() if err != nil { @@ -1103,7 +1147,10 @@ func ReqCardSeasonFirstReward(player *Player, buf []byte) error { // 领取卡牌系列收集奖励 func ReqCardCollectReward(player *Player, buf []byte) error { req := &msg.ReqCardCollectReward{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } CardMod := player.PlayMod.getCardMod() itemList, chess, err := CardMod.GetCollectReward(int(req.Color)) if err != nil { @@ -1144,7 +1191,10 @@ func ReqCardCollectReward(player *Player, buf []byte) error { // 兑换星星奖励 func ReqExStarReward(player *Player, buf []byte) error { req := &msg.ReqExStarReward{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } CardMod := player.PlayMod.getCardMod() itemList, CostStar, err := CardMod.ExStarReward(int(req.Id)) if err != nil { @@ -1221,7 +1271,10 @@ func ReqAllCollectReward(player *Player, buf []byte) error { // ---------------------GuildApi---------------------- func ReqGuideReward(player *Player, buf []byte) error { req := &msg.ReqGuideReward{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } GuideMod := player.PlayMod.getGuideMod() itemList, err := GuideMod.GetReward(int(req.Id)) if err != nil { @@ -1255,7 +1308,10 @@ func ReqGuideReward(player *Player, buf []byte) error { // -----------------dailyTaskApi--------------------- func ReqGetDailyTaskReward(player *Player, buf []byte) error { req := &msg.ReqGetDailyTaskReward{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } DailyTaskMod := player.PlayMod.getDailyTaskMod() itemList, err := DailyTaskMod.GetDailyReward(int(req.Id)) if err != nil { @@ -1290,7 +1346,10 @@ func ReqGetDailyTaskReward(player *Player, buf []byte) error { func ReqGetDailyWeekReward(player *Player, buf []byte) error { req := &msg.ReqGetDailyWeekReward{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } DailyTaskMod := player.PlayMod.getDailyTaskMod() itemList, err := DailyTaskMod.GetWeekReward(int(req.Id)) if err != nil { @@ -1325,7 +1384,10 @@ func ReqGetDailyWeekReward(player *Player, buf []byte) error { func ReqDailyUnlock(player *Player, buf []byte) error { req := &msg.ReqDailyUnlock{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } DailyTaskMod := player.PlayMod.getDailyTaskMod() DailyTaskMod.Unlock() player.PlayMod.save() @@ -1338,7 +1400,10 @@ func ReqDailyUnlock(player *Player, buf []byte) error { func ReqGetGuideTaskReward(player *Player, buf []byte) error { req := &msg.ReqGetGuideTaskReward{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } GuideTaskMod := player.PlayMod.getGuideTaskMod() itemList, err := GuideTaskMod.GetTaskReward(int(req.Id)) if err != nil { @@ -1374,7 +1439,10 @@ func ReqGetGuideTaskReward(player *Player, buf []byte) error { func ReqGetGuideActiveReward(player *Player, buf []byte) error { req := &msg.ReqGetGuideActiveReward{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } GuideTaskMod := player.PlayMod.getGuideTaskMod() itemList, err := GuideTaskMod.GetActiveReward(int(req.Id)) if err != nil { @@ -1409,9 +1477,12 @@ func ReqGetGuideActiveReward(player *Player, buf []byte) error { // 头像框 func ReqSetAvatar(player *Player, buf []byte) error { req := &msg.ReqSetAvatar{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } avatarMod := player.PlayMod.getAvatarMod() - err := avatarMod.SetAvatar(int(req.Avatar)) + err = avatarMod.SetAvatar(int(req.Avatar)) if err != nil { player.SendErrClienRes(&msg.ResSetAvatar{ Code: msg.RES_CODE_FAIL, @@ -1440,9 +1511,12 @@ func ReqSetAvatar(player *Player, buf []byte) error { // 头像 func ReqSetFace(player *Player, buf []byte) error { req := &msg.ReqSetFace{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } FaceMod := player.PlayMod.getFaceMod() - err := FaceMod.SetFace(int(req.Face)) + err = FaceMod.SetFace(int(req.Face)) if err != nil { player.SendErrClienRes(&msg.ResSetFace{ Code: msg.RES_CODE_FAIL, @@ -1471,11 +1545,14 @@ func ReqSetFace(player *Player, buf []byte) error { // 购买能量 func ReqBuyEnergy(player *Player, buf []byte) error { req := &msg.ReqBuyEnergy{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } BaseMod := player.PlayMod.getBaseMod() ChargeMod := player.PlayMod.getChargeMod() - Item, Energy, Diamond := ChargeMod.BuyEnergy() - err := player.HandleItem(Item, msg.ITEM_POP_LABEL_BuyEnergy.String()) + Item, Energy, Diamond := ChargeMod.BuyEnergy(player.IsWeeklyDiscount()) + err = player.HandleItem(Item, msg.ITEM_POP_LABEL_BuyEnergy.String()) if err != nil { player.SendErrClienRes(&msg.ResBuyEnergy{ Code: msg.RES_CODE_FAIL, @@ -1488,7 +1565,7 @@ func ReqBuyEnergy(player *Player, buf []byte) error { player.PushClientRes(&msg.ResBuyEnergy{ Code: msg.RES_CODE_SUCCESS, }) - player.PushClientRes(ChargeMod.BackData()) + player.ChargeBackData() player.TeLog("buy_energy_diamond", map[string]interface{}{ "diamond_cost": Diamond, "energy_num": Energy, @@ -1528,7 +1605,10 @@ func ReqGetEnergyByAD(player *Player, buf []byte) error { // 领取七日签到奖励 func ReqGetSevenLoginReward(player *Player, buf []byte) error { req := &msg.ReqGetSevenLoginReward{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } SevenLoginMod := player.PlayMod.getSevenLoginMod() itemList, err := SevenLoginMod.GetReward(int(req.Id)) if err != nil { @@ -1563,7 +1643,10 @@ func ReqGetSevenLoginReward(player *Player, buf []byte) error { // 领取月进度奖励 func ReqGetMonthLoginReward(player *Player, buf []byte) error { req := &msg.ReqGetMonthLoginReward{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } SevenLoginMod := player.PlayMod.getSevenLoginMod() itemList, err := SevenLoginMod.GetMonthReward(int(req.Id)) if err != nil { @@ -1608,7 +1691,10 @@ func ReqFastProduceInfo(player *Player, buf []byte) error { // 连击快手奖励 func ReqFastProduceReward(player *Player, buf []byte) error { req := &msg.ReqFastProduceReward{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } LimitedTimeEventMod := player.PlayMod.getLimitedTimeEventMod() itemList, EndTime, Times, err := LimitedTimeEventMod.GetFastProduceReward(int(req.Energy)) if err != nil { @@ -1693,7 +1779,10 @@ func ReqGetGoldCard(player *Player, buf []byte) error { // 搜索用户 func ReqSearchPlayer(player *Player, buf []byte) error { req := &msg.ReqSearchPlayer{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } Uid, err := strconv.Atoi(req.Uid) list := make([]*msg.ResPlayerSimple, 0) if err == nil { @@ -1736,7 +1825,10 @@ func ReqSearchPlayer(player *Player, buf []byte) error { // 申请好友 func ReqApplyFriend(player *Player, buf []byte) error { req := &msg.ReqApplyFriend{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } Uid := int(req.Uid) FriendMod := player.PlayMod.getFriendMod() if Uid == int(player.M_DwUin) { @@ -1809,7 +1901,10 @@ func ReqApplyFriend(player *Player, buf []byte) error { // 同意申请 func ReqAgreeFriend(player *Player, buf []byte) error { req := &msg.ReqAgreeFriend{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } Uid := int(req.Uid) FriendMod := player.PlayMod.getFriendMod() if !FriendMod.CheckApply(Uid) { @@ -1827,7 +1922,7 @@ func ReqAgreeFriend(player *Player, buf []byte) error { } FriendMgrSend(m) FriendMod.AddFriend(Uid) - FriendMod.AddReplyInfo(Uid, friend.REPLY_TYPE_GREETING, "") + FriendMod.AddReplyInfo(Uid, friend.REPLY_TYPE_GREETING, "", GoUtil.Now()+24*3600) player.PushClientRes(&msg.ResAgreeFriend{ Code: msg.RES_CODE_SUCCESS, Uid: req.Uid, @@ -1851,7 +1946,10 @@ func ReqAgreeFriend(player *Player, buf []byte) error { // 删除好友 func ReqDelFriend(player *Player, buf []byte) error { req := &msg.ReqDelFriend{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } Uid := int(req.Uid) m := &MsqMod.Msg{ Type: MsqMod.HANDLE_TYPE_DEL, @@ -1878,7 +1976,10 @@ func ReqDelFriend(player *Player, buf []byte) error { // 拒绝申请 func ReqRefuseFriend(player *Player, buf []byte) error { req := &msg.ReqRefuseFriend{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } Uid := int(req.Uid) FriendMod := player.PlayMod.getFriendMod() FriendMod.RefuseApply(Uid) @@ -1901,13 +2002,16 @@ func ReqRefuseFriend(player *Player, buf []byte) error { // 向好友请求卡牌 func ReqCardGive(player *Player, buf []byte) error { req := &msg.ReqCardGive{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } CardMod := player.PlayMod.getCardMod() EndTime := GoUtil.Now() + 86400 FriendMod := player.PlayMod.getFriendMod() - err := CardMod.RequestCard() + err = CardMod.RequestCard() if err != nil { player.SendErrClienRes(&msg.ResCardGive{ Code: msg.RES_CODE_FAIL, @@ -1994,7 +2098,10 @@ func ReqCardGive(player *Player, buf []byte) error { // 同意卡牌请求 func ReqAgreeCardGive(player *Player, buf []byte) error { req := &msg.ReqAgreeCardGive{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } FriendMod := player.PlayMod.getFriendMod() CardInfo := FriendMod.GetCardInfo(req.Id) if CardInfo == nil { @@ -2005,7 +2112,7 @@ func ReqAgreeCardGive(player *Player, buf []byte) error { return fmt.Errorf("card apply not exist") } CardMod := player.PlayMod.getCardMod() - err := player.SubCard(CardInfo.CardId) + err = player.SubCard(CardInfo.CardId) if err != nil { player.SendErrClienRes(&msg.ResAgreeCardGive{ Code: msg.RES_CODE_FAIL, @@ -2041,7 +2148,10 @@ func ReqAgreeCardGive(player *Player, buf []byte) error { // 拒绝卡牌请求 func ReqRefuseCardGive(player *Player, buf []byte) error { req := &msg.ReqRefuseCardGive{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } FriendMod := player.PlayMod.getFriendMod() CardInfo := FriendMod.GetCardInfo(req.Id) if CardInfo == nil { @@ -2074,7 +2184,10 @@ func ReqRefuseCardGive(player *Player, buf []byte) error { // 赠送卡牌 func ReqCardSend(player *Player, buf []byte) error { req := &msg.ReqCardSend{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } CardMod := player.PlayMod.getCardMod() CardId := int(req.CardId) CardInfo, err := CardMod.SendCard(int(player.M_DwUin), int(req.Uid), CardId) @@ -2113,7 +2226,10 @@ func ReqCardSend(player *Player, buf []byte) error { // 卡牌交换 func ReqCardExchange(player *Player, buf []byte) error { req := &msg.ReqCardExchange{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } CardMod := player.PlayMod.getCardMod() CardId := int(req.CardId) CardInfo, err := CardMod.ExchangeCard(int(player.M_DwUin), int(req.Uid), CardId) @@ -2153,7 +2269,10 @@ func ReqCardExchange(player *Player, buf []byte) error { // 选择卡牌进行交换 func ReqSelectCardExchange(player *Player, buf []byte) error { req := &msg.ReqSelectCardExchange{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } CardId := int(req.CardId) CardMod := player.PlayMod.getCardMod() FriendMod := player.PlayMod.getFriendMod() @@ -2186,7 +2305,7 @@ func ReqSelectCardExchange(player *Player, buf []byte) error { } 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) + err = player.SubCard(CardId) if err != nil { player.SendErrClienRes(&msg.ResSelectCardExchange{ Code: msg.RES_CODE_FAIL, @@ -2220,7 +2339,10 @@ func ReqSelectCardExchange(player *Player, buf []byte) error { // 同意卡牌交换 func ReqAgreeCardExchange(player *Player, buf []byte) error { req := &msg.ReqSelectCardExchange{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } CardMod := player.PlayMod.getCardMod() FriendMod := player.PlayMod.getFriendMod() CardInfo := FriendMod.GetCardInfo(req.Id) @@ -2277,7 +2399,10 @@ func ReqAgreeCardExchange(player *Player, buf []byte) error { // 拒绝选择卡牌 func ReqRefuseCardSelect(player *Player, buf []byte) error { req := &msg.ReqRefuseCardSelect{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } FriendMod := player.PlayMod.getFriendMod() CardInfo := FriendMod.GetCardInfo(req.Id) if CardInfo == nil { @@ -2314,7 +2439,10 @@ func ReqRefuseCardSelect(player *Player, buf []byte) error { // 拒绝进行交换 func ReqRefuseCardExchange(player *Player, buf []byte) error { req := &msg.ReqRefuseCardExchange{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } CardMod := player.PlayMod.getCardMod() FriendMod := player.PlayMod.getFriendMod() CardInfo := FriendMod.GetCardInfo(req.Id) @@ -2357,7 +2485,10 @@ func ReqRefuseCardExchange(player *Player, buf []byte) error { // 领取好友卡牌 func ReqGetFriendCard(player *Player, buf []byte) error { req := &msg.ReqRefuseCardExchange{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } CardMod := player.PlayMod.getCardMod() FriendMod := player.PlayMod.getFriendMod() CardInfo := FriendMod.GetCardInfo(req.Id) @@ -2385,7 +2516,10 @@ func ReqGetFriendCard(player *Player, buf []byte) error { // 请求玩家榜单 func ReqRank(player *Player, buf []byte) error { req := &msg.ReqRank{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } m := &MsqMod.Msg{ From: int(player.M_DwUin), Type: MsqMod.HANDLE_TYPE_RANK_INFO, @@ -2410,7 +2544,10 @@ func ReqRank(player *Player, buf []byte) error { // 请求竞标赛榜单 func ReqChampshipRank(player *Player, buf []byte) error { req := &msg.ReqRank{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } m := G_GameLogicPtr.ChampshipMgr.GetRankMsg(int(player.M_DwUin)) player.PushClientRes(m) return nil @@ -2418,7 +2555,10 @@ func ReqChampshipRank(player *Player, buf []byte) error { func ReqChampshipPreRank(player *Player, buf []byte) error { req := &msg.ReqRank{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } m := G_GameLogicPtr.ChampshipMgr.GetPreRankMsg(int(player.M_DwUin)) player.PushClientRes(m) return nil @@ -2434,9 +2574,12 @@ func ReqMailList(player *Player, buf []byte) error { // 读邮件 func ReqReadMail(player *Player, buf []byte) error { req := &msg.ReqReadMail{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } MailMod := player.PlayMod.getMailMod() - err := MailMod.Read(int(req.Id)) + err = MailMod.Read(int(req.Id)) if err != nil { player.SendErrClienRes(&msg.ResReadMail{ Code: msg.RES_CODE_FAIL, @@ -2456,7 +2599,10 @@ func ReqReadMail(player *Player, buf []byte) error { // 领取邮件奖励 func ReqGetMailReward(player *Player, buf []byte) error { req := &msg.ReqGetMailReward{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } MailMod := player.PlayMod.getMailMod() itemList, err := MailMod.Reward(int(req.Id)) if err != nil { @@ -2491,9 +2637,12 @@ func ReqGetMailReward(player *Player, buf []byte) error { // 删除邮件 func ReqDeleteMail(player *Player, buf []byte) error { req := &msg.ReqDeleteMail{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } MailMod := player.PlayMod.getMailMod() - err := MailMod.Del(int(req.Id)) + err = MailMod.Del(int(req.Id)) if err != nil { player.SendErrClienRes(&msg.ResDeleteMail{ Code: msg.RES_CODE_FAIL, @@ -2530,7 +2679,7 @@ func ReqFreeShop(player *Player, buf []byte) error { return err } player.PlayMod.save() - player.PushClientRes(ChargeMod.BackData()) + player.ChargeBackData() player.PushClientRes(&msg.ResFreeShop{ Code: msg.RES_CODE_SUCCESS, }) @@ -2545,9 +2694,12 @@ func ReqFreeShop(player *Player, buf []byte) error { // 购买棋子商店物品 func ReqBuyChessShop(player *Player, buf []byte) error { req := &msg.ReqBuyChessShop{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } ChargeMod := player.PlayMod.getChargeMod() - LostItem, Item, _, err := ChargeMod.BuyChess(int(req.Id)) + LostItem, Item, _, err := ChargeMod.BuyChess(int(req.Id), player.IsWeeklyDiscount()) if err != nil { player.SendErrClienRes(&msg.ResBuyChessShop{ Code: msg.RES_CODE_FAIL, @@ -2578,7 +2730,7 @@ func ReqBuyChessShop(player *Player, buf []byte) error { "cost_num": -LostItem[0].Num, }) player.PlayMod.save() - player.PushClientRes(ChargeMod.BackData()) + player.ChargeBackData() player.PushClientRes(&msg.ResBuyChessShop{ Code: msg.RES_CODE_SUCCESS, }) @@ -2593,9 +2745,12 @@ func ReqBuyChessShop(player *Player, buf []byte) error { // 购买棋子商店物品 func ReqBuyChessShop2(player *Player, buf []byte) error { req := &msg.ReqBuyChessShop2{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } ChargeMod := player.PlayMod.getChargeMod() - LostItem, _, ChessId, err := ChargeMod.BuyChess(int(req.Id)) + LostItem, _, ChessId, err := ChargeMod.BuyChess(int(req.Id), player.IsWeeklyDiscount()) if err != nil { player.SendErrClienRes(&msg.ResBuyChessShop2{ Code: msg.RES_CODE_FAIL, @@ -2636,7 +2791,7 @@ func ReqBuyChessShop2(player *Player, buf []byte) error { "cost_num": LostItem[0].Num, }) player.PlayMod.save() - player.PushClientRes(ChargeMod.BackData()) + player.ChargeBackData() player.PushClientRes(&msg.ResBuyChessShop2{ Code: msg.RES_CODE_SUCCESS, }) @@ -2663,7 +2818,7 @@ func ReqRefreshChessShop(player *Player, buf []byte) error { return err } player.PlayMod.save() - player.PushClientRes(ChargeMod.BackData()) + player.ChargeBackData() player.TeLog("refresh_store_diamond", map[string]interface{}{ "diamond_cost": 20, }) @@ -2673,7 +2828,10 @@ func ReqRefreshChessShop(player *Player, buf []byte) error { // 领取无尽礼包免费奖励 func ReqEndlessReward(player *Player, buf []byte) error { req := &msg.ReqEndlessReward{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } EndlessMod := player.PlayMod.getEndlessMod() BaseMod := player.PlayMod.getBaseMod() itemList, err := EndlessMod.GetReward(BaseMod.GetLevel()) @@ -2745,7 +2903,10 @@ func ReqPiggyBankReward(player *Player, buf []byte) error { // 生成订单号 func ReqCreateOrderSn(player *Player, buf []byte) error { req := &msg.ReqCreateOrderSn{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } OrderSn, err := CreateOrderSn(player, req) if err != nil { return err @@ -2760,7 +2921,10 @@ func ReqCreateOrderSn(player *Player, buf []byte) error { func ReqShippingOrder(player *Player, buf []byte) error { return nil req := &msg.ReqShippingOrder{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } go TriggerShippingOrder(player, req) player.PushClientRes(&msg.ResShippingOrder{ @@ -2810,7 +2974,10 @@ func ReqLimitEvent(player *Player, buf []byte) error { func ReqKv(player *Player, buf []byte) error { req := &msg.ReqKv{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } KvMod := player.PlayMod.getKvMod() KvMod.SetVar(int(req.Key), req.Value) return nil @@ -2871,7 +3038,10 @@ func ReqFriendTimeLine(player *Player, buf []byte) error { func ReqFriendTLUpvote(player *Player, buf []byte) error { req := &msg.ReqFriendTLUpvote{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } FriendMod := player.PlayMod.getFriendMod() Items, FUid, err := FriendMod.Upvote(int(req.Id)) if err != nil { @@ -2910,7 +3080,10 @@ func ReqFriendTLUpvote(player *Player, buf []byte) error { func ReqFriendTReward(player *Player, buf []byte) error { req := &msg.ReqFriendTReward{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } FriendMod := player.PlayMod.getFriendMod() Items, err := FriendMod.GetReward(int(req.Id)) if err != nil { @@ -2976,7 +3149,10 @@ func ReqChampshipRankReward(player *Player, buf []byte) error { func ReqSetName(player *Player, buf []byte) error { req := &msg.ReqSetName{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } BaseMod := player.PlayMod.getBaseMod() BaseMod.SetNickName(req.Name) player.PushClientRes(&msg.ResSetName{ @@ -2993,7 +3169,10 @@ func ReqSetName(player *Player, buf []byte) error { func ReqSetPetName(player *Player, buf []byte) error { req := &msg.ReqSetPetName{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } BaseMod := player.PlayMod.getBaseMod() BaseMod.SetPetName(req.Name) player.PushClientRes(&msg.ResSetPetName{ @@ -3018,9 +3197,12 @@ func ReqUserInfo(player *Player, buf []byte) error { func ReqMasterCard(player *Player, buf []byte) error { req := &msg.ReqMasterCard{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } CardMod := player.PlayMod.getCardMod() - err := CardMod.MasterCardEx(int(req.Id), int(req.CardId)) + err = CardMod.MasterCardEx(int(req.Id), int(req.CardId)) if err != nil { player.SendErrClienRes(&msg.ResMasterCard{ Code: msg.RES_CODE_FAIL, @@ -3044,7 +3226,10 @@ func ReqMasterCard(player *Player, buf []byte) error { func ReqSetFacebookUrl(player *Player, buf []byte) error { req := &msg.ReqSetFacebookUrl{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } BaseMod := player.PlayMod.getBaseMod() BaseMod.SetFacebookUrl(req.Url) player.PlayMod.save() @@ -3062,7 +3247,10 @@ func ReqInviteFriendData(player *Player, buf []byte) error { func ReqSelfInvited(player *Player, buf []byte) error { req := &msg.ReqSelfInvited{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } G_GameLogicPtr.FriendMgrSend(&MsqMod.Msg{ Type: MsqMod.HANDLE_TYPE_INVITE_FRIEND, From: int(player.M_DwUin), @@ -3077,7 +3265,10 @@ func ReqSelfInvited(player *Player, buf []byte) error { func ReqGetInviteReward(player *Player, buf []byte) error { req := &msg.ReqGetInviteReward{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } InviteMod := player.PlayMod.getInviteMod() Items, err := InviteMod.GetReward(int(req.GetIndex)) if err != nil { @@ -3110,7 +3301,10 @@ func ReqGetInviteReward(player *Player, buf []byte) error { func ReqAutoAddInviteFriend(player *Player, buf []byte) error { req := &msg.ReqAutoAddInviteFriend{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } FriendMod := player.PlayMod.getFriendMod() Uid := int(req.Id) if Uid == 0 && Uid == int(player.M_DwUin) { @@ -3143,7 +3337,10 @@ func ReqAutoAddInviteFriend(player *Player, buf []byte) error { func ReqAutoAddInviteFriend2(player *Player, buf []byte) error { req := &msg.ReqAutoAddInviteFriend2{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } FriendMod := player.PlayMod.getFriendMod() Uid, err := GetUidByFaceBook(req.Id) if Uid == 0 || Uid == int(player.M_DwUin) { @@ -3184,7 +3381,10 @@ func ReqAutoAddInviteFriend2(player *Player, buf []byte) error { func ReqSelectLimitEvent(player *Player, buf []byte) error { req := &msg.ReqSelectLimitEvent{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } LimitedTimeEventMod := player.PlayMod.getLimitedTimeEventMod() BaseMod := player.PlayMod.getBaseMod() Items, EventType, OrderNum, RewardList, err := LimitedTimeEventMod.SelectProgressReward(int(req.Id), BaseMod.GetLevel(), BaseMod.GetEnergy()) @@ -3226,7 +3426,10 @@ func ReqMining(player *Player, buf []byte) error { // 请求挖矿 func ReqMiningTake(player *Player, buf []byte) error { req := &msg.ReqMiningTake{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } MiningMod := player.PlayMod.getMiningMod() ActivityInfo := GetActivityInfo(player, activity.ACT_TYPE_MINING) Status := GetActivityStatus(player, activity.ACT_TYPE_MINING) @@ -3238,7 +3441,7 @@ func ReqMiningTake(player *Player, buf []byte) error { return fmt.Errorf("activity not start") } LoseItem := miningCfg.GetLoseItem(ActivityInfo.Id) - err := player.HandleLoseItem(LoseItem, "MiningLose") + err = player.HandleLoseItem(LoseItem, "MiningLose") if err != nil { player.SendErrClienRes(&msg.ResMiningTake{ Code: msg.RES_CODE_FAIL, @@ -3311,10 +3514,13 @@ func ReqMiningReward(player *Player, buf []byte) error { // 请求猜颜色基础数据 func ReqGuessColor(player *Player, buf []byte) error { req := &msg.ReqGuessColor{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } GuessColorMod := player.PlayMod.getGuessColorMod() Items := GuessColorMod.FirstIn() - err := player.HandleItem(Items, msg.ITEM_POP_LABEL_GuessColor.String()) + err = player.HandleItem(Items, msg.ITEM_POP_LABEL_GuessColor.String()) if err != nil { return err } @@ -3326,7 +3532,10 @@ func ReqGuessColor(player *Player, buf []byte) error { // 请求猜颜色 func ReqGuessColorTake(player *Player, buf []byte) error { req := &msg.ReqGuessColorTake{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } Status := GetActivityStatus(player, activity.ACT_TYPE_GUESS_COLOR) if Status != ACT_STATUS_START { player.SendErrClienRes(&msg.ResGuessColorTake{ @@ -3337,7 +3546,7 @@ func ReqGuessColorTake(player *Player, buf []byte) error { } GuessColorMod := player.PlayMod.getGuessColorMod() LoseItem := GuessColorMod.GetLoseItem() - err := player.HandleLoseItem(LoseItem, "GuessColorLose") + err = player.HandleLoseItem(LoseItem, "GuessColorLose") if err != nil { player.SendErrClienRes(&msg.ResGuessColorTake{ Code: msg.RES_CODE_FAIL, @@ -3359,7 +3568,10 @@ func ReqGuessColorTake(player *Player, buf []byte) error { // 请求猜颜色奖励 func ReqGuessColorReward(player *Player, buf []byte) error { req := &msg.ReqGuessColorReward{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } Status := GetActivityStatus(player, activity.ACT_TYPE_GUESS_COLOR) if Status != ACT_STATUS_START { player.SendErrClienRes(&msg.ResGuessColorReward{ @@ -3402,9 +3614,12 @@ func ReqRace(player *Player, buf []byte) error { // 请求竞赛开始 func ReqRaceStart(player *Player, buf []byte) error { req := &msg.ReqRaceStart{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } RaceMod := player.PlayMod.getRaceMod() - err := RaceMod.StartGame() + err = RaceMod.StartGame() if err != nil { player.SendErrClienRes(&msg.ResRaceStart{ Code: msg.RES_CODE_FAIL, @@ -3422,7 +3637,10 @@ func ReqRaceStart(player *Player, buf []byte) error { // 领取竞赛奖励 func ReqRaceReward(player *Player, buf []byte) error { req := &msg.ResRaceReward{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } RaceMod := player.PlayMod.getRaceMod() Items, err := RaceMod.GetReward() if err != nil { @@ -3459,7 +3677,10 @@ func ReqPlayroom(player *Player, buf []byte) error { // 请求playroom拜访信息 func ReqPlayroomInfo(player *Player, buf []byte) error { req := &msg.ReqPlayroomInfo{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } PlayroomMod := player.PlayMod.getPlayroomMod() Targer := int(req.Uid) if req.Uid == 0 { @@ -3515,7 +3736,10 @@ func ReqPlayroomInfo(player *Player, buf []byte) error { // 请求playroom交互 func ReqPlayroomInteract(player *Player, buf []byte) error { req := &msg.ReqPlayroomInteract{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } PlayroomMod := player.PlayMod.getPlayroomMod() Items, PType, err := PlayroomMod.Interact(int(req.Id), int(req.Type)) if err != nil { @@ -3565,9 +3789,12 @@ func ReqPlayroomInteract(player *Player, buf []byte) error { // 请求playroom设置房间 func ReqPlayroomSetRoom(player *Player, buf []byte) error { req := &msg.ReqPlayroomSetRoom{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } PlayroomMod := player.PlayMod.getPlayroomMod() - _, err := PlayroomMod.SetRoom(GoUtil.MapInt32ToInt(req.Playroom)) + _, err = PlayroomMod.SetRoom(GoUtil.MapInt32ToInt(req.Playroom)) if err != nil { player.SendErrClienRes(&msg.ResPlayroomSetRoom{ Code: msg.RES_CODE_FAIL, @@ -3587,7 +3814,10 @@ func ReqPlayroomSetRoom(player *Player, buf []byte) error { // 玩游戏 func ReqPlayroomGame(player *Player, buf []byte) error { req := &msg.ReqPlayroomGame{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } PlayroomMod := player.PlayMod.getPlayroomMod() Target := PlayroomMod.GetTarget() if Target == 0 { @@ -3598,7 +3828,7 @@ func ReqPlayroomGame(player *Player, buf []byte) error { return fmt.Errorf("no target") } Items := player.GetPlayroomGameReward(int(req.Type), 0) - err := player.HandleItem(Items, msg.ITEM_POP_LABEL_PlayroomGame.String()) + err = player.HandleItem(Items, msg.ITEM_POP_LABEL_PlayroomGame.String()) if err != nil { player.SendErrClienRes(&msg.ResPlayroomGame{ Code: msg.RES_CODE_FAIL, @@ -3643,10 +3873,13 @@ func ReqPlayroomGame(player *Player, buf []byte) error { // 选择奖励 func ReqPlayroomSelectReward(player *Player, buf []byte) error { req := &msg.ReqPlayroomSelectReward{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } PlayroomMod := player.PlayMod.getPlayroomMod() Items := player.GetPlayroomGameReward(playroom.GAME_RESULT_HIGH, int(req.Id)) - err := player.HandleItem(Items, msg.ITEM_POP_LABEL_PlayroomGame.String()) + err = player.HandleItem(Items, msg.ITEM_POP_LABEL_PlayroomGame.String()) if err != nil { player.SendErrClienRes(&msg.ResPlayroomSelectReward{ Code: msg.RES_CODE_FAIL, @@ -3707,7 +3940,10 @@ func ReqPlayroomLose(player *Player, buf []byte) error { // 宠物开始工作 func ReqPlayroomWork(player *Player, buf []byte) error { req := &msg.ReqPlayroomWork{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } PlayroomMod := player.PlayMod.getPlayroomMod() Items, err := PlayroomMod.Work() if err != nil { @@ -3791,7 +4027,10 @@ func ReqPlayroomDraw(player *Player, buf []byte) error { // 清理碎片 func ReqPlayroomChip(player *Player, buf []byte) error { req := &msg.ReqPlayroomChip{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } PlayroomMod := player.PlayMod.getPlayroomMod() Items, ChipNum, err := PlayroomMod.RemoveChip(req.Uid) if err != nil { @@ -3825,7 +4064,10 @@ func ReqPlayroomChip(player *Player, buf []byte) error { // 翻牌游戏 func ReqPlayroomFlip(player *Player, buf []byte) error { req := &msg.ReqPlayroomFlip{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } PlayroomMod := player.PlayMod.getPlayroomMod() CardId, err := PlayroomMod.FlipCard(int(req.Id)) @@ -3852,7 +4094,10 @@ func ReqPlayroomFlip(player *Player, buf []byte) error { func ReqPlayroomFlipReward(player *Player, buf []byte) error { req := &msg.ReqPlayroomFlipReward{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } PlayroomMod := player.PlayMod.getPlayroomMod() Items, Target, Result, err := PlayroomMod.GetFlipReward() if err != nil { @@ -3906,7 +4151,10 @@ func ReqPlayroomFlipReward(player *Player, buf []byte) error { func ReqPlayroomBuyItem(player *Player, buf []byte) error { req := &msg.ReqPlayroomBuyItem{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } PlayroomMod := player.PlayMod.getPlayroomMod() AddItems, CostItem := PlayroomMod.BuyItem(int(req.Id)) if CostItem == nil { @@ -3918,7 +4166,7 @@ func ReqPlayroomBuyItem(player *Player, buf []byte) error { return err } - err := player.HandleLoseItem(CostItem, msg.ITEM_POP_LABEL_PlayroomBuyItem.String()) + err = player.HandleLoseItem(CostItem, msg.ITEM_POP_LABEL_PlayroomBuyItem.String()) if err != nil { player.SendErrClienRes(&msg.ResPlayroomBuyItem{ Code: msg.RES_CODE_FAIL, @@ -3946,7 +4194,10 @@ func ReqPlayroomBuyItem(player *Player, buf []byte) error { func ReqPlayroomUpvote(player *Player, buf []byte) error { req := &msg.ReqPlayroomUpvote{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } PlayroomMod := player.PlayMod.getPlayroomMod() Items, err := PlayroomMod.GiveUpvote(int(req.Id)) if err != nil { @@ -3989,9 +4240,12 @@ func ReqPlayroomUpvote(player *Player, buf []byte) error { func ReqPlayroomUnlock(player *Player, buf []byte) error { req := &msg.ReqPlayroomUnlock{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } PlayroomMod := player.PlayMod.getPlayroomMod() - err := PlayroomMod.Unlock(int(req.Id)) + err = PlayroomMod.Unlock(int(req.Id)) if err != nil { player.SendErrClienRes(&msg.ResPlayroomUnlock{ Code: msg.RES_CODE_FAIL, @@ -4013,7 +4267,10 @@ func ReqPlayroomUnlock(player *Player, buf []byte) error { func ReqPlayroomTask(player *Player, buf []byte) error { req := &msg.ReqPlayroomTask{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } PlayroomMod := player.PlayMod.getPlayroomMod() Items, err := PlayroomMod.GetDailyTaskReward(int(req.Id)) if err != nil { @@ -4047,7 +4304,10 @@ func ReqPlayroomTask(player *Player, buf []byte) error { func ReqPlayroomTaskReward(player *Player, buf []byte) error { req := &msg.ReqPlayroomTaskReward{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } PlayroomMod := player.PlayMod.getPlayroomMod() Id, Items, err := PlayroomMod.GetTaskReward(int(req.Type)) if err != nil { @@ -4083,7 +4343,10 @@ func ReqPlayroomTaskReward(player *Player, buf []byte) error { func ReqOfflineReconnectFunc(a gate.Agent, buf []byte) error { req := &msg.ReqOfflineReconnect{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } res := &msg.ResOfflineReconnect{} res.DwUin = req.DwUin if v, ok := G_GameLogicPtr.M_Players.Load(req.DwUin); ok { @@ -4106,7 +4369,10 @@ func ReqOfflineReconnectFunc(a gate.Agent, buf []byte) error { // playroom 打工离线 func ReqPlayroomOutline(player *Player, buf []byte) error { req := &msg.ReqPlayroomOutline{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } ChessMod := player.PlayMod.getChessMod() if req.CostDia < 0 { var itemList []*item.Item @@ -4122,7 +4388,7 @@ func ReqPlayroomOutline(player *Player, buf []byte) error { } } - err := ChessMod.ExChess(int(req.OldChessId), int(req.NewChessId)) + err = ChessMod.ExChess(int(req.OldChessId), int(req.NewChessId)) if err != nil { player.SendErrClienRes(&msg.ResPlayroomOutline{ Code: msg.RES_CODE_FAIL, @@ -4163,10 +4429,12 @@ func ReqPlayroomWrokOutline(player *Player, buf []byte) error { func ReqPlayroomShop(player *Player, buf []byte) error { req := &msg.ReqPlayroomShop{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } PlayroomMod := player.PlayMod.getPlayroomMod() - ChargeMod := player.PlayMod.getChargeMod() - AddItems, LoseItem, err := PlayroomMod.ShopBuy(int(req.Id), int(req.Num), ChargeMod.IsWeeklyDiscountDay()) + AddItems, LoseItem, err := PlayroomMod.ShopBuy(int(req.Id), int(req.Num), player.IsWeeklyDiscount()) if err != nil { player.SendErrClienRes(&msg.ResPlayroomShop{ Code: msg.RES_CODE_FAIL, @@ -4223,7 +4491,10 @@ func ReqFriendTreasure(player *Player, buf []byte) error { func ReqFriendTreasureStart(player *Player, buf []byte) error { req := &msg.ReqFriendTreasureStart{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } // FriendMod := player.PlayMod.getFriendMod() FriendTreasureMod := player.PlayMod.getFriendTreasureMod() if FriendTreasureMod.Status == 1 { @@ -4253,7 +4524,10 @@ func ReqFriendTreasureStart(player *Player, buf []byte) error { func ReqFriendTreasureFilp(player *Player, buf []byte) error { req := &msg.ReqFriendTreasureFilp{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } FriendTreasureMod := player.PlayMod.getFriendTreasureMod() Items, Uid, err := FriendTreasureMod.Flip(int(req.Pos)) if err != nil { @@ -4350,7 +4624,10 @@ func ReqFriendTreasureEnd(player *Player, buf []byte) error { func ReqKafkaLog(player *Player, buf []byte) error { req := &msg.ReqKafkaLog{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } player.Kafka(req.Event, map[string]interface{}{ "From": "Client", "data": req.Data, @@ -4360,7 +4637,10 @@ func ReqKafkaLog(player *Player, buf []byte) error { func ReqCardHandbookReward(player *Player, buf []byte) error { req := &msg.ReqCardHandbookReward{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } CardMod := player.PlayMod.getCardMod() Items, err := CardMod.GetHandbookReward(int(req.CardId)) if err != nil { @@ -4393,9 +4673,12 @@ func ReqCardHandbookReward(player *Player, buf []byte) error { // 设置表情 func ReqSetEmoji(player *Player, buf []byte) error { req := &msg.ReqSetEmoji{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } EmojiMod := player.PlayMod.getEmojiMod() - err := EmojiMod.SetEmoji(int(req.Id), int(req.Type)) + err = EmojiMod.SetEmoji(int(req.Id), int(req.Type)) if err != nil { player.SendErrClienRes(&msg.ResSetEmoji{ Code: msg.RES_CODE_FAIL, @@ -4426,7 +4709,10 @@ func ReqCollectInfo(player *Player, buf []byte) error { // 领取收集奖励 func ReqCollect(player *Player, buf []byte) error { req := &msg.ReqCollect{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } CollectMod := player.PlayMod.getCollectMod() Type := collectCfg.GetRewardType(int(req.Id)) Num := 0 @@ -4474,7 +4760,10 @@ func ReqCollect(player *Player, buf []byte) error { // 获取出售棋子获得的星星数量 func ReqSellChessNum(player *Player, buf []byte) error { req := &msg.ReqSellChessNum{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } data, _ := mergeDataCfg.GetOne(int(req.ChessId)) Num := data.SellNum limitedTimeEventMod := player.PlayMod.getLimitedTimeEventMod() @@ -4489,7 +4778,10 @@ func ReqSellChessNum(player *Player, buf []byte) error { func ReqPlayroomDressSet(player *Player, buf []byte) error { req := &msg.ReqPlayroomDressSet{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } PlayroomMod := player.PlayMod.getPlayroomMod() Parts, _, error := PlayroomMod.PlayroomDressSet(GoUtil.MapInt32ToInt(req.DressSet)) if error != nil { @@ -4511,7 +4803,10 @@ func ReqPlayroomDressSet(player *Player, buf []byte) error { func ReqPlayroomPetAirSet(player *Player, buf []byte) error { req := &msg.ReqPlayroomPetAirSet{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } PlayroomMod := player.PlayMod.getPlayroomMod() error := PlayroomMod.PlayroomPetAirSet(int(req.PetAirSet)) if error != nil { @@ -4574,7 +4869,10 @@ func ReqLimitEventLuckyCat(player *Player, buf []byte) error { func ReqActivityReward(player *Player, buf []byte) error { req := &msg.ReqActivityReward{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } ActivityInfo := GetActivityInfo(player, int(req.Id)) if ActivityInfo == nil { player.SendErrClienRes(&msg.ResActivityReward{ @@ -4615,7 +4913,10 @@ func ReqActivityReward(player *Player, buf []byte) error { func ReqLang(player *Player, buf []byte) error { req := &msg.ReqLang{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } BaseMod := player.PlayMod.getBaseMod() BaseMod.SetLang(req.Lang) player.PushClientRes(&msg.ResLang{ @@ -4626,7 +4927,10 @@ func ReqLang(player *Player, buf []byte) error { func ReqCatTrickReward(player *Player, buf []byte) error { req := &msg.ReqCatTrickReward{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } LimitedTimeEventMod := player.PlayMod.getLimitedTimeEventMod() if !LimitedTimeEventMod.CheckExist(limitedTimeEvent.EVENT_TYPE_CAT_TRICK) { player.SendErrClienRes(&msg.ResCatTrickReward{ @@ -4665,7 +4969,10 @@ func ReqCatTrickReward(player *Player, buf []byte) error { func ReqAddNpc(player *Player, buf []byte) error { req := &msg.ReqAddNpc{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } FriendMod := player.PlayMod.getFriendMod() FriendMod.SetNpc(int(req.NpcId)) if len(FriendMod.Npc) == 1 { // 首次添加NPC 视为邀请好友成功 @@ -4682,8 +4989,8 @@ func ReqAddNpc(player *Player, buf []byte) error { player.TeLog("add_npc", map[string]interface{}{ "NpcId": int(req.NpcId), }) - FriendMod.AddReplyInfo(int(req.NpcId), friend.REPLY_TYPE_GREETING, "") - FriendMod.AddReplyInfo(int(req.NpcId), friend.REPLY_TYPE_GREETING_Get, "") + FriendMod.AddReplyInfo(int(req.NpcId), friend.REPLY_TYPE_GREETING, "", GoUtil.Now()+24*3600) + FriendMod.AddReplyInfo(int(req.NpcId), friend.REPLY_TYPE_GREETING_Get, "", GoUtil.Now()+24*3600) 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, @@ -4694,7 +5001,10 @@ func ReqAddNpc(player *Player, buf []byte) error { func ReqChargeReceive(player *Player, buf []byte) error { req := &msg.ReqChargeReceive{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } FriendMgrSend(&MsqMod.Msg{ From: int(player.M_DwUin), To: int(req.Uid), @@ -4710,7 +5020,10 @@ func ReqChargeReceive(player *Player, buf []byte) error { func ReqAddWish(player *Player, buf []byte) error { req := &msg.ReqAddWish{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } ChargeMod := player.PlayMod.getChargeMod() Items, err := ChargeMod.AddWish(int(req.Id), int(req.Type)) if err != nil { @@ -4744,7 +5057,10 @@ func ReqAddWish(player *Player, buf []byte) error { func ReqGetWish(player *Player, buf []byte) error { req := &msg.ReqGetWish{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } ChargeMod := player.PlayMod.getChargeMod() Items, err := ChargeMod.GetWish() if err != nil { @@ -4776,9 +5092,12 @@ func ReqGetWish(player *Player, buf []byte) error { func ReqSendWishBeg(player *Player, buf []byte) error { req := &msg.ReqSendWishBeg{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } ChargeMod := player.PlayMod.getChargeMod() - err := ChargeMod.SendWishBeg(req.Uid) + err = ChargeMod.SendWishBeg(req.Uid) if err != nil { player.SendErrClienRes(&msg.ResSendWishBeg{ Code: msg.RES_CODE_FAIL, @@ -4806,7 +5125,10 @@ func ReqSendWishBeg(player *Player, buf []byte) error { func ReqWishApplyList(player *Player, buf []byte) error { req := &msg.ReqWishApplyList{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } FriendMod := player.PlayMod.getFriendMod() List := FriendMod.GetWishApply() rs := make([]*msg.ResFriendApplyInfo, 0) @@ -4830,9 +5152,12 @@ func ReqWishApplyList(player *Player, buf []byte) error { func ReqWishApply(player *Player, buf []byte) error { req := &msg.ReqWishApply{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } FriendMod := player.PlayMod.getFriendMod() - err := FriendMod.ApplyWish(req.Uid) + err = FriendMod.ApplyWish(req.Uid) if err != nil { player.SendErrClienRes(&msg.ResWishApply{ Code: msg.RES_CODE_FAIL, @@ -4859,7 +5184,10 @@ func ReqWishApply(player *Player, buf []byte) error { func ReqGuidePlayroom(player *Player, buf []byte) error { req := &msg.ReqGuidePlayroom{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } GuideMod := player.PlayMod.getGuideMod() B := GuideMod.GetPlayroomGuide() if B { @@ -4870,7 +5198,7 @@ func ReqGuidePlayroom(player *Player, buf []byte) error { return fmt.Errorf("已领取") } Items := []*item.Item{item.NewItem(int(req.Id), 1)} - err := player.HandleItem(Items, msg.ITEM_POP_LABEL_PlayroomGame.String()) + err = player.HandleItem(Items, msg.ITEM_POP_LABEL_PlayroomGame.String()) if err != nil { player.SendErrClienRes(&msg.ResWishApply{ Code: msg.RES_CODE_FAIL, @@ -4888,7 +5216,10 @@ func ReqGuidePlayroom(player *Player, buf []byte) error { func ReqId2Verify(player *Player, buf []byte) error { req := &msg.ReqId2Verify{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } if req.Id == "" || req.Name == "" { player.SendErrClienRes(&msg.ResId2Verify{ ResultCode: msg.RES_CODE_FAIL, @@ -4896,7 +5227,7 @@ func ReqId2Verify(player *Player, buf []byte) error { }) return fmt.Errorf("id is zero") } - err := GoUtil.IdVerify(req.Name, req.Id) + err = GoUtil.IdVerify(req.Name, req.Id) if err != nil { player.SendErrClienRes(&msg.ResId2Verify{ ResultCode: msg.RES_CODE_FAIL, @@ -4919,7 +5250,10 @@ func ReqId2Verify(player *Player, buf []byte) error { func ReqFriendByCode(player *Player, buf []byte) error { req := &msg.ReqFriendByCode{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } if req.Code == "" { player.SendErrClienRes(&msg.ResFriendByCode{ Code: msg.RES_CODE_FAIL, @@ -4961,7 +5295,10 @@ func ReqFriendByCode(player *Player, buf []byte) error { func ReqPlayroomGameShowReward(player *Player, buf []byte) error { req := &msg.ReqPlayroomGameShowReward{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } Items := player.GetPlayroomGameReward(int(req.Type), int(req.SelectId)) player.PushClientRes(&msg.ResPlayroomGameShowReward{ Items: item.ItemToMsg(Items), @@ -4971,9 +5308,12 @@ func ReqPlayroomGameShowReward(player *Player, buf []byte) error { func ReqPlayroomGuide(player *Player, buf []byte) error { req := &msg.ReqPlayroomGuide{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } PlayroomMod := player.PlayMod.getPlayroomMod() - err := PlayroomMod.Guide(int(req.Type)) + err = PlayroomMod.Guide(int(req.Type)) if err != nil { player.SendErrClienRes(&msg.ResPlayroomGuide{ Code: msg.RES_CODE_FAIL, @@ -5000,10 +5340,14 @@ func ReqCatnip(player *Player, buf []byte) error { // TODO : 猫草大作战邀请好友 func ReqCatnipInvite(player *Player, buf []byte) error { req := &msg.ReqCatnipInvite{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } ActivityId := GetActivityId(player, activity.ACT_TYPE_MINING) + ActivityInfo := GetActivityInfo(player, ActivityId) CatnipMod := player.PlayMod.getCatnipMod() - err := CatnipMod.Invite(int(req.Id), int(req.Uid)) + err = CatnipMod.Invite(int(req.Id), int(req.Uid)) if err != nil { player.SendErrClienRes(&msg.ResCatnipInvite{ Code: msg.RES_CODE_FAIL, @@ -5018,6 +5362,7 @@ func ReqCatnipInvite(player *Player, buf []byte) error { From: int(player.M_DwUin), To: int(req.Uid), Type: MsqMod.HANDLE_TYPE_CATNIP_INVITE, + End: ActivityInfo.EndT, Extra: CatnipMsg{ ActivityId: ActivityId, GameId: int(req.Id), @@ -5034,7 +5379,10 @@ func ReqCatnipInvite(player *Player, buf []byte) error { func ReqCatnipAgree(player *Player, buf []byte) error { req := &msg.ReqCatnipAgree{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } CatnipMod := player.PlayMod.getCatnipMod() ActivityId := GetActivityId(player, activity.ACT_TYPE_MINING) UserList, err := CatnipMod.Agree(int(req.Id), int(req.Uid)) @@ -5045,6 +5393,14 @@ func ReqCatnipAgree(player *Player, buf []byte) error { }) return err } + err = G_GameLogicPtr.SetCatnipPartner(int(player.M_DwUin), 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), }) @@ -5071,6 +5427,7 @@ func ReqCatnipAgree(player *Player, buf []byte) error { SendT: GoUtil.Now(), }) } + player.CatnipBackData() player.PlayMod.save() player.PushClientRes(&msg.ResCatnipAgree{ Code: msg.RES_CODE_SUCCESS, @@ -5081,9 +5438,12 @@ func ReqCatnipAgree(player *Player, buf []byte) error { // TODO : 猫草大作战设置倍数 func ReqCatnipMultiply(player *Player, buf []byte) error { req := &msg.ReqCatnipMultiply{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } CatnipMod := player.PlayMod.getCatnipMod() - err := CatnipMod.Multiply(int(req.Id), int(req.Multiply)) + err = CatnipMod.Multiply(int(req.Multiply)) if err != nil { player.SendErrClienRes(&msg.ResCatnipMultiply{ Code: msg.RES_CODE_FAIL, @@ -5092,9 +5452,9 @@ func ReqCatnipMultiply(player *Player, buf []byte) error { return err } player.TeLog("catnip_multiply", map[string]interface{}{ - "Id": int(req.Id), "Mul": int(req.Multiply), }) + player.CatnipBackData() player.PlayMod.save() player.PushClientRes(&msg.ResCatnipMultiply{ Code: msg.RES_CODE_SUCCESS, @@ -5105,7 +5465,10 @@ func ReqCatnipMultiply(player *Player, buf []byte) error { // TODO : 猫草大作战开始游戏 func ReqCatnipPlay(player *Player, buf []byte) error { req := &msg.ReqCatnipPlay{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } CatnipMod := player.PlayMod.getCatnipMod() Id, Growth, PartnerId, Items, ItemCost, err := CatnipMod.Play(int(req.Id)) if err != nil { @@ -5138,6 +5501,7 @@ func ReqCatnipPlay(player *Player, buf []byte) error { if Growth > 0 { player.CatnipGrowthMsg(PartnerId, int(req.Id), Growth) } + player.CatnipBackData() player.PlayMod.save() player.PushClientRes(&msg.ResCatnipPlay{ Code: msg.RES_CODE_SUCCESS, @@ -5149,7 +5513,10 @@ func ReqCatnipPlay(player *Player, buf []byte) error { // TODO : 猫草大作战领取奖励 func ReqCatnipReward(player *Player, buf []byte) error { req := &msg.ReqCatnipReward{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } CatnipMod := player.PlayMod.getCatnipMod() Items, err := CatnipMod.Reward(int(req.Id), int(req.Progress)) if err != nil { @@ -5172,6 +5539,7 @@ func ReqCatnipReward(player *Player, buf []byte) error { "Progress": int(req.Progress), "Items": Items, }) + player.CatnipBackData() player.PlayMod.save() player.PushClientRes(&msg.ResCatnipReward{ Code: msg.RES_CODE_SUCCESS, @@ -5182,7 +5550,10 @@ func ReqCatnipReward(player *Player, buf []byte) error { // 猫草大作战领取大奖 func ReqCatnipGrandReward(player *Player, buf []byte) error { req := &msg.ReqCatnipGrandReward{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } CatnipMod := player.PlayMod.getCatnipMod() Items, err := CatnipMod.GrandReward() if err != nil { @@ -5212,9 +5583,12 @@ func ReqCatnipGrandReward(player *Player, buf []byte) error { func ReqCatnipRefuse(player *Player, buf []byte) error { req := &msg.ReqCatnipRefuse{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } CatnipMod := player.PlayMod.getCatnipMod() - err := CatnipMod.Refuse(int(req.Id), int(req.Uid)) + err = CatnipMod.Refuse(int(req.Id), int(req.Uid)) if err != nil { player.SendErrClienRes(&msg.ResCatnipRefuse{ Code: msg.RES_CODE_FAIL, @@ -5272,7 +5646,10 @@ func ReqActPassReward(player *Player, buf []byte) error { func ReqFriendReplyHandle(player *Player, buf []byte) error { req := &msg.ReqFriendReplyHandle{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } FriendMod := player.PlayMod.getFriendMod() ReplyInfo := FriendMod.ReplyFriend(int(req.LogId)) if ReplyInfo == nil { @@ -5297,10 +5674,51 @@ func ReqFriendReplyHandle(player *Player, buf []byte) error { SendT: GoUtil.Now(), Extra: ReplyData, }) + case friend.REPLY_TYPE_CATNIP: // 猫草大作战同意邀请 + GameId := GoUtil.Int(ReplyInfo.Param) + err := G_GameLogicPtr.SetCatnipPartner(int(player.M_DwUin), GameId, ReplyInfo.Uid) + if err != nil { + player.PushClientRes(&msg.ResFriendReplyHandle{ + Code: msg.RES_CODE_FAIL, + Msg: err.Error(), + }) + } else { + CatnipMod := player.PlayMod.getCatnipMod() + ActivityId := GetActivityId(player, activity.ACT_TYPE_MINING) + UserList, _ := CatnipMod.Agree(GameId, ReplyInfo.Uid) + player.TeLog("catnip_agree", map[string]interface{}{ + "Id": int(GameId), + }) + FriendMgrSend(&MsqMod.Msg{ + From: int(player.M_DwUin), + To: int(ReplyInfo.Uid), + Type: MsqMod.HANDLE_TYPE_CATNIP_AGREE, + Extra: CatnipMsg{ + ActivityId: ActivityId, + GameId: int(GameId), + }, + 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(GameId), + }, + SendT: GoUtil.Now(), + }) + } + player.CatnipBackData() + } + } } Items := baseCfg.GetFriendReplyReward() - err := player.HandleItem(Items, msg.ITEM_POP_LABEL_FriendReplyHandle.String()) + err = player.HandleItem(Items, msg.ITEM_POP_LABEL_FriendReplyHandle.String()) if err != nil { player.SendErrClienRes(&msg.ResFriendReplyHandle{ Code: msg.RES_CODE_FAIL, @@ -5318,7 +5736,10 @@ func ReqFriendReplyHandle(player *Player, buf []byte) error { func ReqGetChessRetireReward(player *Player, buf []byte) error { req := &msg.ReqGetChessRetireReward{} - proto.Unmarshal(buf, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } ChessMod := player.PlayMod.getChessMod() Items, err := ChessMod.GetRetireReward(req.Id) if err != nil { @@ -5348,3 +5769,15 @@ func ReqGetChessRetireReward(player *Player, buf []byte) error { }) return nil } + +func ReqCatnipEmoji(player *Player, buf []byte) error { + req := &msg.ReqCatnipEmoji{} + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } + CatnipMod := player.PlayMod.getCatnipMod() + CatnipMod.SetEmoji(int(req.Id), int(req.EmojiId)) + player.CatnipBackData() + return nil +} diff --git a/src/server/game/Trigger.go b/src/server/game/Trigger.go index f68c6ed8..3e587327 100644 --- a/src/server/game/Trigger.go +++ b/src/server/game/Trigger.go @@ -8,6 +8,7 @@ import ( "server/MergeConst" "server/conf" champshipCfg "server/conf/champship" + chargeCfg "server/conf/charge" languageCfg "server/conf/language" mailCfg "server/conf/mail" mergeDataCfg "server/conf/mergeData" @@ -113,12 +114,10 @@ func TriggerShippingOrderOrigin(player *Player, req *msg.ReqShippingOrder) { log.Debug("charge shipping order already shipped OrderSn:%s", OrderSn) return } - // if !conf.Server.GoogleVerify { - // Order.PayStatus = MergeConst.ORDER_STATUS_PAY - // return - // } + if conf.Server.GameName == "Merge_Pet_online" { - GoUtil.SendFeishuOrder(int(player.M_DwUin), OrderData.PayChannelOrderId, OrderData.Price, req.ProduceId, OrderData.PayTime, GoUtil.Now()) + ProduceName := chargeCfg.GetProduceName(OrderData.ProductId) + GoUtil.SendFeishuOrder(int(player.M_DwUin), OrderData.PayChannelOrderId, OrderData.Price, ProduceName, OrderData.PayTime, GoUtil.Now()) } log.Debug("[order verify success] Uid:%d;OrderSn:%s;PayOrder:%s;Token:%s", player.M_DwUin, OrderData.OrderId, OrderData.PayChannelOrderId, req.Token) player.lock.Lock() diff --git a/src/server/game/UnitTest.go b/src/server/game/UnitTest.go index 513e40b0..a7ada801 100644 --- a/src/server/game/UnitTest.go +++ b/src/server/game/UnitTest.go @@ -332,7 +332,7 @@ func UnitDecoratePartCost(p *Player) error { DecorateMod.PartClassPool = []int{} DecorateMod.PartPool = make(map[int]int) DecorateMod.InitData() - Items, _, _ := DecorateMod.GetDecorateCostItem(1, 33) + Items, _, _ := DecorateMod.GetDecorateCostItem(1, 33, false) err := p.HandleLoseItem(Items, "") if err != nil { fmt.Print(err) diff --git a/src/server/game/VarMgr.go b/src/server/game/VarMgr.go index aa195ca9..14897ea4 100644 --- a/src/server/game/VarMgr.go +++ b/src/server/game/VarMgr.go @@ -2,6 +2,7 @@ package game import ( "encoding/gob" + "fmt" "server/GoUtil" "server/game/mod/card" "server/game/mod/msg" @@ -51,6 +52,7 @@ func (f *VarMgr) Init() { f.ZeroUpdate(&msg.Msg{}) } f.RegisterHandler(msg.SERVER_ZERO_UPDATE, f.ZeroUpdate) + f.RegisterHandler(msg.HANDLE_TYPE_SET_CATNIP_PARTNER, f.SetCatnipPartner) f.mDispatr.AfterFunc(time.Duration(GoUtil.NextZeroTimestampDuration())*time.Second, func() { f.Send(&msg.Msg{ @@ -79,6 +81,30 @@ func (f *VarMgr) ZeroUpdate(m *msg.Msg) (interface{}, error) { return nil, nil } +func (f *VarMgr) SetCatnipPartner(m *msg.Msg) (interface{}, error) { + if Param, ok := m.Extra.(map[string]interface{}); ok { + MyUid := GoUtil.Int(Param["uid"]) + CatnipGameId := GoUtil.Int(Param["game_id"]) + CatnipPartnerId := GoUtil.Int(Param["partner_uid"]) + myKey := fmt.Sprintf("catnip_partner_%d_%d", MyUid, CatnipGameId) + key := fmt.Sprintf("catnip_partner_%d_%d", CatnipPartnerId, CatnipGameId) + PartnerInfo := f.GetExpireVar(key) + if PartnerInfo.D != nil { + return nil, fmt.Errorf("catnip partner already set for uid %d in game %d", CatnipPartnerId, CatnipGameId) + } + f.SetExpireVar(key, &VarExpireData{ + D: MyUid, + T: m.End, + }) + f.SetExpireVar(myKey, &VarExpireData{ + D: CatnipPartnerId, + T: m.End, + }) + return nil, nil + } + return nil, fmt.Errorf("invalid parameters for setting catnip partner") +} + func (f *VarMgr) SetVar(key string, value interface{}) { f.getData().Var[key] = value } diff --git a/src/server/game/mod/catnip/Catnip.go b/src/server/game/mod/catnip/Catnip.go index e91a314d..9eef0a8b 100644 --- a/src/server/game/mod/catnip/Catnip.go +++ b/src/server/game/mod/catnip/Catnip.go @@ -8,9 +8,9 @@ import ( ) type CatnipMod struct { - Id int - Game map[int]*CatnipGame - + Id int + Game map[int]*CatnipGame + Mul int // 倍数 IsGetGrandReward bool // 是否领取过大丰收奖励 } @@ -25,10 +25,10 @@ type CatnipGame struct { Progress int // 进度 PartnerAdd int // 伙伴贡献 Reward []int // 已领取阶段奖励 - Mul int // 倍数 Status int // 0: Not Started, 1: In Progress, 2: Completed InviteList map[int]*InviteInfo // 邀请列表,key: 邀请者ID, value: 被邀请者ID BeInvitedList map[int]*InviteInfo // 被邀请列表,key: 被邀请者ID, value: 邀请者ID + EmojiId int // 表情ID } const ( @@ -39,6 +39,7 @@ const ( func (c *CatnipMod) InitData() { // Initialize Catnip data here + // c.Game = nil if c.Game == nil { c.Game = make(map[int]*CatnipGame) } @@ -56,13 +57,16 @@ func (c *CatnipMod) Login(Id int) int { c.Id = Id c.IsGetGrandReward = false // Reset grand reward status on login c.Game = make(map[int]*CatnipGame) + c.Mul = 1 // Default multiplier GameNum := catnipCfg.GetGameNum(c.Id) // Assuming 1 is the default game ID for i := 1; i <= GameNum; i++ { c.Game[i] = &CatnipGame{ - Id: i, - Partner: 0, // No partner initially - Progress: 0, // Initial progress - Status: GAME_STATUS_IDLE, // Not started + Id: i, + Partner: 0, // No partner initially + Progress: 0, // Initial progress + Status: GAME_STATUS_IDLE, // Not started + InviteList: make(map[int]*InviteInfo), // Initialize invite list + BeInvitedList: make(map[int]*InviteInfo), // Initialize be invited list } } return c.Id @@ -144,12 +148,8 @@ func (c *CatnipMod) DelInvited(Id, Uid int) error { return nil } -func (c *CatnipMod) Multiply(Id, Mul int) error { - GameInfo, ok := c.Game[Id] - if !ok { - return fmt.Errorf("game with ID %d does not exist", Id) - } - GameInfo.Mul = Mul +func (c *CatnipMod) Multiply(Mul int) error { + c.Mul = Mul return nil } @@ -170,11 +170,12 @@ func (c *CatnipMod) Play(Id int) (int, int, int, []*item.Item, []*item.Item, err if !ok { return 0, 0, 0, nil, nil, fmt.Errorf("game with ID %d does not exist", Id) } - Id, Items, Growth := catnipCfg.GetJackpotItem(GameInfo.Mul) + Id, Items, Growth := catnipCfg.GetJackpotItem(c.Mul) if Growth > 0 { c.Growth(Id, Growth) } - ItemCost := catnipCfg.GetItemCost(c.Id, GameInfo.Mul) + ItemCost := catnipCfg.GetItemCost(c.Id, c.Mul) + GameInfo.Progress += Growth return Id, Growth, GameInfo.Partner, Items, ItemCost, nil } @@ -219,3 +220,12 @@ func (c *CatnipMod) Growth(Id, Growth int) { GameInfo.Status = GAME_STATUS_COMPLETED } } + +func (c *CatnipMod) SetEmoji(Id, EmojiId int) { + GameInfo, ok := c.Game[Id] + if !ok { + return // Game does not exist + } + // Here we can set the emoji for the game. This is a placeholder implementation. + GameInfo.EmojiId = EmojiId +} diff --git a/src/server/game/mod/charge/Charge.go b/src/server/game/mod/charge/Charge.go index e120c355..189aaf16 100644 --- a/src/server/game/mod/charge/Charge.go +++ b/src/server/game/mod/charge/Charge.go @@ -136,8 +136,8 @@ func (c *ChargeMod) ZeroUpdate(Emit []int) { c.SpecialShop[i] = &SepcialShop{Grade: SpecialGrade, Count: SpecialShopCount} } c.WishList.SendList = make([]int64, 0) - c.WeeklyDiscount = make(map[int]int) if c.IsWeeklyDiscountDay() && c.WeeklyEndTime < Now { + c.WeeklyDiscount = make(map[int]int) c.WeeklyEndTime = GoUtil.ZeroTimestamp() + 7*24*3600 } c.InitChessShop(Emit) @@ -285,63 +285,63 @@ func (c *ChargeMod) FireFreeShop() ([]*item.Item, error) { } // 返回数据 -func (c *ChargeMod) BackData() *msg.ResCharge { - SpecialShop := make(map[int32]*msg.ResSpecialShop) - ChessShop := make(map[int32]*msg.ResChessShop) - for k, v := range c.SpecialShop { - SpecialShop[int32(k)] = &msg.ResSpecialShop{ - Grade: int32(v.Grade), - Count: int32(v.Count), - } - } +// func (c *ChargeMod) BackData() *msg.ResCharge { +// SpecialShop := make(map[int32]*msg.ResSpecialShop) +// ChessShop := make(map[int32]*msg.ResChessShop) +// for k, v := range c.SpecialShop { +// SpecialShop[int32(k)] = &msg.ResSpecialShop{ +// Grade: int32(v.Grade), +// Count: int32(v.Count), +// } +// } - for k, v := range c.ChessShop { - ChessShop[int32(k)] = &msg.ResChessShop{ - Diamond: int32(v.Diamond), - Count: int32(v.Count), - ChessId: int32(v.Id), - } - } - resWish := &msg.WishList{} - if c.WishList != nil { - resWish = &msg.WishList{ - Id: int32(c.WishList.ItemId), - Count: int32(c.WishList.Count), - Uid: c.WishList.SendList, - } - } - WeeklyDiscount := make(map[int32]*msg.WeeklyDiscountInfo) - WeeklyDiscountInfo := chargeCfg.GetWeeklyInfoAll() - if c.IsWeeklyDiscountDay() { - for k, v := range WeeklyDiscountInfo { - LimitNum := c.WeeklyDiscount[k] - WeeklyDiscount[int32(k)] = &msg.WeeklyDiscountInfo{ - Discount: int32(v.Discount), - Count: int32(v.WeeklyLimit - LimitNum), - Id: int32(k), - } - } - } - return &msg.ResCharge{ - Charge: float32(c.Charge), - Total: int32(c.Total), - First: GoUtil.MapIntToSlice(c.EnergyShop), - SpecialShop: SpecialShop, - FreeShop: int32(c.FreeShop), - ChessShop: ChessShop, - Gift: GoUtil.MapIntToInt32(c.Gift), - Ad: c.Ad, - SpecialCharge: float32(c.SpecialCharge), - SpecialChargeWeek: int32(GoUtil.FullWeeksSince(c.LastSpecialCharge)), - TodayCharge: float32(c.TodayCharge), - MonthCharge: float32(c.MonthCharge), - Wish: resWish, - AdEndTime: c.AdEndTime, - WeeklyDiscount: WeeklyDiscount, - PetWorkRemainTime: c.PetWorkTime, - WeeklyEndTime: c.WeeklyEndTime, - } -} +// for k, v := range c.ChessShop { +// ChessShop[int32(k)] = &msg.ResChessShop{ +// Diamond: int32(v.Diamond), +// Count: int32(v.Count), +// ChessId: int32(v.Id), +// } +// } +// resWish := &msg.WishList{} +// if c.WishList != nil { +// resWish = &msg.WishList{ +// Id: int32(c.WishList.ItemId), +// Count: int32(c.WishList.Count), +// Uid: c.WishList.SendList, +// } +// } +// WeeklyDiscount := make(map[int32]*msg.WeeklyDiscountInfo) +// WeeklyDiscountInfo := chargeCfg.GetWeeklyInfoAll() +// if c.IsWeeklyDiscountDay() { +// for k, v := range WeeklyDiscountInfo { +// LimitNum := c.WeeklyDiscount[k] +// WeeklyDiscount[int32(k)] = &msg.WeeklyDiscountInfo{ +// Discount: int32(v.Discount), +// Count: int32(v.WeeklyLimit - LimitNum), +// Id: int32(k), +// } +// } +// } +// return &msg.ResCharge{ +// Charge: float32(c.Charge), +// Total: int32(c.Total), +// First: GoUtil.MapIntToSlice(c.EnergyShop), +// SpecialShop: SpecialShop, +// FreeShop: int32(c.FreeShop), +// ChessShop: ChessShop, +// Gift: GoUtil.MapIntToInt32(c.Gift), +// Ad: c.Ad, +// SpecialCharge: float32(c.SpecialCharge), +// SpecialChargeWeek: int32(GoUtil.FullWeeksSince(c.LastSpecialCharge)), +// TodayCharge: float32(c.TodayCharge), +// MonthCharge: float32(c.MonthCharge), +// Wish: resWish, +// AdEndTime: c.AdEndTime, +// WeeklyDiscount: WeeklyDiscount, +// PetWorkRemainTime: c.PetWorkTime, +// WeeklyEndTime: c.WeeklyEndTime, +// } +// } func (c *ChargeMod) InitChessShop(Emit []int) { if len(Emit) == 0 { @@ -401,9 +401,9 @@ func (c *ChargeMod) InitChessShop(Emit []int) { } } -func (c *ChargeMod) BuyEnergy() ([]*item.Item, []*item.Item, int) { +func (c *ChargeMod) BuyEnergy(IsWeeklyDiscount bool) ([]*item.Item, []*item.Item, int) { diamond := 40 - if c.IsWeeklyDiscountDay() { + if IsWeeklyDiscount { LimitNum := c.WeeklyDiscount[0] Discount, WeeklyLimit := chargeCfg.GetWeeklyInfo(0) if LimitNum < WeeklyLimit { @@ -419,7 +419,7 @@ func (c *ChargeMod) BuyEnergy() ([]*item.Item, []*item.Item, int) { }, diamond } -func (c *ChargeMod) BuyChess(Chess int) ([]*item.Item, []*item.Item, int, error) { +func (c *ChargeMod) BuyChess(Chess int, IsWeeklyDiscount bool) ([]*item.Item, []*item.Item, int, error) { v, ok := c.ChessShop[Chess] if !ok { return nil, nil, 0, fmt.Errorf("BuyChess chess id not exist id:%d", Chess) @@ -430,7 +430,7 @@ func (c *ChargeMod) BuyChess(Chess int) ([]*item.Item, []*item.Item, int, error) } v.Count-- diamond := v.Diamond - if c.IsWeeklyDiscountDay() { + if IsWeeklyDiscount { LimitNum := c.WeeklyDiscount[Chess] Discount, WeeklyLimit := chargeCfg.GetWeeklyInfo(Chess) if LimitNum < WeeklyLimit { @@ -521,6 +521,13 @@ func (c *ChargeMod) IsWeeklyDiscountDay() bool { return Weekday == Day || c.WeeklyEndTime > GoUtil.Now() } +func (c *ChargeMod) ResetWeeklyDiscount() { + if c.IsWeeklyDiscountDay() { + return + } + c.WeeklyDiscount = make(map[int]int) +} + func (c *ChargeMod) PetWorkBackData() *msg.LogoutPetWork { res := &msg.LogoutPetWork{ WorkTime: c.LastWorkTime, @@ -529,3 +536,11 @@ func (c *ChargeMod) PetWorkBackData() *msg.LogoutPetWork { c.LastWorkTime = 0 return res } + +func (c *ChargeMod) GetWeeklyEndTime() int64 { + return c.WeeklyEndTime +} + +func (c *ChargeMod) SetWeeklyEndTime(EndTime int64) { + c.WeeklyEndTime = EndTime +} diff --git a/src/server/game/mod/decorate/Decorate.go b/src/server/game/mod/decorate/Decorate.go index 54867726..a0703315 100644 --- a/src/server/game/mod/decorate/Decorate.go +++ b/src/server/game/mod/decorate/Decorate.go @@ -2,8 +2,10 @@ package decorate import ( "fmt" + "math" "server/GoUtil" decorateCfg "server/conf/decorate" + limitedTimeEventCfg "server/conf/limitedTimeEvent" "server/game/mod/item" "server/msg" "sort" @@ -75,10 +77,14 @@ func (d *Decorate) GetDecorateAddEnergy(cnt int) []*item.Item { } // 获取装饰消耗 -func (d *Decorate) GetDecorateCostItem(AreaId, DecorateId int) ([]*item.Item, int, []*item.Item) { +func (d *Decorate) GetDecorateCostItem(AreaId, DecorateId int, DecorateOffIsExist bool) ([]*item.Item, int, []*item.Item) { Item := decorateCfg.GetStarCost(AreaId, DecorateId) PetExp := decorateCfg.GetDecoratePExp(AreaId, DecorateId) Id := decorateCfg.GetIdBySenceAndLv(AreaId, DecorateId) + if DecorateOffIsExist { + OffRate := limitedTimeEventCfg.GetDecorateOffDiscount(AreaId, DecorateId) + Item = int(math.Ceil(float64(Item) * float64(OffRate))) + } Items := []*item.Item{item.NewItem(item.ITEM_STAR_ID, Item)} PartItem := d.PartCost[Id] PartItemList := make([]*item.Item, 0) @@ -93,7 +99,7 @@ func (d *Decorate) GetDecorateCostItem(AreaId, DecorateId int) ([]*item.Item, in return Items, PetExp, PartItemList } -func (d *Decorate) DecorateAll(Star int) ([]*item.Item, []*item.Item, int, []int, []interface{}, int) { +func (d *Decorate) DecorateAll(Star int, DecorateOffIsExist bool) ([]*item.Item, []*item.Item, int, []int, []interface{}, int) { DecorateAll := decorateCfg.GetAllSortIdByAreaId(d.AreaId) SubAlice := GoUtil.SubSlices(DecorateAll, GoUtil.MapIntToIntSlice(d.FinishList)) sort.Ints(SubAlice) @@ -111,6 +117,10 @@ func (d *Decorate) DecorateAll(Star int) ([]*item.Item, []*item.Item, int, []int break } NeedStar := decorateCfg.GetStarCost(d.AreaId, v) + if DecorateOffIsExist { + OffRate := limitedTimeEventCfg.GetDecorateOffDiscount(d.AreaId, v) + NeedStar = int(math.Ceil(float64(NeedStar) * float64(OffRate))) + } if Star < NeedStar { break } diff --git a/src/server/game/mod/friend/Friend.go b/src/server/game/mod/friend/Friend.go index b8706228..88297eda 100644 --- a/src/server/game/mod/friend/Friend.go +++ b/src/server/game/mod/friend/Friend.go @@ -69,6 +69,7 @@ type ApplyInfo struct { const ( REPLY_TYPE_GREETING = 1 // 问候 REPLY_TYPE_GREETING_Get = 2 // 收到问候 + REPLY_TYPE_CATNIP = 3 // 猫薄荷 ) // 24小时内与玩家进行过以下互动的用户,若被选中参加本次宠物宝藏,在其头像旁添加礼物盒 @@ -499,9 +500,9 @@ func (f *FriendMod) GetActLogLast() *ActLogInfo { return f.ActivityLog[len(f.ActivityLog)-1] } -func (f *FriendMod) AddReplyInfo(Uid int, Type int, Param string) { +func (f *FriendMod) AddReplyInfo(Uid int, Type int, Param string, EndTime int64) { f.AutoId++ - EndTime := GoUtil.Now() + 24*3600 + f.ReplyList = append(f.ReplyList, &ReplyInfo{ Id: f.AutoId, Uid: Uid, diff --git a/src/server/game/mod/kv/kv.go b/src/server/game/mod/kv/kv.go index b98e87bd..e721041e 100644 --- a/src/server/game/mod/kv/kv.go +++ b/src/server/game/mod/kv/kv.go @@ -13,6 +13,12 @@ func (f *KvMod) InitData() { } func (f *KvMod) SetVar(key int, value string) { + if len(value) > 500 { + return + } + if len(f.Data) > 150 { + return + } f.Data[key] = value } diff --git a/src/server/game/mod/limitedTimeEvent/LimitedTimeEvent.go b/src/server/game/mod/limitedTimeEvent/LimitedTimeEvent.go index bd40331c..8bc6f24b 100644 --- a/src/server/game/mod/limitedTimeEvent/LimitedTimeEvent.go +++ b/src/server/game/mod/limitedTimeEvent/LimitedTimeEvent.go @@ -28,6 +28,7 @@ const ( EVENT_TYPE_PAYBACK_DAY = 15 // 回收日 EVENT_TYPE_LITTLE_APPRENTICE = 16 // 小学徒 EVENT_TYPE_CAT_DAY_SALE = 17 // 猫咪大甩卖 + EVENT_TYPE_DECORATE_OFF = 18 // 装饰打折 ) const ( @@ -557,3 +558,14 @@ func getLimitEventMsg(t int, e *LTEInfo) *msg.LimitEvent { Param: Param, } } + +func (l LimitedTimeEventMod) EndCatDaySale() { + delete(l.EventList, EVENT_TYPE_CAT_DAY_SALE) +} + +func (l LimitedTimeEventMod) GetCatDaySaleEndTime() int64 { + if l.EventList[EVENT_TYPE_CAT_DAY_SALE] == nil { + return 0 + } + return l.EventList[EVENT_TYPE_CAT_DAY_SALE].StartT + l.EventList[EVENT_TYPE_CAT_DAY_SALE].Remian +} diff --git a/src/server/game/mod/msg/Msg.go b/src/server/game/mod/msg/Msg.go index fdbc64ea..623af111 100644 --- a/src/server/game/mod/msg/Msg.go +++ b/src/server/game/mod/msg/Msg.go @@ -107,6 +107,10 @@ const ( HANDLE_TYPE_FRIEND_GREETING_REPLY // 好友问候回复 HANDLE_TYPE_FRIEND_SPONSOER // 好友赞助体力 + + HANDLE_TYPE_CHAMPSHIP_LOGIN // 锦标赛登录 + HANDLE_TYPE_CHAMPSHIP_RANK_INFO // 锦标赛排名信息 + HANDLE_TYPE_SET_CATNIP_PARTNER ) const ( diff --git a/src/server/game/mod/playroom/playroom.go b/src/server/game/mod/playroom/playroom.go index 5bf33846..abc3c394 100644 --- a/src/server/game/mod/playroom/playroom.go +++ b/src/server/game/mod/playroom/playroom.go @@ -307,7 +307,6 @@ func (p *PlayroomMod) ZeroUpdate() { p.DailyTaskReward = make([]int, 0) p.TodayVisitedUsers = make([]int, 0) p.ADItem = make(map[int]*ItemInfo) - p.WeeklyDiscount = make(map[int]int) p.InitDailyTask() } @@ -1116,3 +1115,7 @@ func (p *PlayroomMod) AdWatch(Id int) error { } return nil } + +func (p *PlayroomMod) ResetWeeklyDiscount() { + p.WeeklyDiscount = make(map[int]int) +} diff --git a/src/server/main.go b/src/server/main.go index a1b8ea1a..0617485d 100644 --- a/src/server/main.go +++ b/src/server/main.go @@ -1,11 +1,13 @@ package main import ( + "net/http" + _ "net/http/pprof" + "runtime/debug" "server/conf" "server/game" "server/gate" "server/pkg/github.com/name5566/leaf" - lconf "server/pkg/github.com/name5566/leaf/conf" ) @@ -19,6 +21,14 @@ func main() { lconf.ListenAddr = conf.Server.ListenAddr lconf.CenterAddr = conf.Server.CenterAddr lconf.PendingWriteNum = conf.PendingWriteNum + // 当内存>2G时开始GC + debug.SetGCPercent(50) + debug.SetMemoryLimit(2 << 30) + // 启动 pprof(仅绑定本地) + go func() { + // 如果需要绑定所有接口改为 ":6060" + _ = http.ListenAndServe("127.0.0.1:6060", nil) + }() leaf.Run( game.Module, diff --git a/src/server/msg/Gameapi.pb.go b/src/server/msg/Gameapi.pb.go index fef7e27b..ffba600c 100644 --- a/src/server/msg/Gameapi.pb.go +++ b/src/server/msg/Gameapi.pb.go @@ -25873,6 +25873,7 @@ type ResCatnip struct { EndTime int32 `protobuf:"varint,3,opt,name=EndTime,proto3" json:"EndTime,omitempty"` // 结束时间 Template int32 `protobuf:"varint,4,opt,name=Template,proto3" json:"Template,omitempty"` // 模板 GameList []*CatnipGame `protobuf:"bytes,5,rep,name=GameList,proto3" json:"GameList,omitempty"` // 小游戏列表 + Multiply int32 `protobuf:"varint,6,opt,name=Multiply,proto3" json:"Multiply,omitempty"` // 倍数 unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -25942,14 +25943,24 @@ func (x *ResCatnip) GetGameList() []*CatnipGame { return nil } +func (x *ResCatnip) GetMultiply() int32 { + if x != nil { + return x.Multiply + } + return 0 +} + // 小游戏信息 type CatnipGame struct { state protoimpl.MessageState `protogen:"open.v1"` - Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` // 猫草id - Status int32 `protobuf:"varint,2,opt,name=Status,proto3" json:"Status,omitempty"` // 0 未开始 1 进行中 2 已结束 - Progress int32 `protobuf:"varint,3,opt,name=Progress,proto3" json:"Progress,omitempty"` // 进度 - Reward []int32 `protobuf:"varint,4,rep,packed,name=Reward,proto3" json:"Reward,omitempty"` // 已领取进度奖励列表 [100,150,200] - Partner *ResPlayerSimple `protobuf:"bytes,5,opt,name=Partner,proto3" json:"Partner,omitempty"` // 伙伴 + Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` // 猫草id + Status int32 `protobuf:"varint,2,opt,name=Status,proto3" json:"Status,omitempty"` // 0 未开始 1 进行中 2 已结束 + Progress int32 `protobuf:"varint,3,opt,name=Progress,proto3" json:"Progress,omitempty"` // 进度 + Reward []int32 `protobuf:"varint,4,rep,packed,name=Reward,proto3" json:"Reward,omitempty"` // 已领取进度奖励列表 [100,150,200] + Partner *ResPlayerSimple `protobuf:"bytes,5,opt,name=Partner,proto3" json:"Partner,omitempty"` // 伙伴 + InviteList []*CatnipInvite `protobuf:"bytes,6,rep,name=InviteList,proto3" json:"InviteList,omitempty"` // 邀请列表 + BeInviteList []*CatnipInvite `protobuf:"bytes,7,rep,name=BeInviteList,proto3" json:"BeInviteList,omitempty"` // 被邀请列表 + Emoji int32 `protobuf:"varint,8,opt,name=Emoji,proto3" json:"Emoji,omitempty"` // 表情id unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -26019,6 +26030,79 @@ func (x *CatnipGame) GetPartner() *ResPlayerSimple { return nil } +func (x *CatnipGame) GetInviteList() []*CatnipInvite { + if x != nil { + return x.InviteList + } + return nil +} + +func (x *CatnipGame) GetBeInviteList() []*CatnipInvite { + if x != nil { + return x.BeInviteList + } + return nil +} + +func (x *CatnipGame) GetEmoji() int32 { + if x != nil { + return x.Emoji + } + return 0 +} + +type CatnipInvite struct { + state protoimpl.MessageState `protogen:"open.v1"` + Uid int64 `protobuf:"varint,1,opt,name=Uid,proto3" json:"Uid,omitempty"` // 好友id + Time int64 `protobuf:"varint,2,opt,name=Time,proto3" json:"Time,omitempty"` // 邀请时间 + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CatnipInvite) Reset() { + *x = CatnipInvite{} + mi := &file_proto_Gameapi_proto_msgTypes[448] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CatnipInvite) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CatnipInvite) ProtoMessage() {} + +func (x *CatnipInvite) ProtoReflect() protoreflect.Message { + mi := &file_proto_Gameapi_proto_msgTypes[448] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CatnipInvite.ProtoReflect.Descriptor instead. +func (*CatnipInvite) Descriptor() ([]byte, []int) { + return file_proto_Gameapi_proto_rawDescGZIP(), []int{448} +} + +func (x *CatnipInvite) GetUid() int64 { + if x != nil { + return x.Uid + } + return 0 +} + +func (x *CatnipInvite) GetTime() int64 { + if x != nil { + return x.Time + } + return 0 +} + // 邀请好友 type ReqCatnipInvite struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -26030,7 +26114,7 @@ type ReqCatnipInvite struct { func (x *ReqCatnipInvite) Reset() { *x = ReqCatnipInvite{} - mi := &file_proto_Gameapi_proto_msgTypes[448] + mi := &file_proto_Gameapi_proto_msgTypes[449] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26042,7 +26126,7 @@ func (x *ReqCatnipInvite) String() string { func (*ReqCatnipInvite) ProtoMessage() {} func (x *ReqCatnipInvite) ProtoReflect() protoreflect.Message { - mi := &file_proto_Gameapi_proto_msgTypes[448] + mi := &file_proto_Gameapi_proto_msgTypes[449] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26055,7 +26139,7 @@ func (x *ReqCatnipInvite) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqCatnipInvite.ProtoReflect.Descriptor instead. func (*ReqCatnipInvite) Descriptor() ([]byte, []int) { - return file_proto_Gameapi_proto_rawDescGZIP(), []int{448} + return file_proto_Gameapi_proto_rawDescGZIP(), []int{449} } func (x *ReqCatnipInvite) GetId() int32 { @@ -26082,7 +26166,7 @@ type ResCatnipInvite struct { func (x *ResCatnipInvite) Reset() { *x = ResCatnipInvite{} - mi := &file_proto_Gameapi_proto_msgTypes[449] + mi := &file_proto_Gameapi_proto_msgTypes[450] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26094,7 +26178,7 @@ func (x *ResCatnipInvite) String() string { func (*ResCatnipInvite) ProtoMessage() {} func (x *ResCatnipInvite) ProtoReflect() protoreflect.Message { - mi := &file_proto_Gameapi_proto_msgTypes[449] + mi := &file_proto_Gameapi_proto_msgTypes[450] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26107,7 +26191,7 @@ func (x *ResCatnipInvite) ProtoReflect() protoreflect.Message { // Deprecated: Use ResCatnipInvite.ProtoReflect.Descriptor instead. func (*ResCatnipInvite) Descriptor() ([]byte, []int) { - return file_proto_Gameapi_proto_rawDescGZIP(), []int{449} + return file_proto_Gameapi_proto_rawDescGZIP(), []int{450} } func (x *ResCatnipInvite) GetCode() RES_CODE { @@ -26135,7 +26219,7 @@ type ReqCatnipAgree struct { func (x *ReqCatnipAgree) Reset() { *x = ReqCatnipAgree{} - mi := &file_proto_Gameapi_proto_msgTypes[450] + mi := &file_proto_Gameapi_proto_msgTypes[451] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26147,7 +26231,7 @@ func (x *ReqCatnipAgree) String() string { func (*ReqCatnipAgree) ProtoMessage() {} func (x *ReqCatnipAgree) ProtoReflect() protoreflect.Message { - mi := &file_proto_Gameapi_proto_msgTypes[450] + mi := &file_proto_Gameapi_proto_msgTypes[451] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26160,7 +26244,7 @@ func (x *ReqCatnipAgree) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqCatnipAgree.ProtoReflect.Descriptor instead. func (*ReqCatnipAgree) Descriptor() ([]byte, []int) { - return file_proto_Gameapi_proto_rawDescGZIP(), []int{450} + return file_proto_Gameapi_proto_rawDescGZIP(), []int{451} } func (x *ReqCatnipAgree) GetId() int32 { @@ -26187,7 +26271,7 @@ type ResCatnipAgree struct { func (x *ResCatnipAgree) Reset() { *x = ResCatnipAgree{} - mi := &file_proto_Gameapi_proto_msgTypes[451] + mi := &file_proto_Gameapi_proto_msgTypes[452] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26199,7 +26283,7 @@ func (x *ResCatnipAgree) String() string { func (*ResCatnipAgree) ProtoMessage() {} func (x *ResCatnipAgree) ProtoReflect() protoreflect.Message { - mi := &file_proto_Gameapi_proto_msgTypes[451] + mi := &file_proto_Gameapi_proto_msgTypes[452] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26212,7 +26296,7 @@ func (x *ResCatnipAgree) ProtoReflect() protoreflect.Message { // Deprecated: Use ResCatnipAgree.ProtoReflect.Descriptor instead. func (*ResCatnipAgree) Descriptor() ([]byte, []int) { - return file_proto_Gameapi_proto_rawDescGZIP(), []int{451} + return file_proto_Gameapi_proto_rawDescGZIP(), []int{452} } func (x *ResCatnipAgree) GetCode() RES_CODE { @@ -26239,7 +26323,7 @@ type ReqCatnipRefuse struct { func (x *ReqCatnipRefuse) Reset() { *x = ReqCatnipRefuse{} - mi := &file_proto_Gameapi_proto_msgTypes[452] + mi := &file_proto_Gameapi_proto_msgTypes[453] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26251,7 +26335,7 @@ func (x *ReqCatnipRefuse) String() string { func (*ReqCatnipRefuse) ProtoMessage() {} func (x *ReqCatnipRefuse) ProtoReflect() protoreflect.Message { - mi := &file_proto_Gameapi_proto_msgTypes[452] + mi := &file_proto_Gameapi_proto_msgTypes[453] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26264,7 +26348,7 @@ func (x *ReqCatnipRefuse) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqCatnipRefuse.ProtoReflect.Descriptor instead. func (*ReqCatnipRefuse) Descriptor() ([]byte, []int) { - return file_proto_Gameapi_proto_rawDescGZIP(), []int{452} + return file_proto_Gameapi_proto_rawDescGZIP(), []int{453} } func (x *ReqCatnipRefuse) GetId() int32 { @@ -26291,7 +26375,7 @@ type ResCatnipRefuse struct { func (x *ResCatnipRefuse) Reset() { *x = ResCatnipRefuse{} - mi := &file_proto_Gameapi_proto_msgTypes[453] + mi := &file_proto_Gameapi_proto_msgTypes[454] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26303,7 +26387,7 @@ func (x *ResCatnipRefuse) String() string { func (*ResCatnipRefuse) ProtoMessage() {} func (x *ResCatnipRefuse) ProtoReflect() protoreflect.Message { - mi := &file_proto_Gameapi_proto_msgTypes[453] + mi := &file_proto_Gameapi_proto_msgTypes[454] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26316,7 +26400,7 @@ func (x *ResCatnipRefuse) ProtoReflect() protoreflect.Message { // Deprecated: Use ResCatnipRefuse.ProtoReflect.Descriptor instead. func (*ResCatnipRefuse) Descriptor() ([]byte, []int) { - return file_proto_Gameapi_proto_rawDescGZIP(), []int{453} + return file_proto_Gameapi_proto_rawDescGZIP(), []int{454} } func (x *ResCatnipRefuse) GetCode() RES_CODE { @@ -26336,15 +26420,14 @@ func (x *ResCatnipRefuse) GetMsg() string { // 设置游戏倍数 type ReqCatnipMultiply struct { state protoimpl.MessageState `protogen:"open.v1"` - Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` // 猫草id - Multiply int32 `protobuf:"varint,2,opt,name=Multiply,proto3" json:"Multiply,omitempty"` // 倍数 + Multiply int32 `protobuf:"varint,1,opt,name=Multiply,proto3" json:"Multiply,omitempty"` // 倍数 unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *ReqCatnipMultiply) Reset() { *x = ReqCatnipMultiply{} - mi := &file_proto_Gameapi_proto_msgTypes[454] + mi := &file_proto_Gameapi_proto_msgTypes[455] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26356,7 +26439,7 @@ func (x *ReqCatnipMultiply) String() string { func (*ReqCatnipMultiply) ProtoMessage() {} func (x *ReqCatnipMultiply) ProtoReflect() protoreflect.Message { - mi := &file_proto_Gameapi_proto_msgTypes[454] + mi := &file_proto_Gameapi_proto_msgTypes[455] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26369,14 +26452,7 @@ func (x *ReqCatnipMultiply) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqCatnipMultiply.ProtoReflect.Descriptor instead. func (*ReqCatnipMultiply) Descriptor() ([]byte, []int) { - return file_proto_Gameapi_proto_rawDescGZIP(), []int{454} -} - -func (x *ReqCatnipMultiply) GetId() int32 { - if x != nil { - return x.Id - } - return 0 + return file_proto_Gameapi_proto_rawDescGZIP(), []int{455} } func (x *ReqCatnipMultiply) GetMultiply() int32 { @@ -26396,7 +26472,7 @@ type ResCatnipMultiply struct { func (x *ResCatnipMultiply) Reset() { *x = ResCatnipMultiply{} - mi := &file_proto_Gameapi_proto_msgTypes[455] + mi := &file_proto_Gameapi_proto_msgTypes[456] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26408,7 +26484,7 @@ func (x *ResCatnipMultiply) String() string { func (*ResCatnipMultiply) ProtoMessage() {} func (x *ResCatnipMultiply) ProtoReflect() protoreflect.Message { - mi := &file_proto_Gameapi_proto_msgTypes[455] + mi := &file_proto_Gameapi_proto_msgTypes[456] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26421,7 +26497,7 @@ func (x *ResCatnipMultiply) ProtoReflect() protoreflect.Message { // Deprecated: Use ResCatnipMultiply.ProtoReflect.Descriptor instead. func (*ResCatnipMultiply) Descriptor() ([]byte, []int) { - return file_proto_Gameapi_proto_rawDescGZIP(), []int{455} + return file_proto_Gameapi_proto_rawDescGZIP(), []int{456} } func (x *ResCatnipMultiply) GetCode() RES_CODE { @@ -26448,7 +26524,7 @@ type ReqCatnipPlay struct { func (x *ReqCatnipPlay) Reset() { *x = ReqCatnipPlay{} - mi := &file_proto_Gameapi_proto_msgTypes[456] + mi := &file_proto_Gameapi_proto_msgTypes[457] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26460,7 +26536,7 @@ func (x *ReqCatnipPlay) String() string { func (*ReqCatnipPlay) ProtoMessage() {} func (x *ReqCatnipPlay) ProtoReflect() protoreflect.Message { - mi := &file_proto_Gameapi_proto_msgTypes[456] + mi := &file_proto_Gameapi_proto_msgTypes[457] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26473,7 +26549,7 @@ func (x *ReqCatnipPlay) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqCatnipPlay.ProtoReflect.Descriptor instead. func (*ReqCatnipPlay) Descriptor() ([]byte, []int) { - return file_proto_Gameapi_proto_rawDescGZIP(), []int{456} + return file_proto_Gameapi_proto_rawDescGZIP(), []int{457} } func (x *ReqCatnipPlay) GetId() int32 { @@ -26487,14 +26563,14 @@ type ResCatnipPlay struct { state protoimpl.MessageState `protogen:"open.v1"` Code RES_CODE `protobuf:"varint,1,opt,name=Code,proto3,enum=tutorial.RES_CODE" json:"Code,omitempty"` Msg string `protobuf:"bytes,2,opt,name=Msg,proto3" json:"Msg,omitempty"` - Id int32 `protobuf:"varint,3,opt,name=Id,proto3" json:"Id,omitempty"` // 猫草id + Id int32 `protobuf:"varint,3,opt,name=Id,proto3" json:"Id,omitempty"` // 猫草转盘id unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *ResCatnipPlay) Reset() { *x = ResCatnipPlay{} - mi := &file_proto_Gameapi_proto_msgTypes[457] + mi := &file_proto_Gameapi_proto_msgTypes[458] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26506,7 +26582,7 @@ func (x *ResCatnipPlay) String() string { func (*ResCatnipPlay) ProtoMessage() {} func (x *ResCatnipPlay) ProtoReflect() protoreflect.Message { - mi := &file_proto_Gameapi_proto_msgTypes[457] + mi := &file_proto_Gameapi_proto_msgTypes[458] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26519,7 +26595,7 @@ func (x *ResCatnipPlay) ProtoReflect() protoreflect.Message { // Deprecated: Use ResCatnipPlay.ProtoReflect.Descriptor instead. func (*ResCatnipPlay) Descriptor() ([]byte, []int) { - return file_proto_Gameapi_proto_rawDescGZIP(), []int{457} + return file_proto_Gameapi_proto_rawDescGZIP(), []int{458} } func (x *ResCatnipPlay) GetCode() RES_CODE { @@ -26554,7 +26630,7 @@ type ReqCatnipReward struct { func (x *ReqCatnipReward) Reset() { *x = ReqCatnipReward{} - mi := &file_proto_Gameapi_proto_msgTypes[458] + mi := &file_proto_Gameapi_proto_msgTypes[459] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26566,7 +26642,7 @@ func (x *ReqCatnipReward) String() string { func (*ReqCatnipReward) ProtoMessage() {} func (x *ReqCatnipReward) ProtoReflect() protoreflect.Message { - mi := &file_proto_Gameapi_proto_msgTypes[458] + mi := &file_proto_Gameapi_proto_msgTypes[459] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26579,7 +26655,7 @@ func (x *ReqCatnipReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqCatnipReward.ProtoReflect.Descriptor instead. func (*ReqCatnipReward) Descriptor() ([]byte, []int) { - return file_proto_Gameapi_proto_rawDescGZIP(), []int{458} + return file_proto_Gameapi_proto_rawDescGZIP(), []int{459} } func (x *ReqCatnipReward) GetId() int32 { @@ -26606,7 +26682,7 @@ type ResCatnipReward struct { func (x *ResCatnipReward) Reset() { *x = ResCatnipReward{} - mi := &file_proto_Gameapi_proto_msgTypes[459] + mi := &file_proto_Gameapi_proto_msgTypes[460] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26618,7 +26694,7 @@ func (x *ResCatnipReward) String() string { func (*ResCatnipReward) ProtoMessage() {} func (x *ResCatnipReward) ProtoReflect() protoreflect.Message { - mi := &file_proto_Gameapi_proto_msgTypes[459] + mi := &file_proto_Gameapi_proto_msgTypes[460] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26631,7 +26707,7 @@ func (x *ResCatnipReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ResCatnipReward.ProtoReflect.Descriptor instead. func (*ResCatnipReward) Descriptor() ([]byte, []int) { - return file_proto_Gameapi_proto_rawDescGZIP(), []int{459} + return file_proto_Gameapi_proto_rawDescGZIP(), []int{460} } func (x *ResCatnipReward) GetCode() RES_CODE { @@ -26657,7 +26733,7 @@ type ReqCatnipGrandReward struct { func (x *ReqCatnipGrandReward) Reset() { *x = ReqCatnipGrandReward{} - mi := &file_proto_Gameapi_proto_msgTypes[460] + mi := &file_proto_Gameapi_proto_msgTypes[461] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26669,7 +26745,7 @@ func (x *ReqCatnipGrandReward) String() string { func (*ReqCatnipGrandReward) ProtoMessage() {} func (x *ReqCatnipGrandReward) ProtoReflect() protoreflect.Message { - mi := &file_proto_Gameapi_proto_msgTypes[460] + mi := &file_proto_Gameapi_proto_msgTypes[461] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26682,7 +26758,7 @@ func (x *ReqCatnipGrandReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqCatnipGrandReward.ProtoReflect.Descriptor instead. func (*ReqCatnipGrandReward) Descriptor() ([]byte, []int) { - return file_proto_Gameapi_proto_rawDescGZIP(), []int{460} + return file_proto_Gameapi_proto_rawDescGZIP(), []int{461} } type ResCatnipGrandReward struct { @@ -26695,7 +26771,7 @@ type ResCatnipGrandReward struct { func (x *ResCatnipGrandReward) Reset() { *x = ResCatnipGrandReward{} - mi := &file_proto_Gameapi_proto_msgTypes[461] + mi := &file_proto_Gameapi_proto_msgTypes[462] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26707,7 +26783,7 @@ func (x *ResCatnipGrandReward) String() string { func (*ResCatnipGrandReward) ProtoMessage() {} func (x *ResCatnipGrandReward) ProtoReflect() protoreflect.Message { - mi := &file_proto_Gameapi_proto_msgTypes[461] + mi := &file_proto_Gameapi_proto_msgTypes[462] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26720,7 +26796,7 @@ func (x *ResCatnipGrandReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ResCatnipGrandReward.ProtoReflect.Descriptor instead. func (*ResCatnipGrandReward) Descriptor() ([]byte, []int) { - return file_proto_Gameapi_proto_rawDescGZIP(), []int{461} + return file_proto_Gameapi_proto_rawDescGZIP(), []int{462} } func (x *ResCatnipGrandReward) GetCode() RES_CODE { @@ -26737,6 +26813,111 @@ func (x *ResCatnipGrandReward) GetMsg() string { return "" } +// 发送表情 +type ReqCatnipEmoji struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` // 猫草id + EmojiId int32 `protobuf:"varint,2,opt,name=EmojiId,proto3" json:"EmojiId,omitempty"` // 表情id + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ReqCatnipEmoji) Reset() { + *x = ReqCatnipEmoji{} + mi := &file_proto_Gameapi_proto_msgTypes[463] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReqCatnipEmoji) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReqCatnipEmoji) ProtoMessage() {} + +func (x *ReqCatnipEmoji) ProtoReflect() protoreflect.Message { + mi := &file_proto_Gameapi_proto_msgTypes[463] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ReqCatnipEmoji.ProtoReflect.Descriptor instead. +func (*ReqCatnipEmoji) Descriptor() ([]byte, []int) { + return file_proto_Gameapi_proto_rawDescGZIP(), []int{463} +} + +func (x *ReqCatnipEmoji) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *ReqCatnipEmoji) GetEmojiId() int32 { + if x != nil { + return x.EmojiId + } + return 0 +} + +type ResCatnipEmoji struct { + state protoimpl.MessageState `protogen:"open.v1"` + Code RES_CODE `protobuf:"varint,1,opt,name=Code,proto3,enum=tutorial.RES_CODE" json:"Code,omitempty"` + Msg string `protobuf:"bytes,2,opt,name=Msg,proto3" json:"Msg,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ResCatnipEmoji) Reset() { + *x = ResCatnipEmoji{} + mi := &file_proto_Gameapi_proto_msgTypes[464] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ResCatnipEmoji) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResCatnipEmoji) ProtoMessage() {} + +func (x *ResCatnipEmoji) ProtoReflect() protoreflect.Message { + mi := &file_proto_Gameapi_proto_msgTypes[464] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ResCatnipEmoji.ProtoReflect.Descriptor instead. +func (*ResCatnipEmoji) Descriptor() ([]byte, []int) { + return file_proto_Gameapi_proto_rawDescGZIP(), []int{464} +} + +func (x *ResCatnipEmoji) GetCode() RES_CODE { + if x != nil { + return x.Code + } + return RES_CODE_FAIL +} + +func (x *ResCatnipEmoji) GetMsg() string { + if x != nil { + return x.Msg + } + return "" +} + // -------------------后台管理------------------- type AdminReq struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -26748,7 +26929,7 @@ type AdminReq struct { func (x *AdminReq) Reset() { *x = AdminReq{} - mi := &file_proto_Gameapi_proto_msgTypes[462] + mi := &file_proto_Gameapi_proto_msgTypes[465] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26760,7 +26941,7 @@ func (x *AdminReq) String() string { func (*AdminReq) ProtoMessage() {} func (x *AdminReq) ProtoReflect() protoreflect.Message { - mi := &file_proto_Gameapi_proto_msgTypes[462] + mi := &file_proto_Gameapi_proto_msgTypes[465] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26773,7 +26954,7 @@ func (x *AdminReq) ProtoReflect() protoreflect.Message { // Deprecated: Use AdminReq.ProtoReflect.Descriptor instead. func (*AdminReq) Descriptor() ([]byte, []int) { - return file_proto_Gameapi_proto_rawDescGZIP(), []int{462} + return file_proto_Gameapi_proto_rawDescGZIP(), []int{465} } func (x *AdminReq) GetFunc() string { @@ -26800,7 +26981,7 @@ type AdminRes struct { func (x *AdminRes) Reset() { *x = AdminRes{} - mi := &file_proto_Gameapi_proto_msgTypes[463] + mi := &file_proto_Gameapi_proto_msgTypes[466] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26812,7 +26993,7 @@ func (x *AdminRes) String() string { func (*AdminRes) ProtoMessage() {} func (x *AdminRes) ProtoReflect() protoreflect.Message { - mi := &file_proto_Gameapi_proto_msgTypes[463] + mi := &file_proto_Gameapi_proto_msgTypes[466] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26825,7 +27006,7 @@ func (x *AdminRes) ProtoReflect() protoreflect.Message { // Deprecated: Use AdminRes.ProtoReflect.Descriptor instead. func (*AdminRes) Descriptor() ([]byte, []int) { - return file_proto_Gameapi_proto_rawDescGZIP(), []int{463} + return file_proto_Gameapi_proto_rawDescGZIP(), []int{466} } func (x *AdminRes) GetFunc() string { @@ -26851,7 +27032,7 @@ type ReqAdminInfo struct { func (x *ReqAdminInfo) Reset() { *x = ReqAdminInfo{} - mi := &file_proto_Gameapi_proto_msgTypes[464] + mi := &file_proto_Gameapi_proto_msgTypes[467] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26863,7 +27044,7 @@ func (x *ReqAdminInfo) String() string { func (*ReqAdminInfo) ProtoMessage() {} func (x *ReqAdminInfo) ProtoReflect() protoreflect.Message { - mi := &file_proto_Gameapi_proto_msgTypes[464] + mi := &file_proto_Gameapi_proto_msgTypes[467] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26876,7 +27057,7 @@ func (x *ReqAdminInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqAdminInfo.ProtoReflect.Descriptor instead. func (*ReqAdminInfo) Descriptor() ([]byte, []int) { - return file_proto_Gameapi_proto_rawDescGZIP(), []int{464} + return file_proto_Gameapi_proto_rawDescGZIP(), []int{467} } func (x *ReqAdminInfo) GetUid() int64 { @@ -26894,7 +27075,7 @@ type ReqReloadServerMail struct { func (x *ReqReloadServerMail) Reset() { *x = ReqReloadServerMail{} - mi := &file_proto_Gameapi_proto_msgTypes[465] + mi := &file_proto_Gameapi_proto_msgTypes[468] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26906,7 +27087,7 @@ func (x *ReqReloadServerMail) String() string { func (*ReqReloadServerMail) ProtoMessage() {} func (x *ReqReloadServerMail) ProtoReflect() protoreflect.Message { - mi := &file_proto_Gameapi_proto_msgTypes[465] + mi := &file_proto_Gameapi_proto_msgTypes[468] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26919,7 +27100,7 @@ func (x *ReqReloadServerMail) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqReloadServerMail.ProtoReflect.Descriptor instead. func (*ReqReloadServerMail) Descriptor() ([]byte, []int) { - return file_proto_Gameapi_proto_rawDescGZIP(), []int{465} + return file_proto_Gameapi_proto_rawDescGZIP(), []int{468} } type ReqServerInfo struct { @@ -26930,7 +27111,7 @@ type ReqServerInfo struct { func (x *ReqServerInfo) Reset() { *x = ReqServerInfo{} - mi := &file_proto_Gameapi_proto_msgTypes[466] + mi := &file_proto_Gameapi_proto_msgTypes[469] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26942,7 +27123,7 @@ func (x *ReqServerInfo) String() string { func (*ReqServerInfo) ProtoMessage() {} func (x *ReqServerInfo) ProtoReflect() protoreflect.Message { - mi := &file_proto_Gameapi_proto_msgTypes[466] + mi := &file_proto_Gameapi_proto_msgTypes[469] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26955,7 +27136,7 @@ func (x *ReqServerInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqServerInfo.ProtoReflect.Descriptor instead. func (*ReqServerInfo) Descriptor() ([]byte, []int) { - return file_proto_Gameapi_proto_rawDescGZIP(), []int{466} + return file_proto_Gameapi_proto_rawDescGZIP(), []int{469} } type ReqReload struct { @@ -26966,7 +27147,7 @@ type ReqReload struct { func (x *ReqReload) Reset() { *x = ReqReload{} - mi := &file_proto_Gameapi_proto_msgTypes[467] + mi := &file_proto_Gameapi_proto_msgTypes[470] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26978,7 +27159,7 @@ func (x *ReqReload) String() string { func (*ReqReload) ProtoMessage() {} func (x *ReqReload) ProtoReflect() protoreflect.Message { - mi := &file_proto_Gameapi_proto_msgTypes[467] + mi := &file_proto_Gameapi_proto_msgTypes[470] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26991,7 +27172,7 @@ func (x *ReqReload) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqReload.ProtoReflect.Descriptor instead. func (*ReqReload) Descriptor() ([]byte, []int) { - return file_proto_Gameapi_proto_rawDescGZIP(), []int{467} + return file_proto_Gameapi_proto_rawDescGZIP(), []int{470} } type ReqAdminGm struct { @@ -27004,7 +27185,7 @@ type ReqAdminGm struct { func (x *ReqAdminGm) Reset() { *x = ReqAdminGm{} - mi := &file_proto_Gameapi_proto_msgTypes[468] + mi := &file_proto_Gameapi_proto_msgTypes[471] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27016,7 +27197,7 @@ func (x *ReqAdminGm) String() string { func (*ReqAdminGm) ProtoMessage() {} func (x *ReqAdminGm) ProtoReflect() protoreflect.Message { - mi := &file_proto_Gameapi_proto_msgTypes[468] + mi := &file_proto_Gameapi_proto_msgTypes[471] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27029,7 +27210,7 @@ func (x *ReqAdminGm) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqAdminGm.ProtoReflect.Descriptor instead. func (*ReqAdminGm) Descriptor() ([]byte, []int) { - return file_proto_Gameapi_proto_rawDescGZIP(), []int{468} + return file_proto_Gameapi_proto_rawDescGZIP(), []int{471} } func (x *ReqAdminGm) GetUid() int64 { @@ -27057,7 +27238,7 @@ type ReqAdminBan struct { func (x *ReqAdminBan) Reset() { *x = ReqAdminBan{} - mi := &file_proto_Gameapi_proto_msgTypes[469] + mi := &file_proto_Gameapi_proto_msgTypes[472] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27069,7 +27250,7 @@ func (x *ReqAdminBan) String() string { func (*ReqAdminBan) ProtoMessage() {} func (x *ReqAdminBan) ProtoReflect() protoreflect.Message { - mi := &file_proto_Gameapi_proto_msgTypes[469] + mi := &file_proto_Gameapi_proto_msgTypes[472] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27082,7 +27263,7 @@ func (x *ReqAdminBan) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqAdminBan.ProtoReflect.Descriptor instead. func (*ReqAdminBan) Descriptor() ([]byte, []int) { - return file_proto_Gameapi_proto_rawDescGZIP(), []int{469} + return file_proto_Gameapi_proto_rawDescGZIP(), []int{472} } func (x *ReqAdminBan) GetUid() int64 { @@ -27117,7 +27298,7 @@ type ReqAdminShipping struct { func (x *ReqAdminShipping) Reset() { *x = ReqAdminShipping{} - mi := &file_proto_Gameapi_proto_msgTypes[470] + mi := &file_proto_Gameapi_proto_msgTypes[473] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27129,7 +27310,7 @@ func (x *ReqAdminShipping) String() string { func (*ReqAdminShipping) ProtoMessage() {} func (x *ReqAdminShipping) ProtoReflect() protoreflect.Message { - mi := &file_proto_Gameapi_proto_msgTypes[470] + mi := &file_proto_Gameapi_proto_msgTypes[473] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27142,7 +27323,7 @@ func (x *ReqAdminShipping) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqAdminShipping.ProtoReflect.Descriptor instead. func (*ReqAdminShipping) Descriptor() ([]byte, []int) { - return file_proto_Gameapi_proto_rawDescGZIP(), []int{470} + return file_proto_Gameapi_proto_rawDescGZIP(), []int{473} } func (x *ReqAdminShipping) GetOrderSn() string { @@ -29075,20 +29256,29 @@ const file_proto_Gameapi_proto_rawDesc = "" + "ResCollect\x12&\n" + "\x04Code\x18\x01 \x01(\x0e2\x12.tutorial.RES_CODER\x04Code\x12\x10\n" + "\x03Msg\x18\x02 \x01(\tR\x03Msg\"\v\n" + - "\tReqCatnip\"\x9b\x01\n" + + "\tReqCatnip\"\xb7\x01\n" + "\tResCatnip\x12\x0e\n" + "\x02Id\x18\x01 \x01(\x05R\x02Id\x12\x16\n" + "\x06Status\x18\x02 \x01(\x05R\x06Status\x12\x18\n" + "\aEndTime\x18\x03 \x01(\x05R\aEndTime\x12\x1a\n" + "\bTemplate\x18\x04 \x01(\x05R\bTemplate\x120\n" + - "\bGameList\x18\x05 \x03(\v2\x14.tutorial.CatnipGameR\bGameList\"\x9d\x01\n" + + "\bGameList\x18\x05 \x03(\v2\x14.tutorial.CatnipGameR\bGameList\x12\x1a\n" + + "\bMultiply\x18\x06 \x01(\x05R\bMultiply\"\xa7\x02\n" + "\n" + "CatnipGame\x12\x0e\n" + "\x02Id\x18\x01 \x01(\x05R\x02Id\x12\x16\n" + "\x06Status\x18\x02 \x01(\x05R\x06Status\x12\x1a\n" + "\bProgress\x18\x03 \x01(\x05R\bProgress\x12\x16\n" + "\x06Reward\x18\x04 \x03(\x05R\x06Reward\x123\n" + - "\aPartner\x18\x05 \x01(\v2\x19.tutorial.ResPlayerSimpleR\aPartner\"3\n" + + "\aPartner\x18\x05 \x01(\v2\x19.tutorial.ResPlayerSimpleR\aPartner\x126\n" + + "\n" + + "InviteList\x18\x06 \x03(\v2\x16.tutorial.CatnipInviteR\n" + + "InviteList\x12:\n" + + "\fBeInviteList\x18\a \x03(\v2\x16.tutorial.CatnipInviteR\fBeInviteList\x12\x14\n" + + "\x05Emoji\x18\b \x01(\x05R\x05Emoji\"4\n" + + "\fCatnipInvite\x12\x10\n" + + "\x03Uid\x18\x01 \x01(\x03R\x03Uid\x12\x12\n" + + "\x04Time\x18\x02 \x01(\x03R\x04Time\"3\n" + "\x0fReqCatnipInvite\x12\x0e\n" + "\x02Id\x18\x01 \x01(\x05R\x02Id\x12\x10\n" + "\x03Uid\x18\x02 \x01(\x03R\x03Uid\"K\n" + @@ -29106,10 +29296,9 @@ const file_proto_Gameapi_proto_rawDesc = "" + "\x03Uid\x18\x02 \x01(\x03R\x03Uid\"K\n" + "\x0fResCatnipRefuse\x12&\n" + "\x04Code\x18\x01 \x01(\x0e2\x12.tutorial.RES_CODER\x04Code\x12\x10\n" + - "\x03Msg\x18\x02 \x01(\tR\x03Msg\"?\n" + - "\x11ReqCatnipMultiply\x12\x0e\n" + - "\x02Id\x18\x01 \x01(\x05R\x02Id\x12\x1a\n" + - "\bMultiply\x18\x02 \x01(\x05R\bMultiply\"M\n" + + "\x03Msg\x18\x02 \x01(\tR\x03Msg\"/\n" + + "\x11ReqCatnipMultiply\x12\x1a\n" + + "\bMultiply\x18\x01 \x01(\x05R\bMultiply\"M\n" + "\x11ResCatnipMultiply\x12&\n" + "\x04Code\x18\x01 \x01(\x0e2\x12.tutorial.RES_CODER\x04Code\x12\x10\n" + "\x03Msg\x18\x02 \x01(\tR\x03Msg\"\x1f\n" + @@ -29128,6 +29317,12 @@ const file_proto_Gameapi_proto_rawDesc = "" + "\x14ReqCatnipGrandReward\"P\n" + "\x14ResCatnipGrandReward\x12&\n" + "\x04Code\x18\x01 \x01(\x0e2\x12.tutorial.RES_CODER\x04Code\x12\x10\n" + + "\x03Msg\x18\x02 \x01(\tR\x03Msg\":\n" + + "\x0eReqCatnipEmoji\x12\x0e\n" + + "\x02Id\x18\x01 \x01(\x05R\x02Id\x12\x18\n" + + "\aEmojiId\x18\x02 \x01(\x05R\aEmojiId\"J\n" + + "\x0eResCatnipEmoji\x12&\n" + + "\x04Code\x18\x01 \x01(\x0e2\x12.tutorial.RES_CODER\x04Code\x12\x10\n" + "\x03Msg\x18\x02 \x01(\tR\x03Msg\"2\n" + "\bAdminReq\x12\x12\n" + "\x04Func\x18\x01 \x01(\tR\x04Func\x12\x12\n" + @@ -29393,7 +29588,7 @@ func file_proto_Gameapi_proto_rawDescGZIP() []byte { } var file_proto_Gameapi_proto_enumTypes = make([]protoimpl.EnumInfo, 12) -var file_proto_Gameapi_proto_msgTypes = make([]protoimpl.MessageInfo, 541) +var file_proto_Gameapi_proto_msgTypes = make([]protoimpl.MessageInfo, 544) var file_proto_Gameapi_proto_goTypes = []any{ (ITEM_POP_LABEL)(0), // 0: tutorial.ITEM_POP_LABEL (HANDLE_TYPE)(0), // 1: tutorial.HANDLE_TYPE @@ -29855,136 +30050,139 @@ var file_proto_Gameapi_proto_goTypes = []any{ (*ReqCatnip)(nil), // 457: tutorial.ReqCatnip (*ResCatnip)(nil), // 458: tutorial.ResCatnip (*CatnipGame)(nil), // 459: tutorial.CatnipGame - (*ReqCatnipInvite)(nil), // 460: tutorial.ReqCatnipInvite - (*ResCatnipInvite)(nil), // 461: tutorial.ResCatnipInvite - (*ReqCatnipAgree)(nil), // 462: tutorial.ReqCatnipAgree - (*ResCatnipAgree)(nil), // 463: tutorial.ResCatnipAgree - (*ReqCatnipRefuse)(nil), // 464: tutorial.ReqCatnipRefuse - (*ResCatnipRefuse)(nil), // 465: tutorial.ResCatnipRefuse - (*ReqCatnipMultiply)(nil), // 466: tutorial.ReqCatnipMultiply - (*ResCatnipMultiply)(nil), // 467: tutorial.ResCatnipMultiply - (*ReqCatnipPlay)(nil), // 468: tutorial.ReqCatnipPlay - (*ResCatnipPlay)(nil), // 469: tutorial.ResCatnipPlay - (*ReqCatnipReward)(nil), // 470: tutorial.ReqCatnipReward - (*ResCatnipReward)(nil), // 471: tutorial.ResCatnipReward - (*ReqCatnipGrandReward)(nil), // 472: tutorial.ReqCatnipGrandReward - (*ResCatnipGrandReward)(nil), // 473: tutorial.ResCatnipGrandReward - (*AdminReq)(nil), // 474: tutorial.AdminReq - (*AdminRes)(nil), // 475: tutorial.AdminRes - (*ReqAdminInfo)(nil), // 476: tutorial.ReqAdminInfo - (*ReqReloadServerMail)(nil), // 477: tutorial.ReqReloadServerMail - (*ReqServerInfo)(nil), // 478: tutorial.ReqServerInfo - (*ReqReload)(nil), // 479: tutorial.ReqReload - (*ReqAdminGm)(nil), // 480: tutorial.ReqAdminGm - (*ReqAdminBan)(nil), // 481: tutorial.ReqAdminBan - (*ReqAdminShipping)(nil), // 482: tutorial.ReqAdminShipping - nil, // 483: tutorial.ResChessColorData.MChessColorDataEntry - nil, // 484: tutorial.UpdateBaseItemInfo.MUpdateItemEntry - nil, // 485: tutorial.ResPlayerChessData.MChessDataEntry - nil, // 486: tutorial.ReqPutPartInBag.MChessDataEntry - nil, // 487: tutorial.UpdatePlayerChessData.MChessDataEntry - nil, // 488: tutorial.ReqSeparateChess.MChessDataEntry - nil, // 489: tutorial.ReqUpgradeChess.MChessDataEntry - nil, // 490: tutorial.ReqGetChessFromBuff.MChessDataEntry - nil, // 491: tutorial.ReqChessEx.MChessDataEntry - nil, // 492: tutorial.ReqSourceChest.MChessDataEntry - nil, // 493: tutorial.ReqPlayroomOutline.MChessDataEntry - nil, // 494: tutorial.ReqPutChessInBag.MChessDataEntry - nil, // 495: tutorial.ReqTakeChessOutBag.MChessDataEntry - nil, // 496: tutorial.ResPlayerBriefProfileData.SetEmojiEntry - nil, // 497: tutorial.UserInfo.SetEmojiEntry - nil, // 498: tutorial.ReqRewardOrder.MChessDataEntry - nil, // 499: tutorial.ResCardInfo.AllCardEntry - nil, // 500: tutorial.ResCardInfo.HandbookEntry - nil, // 501: tutorial.ResGuildInfo.RewardEntry - nil, // 502: tutorial.ResGuideInfo.RewardEntry - nil, // 503: tutorial.ResGuideTask.TaskEntry - nil, // 504: tutorial.ResDailyTask.WeekRewardEntry - nil, // 505: tutorial.ResDailyTask.DailyTaskEntry - nil, // 506: tutorial.ResLimitEvent.LimitEventListEntry - nil, // 507: tutorial.ResLimitEventProgress.ProgressRewardEntry - nil, // 508: tutorial.LimitEvent.ParamEntry - nil, // 509: tutorial.ReqLimitEventLuckyCat.MChessDataEntry - nil, // 510: tutorial.ResFriendPlayerSimple.EmojiEntry - nil, // 511: tutorial.ResFriendPlayerSimple.PlayroomEntry - nil, // 512: tutorial.ResFriendPlayerSimple.DressSetEntry - nil, // 513: tutorial.ResFriendPlayerSimple.PhysiologyEntry - nil, // 514: tutorial.ResPlayerSimple.EmojiEntry - nil, // 515: tutorial.ResKv.KvEntry - nil, // 516: tutorial.ResRank.RankListEntry - nil, // 517: tutorial.ResMailList.MailListEntry - nil, // 518: tutorial.ResCharge.SpecialShopEntry - nil, // 519: tutorial.ResCharge.ChessShopEntry - nil, // 520: tutorial.ResCharge.GiftEntry - nil, // 521: tutorial.ResCharge.WeeklyDiscountEntry - nil, // 522: tutorial.ReqBuyChessShop2.MChessDataEntry - nil, // 523: tutorial.ResEndless.EndlessListEntry - nil, // 524: tutorial.ResChampshipRank.RankListEntry - nil, // 525: tutorial.ResChampshipPreRank.RankListEntry - nil, // 526: tutorial.ResNotifyCard.CardEntry - nil, // 527: tutorial.ResNotifyCard.MasterEntry - nil, // 528: tutorial.ResNotifyCard.HandbookEntry - nil, // 529: tutorial.ResMining.MapEntry - nil, // 530: tutorial.ReqMiningTake.MapEntry - nil, // 531: tutorial.ResActRed.RedEntry - nil, // 532: tutorial.ResItem.ItemEntry - nil, // 533: tutorial.ItemNotify.ItemEntry - nil, // 534: tutorial.ResGuessColor.OMapEntry - nil, // 535: tutorial.ReqGuessColorTake.OMapEntry - nil, // 536: tutorial.GuessColorInfo.MapEntry - nil, // 537: tutorial.ResPlayroom.PlayroomEntry - nil, // 538: tutorial.ResPlayroom.MoodEntry - nil, // 539: tutorial.ResPlayroom.PhysiologyEntry - nil, // 540: tutorial.ResPlayroom.DressEntry - nil, // 541: tutorial.ResPlayroom.DressSetEntry - nil, // 542: tutorial.ResPlayroom.WeeklyDiscountEntry - nil, // 543: tutorial.ReqPlayroomDressSet.DressSetEntry - nil, // 544: tutorial.NotifyPlayroomMood.MoodEntry - nil, // 545: tutorial.NotifyPlayroomMood.PhysiologyEntry - nil, // 546: tutorial.ResPlayroomInfo.PlayroomEntry - nil, // 547: tutorial.ResPlayroomInfo.ItemsEntry - nil, // 548: tutorial.ResPlayroomInfo.FlipEntry - nil, // 549: tutorial.ResPlayroomInfo.EmojiEntry - nil, // 550: tutorial.ResPlayroomInfo.DressSetEntry - nil, // 551: tutorial.ResPlayroomGame.ItemsEntry - nil, // 552: tutorial.ReqPlayroomSetRoom.PlayroomEntry + (*CatnipInvite)(nil), // 460: tutorial.CatnipInvite + (*ReqCatnipInvite)(nil), // 461: tutorial.ReqCatnipInvite + (*ResCatnipInvite)(nil), // 462: tutorial.ResCatnipInvite + (*ReqCatnipAgree)(nil), // 463: tutorial.ReqCatnipAgree + (*ResCatnipAgree)(nil), // 464: tutorial.ResCatnipAgree + (*ReqCatnipRefuse)(nil), // 465: tutorial.ReqCatnipRefuse + (*ResCatnipRefuse)(nil), // 466: tutorial.ResCatnipRefuse + (*ReqCatnipMultiply)(nil), // 467: tutorial.ReqCatnipMultiply + (*ResCatnipMultiply)(nil), // 468: tutorial.ResCatnipMultiply + (*ReqCatnipPlay)(nil), // 469: tutorial.ReqCatnipPlay + (*ResCatnipPlay)(nil), // 470: tutorial.ResCatnipPlay + (*ReqCatnipReward)(nil), // 471: tutorial.ReqCatnipReward + (*ResCatnipReward)(nil), // 472: tutorial.ResCatnipReward + (*ReqCatnipGrandReward)(nil), // 473: tutorial.ReqCatnipGrandReward + (*ResCatnipGrandReward)(nil), // 474: tutorial.ResCatnipGrandReward + (*ReqCatnipEmoji)(nil), // 475: tutorial.ReqCatnipEmoji + (*ResCatnipEmoji)(nil), // 476: tutorial.ResCatnipEmoji + (*AdminReq)(nil), // 477: tutorial.AdminReq + (*AdminRes)(nil), // 478: tutorial.AdminRes + (*ReqAdminInfo)(nil), // 479: tutorial.ReqAdminInfo + (*ReqReloadServerMail)(nil), // 480: tutorial.ReqReloadServerMail + (*ReqServerInfo)(nil), // 481: tutorial.ReqServerInfo + (*ReqReload)(nil), // 482: tutorial.ReqReload + (*ReqAdminGm)(nil), // 483: tutorial.ReqAdminGm + (*ReqAdminBan)(nil), // 484: tutorial.ReqAdminBan + (*ReqAdminShipping)(nil), // 485: tutorial.ReqAdminShipping + nil, // 486: tutorial.ResChessColorData.MChessColorDataEntry + nil, // 487: tutorial.UpdateBaseItemInfo.MUpdateItemEntry + nil, // 488: tutorial.ResPlayerChessData.MChessDataEntry + nil, // 489: tutorial.ReqPutPartInBag.MChessDataEntry + nil, // 490: tutorial.UpdatePlayerChessData.MChessDataEntry + nil, // 491: tutorial.ReqSeparateChess.MChessDataEntry + nil, // 492: tutorial.ReqUpgradeChess.MChessDataEntry + nil, // 493: tutorial.ReqGetChessFromBuff.MChessDataEntry + nil, // 494: tutorial.ReqChessEx.MChessDataEntry + nil, // 495: tutorial.ReqSourceChest.MChessDataEntry + nil, // 496: tutorial.ReqPlayroomOutline.MChessDataEntry + nil, // 497: tutorial.ReqPutChessInBag.MChessDataEntry + nil, // 498: tutorial.ReqTakeChessOutBag.MChessDataEntry + nil, // 499: tutorial.ResPlayerBriefProfileData.SetEmojiEntry + nil, // 500: tutorial.UserInfo.SetEmojiEntry + nil, // 501: tutorial.ReqRewardOrder.MChessDataEntry + nil, // 502: tutorial.ResCardInfo.AllCardEntry + nil, // 503: tutorial.ResCardInfo.HandbookEntry + nil, // 504: tutorial.ResGuildInfo.RewardEntry + nil, // 505: tutorial.ResGuideInfo.RewardEntry + nil, // 506: tutorial.ResGuideTask.TaskEntry + nil, // 507: tutorial.ResDailyTask.WeekRewardEntry + nil, // 508: tutorial.ResDailyTask.DailyTaskEntry + nil, // 509: tutorial.ResLimitEvent.LimitEventListEntry + nil, // 510: tutorial.ResLimitEventProgress.ProgressRewardEntry + nil, // 511: tutorial.LimitEvent.ParamEntry + nil, // 512: tutorial.ReqLimitEventLuckyCat.MChessDataEntry + nil, // 513: tutorial.ResFriendPlayerSimple.EmojiEntry + nil, // 514: tutorial.ResFriendPlayerSimple.PlayroomEntry + nil, // 515: tutorial.ResFriendPlayerSimple.DressSetEntry + nil, // 516: tutorial.ResFriendPlayerSimple.PhysiologyEntry + nil, // 517: tutorial.ResPlayerSimple.EmojiEntry + nil, // 518: tutorial.ResKv.KvEntry + nil, // 519: tutorial.ResRank.RankListEntry + nil, // 520: tutorial.ResMailList.MailListEntry + nil, // 521: tutorial.ResCharge.SpecialShopEntry + nil, // 522: tutorial.ResCharge.ChessShopEntry + nil, // 523: tutorial.ResCharge.GiftEntry + nil, // 524: tutorial.ResCharge.WeeklyDiscountEntry + nil, // 525: tutorial.ReqBuyChessShop2.MChessDataEntry + nil, // 526: tutorial.ResEndless.EndlessListEntry + nil, // 527: tutorial.ResChampshipRank.RankListEntry + nil, // 528: tutorial.ResChampshipPreRank.RankListEntry + nil, // 529: tutorial.ResNotifyCard.CardEntry + nil, // 530: tutorial.ResNotifyCard.MasterEntry + nil, // 531: tutorial.ResNotifyCard.HandbookEntry + nil, // 532: tutorial.ResMining.MapEntry + nil, // 533: tutorial.ReqMiningTake.MapEntry + nil, // 534: tutorial.ResActRed.RedEntry + nil, // 535: tutorial.ResItem.ItemEntry + nil, // 536: tutorial.ItemNotify.ItemEntry + nil, // 537: tutorial.ResGuessColor.OMapEntry + nil, // 538: tutorial.ReqGuessColorTake.OMapEntry + nil, // 539: tutorial.GuessColorInfo.MapEntry + nil, // 540: tutorial.ResPlayroom.PlayroomEntry + nil, // 541: tutorial.ResPlayroom.MoodEntry + nil, // 542: tutorial.ResPlayroom.PhysiologyEntry + nil, // 543: tutorial.ResPlayroom.DressEntry + nil, // 544: tutorial.ResPlayroom.DressSetEntry + nil, // 545: tutorial.ResPlayroom.WeeklyDiscountEntry + nil, // 546: tutorial.ReqPlayroomDressSet.DressSetEntry + nil, // 547: tutorial.NotifyPlayroomMood.MoodEntry + nil, // 548: tutorial.NotifyPlayroomMood.PhysiologyEntry + nil, // 549: tutorial.ResPlayroomInfo.PlayroomEntry + nil, // 550: tutorial.ResPlayroomInfo.ItemsEntry + nil, // 551: tutorial.ResPlayroomInfo.FlipEntry + nil, // 552: tutorial.ResPlayroomInfo.EmojiEntry + nil, // 553: tutorial.ResPlayroomInfo.DressSetEntry + nil, // 554: tutorial.ResPlayroomGame.ItemsEntry + nil, // 555: tutorial.ReqPlayroomSetRoom.PlayroomEntry } var file_proto_Gameapi_proto_depIdxs = []int32{ - 483, // 0: tutorial.ResChessColorData.mChessColorData:type_name -> tutorial.ResChessColorData.MChessColorDataEntry + 486, // 0: tutorial.ResChessColorData.mChessColorData:type_name -> tutorial.ResChessColorData.MChessColorDataEntry 6, // 1: tutorial.ReqLogin.type:type_name -> tutorial.LOGIN_TYPE 2, // 2: tutorial.ResId2Verify.ResultCode:type_name -> tutorial.RES_CODE - 484, // 3: tutorial.UpdateBaseItemInfo.mUpdateItem:type_name -> tutorial.UpdateBaseItemInfo.MUpdateItemEntry - 485, // 4: tutorial.ResPlayerChessData.mChessData:type_name -> tutorial.ResPlayerChessData.MChessDataEntry + 487, // 3: tutorial.UpdateBaseItemInfo.mUpdateItem:type_name -> tutorial.UpdateBaseItemInfo.MUpdateItemEntry + 488, // 4: tutorial.ResPlayerChessData.mChessData:type_name -> tutorial.ResPlayerChessData.MChessDataEntry 72, // 5: tutorial.ResPlayerChessInfo.ChessBag:type_name -> tutorial.ChessBag 53, // 6: tutorial.ResPlayerChessInfo.PartBag:type_name -> tutorial.PartBag 2, // 7: tutorial.ResGetChessRetireReward.code:type_name -> tutorial.RES_CODE 54, // 8: tutorial.PartBag.PartBagGrids:type_name -> tutorial.PartBagGrid - 486, // 9: tutorial.ReqPutPartInBag.mChessData:type_name -> tutorial.ReqPutPartInBag.MChessDataEntry + 489, // 9: tutorial.ReqPutPartInBag.mChessData:type_name -> tutorial.ReqPutPartInBag.MChessDataEntry 2, // 10: tutorial.ResPutPartInBag.code:type_name -> tutorial.RES_CODE 1, // 11: tutorial.ChessHandle.type:type_name -> tutorial.HANDLE_TYPE - 487, // 12: tutorial.UpdatePlayerChessData.mChessData:type_name -> tutorial.UpdatePlayerChessData.MChessDataEntry + 490, // 12: tutorial.UpdatePlayerChessData.mChessData:type_name -> tutorial.UpdatePlayerChessData.MChessDataEntry 57, // 13: tutorial.UpdatePlayerChessData.mChessHandle:type_name -> tutorial.ChessHandle 2, // 14: tutorial.ResUpdatePlayerChessData.code:type_name -> tutorial.RES_CODE - 488, // 15: tutorial.ReqSeparateChess.mChessData:type_name -> tutorial.ReqSeparateChess.MChessDataEntry + 491, // 15: tutorial.ReqSeparateChess.mChessData:type_name -> tutorial.ReqSeparateChess.MChessDataEntry 2, // 16: tutorial.ResSeparateChess.code:type_name -> tutorial.RES_CODE - 489, // 17: tutorial.ReqUpgradeChess.mChessData:type_name -> tutorial.ReqUpgradeChess.MChessDataEntry + 492, // 17: tutorial.ReqUpgradeChess.mChessData:type_name -> tutorial.ReqUpgradeChess.MChessDataEntry 2, // 18: tutorial.ResUpgradeChess.code:type_name -> tutorial.RES_CODE - 490, // 19: tutorial.ReqGetChessFromBuff.mChessData:type_name -> tutorial.ReqGetChessFromBuff.MChessDataEntry + 493, // 19: tutorial.ReqGetChessFromBuff.mChessData:type_name -> tutorial.ReqGetChessFromBuff.MChessDataEntry 2, // 20: tutorial.ResGetChessFromBuff.code:type_name -> tutorial.RES_CODE 8, // 21: tutorial.ReqChessEx.Type:type_name -> tutorial.CHESS_EX_TYPE - 491, // 22: tutorial.ReqChessEx.mChessData:type_name -> tutorial.ReqChessEx.MChessDataEntry + 494, // 22: tutorial.ReqChessEx.mChessData:type_name -> tutorial.ReqChessEx.MChessDataEntry 2, // 23: tutorial.ResChessEx.code:type_name -> tutorial.RES_CODE - 492, // 24: tutorial.ReqSourceChest.mChessData:type_name -> tutorial.ReqSourceChest.MChessDataEntry + 495, // 24: tutorial.ReqSourceChest.mChessData:type_name -> tutorial.ReqSourceChest.MChessDataEntry 2, // 25: tutorial.ResSourceChest.code:type_name -> tutorial.RES_CODE - 493, // 26: tutorial.ReqPlayroomOutline.mChessData:type_name -> tutorial.ReqPlayroomOutline.MChessDataEntry + 496, // 26: tutorial.ReqPlayroomOutline.mChessData:type_name -> tutorial.ReqPlayroomOutline.MChessDataEntry 2, // 27: tutorial.ResPlayroomOutline.code:type_name -> tutorial.RES_CODE 73, // 28: tutorial.ChessBag.ChessBagGrids:type_name -> tutorial.ChessBagGrid - 494, // 29: tutorial.ReqPutChessInBag.mChessData:type_name -> tutorial.ReqPutChessInBag.MChessDataEntry + 497, // 29: tutorial.ReqPutChessInBag.mChessData:type_name -> tutorial.ReqPutChessInBag.MChessDataEntry 2, // 30: tutorial.ResPutChessInBag.code:type_name -> tutorial.RES_CODE - 495, // 31: tutorial.ReqTakeChessOutBag.mChessData:type_name -> tutorial.ReqTakeChessOutBag.MChessDataEntry + 498, // 31: tutorial.ReqTakeChessOutBag.mChessData:type_name -> tutorial.ReqTakeChessOutBag.MChessDataEntry 2, // 32: tutorial.ResTakeChessOutBag.code:type_name -> tutorial.RES_CODE 2, // 33: tutorial.ResBuyChessBagGrid.code:type_name -> tutorial.RES_CODE - 496, // 34: tutorial.ResPlayerBriefProfileData.SetEmoji:type_name -> tutorial.ResPlayerBriefProfileData.SetEmojiEntry + 499, // 34: tutorial.ResPlayerBriefProfileData.SetEmoji:type_name -> tutorial.ResPlayerBriefProfileData.SetEmojiEntry 2, // 35: tutorial.ResSetEnergyMul.ResultCode:type_name -> tutorial.RES_CODE 9, // 36: tutorial.ReqLang.Lang:type_name -> tutorial.LANG_TYPE 2, // 37: tutorial.ResLang.ResultCode:type_name -> tutorial.RES_CODE @@ -29992,7 +30190,7 @@ var file_proto_Gameapi_proto_depIdxs = []int32{ 191, // 39: tutorial.UserInfo.AvatarList:type_name -> tutorial.AvatarInfo 187, // 40: tutorial.UserInfo.FaceList:type_name -> tutorial.FaceInfo 194, // 41: tutorial.UserInfo.EmojiList:type_name -> tutorial.EmojiInfo - 497, // 42: tutorial.UserInfo.SetEmoji:type_name -> tutorial.UserInfo.SetEmojiEntry + 500, // 42: tutorial.UserInfo.SetEmoji:type_name -> tutorial.UserInfo.SetEmojiEntry 2, // 43: tutorial.ResSetName.ResultCode:type_name -> tutorial.RES_CODE 2, // 44: tutorial.ResSetPetName.ResultCode:type_name -> tutorial.RES_CODE 2, // 45: tutorial.ResBuyEnergy.Code:type_name -> tutorial.RES_CODE @@ -30000,7 +30198,7 @@ var file_proto_Gameapi_proto_depIdxs = []int32{ 2, // 47: tutorial.ResGetHandbookReward.Code:type_name -> tutorial.RES_CODE 101, // 48: tutorial.Handbook.Handbooks:type_name -> tutorial.HandbookInfo 2, // 49: tutorial.ResHandbookAllReward.Code:type_name -> tutorial.RES_CODE - 498, // 50: tutorial.ReqRewardOrder.mChessData:type_name -> tutorial.ReqRewardOrder.MChessDataEntry + 501, // 50: tutorial.ReqRewardOrder.mChessData:type_name -> tutorial.ReqRewardOrder.MChessDataEntry 2, // 51: tutorial.ResRewardOrder.Code:type_name -> tutorial.RES_CODE 2, // 52: tutorial.ResDelOrder.Code:type_name -> tutorial.RES_CODE 168, // 53: tutorial.Order.Items:type_name -> tutorial.ItemInfo @@ -30011,8 +30209,8 @@ var file_proto_Gameapi_proto_depIdxs = []int32{ 2, // 58: tutorial.ResDecorateAll.Code:type_name -> tutorial.RES_CODE 2, // 59: tutorial.ResDecorateReward.Code:type_name -> tutorial.RES_CODE 123, // 60: tutorial.ResCardInfo.CardList:type_name -> tutorial.Card - 499, // 61: tutorial.ResCardInfo.AllCard:type_name -> tutorial.ResCardInfo.AllCardEntry - 500, // 62: tutorial.ResCardInfo.Handbook:type_name -> tutorial.ResCardInfo.HandbookEntry + 502, // 61: tutorial.ResCardInfo.AllCard:type_name -> tutorial.ResCardInfo.AllCardEntry + 503, // 62: tutorial.ResCardInfo.Handbook:type_name -> tutorial.ResCardInfo.HandbookEntry 2, // 63: tutorial.ResCardSeasonFirstReward.Code:type_name -> tutorial.RES_CODE 2, // 64: tutorial.ResCardHandbookReward.Code:type_name -> tutorial.RES_CODE 2, // 65: tutorial.ResMasterCard.Code:type_name -> tutorial.RES_CODE @@ -30031,16 +30229,16 @@ var file_proto_Gameapi_proto_depIdxs = []int32{ 2, // 78: tutorial.ResGetFriendCard.Code:type_name -> tutorial.RES_CODE 2, // 79: tutorial.ResGuideReward.Code:type_name -> tutorial.RES_CODE 2, // 80: tutorial.ResGuidePlayroom.Code:type_name -> tutorial.RES_CODE - 501, // 81: tutorial.ResGuildInfo.Reward:type_name -> tutorial.ResGuildInfo.RewardEntry - 502, // 82: tutorial.ResGuideInfo.Reward:type_name -> tutorial.ResGuideInfo.RewardEntry + 504, // 81: tutorial.ResGuildInfo.Reward:type_name -> tutorial.ResGuildInfo.RewardEntry + 505, // 82: tutorial.ResGuideInfo.Reward:type_name -> tutorial.ResGuideInfo.RewardEntry 168, // 83: tutorial.ResItemPop.Items:type_name -> tutorial.ItemInfo 169, // 84: tutorial.ResItemPop.CardPacks:type_name -> tutorial.CardPack - 503, // 85: tutorial.ResGuideTask.Task:type_name -> tutorial.ResGuideTask.TaskEntry + 506, // 85: tutorial.ResGuideTask.Task:type_name -> tutorial.ResGuideTask.TaskEntry 179, // 86: tutorial.GuideTask.Progress:type_name -> tutorial.QuestProgress 2, // 87: tutorial.ResGetGuideTaskReward.Code:type_name -> tutorial.RES_CODE 2, // 88: tutorial.ResGetGuideActiveReward.Code:type_name -> tutorial.RES_CODE - 504, // 89: tutorial.ResDailyTask.WeekReward:type_name -> tutorial.ResDailyTask.WeekRewardEntry - 505, // 90: tutorial.ResDailyTask.DailyTask:type_name -> tutorial.ResDailyTask.DailyTaskEntry + 507, // 89: tutorial.ResDailyTask.WeekReward:type_name -> tutorial.ResDailyTask.WeekRewardEntry + 508, // 90: tutorial.ResDailyTask.DailyTask:type_name -> tutorial.ResDailyTask.DailyTaskEntry 168, // 91: tutorial.DailyWeek.Items:type_name -> tutorial.ItemInfo 179, // 92: tutorial.DailyTask.Progress:type_name -> tutorial.QuestProgress 168, // 93: tutorial.DailyTask.Items:type_name -> tutorial.ItemInfo @@ -30061,30 +30259,30 @@ var file_proto_Gameapi_proto_depIdxs = []int32{ 2, // 108: tutorial.ResGetMonthLoginReward.Code:type_name -> tutorial.RES_CODE 204, // 109: tutorial.ResActivity.ActiveList:type_name -> tutorial.ActivityInfo 2, // 110: tutorial.ResActivityReward.Code:type_name -> tutorial.RES_CODE - 506, // 111: tutorial.ResLimitEvent.LimitEventList:type_name -> tutorial.ResLimitEvent.LimitEventListEntry - 507, // 112: tutorial.ResLimitEventProgress.ProgressReward:type_name -> tutorial.ResLimitEventProgress.ProgressRewardEntry + 509, // 111: tutorial.ResLimitEvent.LimitEventList:type_name -> tutorial.ResLimitEvent.LimitEventListEntry + 510, // 112: tutorial.ResLimitEventProgress.ProgressReward:type_name -> tutorial.ResLimitEventProgress.ProgressRewardEntry 2, // 113: tutorial.ResLimitEventReward.Code:type_name -> tutorial.RES_CODE 2, // 114: tutorial.ResSelectLimitEvent.Code:type_name -> tutorial.RES_CODE - 508, // 115: tutorial.LimitEvent.Param:type_name -> tutorial.LimitEvent.ParamEntry - 509, // 116: tutorial.ReqLimitEventLuckyCat.mChessData:type_name -> tutorial.ReqLimitEventLuckyCat.MChessDataEntry + 511, // 115: tutorial.LimitEvent.Param:type_name -> tutorial.LimitEvent.ParamEntry + 512, // 116: tutorial.ReqLimitEventLuckyCat.mChessData:type_name -> tutorial.ReqLimitEventLuckyCat.MChessDataEntry 2, // 117: tutorial.ResLimitEventLuckyCat.Code:type_name -> tutorial.RES_CODE 2, // 118: tutorial.ResLimitSenceReward.Code:type_name -> tutorial.RES_CODE 168, // 119: tutorial.ResChessRainReward.Items:type_name -> tutorial.ItemInfo 2, // 120: tutorial.ResFastProduceReward.Code:type_name -> tutorial.RES_CODE 2, // 121: tutorial.ResCatTrickReward.Code:type_name -> tutorial.RES_CODE 231, // 122: tutorial.ResSearchPlayer.List:type_name -> tutorial.ResPlayerSimple - 510, // 123: tutorial.ResFriendPlayerSimple.Emoji:type_name -> tutorial.ResFriendPlayerSimple.EmojiEntry - 511, // 124: tutorial.ResFriendPlayerSimple.Playroom:type_name -> tutorial.ResFriendPlayerSimple.PlayroomEntry - 512, // 125: tutorial.ResFriendPlayerSimple.DressSet:type_name -> tutorial.ResFriendPlayerSimple.DressSetEntry + 513, // 123: tutorial.ResFriendPlayerSimple.Emoji:type_name -> tutorial.ResFriendPlayerSimple.EmojiEntry + 514, // 124: tutorial.ResFriendPlayerSimple.Playroom:type_name -> tutorial.ResFriendPlayerSimple.PlayroomEntry + 515, // 125: tutorial.ResFriendPlayerSimple.DressSet:type_name -> tutorial.ResFriendPlayerSimple.DressSetEntry 232, // 126: tutorial.ResFriendPlayerSimple.Last:type_name -> tutorial.ActLog - 513, // 127: tutorial.ResFriendPlayerSimple.Physiology:type_name -> tutorial.ResFriendPlayerSimple.PhysiologyEntry - 514, // 128: tutorial.ResPlayerSimple.Emoji:type_name -> tutorial.ResPlayerSimple.EmojiEntry + 516, // 127: tutorial.ResFriendPlayerSimple.Physiology:type_name -> tutorial.ResFriendPlayerSimple.PhysiologyEntry + 517, // 128: tutorial.ResPlayerSimple.Emoji:type_name -> tutorial.ResPlayerSimple.EmojiEntry 231, // 129: tutorial.ResFriendLog.Player:type_name -> tutorial.ResPlayerSimple 234, // 130: tutorial.NotifyFriendLog.info:type_name -> tutorial.ResFriendLog 236, // 131: tutorial.NotifyFriendLog.Bubble:type_name -> tutorial.FriendBubbleInfo 168, // 132: tutorial.FriendBubbleInfo.Items:type_name -> tutorial.ItemInfo 238, // 133: tutorial.NotifyFriendCard.Info:type_name -> tutorial.ResFriendCard - 515, // 134: tutorial.ResKv.kv:type_name -> tutorial.ResKv.KvEntry + 518, // 134: tutorial.ResKv.kv:type_name -> tutorial.ResKv.KvEntry 2, // 135: tutorial.ResFriendByCode.Code:type_name -> tutorial.RES_CODE 231, // 136: tutorial.ResFriendByCode.Player:type_name -> tutorial.ResPlayerSimple 231, // 137: tutorial.ResFriendRecommend.List:type_name -> tutorial.ResPlayerSimple @@ -30109,27 +30307,27 @@ var file_proto_Gameapi_proto_depIdxs = []int32{ 231, // 156: tutorial.ResAgreeFriend.Player:type_name -> tutorial.ResPlayerSimple 2, // 157: tutorial.ResRefuseFriend.Code:type_name -> tutorial.RES_CODE 2, // 158: tutorial.ResDelFriend.Code:type_name -> tutorial.RES_CODE - 516, // 159: tutorial.ResRank.RankList:type_name -> tutorial.ResRank.RankListEntry - 517, // 160: tutorial.ResMailList.MailList:type_name -> tutorial.ResMailList.MailListEntry + 519, // 159: tutorial.ResRank.RankList:type_name -> tutorial.ResRank.RankListEntry + 520, // 160: tutorial.ResMailList.MailList:type_name -> tutorial.ResMailList.MailListEntry 168, // 161: tutorial.MailInfo.Items:type_name -> tutorial.ItemInfo 283, // 162: tutorial.MailNotify.Info:type_name -> tutorial.MailInfo 2, // 163: tutorial.ResReadMail.Code:type_name -> tutorial.RES_CODE 2, // 164: tutorial.ResGetMailReward.Code:type_name -> tutorial.RES_CODE 2, // 165: tutorial.ResDeleteMail.Code:type_name -> tutorial.RES_CODE - 518, // 166: tutorial.ResCharge.SpecialShop:type_name -> tutorial.ResCharge.SpecialShopEntry - 519, // 167: tutorial.ResCharge.ChessShop:type_name -> tutorial.ResCharge.ChessShopEntry - 520, // 168: tutorial.ResCharge.Gift:type_name -> tutorial.ResCharge.GiftEntry + 521, // 166: tutorial.ResCharge.SpecialShop:type_name -> tutorial.ResCharge.SpecialShopEntry + 522, // 167: tutorial.ResCharge.ChessShop:type_name -> tutorial.ResCharge.ChessShopEntry + 523, // 168: tutorial.ResCharge.Gift:type_name -> tutorial.ResCharge.GiftEntry 294, // 169: tutorial.ResCharge.Wish:type_name -> tutorial.WishList - 521, // 170: tutorial.ResCharge.WeeklyDiscount:type_name -> tutorial.ResCharge.WeeklyDiscountEntry + 524, // 170: tutorial.ResCharge.WeeklyDiscount:type_name -> tutorial.ResCharge.WeeklyDiscountEntry 2, // 171: tutorial.ResAddWish.Code:type_name -> tutorial.RES_CODE 2, // 172: tutorial.ResGetWish.Code:type_name -> tutorial.RES_CODE 2, // 173: tutorial.ResSendWishBeg.Code:type_name -> tutorial.RES_CODE 2, // 174: tutorial.ResFreeShop.Code:type_name -> tutorial.RES_CODE 2, // 175: tutorial.ResBuyChessShop.Code:type_name -> tutorial.RES_CODE - 522, // 176: tutorial.ReqBuyChessShop2.mChessData:type_name -> tutorial.ReqBuyChessShop2.MChessDataEntry + 525, // 176: tutorial.ReqBuyChessShop2.mChessData:type_name -> tutorial.ReqBuyChessShop2.MChessDataEntry 2, // 177: tutorial.ResBuyChessShop2.Code:type_name -> tutorial.RES_CODE 2, // 178: tutorial.ResRefreshChessShop.Code:type_name -> tutorial.RES_CODE - 523, // 179: tutorial.ResEndless.EndlessList:type_name -> tutorial.ResEndless.EndlessListEntry + 526, // 179: tutorial.ResEndless.EndlessList:type_name -> tutorial.ResEndless.EndlessListEntry 168, // 180: tutorial.ResEndlessInfo.Items:type_name -> tutorial.ItemInfo 2, // 181: tutorial.ResEndlessReward.Code:type_name -> tutorial.RES_CODE 2, // 182: tutorial.ResPiggyBankReward.Code:type_name -> tutorial.RES_CODE @@ -30137,27 +30335,27 @@ var file_proto_Gameapi_proto_depIdxs = []int32{ 2, // 184: tutorial.ResShippingOrder.Code:type_name -> tutorial.RES_CODE 2, // 185: tutorial.ResChampshipReward.Code:type_name -> tutorial.RES_CODE 2, // 186: tutorial.ResChampshipRankReward.Code:type_name -> tutorial.RES_CODE - 524, // 187: tutorial.ResChampshipRank.RankList:type_name -> tutorial.ResChampshipRank.RankListEntry - 525, // 188: tutorial.ResChampshipPreRank.RankList:type_name -> tutorial.ResChampshipPreRank.RankListEntry - 526, // 189: tutorial.ResNotifyCard.Card:type_name -> tutorial.ResNotifyCard.CardEntry - 527, // 190: tutorial.ResNotifyCard.Master:type_name -> tutorial.ResNotifyCard.MasterEntry - 528, // 191: tutorial.ResNotifyCard.Handbook:type_name -> tutorial.ResNotifyCard.HandbookEntry + 527, // 187: tutorial.ResChampshipRank.RankList:type_name -> tutorial.ResChampshipRank.RankListEntry + 528, // 188: tutorial.ResChampshipPreRank.RankList:type_name -> tutorial.ResChampshipPreRank.RankListEntry + 529, // 189: tutorial.ResNotifyCard.Card:type_name -> tutorial.ResNotifyCard.CardEntry + 530, // 190: tutorial.ResNotifyCard.Master:type_name -> tutorial.ResNotifyCard.MasterEntry + 531, // 191: tutorial.ResNotifyCard.Handbook:type_name -> tutorial.ResNotifyCard.HandbookEntry 2, // 192: tutorial.ResSetFacebookUrl.Code:type_name -> tutorial.RES_CODE - 529, // 193: tutorial.ResMining.Map:type_name -> tutorial.ResMining.MapEntry - 530, // 194: tutorial.ReqMiningTake.Map:type_name -> tutorial.ReqMiningTake.MapEntry + 532, // 193: tutorial.ResMining.Map:type_name -> tutorial.ResMining.MapEntry + 533, // 194: tutorial.ReqMiningTake.Map:type_name -> tutorial.ReqMiningTake.MapEntry 2, // 195: tutorial.ResMiningTake.Code:type_name -> tutorial.RES_CODE 2, // 196: tutorial.ResMiningReward.Code:type_name -> tutorial.RES_CODE 2, // 197: tutorial.ResActPassReward.Code:type_name -> tutorial.RES_CODE - 531, // 198: tutorial.ResActRed.Red:type_name -> tutorial.ResActRed.RedEntry + 534, // 198: tutorial.ResActRed.Red:type_name -> tutorial.ResActRed.RedEntry 204, // 199: tutorial.ActivityNotify.Info:type_name -> tutorial.ActivityInfo - 532, // 200: tutorial.ResItem.Item:type_name -> tutorial.ResItem.ItemEntry - 533, // 201: tutorial.ItemNotify.Item:type_name -> tutorial.ItemNotify.ItemEntry + 535, // 200: tutorial.ResItem.Item:type_name -> tutorial.ResItem.ItemEntry + 536, // 201: tutorial.ItemNotify.Item:type_name -> tutorial.ItemNotify.ItemEntry 368, // 202: tutorial.ResGuessColor.MapList:type_name -> tutorial.GuessColorInfo - 534, // 203: tutorial.ResGuessColor.OMap:type_name -> tutorial.ResGuessColor.OMapEntry + 537, // 203: tutorial.ResGuessColor.OMap:type_name -> tutorial.ResGuessColor.OMapEntry 366, // 204: tutorial.ResGuessColor.Opponent:type_name -> tutorial.opponent 368, // 205: tutorial.ReqGuessColorTake.Map:type_name -> tutorial.GuessColorInfo - 535, // 206: tutorial.ReqGuessColorTake.OMap:type_name -> tutorial.ReqGuessColorTake.OMapEntry - 536, // 207: tutorial.GuessColorInfo.Map:type_name -> tutorial.GuessColorInfo.MapEntry + 538, // 206: tutorial.ReqGuessColorTake.OMap:type_name -> tutorial.ReqGuessColorTake.OMapEntry + 539, // 207: tutorial.GuessColorInfo.Map:type_name -> tutorial.GuessColorInfo.MapEntry 2, // 208: tutorial.ResGuessColorTake.Code:type_name -> tutorial.RES_CODE 2, // 209: tutorial.ResGuessColorReward.Code:type_name -> tutorial.RES_CODE 374, // 210: tutorial.ResRace.Opponent:type_name -> tutorial.raceopponent @@ -30166,47 +30364,47 @@ var file_proto_Gameapi_proto_depIdxs = []int32{ 168, // 213: tutorial.ResPlayroom.Items:type_name -> tutorial.ItemInfo 408, // 214: tutorial.ResPlayroom.Opponent:type_name -> tutorial.RoomOpponent 407, // 215: tutorial.ResPlayroom.Friend:type_name -> tutorial.FriendRoom - 537, // 216: tutorial.ResPlayroom.Playroom:type_name -> tutorial.ResPlayroom.PlayroomEntry + 540, // 216: tutorial.ResPlayroom.Playroom:type_name -> tutorial.ResPlayroom.PlayroomEntry 393, // 217: tutorial.ResPlayroom.collect:type_name -> tutorial.PlayroomCollectInfo - 538, // 218: tutorial.ResPlayroom.Mood:type_name -> tutorial.ResPlayroom.MoodEntry + 541, // 218: tutorial.ResPlayroom.Mood:type_name -> tutorial.ResPlayroom.MoodEntry 168, // 219: tutorial.ResPlayroom.LoseItem:type_name -> tutorial.ItemInfo 403, // 220: tutorial.ResPlayroom.Chip:type_name -> tutorial.ChipInfo - 539, // 221: tutorial.ResPlayroom.Physiology:type_name -> tutorial.ResPlayroom.PhysiologyEntry - 540, // 222: tutorial.ResPlayroom.Dress:type_name -> tutorial.ResPlayroom.DressEntry - 541, // 223: tutorial.ResPlayroom.DressSet:type_name -> tutorial.ResPlayroom.DressSetEntry + 542, // 221: tutorial.ResPlayroom.Physiology:type_name -> tutorial.ResPlayroom.PhysiologyEntry + 543, // 222: tutorial.ResPlayroom.Dress:type_name -> tutorial.ResPlayroom.DressEntry + 544, // 223: tutorial.ResPlayroom.DressSet:type_name -> tutorial.ResPlayroom.DressSetEntry 392, // 224: tutorial.ResPlayroom.PetAir:type_name -> tutorial.PlayroomAirInfo 178, // 225: tutorial.ResPlayroom.DailyTask:type_name -> tutorial.DailyTask 405, // 226: tutorial.ResPlayroom.AdItem:type_name -> tutorial.AdItem 407, // 227: tutorial.ResPlayroom.Target:type_name -> tutorial.FriendRoom - 542, // 228: tutorial.ResPlayroom.WeeklyDiscount:type_name -> tutorial.ResPlayroom.WeeklyDiscountEntry + 545, // 228: tutorial.ResPlayroom.WeeklyDiscount:type_name -> tutorial.ResPlayroom.WeeklyDiscountEntry 178, // 229: tutorial.NotifyPlayroomTask.DailyTask:type_name -> tutorial.DailyTask 2, // 230: tutorial.ResPlayroomTask.Code:type_name -> tutorial.RES_CODE 2, // 231: tutorial.ResPlayroomTaskReward.Code:type_name -> tutorial.RES_CODE 2, // 232: tutorial.ResPlayroomUnlock.Code:type_name -> tutorial.RES_CODE 2, // 233: tutorial.ResPlayroomUpvote.Code:type_name -> tutorial.RES_CODE 391, // 234: tutorial.PlayroomDress.List:type_name -> tutorial.PlayroomDressInfo - 543, // 235: tutorial.ReqPlayroomDressSet.DressSet:type_name -> tutorial.ReqPlayroomDressSet.DressSetEntry + 546, // 235: tutorial.ReqPlayroomDressSet.DressSet:type_name -> tutorial.ReqPlayroomDressSet.DressSetEntry 2, // 236: tutorial.ResPlayroomDressSet.Code:type_name -> tutorial.RES_CODE 2, // 237: tutorial.ResPlayroomPetAirSet.Code:type_name -> tutorial.RES_CODE 2, // 238: tutorial.ResPlayroomWrokOutline.Code:type_name -> tutorial.RES_CODE 168, // 239: tutorial.NotifyPlayroomLose.LoseItem:type_name -> tutorial.ItemInfo 403, // 240: tutorial.NotifyPlayroomLose.Chip:type_name -> tutorial.ChipInfo - 544, // 241: tutorial.NotifyPlayroomMood.Mood:type_name -> tutorial.NotifyPlayroomMood.MoodEntry - 545, // 242: tutorial.NotifyPlayroomMood.Physiology:type_name -> tutorial.NotifyPlayroomMood.PhysiologyEntry + 547, // 241: tutorial.NotifyPlayroomMood.Mood:type_name -> tutorial.NotifyPlayroomMood.MoodEntry + 548, // 242: tutorial.NotifyPlayroomMood.Physiology:type_name -> tutorial.NotifyPlayroomMood.PhysiologyEntry 405, // 243: tutorial.NotifyPlayroomMood.AdItem:type_name -> tutorial.AdItem - 546, // 244: tutorial.ResPlayroomInfo.Playroom:type_name -> tutorial.ResPlayroomInfo.PlayroomEntry - 547, // 245: tutorial.ResPlayroomInfo.Items:type_name -> tutorial.ResPlayroomInfo.ItemsEntry - 548, // 246: tutorial.ResPlayroomInfo.flip:type_name -> tutorial.ResPlayroomInfo.FlipEntry - 549, // 247: tutorial.ResPlayroomInfo.Emoji:type_name -> tutorial.ResPlayroomInfo.EmojiEntry - 550, // 248: tutorial.ResPlayroomInfo.DressSet:type_name -> tutorial.ResPlayroomInfo.DressSetEntry + 549, // 244: tutorial.ResPlayroomInfo.Playroom:type_name -> tutorial.ResPlayroomInfo.PlayroomEntry + 550, // 245: tutorial.ResPlayroomInfo.Items:type_name -> tutorial.ResPlayroomInfo.ItemsEntry + 551, // 246: tutorial.ResPlayroomInfo.flip:type_name -> tutorial.ResPlayroomInfo.FlipEntry + 552, // 247: tutorial.ResPlayroomInfo.Emoji:type_name -> tutorial.ResPlayroomInfo.EmojiEntry + 553, // 248: tutorial.ResPlayroomInfo.DressSet:type_name -> tutorial.ResPlayroomInfo.DressSetEntry 2, // 249: tutorial.ResPlayroomFlip.Code:type_name -> tutorial.RES_CODE 2, // 250: tutorial.ResPlayroomGuide.Code:type_name -> tutorial.RES_CODE 2, // 251: tutorial.ResPlayroomFlipReward.Code:type_name -> tutorial.RES_CODE 2, // 252: tutorial.ResPlayroomGame.Code:type_name -> tutorial.RES_CODE - 551, // 253: tutorial.ResPlayroomGame.Items:type_name -> tutorial.ResPlayroomGame.ItemsEntry + 554, // 253: tutorial.ResPlayroomGame.Items:type_name -> tutorial.ResPlayroomGame.ItemsEntry 168, // 254: tutorial.ResPlayroomGameShowReward.Items:type_name -> tutorial.ItemInfo 2, // 255: tutorial.ResPlayroomInteract.Code:type_name -> tutorial.RES_CODE - 552, // 256: tutorial.ReqPlayroomSetRoom.Playroom:type_name -> tutorial.ReqPlayroomSetRoom.PlayroomEntry + 555, // 256: tutorial.ReqPlayroomSetRoom.Playroom:type_name -> tutorial.ReqPlayroomSetRoom.PlayroomEntry 2, // 257: tutorial.ResPlayroomSetRoom.Code:type_name -> tutorial.RES_CODE 2, // 258: tutorial.ResPlayroomSelectReward.Code:type_name -> tutorial.RES_CODE 2, // 259: tutorial.ResPlayroomLose.Code:type_name -> tutorial.RES_CODE @@ -30226,34 +30424,37 @@ var file_proto_Gameapi_proto_depIdxs = []int32{ 2, // 273: tutorial.ResCollect.Code:type_name -> tutorial.RES_CODE 459, // 274: tutorial.ResCatnip.GameList:type_name -> tutorial.CatnipGame 231, // 275: tutorial.CatnipGame.Partner:type_name -> tutorial.ResPlayerSimple - 2, // 276: tutorial.ResCatnipInvite.Code:type_name -> tutorial.RES_CODE - 2, // 277: tutorial.ResCatnipAgree.Code:type_name -> tutorial.RES_CODE - 2, // 278: tutorial.ResCatnipRefuse.Code:type_name -> tutorial.RES_CODE - 2, // 279: tutorial.ResCatnipMultiply.Code:type_name -> tutorial.RES_CODE - 2, // 280: tutorial.ResCatnipPlay.Code:type_name -> tutorial.RES_CODE - 2, // 281: tutorial.ResCatnipReward.Code:type_name -> tutorial.RES_CODE - 2, // 282: tutorial.ResCatnipGrandReward.Code:type_name -> tutorial.RES_CODE - 171, // 283: tutorial.ResGuideTask.TaskEntry.value:type_name -> tutorial.GuideTask - 177, // 284: tutorial.ResDailyTask.WeekRewardEntry.value:type_name -> tutorial.DailyWeek - 178, // 285: tutorial.ResDailyTask.DailyTaskEntry.value:type_name -> tutorial.DailyTask - 214, // 286: tutorial.ResLimitEvent.LimitEventListEntry.value:type_name -> tutorial.LimitEvent - 231, // 287: tutorial.ResRank.RankListEntry.value:type_name -> tutorial.ResPlayerSimple - 283, // 288: tutorial.ResMailList.MailListEntry.value:type_name -> tutorial.MailInfo - 301, // 289: tutorial.ResCharge.SpecialShopEntry.value:type_name -> tutorial.ResSpecialShop - 302, // 290: tutorial.ResCharge.ChessShopEntry.value:type_name -> tutorial.ResChessShop - 293, // 291: tutorial.ResCharge.WeeklyDiscountEntry.value:type_name -> tutorial.WeeklyDiscountInfo - 313, // 292: tutorial.ResEndless.EndlessListEntry.value:type_name -> tutorial.ResEndlessInfo - 233, // 293: tutorial.ResChampshipRank.RankListEntry.value:type_name -> tutorial.ResPlayerRank - 233, // 294: tutorial.ResChampshipPreRank.RankListEntry.value:type_name -> tutorial.ResPlayerRank - 390, // 295: tutorial.ResPlayroom.DressEntry.value:type_name -> tutorial.PlayroomDress - 293, // 296: tutorial.ResPlayroom.WeeklyDiscountEntry.value:type_name -> tutorial.WeeklyDiscountInfo - 168, // 297: tutorial.ResPlayroomInfo.ItemsEntry.value:type_name -> tutorial.ItemInfo - 168, // 298: tutorial.ResPlayroomGame.ItemsEntry.value:type_name -> tutorial.ItemInfo - 299, // [299:299] is the sub-list for method output_type - 299, // [299:299] is the sub-list for method input_type - 299, // [299:299] is the sub-list for extension type_name - 299, // [299:299] is the sub-list for extension extendee - 0, // [0:299] is the sub-list for field type_name + 460, // 276: tutorial.CatnipGame.InviteList:type_name -> tutorial.CatnipInvite + 460, // 277: tutorial.CatnipGame.BeInviteList:type_name -> tutorial.CatnipInvite + 2, // 278: tutorial.ResCatnipInvite.Code:type_name -> tutorial.RES_CODE + 2, // 279: tutorial.ResCatnipAgree.Code:type_name -> tutorial.RES_CODE + 2, // 280: tutorial.ResCatnipRefuse.Code:type_name -> tutorial.RES_CODE + 2, // 281: tutorial.ResCatnipMultiply.Code:type_name -> tutorial.RES_CODE + 2, // 282: tutorial.ResCatnipPlay.Code:type_name -> tutorial.RES_CODE + 2, // 283: tutorial.ResCatnipReward.Code:type_name -> tutorial.RES_CODE + 2, // 284: tutorial.ResCatnipGrandReward.Code:type_name -> tutorial.RES_CODE + 2, // 285: tutorial.ResCatnipEmoji.Code:type_name -> tutorial.RES_CODE + 171, // 286: tutorial.ResGuideTask.TaskEntry.value:type_name -> tutorial.GuideTask + 177, // 287: tutorial.ResDailyTask.WeekRewardEntry.value:type_name -> tutorial.DailyWeek + 178, // 288: tutorial.ResDailyTask.DailyTaskEntry.value:type_name -> tutorial.DailyTask + 214, // 289: tutorial.ResLimitEvent.LimitEventListEntry.value:type_name -> tutorial.LimitEvent + 231, // 290: tutorial.ResRank.RankListEntry.value:type_name -> tutorial.ResPlayerSimple + 283, // 291: tutorial.ResMailList.MailListEntry.value:type_name -> tutorial.MailInfo + 301, // 292: tutorial.ResCharge.SpecialShopEntry.value:type_name -> tutorial.ResSpecialShop + 302, // 293: tutorial.ResCharge.ChessShopEntry.value:type_name -> tutorial.ResChessShop + 293, // 294: tutorial.ResCharge.WeeklyDiscountEntry.value:type_name -> tutorial.WeeklyDiscountInfo + 313, // 295: tutorial.ResEndless.EndlessListEntry.value:type_name -> tutorial.ResEndlessInfo + 233, // 296: tutorial.ResChampshipRank.RankListEntry.value:type_name -> tutorial.ResPlayerRank + 233, // 297: tutorial.ResChampshipPreRank.RankListEntry.value:type_name -> tutorial.ResPlayerRank + 390, // 298: tutorial.ResPlayroom.DressEntry.value:type_name -> tutorial.PlayroomDress + 293, // 299: tutorial.ResPlayroom.WeeklyDiscountEntry.value:type_name -> tutorial.WeeklyDiscountInfo + 168, // 300: tutorial.ResPlayroomInfo.ItemsEntry.value:type_name -> tutorial.ItemInfo + 168, // 301: tutorial.ResPlayroomGame.ItemsEntry.value:type_name -> tutorial.ItemInfo + 302, // [302:302] is the sub-list for method output_type + 302, // [302:302] is the sub-list for method input_type + 302, // [302:302] is the sub-list for extension type_name + 302, // [302:302] is the sub-list for extension extendee + 0, // [0:302] is the sub-list for field type_name } func init() { file_proto_Gameapi_proto_init() } @@ -30267,7 +30468,7 @@ func file_proto_Gameapi_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_proto_Gameapi_proto_rawDesc), len(file_proto_Gameapi_proto_rawDesc)), NumEnums: 12, - NumMessages: 541, + NumMessages: 544, NumExtensions: 0, NumServices: 0, },