diff --git a/.gitignore b/.gitignore index e65e11c5..66d65180 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,7 @@ 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 +src/server/test/logs/* +src/server/test/teLog/* diff --git a/src/server/GoUtil/sliceUtil.go b/src/server/GoUtil/sliceUtil.go index 194db286..be29b52d 100644 --- a/src/server/GoUtil/sliceUtil.go +++ b/src/server/GoUtil/sliceUtil.go @@ -9,6 +9,18 @@ import ( "strings" ) +func IntSlice(d interface{}) []int { + if d == nil { + return []int{} + } + + // Type assertion with safety check + result, ok := d.([]int) + if !ok { + return []int{} + } + return result +} func IntToInt32(d []int) []int32 { r := make([]int32, 0, len(d)) for _, d := range d { diff --git a/src/server/benchmark_test.go b/src/server/benchmark_test.go index 8f6defb1..dfc02b0f 100644 --- a/src/server/benchmark_test.go +++ b/src/server/benchmark_test.go @@ -50,6 +50,44 @@ func BenchmarkGame(b *testing.B) { printMemUsage() } } + +func BenchmarkLog(b *testing.B) { + runtime.GOMAXPROCS(2) + t := game.G_getGameLogic() + for i := 0; i < 10000; i++ { + t.AddLog(&game.Log{ + EventName: "test_log", + Param: map[string]interface{}{ + "test_key": "test_value", + }, + }) + } + t.MLogManager.Close() +} + +func BenchmarkLog2(b *testing.B) { + // 准备耗时但不需要计入基准的初始化 + runtime.GOMAXPROCS(2) + // 假设有个函数 NewGameLogicForBenchmark() 创建全新、独立的对象 + b.ReportAllocs() + for i := 0; i < b.N; i++ { + // 每次迭代创建独立对象,避免副作用 + t := game.G_getGameLogic() + b.StartTimer() + // 被测操作:向日志管理器添加 1000 条日志 + for j := 0; j < 1000; j++ { + t.AddLog(&game.Log{ + EventName: "test_log", + Param: map[string]interface{}{ + "test_key": "test_value", + }, + }) + } + b.StopTimer() + t.MLogManager.Close() + } +} + func printMemUsage() { var m runtime.MemStats runtime.ReadMemStats(&m) 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/catnip/CatnipCfg.go b/src/server/conf/catnip/CatnipCfg.go index 7d44a585..ff388e17 100644 --- a/src/server/conf/catnip/CatnipCfg.go +++ b/src/server/conf/catnip/CatnipCfg.go @@ -34,10 +34,26 @@ func GetGameNum(Id int) int { return gamedata.GetIntValue(data, "PassNum") } -func GetJackpotItem(Mul int) (int, []*item.Item, int) { +func GetGameMaxProgress(Id int) int { + TemplateId := GetTemplateId(Id) + data, err := gamedata.GetData(CATNIP_GAME_CFG_NAME) + if err != nil { + return 0 + } + MaxProgress := 0 + for _, v := range data { + if gamedata.GetIntValue(v, "Template") != TemplateId { + continue + } + MaxProgress = max(MaxProgress, gamedata.GetIntValue(v, "Need")) + } + return MaxProgress +} + +func GetJackpotItem(Mul int) (int, []*item.Item, int, int) { data, err := gamedata.GetData(CATNIP_JACKPOT_CFG_NAME) if err != nil { - return 0, nil, 0 + return 0, nil, 0, 0 } JackpotType := GetJackpotType(Mul) r := make(map[int]int) @@ -48,13 +64,13 @@ func GetJackpotItem(Mul int) (int, []*item.Item, int) { } Id := GoUtil.RandMap(r) if Id == 0 { - return 0, nil, 0 + return 0, nil, 0, 0 } itemData, err := gamedata.GetDataByIntKey(CATNIP_JACKPOT_CFG_NAME, Id) if err != nil { - return 0, nil, 0 + return 0, nil, 0, 0 } - return Id, gamedata.GetItemList(itemData, "Items"), gamedata.GetIntValue(itemData, "Growth") + return Id, gamedata.GetItemList(itemData, "Items"), gamedata.GetIntValue(itemData, "Growth"), gamedata.GetIntValue(itemData, "FriendItems") } func GetJackpotType(Mul int) int { @@ -78,19 +94,22 @@ func GetTemplateId(Id int) int { return gamedata.GetIntValue(data, "Template") } -func GetProgressReward(Id int, Progress int) []*item.Item { +func GetProgressReward(Id int, Rewards []int, Progress int) ([]*item.Item, []int) { TemplateId := GetTemplateId(Id) - data, err := gamedata.GetDataByIntKey(CATNIP_GAME_CFG_NAME, Id) + data, err := gamedata.GetData(CATNIP_GAME_CFG_NAME) if err != nil { - return nil + return nil, nil } - - for _, v := range data { - if gamedata.GetIntValue(v, "Need") == Progress && gamedata.GetIntValue(v, "Template") == TemplateId { - return gamedata.GetItemList(v, "Items") + Items := []*item.Item{} + Ids := []int{} + for k, v := range data { + Id := GoUtil.Int(k) + if !GoUtil.InArray(Id, Rewards) && gamedata.GetIntValue(v, "Need") < Progress && gamedata.GetIntValue(v, "Template") == TemplateId { + Items = append(Items, gamedata.GetItemList(v, "Items")...) + Ids = append(Ids, GoUtil.Int(k)) } } - return nil + return Items, Ids } func GetItemCost(Id, Mul int) []*item.Item { 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/decorate/DecorateCfg.go b/src/server/conf/decorate/DecorateCfg.go index e1c5d707..41ffefb3 100644 --- a/src/server/conf/decorate/DecorateCfg.go +++ b/src/server/conf/decorate/DecorateCfg.go @@ -109,6 +109,15 @@ func GetDecoarteReward(Scene int, Lv int) []*item.Item { return nil } +func GetAreaReward(AreaId int) []*item.Item { + value, err := gamedata.GetDataByIntKey(DECORATE_AREA, AreaId) + if err != nil { + log.Debug("IndoorProgress GetDecoarteReward not found") + return nil + } + return gamedata.GetItemList(value, "Items") +} + // 获取一键装饰的解锁等级 func GetOneKeyDecorateUnlockLv() int { data, err := gamedata.GetDataByKey(DECORATE_CONST, "OneKey") diff --git a/src/server/conf/json.go b/src/server/conf/json.go index 471018f0..aabca98f 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 @@ -63,7 +64,7 @@ var Server struct { func init() { filePath := "conf/server.json" if len(os.Args) == 2 { - if os.Args[1] != "" { + if os.Args[1] != "" && os.Args[1][0] != '-' { filePath = os.Args[1] } } 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/mergeData/MergeDataCfg.go b/src/server/conf/mergeData/MergeDataCfg.go index b9f6da87..ae3c8220 100644 --- a/src/server/conf/mergeData/MergeDataCfg.go +++ b/src/server/conf/mergeData/MergeDataCfg.go @@ -11,11 +11,9 @@ import ( ) const ( - CFG_NAME = "MergeData" - CONST_NAME = "MergeDataConst" - CFG_MERGE_EMIT = "MergeDataEmit" - CFG_MERGE_EMIT_TYPE = "MergeDataEmitType" - CFG_MERGE_COLOR = "MergeDataColor" + CFG_NAME = "MergeData" + CONST_NAME = "MergeDataConst" + CFG_MERGE_EMIT = "MergeDataEmit" // 棋子类型 CHESS_PRODUCT_MAIN_TYPE = 1 // 主产物 @@ -27,17 +25,6 @@ func init() { gamedata.InitCfg(CFG_NAME) gamedata.InitCfg(CONST_NAME) gamedata.InitCfg(CFG_MERGE_EMIT) - gamedata.InitCfg(CFG_MERGE_EMIT_TYPE) - gamedata.InitCfg(CFG_MERGE_COLOR) -} - -func GetEmitTypeProduce(EmitType string) []string { - data, err := gamedata.GetDataByKey(CFG_MERGE_EMIT_TYPE, EmitType) - if err != nil { - // log.Debug("GetEmitTypeProduce GetOne EmitType:%s not found", EmitType) - return []string{} - } - return strings.Split(gamedata.GetStringValue(data, "Produce"), ",") } func GetEmitTypeByColor(Color string) string { @@ -91,6 +78,7 @@ func GetOne(Id int) (*gamedata.MergeDataRecord, error) { Type: gamedata.ParseString(data["Type"]), Emit_Product: gamedata.ParseString(data["Emit_Product"]), CoolTime: gamedata.ParseInt(data["CoolTime"]), + Emit_Type: gamedata.ParseString(data["Emit_Type"]), }, nil } @@ -428,7 +416,7 @@ func DynamicLevRev(Lv int, EmitId int, Color string) int { func DynamicLev(Lv int, EmitId int, Color string) int { data, err := gamedata.GetDataByIntKey(CFG_NAME, EmitId) if err != nil { - log.Debug("DynamicLev GetOne EmitId:%v not found", EmitId) + //log.Debug("DynamicLev GetOne EmitId:%v not found", EmitId) return Lv } DynamicLv := gamedata.GetStringValue(data, "Dynamic") @@ -451,7 +439,7 @@ func DynamicLev(Lv int, EmitId int, Color string) int { func DynamicLev2(Lv int, EmitId int, Color1 string, Color2 string) int { data, err := gamedata.GetDataByIntKey(CFG_NAME, EmitId) if err != nil { - log.Debug("DynamicLev GetOne EmitId:%v not found", EmitId) + //log.Debug("DynamicLev GetOne EmitId:%v not found", EmitId) return Lv } DynamicLv := gamedata.GetStringValue(data, "Dynamic") @@ -486,7 +474,7 @@ func DynamicLev2(Lv int, EmitId int, Color1 string, Color2 string) int { func DynamicAdjust(EmitId int, Color string, EnergyMul int) int { data, err := gamedata.GetDataByIntKey(CFG_NAME, EmitId) if err != nil { - log.Debug("DynamicLev GetOne EmitId:%v not found", EmitId) + //log.Debug("DynamicLev GetOne EmitId:%v not found", EmitId) return 0 } DynamicLv := "" @@ -521,7 +509,7 @@ func DynamicAdjust(EmitId int, Color string, EnergyMul int) int { func GetAdjust(EmitId int, Color string, EnergyMul int) int { data, err := gamedata.GetDataByIntKey(CFG_NAME, EmitId) if err != nil { - log.Debug("DynamicLev GetOne EmitId:%v not found", EmitId) + //log.Debug("DynamicLev GetOne EmitId:%v not found", EmitId) return 0 } AdjustLv := "" @@ -591,24 +579,6 @@ func getColorProb(Emit_List string, Color string) float64 { return Prob } -func GetColorType(Color string) int { - data, err := gamedata.GetDataByKey(CFG_MERGE_COLOR, Color) - if err != nil { - log.Debug("GetColorType GetOne Color:%s not found", Color) - return 0 - } - Type := gamedata.GetStringValue(data, "Type") - switch Type { - case "main": - return CHESS_PRODUCT_MAIN_TYPE - case "secondary": - return CHESS_PRODUCT_SECONDARY_TYPE - case "sub": - return CHESS_PRODUCT_SUB_TYPE - } - return CHESS_PRODUCT_MAIN_TYPE -} - func GetMergeStar(MergeList []int) int { Star := 0 for _, v := range MergeList { 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..11cab5eb 100644 --- a/src/server/game/ActivityFunc.go +++ b/src/server/game/ActivityFunc.go @@ -1,8 +1,10 @@ package game import ( + "fmt" "server/GoUtil" activityCfg "server/conf/activity" + catnipCfg "server/conf/catnip" guesscolorCfg "server/conf/guessColor" itemCfg "server/conf/item" mailCfg "server/conf/mail" @@ -16,10 +18,10 @@ import ( ) // 活动模块 登录 -func ActivityLogin(p *Player) { +func (p *Player) ActivityLogin() { ItemMod := p.PlayMod.getItemMod() // 挖矿 - ActivityId := GetActivityId(p, activity.ACT_TYPE_MINING) + ActivityId := p.GetActivityId(activity.ACT_TYPE_MINING) MiningMod := p.PlayMod.getMiningMod() OldId := MiningMod.Login(ActivityId) if OldId != 0 { @@ -27,11 +29,11 @@ func ActivityLogin(p *Player) { ItemNum := ItemMod.GetItem(ItemId) if ItemNum != 0 { ItemMod.AddItem(ItemId, -ItemNum) - SendActivityMail(p, ItemId, ItemNum, ActivityId, nil) + p.SendActivityMail(ItemId, ItemNum, ActivityId, nil) } } // 猜颜色 - ActivityId = GetActivityId(p, activity.ACT_TYPE_GUESS_COLOR) + ActivityId = p.GetActivityId(activity.ACT_TYPE_GUESS_COLOR) GuessColorMod := p.PlayMod.getGuessColorMod() OldId = GuessColorMod.Login(ActivityId) if OldId != 0 { @@ -39,12 +41,12 @@ func ActivityLogin(p *Player) { ItemNum := ItemMod.GetItem(ItemId) if ItemNum != 0 { ItemMod.AddItem(ItemId, -ItemNum) - SendActivityMail(p, ItemId, ItemNum, ActivityId, nil) + p.SendActivityMail(ItemId, ItemNum, ActivityId, nil) } } // 赛跑 - ActivityId = GetActivityId(p, activity.ACT_TYPE_RACE) + ActivityId = p.GetActivityId(activity.ACT_TYPE_RACE) RaceMod := p.PlayMod.getRaceMod() OldId = RaceMod.Login(ActivityId) if OldId != 0 { @@ -52,12 +54,19 @@ func ActivityLogin(p *Player) { ItemNum := ItemMod.GetItem(ItemId) if ItemNum != 0 { ItemMod.AddItem(ItemId, -ItemNum) - SendActivityMail(p, ItemId, ItemNum, ActivityId, nil) + p.SendActivityMail(ItemId, ItemNum, ActivityId, nil) } } + // 猫草大作战 + ActivityId = p.GetActivityId(activity.ACT_TYPE_CATNIP) + CatnipMod := p.PlayMod.getCatnipMod() + OldId = CatnipMod.Login(ActivityId) + if OldId != 0 { + // 清空猫草大作战数据无需发邮件 + } // 通行证 - ActivityId = GetActivityId(p, activity.ACT_TYPE_PASS) + ActivityId = p.GetActivityId(activity.ACT_TYPE_PASS) PassMod := p.PlayMod.getPassMod() OldId = PassMod.Login(ActivityId) if OldId != 0 { @@ -66,12 +75,13 @@ func ActivityLogin(p *Player) { RewardItems, _ := PassMod.GetRewardItems() if ItemNum != 0 { ItemMod.AddItem(ItemId, -ItemNum) - SendActivityMail(p, ItemId, ItemNum, ActivityId, RewardItems) + p.SendActivityMail(ItemId, ItemNum, ActivityId, RewardItems) } } } -func SendActivityMail(p *Player, ItemId, ItemNum, ActivityId int, RewardItems []*item.Item) { +// 发送活动邮件 +func (p *Player) SendActivityMail(ItemId, ItemNum, ActivityId int, RewardItems []*item.Item) { MailMod := p.PlayMod.getMailMod() ItemName, ItemNameEn := itemCfg.GetItemName(ItemId) ActivityTitle, ActivityTitleEn := activityCfg.GetActivityTitle(ActivityId) @@ -82,26 +92,37 @@ func SendActivityMail(p *Player, ItemId, ItemNum, ActivityId int, RewardItems [] } // 活动模块 零点更新 -func ActivityZeroUpdate(p *Player) { - ActivityLogin(p) - ActivityInfo := GetActivityInfo(p, activity.ACT_TYPE_MINING) +func (p *Player) ActivityZeroUpdate() { + p.ActivityLogin() + ActivityInfo := p.GetActivityInfo(activity.ACT_TYPE_MINING) if ActivityInfo != nil { MiningMod := p.PlayMod.getMiningMod() MiningMod.ZeroUpdate(ActivityInfo.Id) } - ActivityInfo = GetActivityInfo(p, activity.ACT_TYPE_GUESS_COLOR) + ActivityInfo = p.GetActivityInfo(activity.ACT_TYPE_GUESS_COLOR) if ActivityInfo != nil { GuessColorMod := p.PlayMod.getGuessColorMod() GuessColorMod.ZeroUpdate(ActivityInfo.Id) } - ActivityInfo = GetActivityInfo(p, activity.ACT_TYPE_RACE) + ActivityInfo = p.GetActivityInfo(activity.ACT_TYPE_RACE) if ActivityInfo != nil { RaceMod := p.PlayMod.getRaceMod() RaceMod.ZeroUpdate(ActivityInfo.Id) } + ActivityInfo = p.GetActivityInfo(activity.ACT_TYPE_PASS) + if ActivityInfo != nil { + PassMod := p.PlayMod.getPassMod() + PassMod.ZeroUpdate(ActivityInfo.Id) + } + ActivityInfo = p.GetActivityInfo(activity.ACT_TYPE_CATNIP) + if ActivityInfo != nil { + CatnipMod := p.PlayMod.getCatnipMod() + CatnipMod.ZeroUpdate(ActivityInfo.Id) + } } -func GetActivityInfo(p *Player, actType int) *ActivityInfo { +// 获取活动信息 +func (p *Player) GetActivityInfo(actType int) *ActivityInfo { for _, v := range p.activity { if v.Type == actType { return v @@ -110,7 +131,8 @@ func GetActivityInfo(p *Player, actType int) *ActivityInfo { return nil } -func GetActivityId(p *Player, actType int) int { +// 获取活动ID +func (p *Player) GetActivityId(actType int) int { for _, v := range p.activity { if v.Type == actType { return v.Id @@ -119,7 +141,8 @@ func GetActivityId(p *Player, actType int) int { return 0 } -func GetActivityInfoById(p *Player, Id int) *ActivityInfo { +// 根据活动ID获取活动信息 +func (p *Player) GetActivityInfoById(Id int) *ActivityInfo { for _, v := range p.activity { if v.Id == Id { return v @@ -128,8 +151,9 @@ func GetActivityInfoById(p *Player, Id int) *ActivityInfo { return nil } -func GetActivityStatus(p *Player, actType int) int { - ActivityInfo := GetActivityInfo(p, actType) +// 获取活动状态 +func (p *Player) GetActivityStatus(actType int) int { + ActivityInfo := p.GetActivityInfo(actType) if ActivityInfo == nil { return ACT_STATUS_NOT_START } @@ -143,12 +167,13 @@ func GetActivityStatus(p *Player, actType int) int { return ACT_STATUS_START } -func MiningBackData(p *Player) { - ActivityInfo := GetActivityInfo(p, activity.ACT_TYPE_MINING) +// 挖矿活动数据返回 +func (p *Player) MiningBackData() { + ActivityInfo := p.GetActivityInfo(activity.ACT_TYPE_MINING) if ActivityInfo == nil { return } - Status := GetActivityStatus(p, activity.ACT_TYPE_MINING) + Status := p.GetActivityStatus(activity.ACT_TYPE_MINING) Template := miningCfg.GetTemplate(ActivityInfo.Id) MiningMod := p.PlayMod.getMiningMod() p.PushClientRes(&msg.ResMining{ @@ -163,13 +188,14 @@ func MiningBackData(p *Player) { }) } -func GuessColorBackData(p *Player) { - ActivityInfo := GetActivityInfo(p, activity.ACT_TYPE_GUESS_COLOR) +// 猜颜色活动数据返回 +func (p *Player) GuessColorBackData() { + ActivityInfo := p.GetActivityInfo(activity.ACT_TYPE_GUESS_COLOR) if ActivityInfo == nil { return } - Status := GetActivityStatus(p, activity.ACT_TYPE_GUESS_COLOR) + Status := p.GetActivityStatus(activity.ACT_TYPE_GUESS_COLOR) GuessColorMod := p.PlayMod.getGuessColorMod() MapList := make([]*msg.GuessColorInfo, 0) for _, v := range GuessColorMod.MapList { @@ -194,12 +220,13 @@ func GuessColorBackData(p *Player) { }) } -func RaceBackData(p *Player) { - ActivityInfo := GetActivityInfo(p, activity.ACT_TYPE_RACE) +// 赛跑活动数据返回 +func (p *Player) RaceBackData() { + ActivityInfo := p.GetActivityInfo(activity.ACT_TYPE_RACE) if ActivityInfo == nil { return } - Status := GetActivityStatus(p, activity.ACT_TYPE_RACE) + Status := p.GetActivityStatus(activity.ACT_TYPE_RACE) RaceMod := p.PlayMod.getRaceMod() Opponent := make([]*msg.Raceopponent, 0) for _, v := range RaceMod.Opponent { @@ -224,7 +251,8 @@ func RaceBackData(p *Player) { }) } -func RedBackData(p *Player) { +// 红点数据返回 +func (p *Player) RedBackData() { result := make(map[int32]int32) Now := GoUtil.Now() for _, v := range p.activity { @@ -235,12 +263,13 @@ func RedBackData(p *Player) { p.PushClientRes(&msg.ResActRed{Red: result}) } -func ActPassBackData(p *Player) { - ActivityInfo := GetActivityInfo(p, activity.ACT_TYPE_PASS) +// 通行证活动数据返回 +func (p *Player) ActPassBackData() { + ActivityInfo := p.GetActivityInfo(activity.ACT_TYPE_PASS) if ActivityInfo == nil { return } - Status := GetActivityStatus(p, activity.ACT_TYPE_PASS) + Status := p.GetActivityStatus(activity.ACT_TYPE_PASS) Template := passCfg.GetTemplate(ActivityInfo.Id) PassMod := p.PlayMod.getPassMod() p.PushClientRes(&msg.ResActPass{ @@ -255,11 +284,12 @@ func ActPassBackData(p *Player) { }) } -func GetActivityItem(p *Player, ActType []int) []*item.Item { +// 获取活动道具 +func (p *Player) GetActivityItem(ActType []int) []*item.Item { Items := make([]*item.Item, 0) for _, v := range ActType { - Status := GetActivityStatus(p, v) - ActivityInfo := GetActivityInfo(p, v) + Status := p.GetActivityStatus(v) + ActivityInfo := p.GetActivityInfo(v) if ActivityInfo == nil { continue } @@ -286,18 +316,27 @@ func GetActivityItem(p *Player, ActType []int) []*item.Item { return Items } +// 猫草大作战活动数据返回 func (p *Player) CatnipBackData() { + ActivityInfo := p.GetActivityInfo(activity.ACT_TYPE_PASS) + if ActivityInfo == nil { + return + } CatnipMod := p.PlayMod.getCatnipMod() - Status := GetActivityStatus(p, activity.ACT_TYPE_CATNIP) + Status := p.GetActivityStatus(activity.ACT_TYPE_CATNIP) if CatnipMod == nil { return } + FriendMod := p.PlayMod.getFriendMod() GameList := make([]*msg.CatnipGame, 0) for _, v := range CatnipMod.Game { GameInfo := &msg.CatnipGame{ - Id: int32(v.Id), - Progress: int32(v.Progress), - Status: int32(v.Status), + Id: int32(v.Id), + Progress: int32(v.Progress), + Status: int32(v.Status), + Reward: GoUtil.SliceIntToInt32(v.Reward), + Emoji: int32(v.EmojiId), + FriendProgress: int32(v.PartnerAdd), } if v.Partner != 0 { PlayerData := G_getGameLogic().GetResSimplePlayerByUid(v.Partner) @@ -305,18 +344,67 @@ func (p *Player) CatnipBackData() { GameInfo.Partner = PlayerData } } + GameList = append(GameList, GameInfo) } + tmpData := make(map[int]*msg.CatnipInvite) + InviteList := make([]*msg.CatnipInvite, 0) + for Uid, Info := range CatnipMod.InviteList { + tmpData[Uid] = &msg.CatnipInvite{ + Uid: int64(Uid), + Time: Info.Time, + Type: 1, + } + } + for Uid, Info := range CatnipMod.BeInvitedList { + tmpData[Uid] = &msg.CatnipInvite{ + Uid: int64(Uid), + Time: Info.Time, + Type: 2, + } + } + + for Uid := range FriendMod.NewFriendList { + key := fmt.Sprintf("catnip_partner_%d", Uid) + Var := G_GameLogicPtr.VarMgr.GetExpireVar(key) + if len(GoUtil.IntSlice(Var.D)) >= 4 { + tmpData[Uid] = &msg.CatnipInvite{ + Uid: int64(Uid), + Type: 3, + } + continue + } + if _, ok := tmpData[Uid]; !ok { + tmpData[Uid] = &msg.CatnipInvite{ + Uid: int64(Uid), + Type: 0, + } + } + } + for _, v := range tmpData { + ResPlayerSimple := G_getGameLogic().GetResSimplePlayerByUid(int(v.Uid)) + if ResPlayerSimple != nil { + v.Player = ResPlayerSimple + } + InviteList = append(InviteList, v) + } + + Template := catnipCfg.GetTemplateId(CatnipMod.Id) res := &msg.ResCatnip{ - Id: int32(CatnipMod.Id), - Status: int32(Status), - GameList: GameList, + Id: int32(CatnipMod.Id), + EndTime: int32(ActivityInfo.EndT), + Status: int32(Status), + Template: int32(Template), + GameList: GameList, + Multiply: int32(CatnipMod.Mul), + FriendList: InviteList, } p.PushClientRes(res) } +// 设置猫草大作战游戏锁 func (p *Player) SetCatnipGameLock(Uid int, GameId int) error { - ActivityInfo := GetActivityInfoById(p, activity.ACT_TYPE_CATNIP) + ActivityInfo := p.GetActivityInfoById(activity.ACT_TYPE_CATNIP) return G_GameLogicPtr.SetDataSync(int(p.M_DwUin), VAR_OP_CATNIP_LOCK, CatnipLock{ Uid: int(p.M_DwUin), Partner: Uid, diff --git a/src/server/game/ChargeFunc.go b/src/server/game/ChargeFunc.go index fff89eb1..b6223dc9 100644 --- a/src/server/game/ChargeFunc.go +++ b/src/server/game/ChargeFunc.go @@ -1,32 +1,40 @@ package game import ( + "encoding/json" + "fmt" + "os/exec" "server/GoUtil" + "server/MergeConst" + "server/conf" activityCfg "server/conf/activity" + chargeCfg "server/conf/charge" passCfg "server/conf/pass" + "server/db" "server/game/mod/activity" "server/game/mod/item" MsgMod "server/game/mod/msg" "server/game/mod/piggyBank" "server/game/mod/quest" - "server/msg" + proto "server/msg" "server/pkg/github.com/name5566/leaf/log" + "strings" ) -func Charge(p *Player, ChargeId int) { - ChargeFire(p, ChargeId) // 充值 - EndlessFire(p, ChargeId) // 无尽礼包 - PiggyBankFire(p, ChargeId) // 猪猪银行 - PlayroomFire(p, ChargeId) // 游乐场 - ActivityFire(p, ChargeId) // 活动礼包 - ADPetWorkFire(p, ChargeId) // 广告宠物工作 - PassFire(p, ChargeId) +func (p *Player) Charge(ChargeId int) { + p.ChargeFire(ChargeId) // 充值 + p.EndlessFire(ChargeId) // 无尽礼包 + p.PiggyBankFire(ChargeId) // 猪猪银行 + p.PlayroomFire(ChargeId) // 游乐场 + p.ActivityFire(ChargeId) // 活动礼包 + p.ADPetWorkFire(ChargeId) // 广告宠物工作 + p.PassFire(ChargeId) OrderMod := p.PlayMod.getOrderMod() OrderMod.SetIsCharge() // 设置订单模块为充值状态 p.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_PURCHASE, A: []interface{}{}}) } -func SendCharge(p *Player, d *ChargeExtra) { +func (p *Player) SendCharge(d *ChargeExtra) { G_GameLogicPtr.FriendMgrSend(&MsgMod.Msg{ From: int(p.M_DwUin), Type: MsgMod.HANDLE_TYPE_SEND_CHARGE, @@ -36,24 +44,24 @@ func SendCharge(p *Player, d *ChargeExtra) { }) } -func ADPetWorkFire(p *Player, ChargeId int) { +func (p *Player) ADPetWorkFire(ChargeId int) { ChargeMod := p.PlayMod.getChargeMod() Item := ChargeMod.FireAdReward(ChargeId) if Item != nil { - err := p.HandleItem(Item, msg.ITEM_POP_LABEL_ActivityGift.String()) + err := p.HandleItem(Item, proto.ITEM_POP_LABEL_ActivityGift.String()) if err != nil { log.Debug("ChargeFire err : %s", err) return } } p.PlayMod.save() - p.PushClientRes(ChargeMod.BackData()) + p.ChargeBackData() } -func ActivityFire(p *Player, ChargeId int) { +func (p *Player) ActivityFire(ChargeId int) { ActivityMod := p.PlayMod.getActivityMod() ActivityId := activityCfg.GetActivityGiftId(ChargeId) - ActivityInfo := GetActivityInfoById(p, ActivityId) + ActivityInfo := p.GetActivityInfoById(ActivityId) if ActivityInfo == nil { log.Debug("ActivityFire ActivityInfo nil : player id :%d, charge id:%d", p.M_DwUin, ChargeId) return @@ -66,7 +74,7 @@ func ActivityFire(p *Player, ChargeId int) { if Item == nil { return } - err = p.HandleItem(Item, msg.ITEM_POP_LABEL_ActivityGift.String()) + err = p.HandleItem(Item, proto.ITEM_POP_LABEL_ActivityGift.String()) if err != nil { log.Debug("ChargeFire err : %s", err) return @@ -76,12 +84,12 @@ func ActivityFire(p *Player, ChargeId int) { p.BackDataActivity() } -func PassFire(p *Player, ChargeId int) { - ActivityStatus := GetActivityStatus(p, activity.ACT_TYPE_PASS) +func (p *Player) PassFire(ChargeId int) { + ActivityStatus := p.GetActivityStatus(activity.ACT_TYPE_PASS) if ActivityStatus != ACT_STATUS_START { return } - ActivityInfo := GetActivityInfo(p, activity.ACT_TYPE_PASS) + ActivityInfo := p.GetActivityInfo(activity.ACT_TYPE_PASS) if ActivityInfo == nil { return } @@ -98,7 +106,7 @@ func PassFire(p *Player, ChargeId int) { if len(Items) == 0 { return } - err := p.HandleItem(Items, msg.ITEM_POP_LABEL_PassCharge.String()) + err := p.HandleItem(Items, proto.ITEM_POP_LABEL_PassCharge.String()) if err != nil { log.Debug("PassFire err : %s", err) return @@ -106,13 +114,13 @@ func PassFire(p *Player, ChargeId int) { p.PlayMod.save() } -func PlayroomFire(p *Player, ChargeId int) { +func (p *Player) PlayroomFire(ChargeId int) { PlayroomMod := p.PlayMod.getPlayroomMod() Item := PlayroomMod.Fire(ChargeId) if Item == nil { return } - err := p.HandleItem(Item, msg.ITEM_POP_LABEL_Playroom.String()) + err := p.HandleItem(Item, proto.ITEM_POP_LABEL_Playroom.String()) if err != nil { log.Debug("ChargeFire err : %s", err) } @@ -122,17 +130,17 @@ func PlayroomFire(p *Player, ChargeId int) { p.PlayMod.save() } -func PiggyBankFire(p *Player, ChargeId int) { +func (p *Player) PiggyBankFire(ChargeId int) { PiggyBankMod := p.PlayMod.getPiggyBankMod() Item := PiggyBankMod.Fire(ChargeId) if Item == nil { return } - err := p.HandleItem(Item, msg.ITEM_POP_LABEL_PiggyBank.String()) + err := p.HandleItem(Item, proto.ITEM_POP_LABEL_PiggyBank.String()) if err != nil { log.Debug("ChargeFire err : %s", err) } - LimitedTimePiggyBankTrigger(p) + p.LimitedTimePiggyBankTrigger() p.TeLog("piggy_bank_open", map[string]interface{}{ "piggy_bank_type": piggyBank.PIGGY_BANK_TYPE_CHARGE, "item_list": Item, @@ -143,37 +151,126 @@ func PiggyBankFire(p *Player, ChargeId int) { } // 处理玩家充值 -func ChargeFire(p *Player, ChargeId int) { +func (p *Player) ChargeFire(ChargeId int) { ChargeMod := p.PlayMod.getChargeMod() Item := ChargeMod.Fire(ChargeId) if Item == nil { return } - err := p.HandleItem(Item, msg.ITEM_POP_LABEL_Charge.String()) + err := p.HandleItem(Item, proto.ITEM_POP_LABEL_Charge.String()) if err != nil { log.Debug("ChargeFire err : %s", err) } p.PlayMod.save() - p.PushClientRes(ChargeMod.BackData()) + p.ChargeBackData() } -func ChargeItem(p *Player, ChargeId int) []*item.Item { +func (p *Player) ChargeItem(ChargeId int) []*item.Item { ChargeMod := p.PlayMod.getChargeMod() Item := ChargeMod.Fire(ChargeId) return Item } // 处理玩家充值 -func EndlessFire(p *Player, ChargeId int) { +func (p *Player) EndlessFire(ChargeId int) { EndlessMod := p.PlayMod.getEndlessMod() Item := EndlessMod.Fire(ChargeId) if Item == nil { return } - err := p.HandleItem(Item, msg.ITEM_POP_LABEL_Endless.String()) + err := p.HandleItem(Item, proto.ITEM_POP_LABEL_Endless.String()) if err != nil { log.Debug("ChargeFire err : %s", err) } p.PlayMod.save() p.PushClientRes(EndlessMod.BackData()) } + +// 创建订单 +func (p *Player) CreateOrderSn(req *proto.ReqCreateOrderSn) (string, error) { + Uid := int(p.M_DwUin) + OrderSn := GoUtil.CreateOrderSn(Uid) + + Price, Currency := chargeCfg.GetChargeInfo(int(req.ChargeId)) + Extra := &ChargeExtra{ + Type: int(req.Type), + Uid: req.Uid, + } + ExtraData, _ := json.Marshal(Extra) + err := db.CreateOrderSn(Uid, int(req.ChargeId), OrderSn, req.PlatForm, req.Channel, Price, Currency, string(ExtraData)) + if err != nil { + return "", err + } + return OrderSn, nil +} + +func (p *Player) GoogleVerify(OrderSn, ProduceId, Token string) (*db.SqlChargeOrderStruct, error) { + Order, err := db.GetPlayerChargeData(OrderSn) + if err != nil { + return nil, err + } + if Order.PayStatus == MergeConst.ORDER_STATUS_SHIP { + return nil, fmt.Errorf("订单已经发货") + } + if !conf.Server.GoogleVerify { + Order.PayStatus = MergeConst.ORDER_STATUS_PAY + return Order, nil + } + if Order.PayStatus != MergeConst.ORDER_STATUS_IDLE { + return nil, fmt.Errorf("订单已经支付") + } + cmd := exec.Command(conf.Server.AppPath+"/script/verifyOrder", ProduceId, Token) + + // 获取命令的输出 + output, err := cmd.Output() + if err != nil { + return nil, err + } + // 将输出转换为字符串 + outputStr := string(output) + + // 替换单引号为双引号 + outputStr = strings.Replace(outputStr, "'", "\"", -1) + type VerifyData struct { + PurchaseState int `json:"purchaseState"` + DeveloperPayload string `json:"developerPayload"` + OrderId string `json:"orderId"` + ConsumptionState int `json:"consumptionState"` + } + r := &VerifyData{} + err = json.Unmarshal([]byte(outputStr), &r) + if err != nil { + log.Debug("output %s", string(output)) + return nil, err + } + _, err = db.GetPlayerPayChannelOrderId(r.OrderId) + if err == nil { + return nil, fmt.Errorf("订单已支付发货 param: %v", r) + } + // if r.DeveloperPayload != OrderSn { + // return nil, fmt.Errorf("订单号不匹配") + // } + if r.ConsumptionState != 1 { + return nil, fmt.Errorf("订单未消费") + } + Order.PayStatus = MergeConst.ORDER_STATUS_PAY + Order.PayChannelOrderId = r.OrderId + Order.PayTime = GoUtil.Now() + return Order, nil +} + +func (p *Player) CancelOrder(OrderSn string) error { + Order, err := db.GetPlayerChargeData(OrderSn) + if err != nil { + return err + } + if Order.PayStatus != MergeConst.ORDER_STATUS_IDLE { + return fmt.Errorf("订单已支付") + } + Order.PayStatus = MergeConst.ORDER_STATUS_CANCEL + err = db.UpdatePlayerChargeData(Order) + if err != nil { + return err + } + return nil +} 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/CompensationFunc.go b/src/server/game/CompensationFunc.go index 52bfa247..80d7f96e 100644 --- a/src/server/game/CompensationFunc.go +++ b/src/server/game/CompensationFunc.go @@ -1,5 +1,6 @@ package game +// 补偿脚本 import ( "server/game/mod/compensation" "server/game/mod/mail" diff --git a/src/server/game/FriendFunc.go b/src/server/game/FriendFunc.go new file mode 100644 index 00000000..dcc1fe67 --- /dev/null +++ b/src/server/game/FriendFunc.go @@ -0,0 +1,156 @@ +package game + +import ( + "server/GoUtil" + "server/db" + "server/game/mod/msg" + "server/pkg/github.com/name5566/leaf/log" + "sort" +) + +func (p *Player) GetVisitorPlayer() int { + PlayroomMod := p.PlayMod.getPlayroomMod() + VisitorList := PlayroomMod.GetVisitor() // 到访用户 + TodayVisitedUsers := PlayroomMod.GetTodayVisitedUsers() // 今日已互动用户 + FriendMod := p.PlayMod.getFriendMod() + type sortData struct { + Uid int + Time int64 + } + PlayerList := make([]sortData, 0) + PlayerList2 := make([]sortData, 0) + Now := GoUtil.Now() + /** + 排除当日玩家已对其发起过交互的用户 + 优先选择24小时内曾经与玩家进行过宠物交互的好友 + 若存在复数对象的情况下,优先选择交互发生时间与当前时间最近的好友 + 若不存在符合条件的用户,则选择24小时内曾经与玩家进行过宠物交互的陌生用户 + 若存在复数对象的情况下,优先选择交互发生时间与当前时间最近的用户 + 若不存在符合条件的用户,则选择24小时内登入过游戏且上次登入时间与当前时间最近的好友 + 若不存在符合条件的用户,则依据以上用户推荐算法,选择一位随机推荐用户,并且在下次触发式订单完成时,不再排除已发起过交互的用户 + */ + for k, v := range VisitorList { + if GoUtil.InArray(k, TodayVisitedUsers) { + continue + } + if v.Time < Now-86400 { + continue + } + if FriendMod.CheckFriend(k) { + PlayerList = append(PlayerList, sortData{k, v.Time}) + } else { + PlayerList2 = append(PlayerList, sortData{k, v.Time}) + } + } + if len(PlayerList) != 0 { + sort.Slice(PlayerList, func(i, j int) bool { + return PlayerList[i].Time < PlayerList[j].Time + }) + return PlayerList[0].Uid + } + if len(PlayerList2) != 0 { + sort.Slice(PlayerList2, func(i, j int) bool { + return PlayerList2[i].Time < PlayerList2[j].Time + }) + return PlayerList2[0].Uid + } + // 若不存在符合条件的用户,则选择24小时内登入过游戏且上次登入时间与当前时间最近的好友 + var recentFriendUid int + var recentLoginTime int64 = 0 + for uid := range FriendMod.GetFriendList() { + if uid == int(p.M_DwUin) { + continue + } + if GoUtil.InArray(uid, TodayVisitedUsers) { + continue + } + ps := G_GameLogicPtr.GetSimplePlayerByUid(uid) + if ps == nil { + continue + } + if GoUtil.Now()-ps.Loginout > 86400 { // 24小时内登录过 + continue + } + if ps.Loginout > recentLoginTime { + recentLoginTime = ps.Loginout + recentFriendUid = uid + } + } + if recentFriendUid != 0 { + return recentFriendUid + } + PlayerList3 := G_GameLogicPtr.RankMgr.getAllRank(RANK_TYPE_USER) + PlayerList4 := make([]int, 0) + for _, v := range PlayerList3 { + if v.Uid == int(p.M_DwUin) { + continue + } + PlayerSimpleData := G_GameLogicPtr.GetSimplePlayerByUid(v.Uid) + if PlayerSimpleData.Level < 15 { + continue + } + PlayerList4 = append(PlayerList4, v.Uid) + } + L := GoUtil.RandSliceNum(PlayerList4, 1) + if len(L) == 0 { + return 0 + } + return L[0] +} + +func GetRecommendPlayer(p *Player, Num int) []int { + PlayerList := G_GameLogicPtr.RankMgr.getAllRank(RANK_TYPE_USER) + PlayerList1 := make([]int, 0) + FriendMod := p.PlayMod.getFriendMod() + for _, v := range PlayerList { + if v.Uid == int(p.M_DwUin) { + continue + } + if FriendMod.CheckSendApply(v.Uid) { + continue + } + if FriendMod.CheckFriend(v.Uid) { + continue + } + PlayerSimpleData := G_GameLogicPtr.GetSimplePlayerByUid(v.Uid) + if GoUtil.Now()-PlayerSimpleData.Loginout > 86400 { + continue + } + if PlayerSimpleData.Level < 4 { + continue + } + PlayerList1 = append(PlayerList1, v.Uid) + } + if len(PlayerList1) == 0 { + for _, v := range PlayerList { + if v.Uid == int(p.M_DwUin) { + continue + } + PlayerList1 = append(PlayerList1, v.Uid) + } + } + return GoUtil.RandSliceNum(PlayerList1, Num) +} + +func GetUidByFaceBook(Fb string) (int, error) { + sqlStr := "SELECT dwUin FROM t_player_baseinfo WHERE FaceBookId = ?" + type Result struct { + Uid int `db:"dwUin"` + } + R := Result{} + err := db.SqlDb.Get(&R, sqlStr, Fb) + log.Debug("Fb :%s;Uid :%d", Fb, R.Uid) + return R.Uid, err +} + +func NotifyAllFriend(p *Player, m1 *msg.Msg) { + m := m1.Clone() + FriendMod := p.PlayMod.getFriendMod() + for k := range FriendMod.GetFriendList() { + if k == int(p.M_DwUin) { + continue + } + m.To = k + FriendMgrSend(m) + } +} diff --git a/src/server/game/FriendMgr.go b/src/server/game/FriendMgr.go index 677de96e..5816dac1 100644 --- a/src/server/game/FriendMgr.go +++ b/src/server/game/FriendMgr.go @@ -83,6 +83,7 @@ func (f *FriendMgr) Init() { f.RegisterHandler(msg.HANDLE_TYPE_CATNIP_REFUSE, f.sendToPlayer) f.RegisterHandler(msg.HANDLE_TYPE_CATNIP_GROWTH, f.sendToPlayer) f.RegisterHandler(msg.HANDLE_TYPE_CATNIP_AGREE_DEL, f.sendToPlayer) + f.RegisterHandler(msg.HANDLE_TYPE_CATNIP_SEND_EMOJI, f.sendToPlayer) f.RegisterHandler(msg.HANDLE_TYPE_PLAYROOM_KISS, f.sendToPlayerOnline) f.RegisterHandler(msg.HANDLE_TYPE_PLAYROOM_GAME, f.sendToPlayer) @@ -91,6 +92,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 +256,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..3e13c142 100644 --- a/src/server/game/GameLogic.go +++ b/src/server/game/GameLogic.go @@ -75,7 +75,6 @@ type GameLogic struct { NotInitPlayer *Player Version int32 M_SvrGlobal db.SqlSvrGlobalStruct - MHttpManager *HttpManager SeverInfo *ServerInfo MLogManager *LogMgr // 日志管理器 @@ -287,7 +286,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 +296,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, @@ -640,7 +654,7 @@ func (ad *GameLogic) ReplaceExistPlayerAndAgent(a gate.Agent, player *Player) er if ok { Timer.Stop() } - SyncFriendMsg(player) + player.SyncFriendMsg() log.Debug("player %d 重连", player.M_DwUin) return nil } @@ -746,9 +760,9 @@ func (ad *GameLogic) RegisterNetWorkFunc() { RegisterMsgProcessFunc("ReqCreatePetOrder", ReqCreatePetOrder) // 生成消耗品订单 //装饰 - RegisterMsgProcessFunc("ReqDecorate", ReqDecorate) // 装饰 - RegisterMsgProcessFunc("ReqDecorateAll", ReqDecorateAll) // 装饰全部 - RegisterMsgProcessFunc("ReqDecorateReward", ReqDecorateReward) // 装饰全部 + RegisterMsgProcessFunc("ReqDecorate", ReqDecorate) // 装饰 + RegisterMsgProcessFunc("ReqDecorateAll", ReqDecorateAll) // 装饰全部 + RegisterMsgProcessFunc("ReqAreaReward", ReqAreaReward) // 章节奖励 //Gm命令 RegisterMsgProcessFunc("ReqGmCommand", ReqGmCommand) // Gm命令 @@ -891,6 +905,7 @@ func (ad *GameLogic) RegisterNetWorkFunc() { RegisterMsgProcessFunc("ReqCatnipPlay", ReqCatnipPlay) // 猫草大作战游戏转盘 RegisterMsgProcessFunc("ReqCatnipReward", ReqCatnipReward) // 猫草大作战领取奖励 RegisterMsgProcessFunc("ReqCatnipGrandReward", ReqCatnipGrandReward) // 猫草大作战领取大奖 + RegisterMsgProcessFunc("ReqCatnipEmoji", ReqCatnipEmoji) // 活动通行证 RegisterMsgProcessFunc("ReqActPass", ReqActPass) // 请求活动通行证数据 RegisterMsgProcessFunc("ReqActPassReward", ReqActPassReward) // 领取活动通行证奖励 @@ -933,15 +948,6 @@ func (ad *GameLogic) RegisterNetWorkFunc() { RegisterMsgProcessFunc("ReqChargeReceive", ReqChargeReceive) // 礼包回复邮件 } -func (ad *GameLogic) CreateHttpManager() { - - go func() { - ad.MHttpManager = new(HttpManager) - ad.MHttpManager.InitRounter() - }() - -} - func (ad *GameLogic) CreateLogManager() { ad.MLogManager = new(LogMgr) ad.MLogManager.InitManager() diff --git a/src/server/game/Gm.go b/src/server/game/Gm.go index d8c639c3..46c35b48 100644 --- a/src/server/game/Gm.go +++ b/src/server/game/Gm.go @@ -147,7 +147,7 @@ func ReqGmCommand_(player *Player, Command string) error { "CreateTime": GoUtil.Now(), "PayTime": GoUtil.Now(), }) - Charge(player, ChargeId) + player.Charge(ChargeId) case "AddPart": ChessMod := player.PlayMod.getChessMod() ChessMod.PartBag.List[1505] = chess.PartBagGrid{ @@ -186,7 +186,7 @@ func ReqGmCommand_(player *Player, Command string) error { AddTime: Now, } } - BackUserInfo(player) + player.BackUserInfo() case "resetFace": FaceMod := player.PlayMod.getFaceMod() FaceMod.List = nil @@ -286,25 +286,30 @@ func ReqGmCommand_(player *Player, Command string) error { case "miningReload": MiningMod := player.PlayMod.getMiningMod() MiningMod.ZeroUpdate(-1) - ActivityInfo := GetActivityInfo(player, activity.ACT_TYPE_MINING) + ActivityInfo := player.GetActivityInfo(activity.ACT_TYPE_MINING) MiningMod.ZeroUpdate(ActivityInfo.Id) - MiningBackData(player) + player.MiningBackData() + case "catnipReload": + CatnipMod := player.PlayMod.getCatnipMod() + CatnipMod.ZeroUpdate(-1) + ActivityInfo := player.GetActivityInfo(activity.ACT_TYPE_CATNIP) + CatnipMod.ZeroUpdate(ActivityInfo.Id) case "guessColorReload": GuessColorMod := player.PlayMod.getGuessColorMod() GuessColorMod.ZeroUpdate(-1) - ActivityInfo := GetActivityInfo(player, activity.ACT_TYPE_GUESS_COLOR) + ActivityInfo := player.GetActivityInfo(activity.ACT_TYPE_GUESS_COLOR) GuessColorMod.ZeroUpdate(ActivityInfo.Id) - GuessColorBackData(player) + player.GuessColorBackData() case "raceReload": RaceMod := player.PlayMod.getRaceMod() RaceMod.ZeroUpdate(-1) - ActivityInfo := GetActivityInfo(player, activity.ACT_TYPE_RACE) + ActivityInfo := player.GetActivityInfo(activity.ACT_TYPE_RACE) RaceMod.ZeroUpdate(ActivityInfo.Id) - RaceBackData(player) + player.RaceBackData() case "raceAdd": RaceMod := player.PlayMod.getRaceMod() RaceMod.AddCoin(100) - RaceBackData(player) + player.RaceBackData() case "playroomReset": PlayroomMod := playroom.PlayroomMod{} PlayroomMod.InitData() @@ -329,7 +334,7 @@ func ReqGmCommand_(player *Player, Command string) error { Part := playroomCfg.GetDressPart(v) PlayroomMod.UnlockDress(Part, v) } - PlayroomBackData(player) + player.PlayroomBackData() case "playroomAir": PlayroomMod := player.PlayMod.getPlayroomMod() PlayroomMod.NewPetAir = make(map[int]*playroom.PetAirInfo, 0) @@ -337,7 +342,7 @@ func ReqGmCommand_(player *Player, Command string) error { for _, v := range AirList { PlayroomMod.UnlockPetAir(v) } - PlayroomBackData(player) + player.PlayroomBackData() case "resetRetire": ChessMod := player.PlayMod.getChessMod() ChessMod.Retire = make(map[string]int) @@ -350,11 +355,11 @@ func ReqGmCommand_(player *Player, Command string) error { PlayroomMod := player.PlayMod.getPlayroomMod() Num, _ := strconv.Atoi(arg[1]) PlayroomMod.RoomPoint += Num - PlayroomBackData(player) + player.PlayroomBackData() case "resetPlayroomUnlock": PlayroomMod := player.PlayMod.getPlayroomMod() PlayroomMod.UnlockList = make(map[int]int64) - PlayroomBackData(player) + player.PlayroomBackData() case "addChip": PlayroomMod := player.PlayMod.getPlayroomMod() PlayroomMod.AddChip(100100001, 1, 0) @@ -376,8 +381,8 @@ func ReqGmCommand_(player *Player, Command string) error { FriendMod.Id = 0 FriendMod.Log = make([]*friend.LogInfo, 0) FriendMod.InitData() - FriendListBackData(player) - FriendLogBackData(player) + player.FriendListBackData() + player.FriendLogBackData() case "addFriend": FriendMod := player.PlayMod.getFriendMod() Uid, _ := strconv.Atoi(arg[1]) @@ -403,7 +408,7 @@ func ReqGmCommand_(player *Player, Command string) error { case "comfortOrder": BaseMod := player.PlayMod.getBaseMod() BaseMod.LogoutTime = GoUtil.Now() - 7*86400 - TriggerComfortOrder(player) + player.TriggerComfortOrder() player.PushClientRes(player.PlayMod.getOrderMod().BackData()) case "resetGuide": GuildMod := player.PlayMod.getGuideMod() @@ -479,7 +484,7 @@ func ReqGmCommand_(player *Player, Command string) error { case "resetNpc": FriendMod := player.PlayMod.getFriendMod() FriendMod.Npc = []int{} - FriendListBackData(player) + player.FriendListBackData() case "recoverUser": file, err := os.OpenFile(conf.Server.GameConfPath+"user.info", os.O_RDWR|os.O_CREATE, 0666) if err != nil { @@ -543,14 +548,14 @@ 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) + player.PlayroomBackData() case "resetCode": BaseMod := player.PlayMod.getBaseMod() BaseMod.AddCode = fmt.Sprintf("MMM-%s-%s", "156", GoUtil.UniqueStringFromInt(int(BaseMod.Uid))) - BackUserInfo(player) + player.BackUserInfo() default: return fmt.Errorf("Player %d ReqGmCommand:%v not found", player.M_DwUin, arg) } diff --git a/src/server/game/HttpSvr.go b/src/server/game/HttpSvr.go deleted file mode 100644 index 205379df..00000000 --- a/src/server/game/HttpSvr.go +++ /dev/null @@ -1,60 +0,0 @@ -package game - -import ( - "fmt" - "net/http" - "server/conf" - - // "server/msg" - - "github.com/gorilla/mux" -) - -type HttpManager struct { - Rounter *mux.Router -} - -func (p *HttpManager) InitRounter() { - p.Rounter = mux.NewRouter() - p.InitFriendRouter() - p.InitPlayerProfileInfo() - http.ListenAndServe(conf.Server.HttpPort, p.Rounter) -} - -func (p *HttpManager) InitFriendRouter() { - bs := p.Rounter.PathPrefix("/Friend").Subrouter() - bs.HandleFunc("/Add/{SenderId}/{ReceiveId}", p.AddFriend) - bs.HandleFunc("/Del/{SenderId}/{ReceiveId}", p.DeleteFriend) -} - -func (p *HttpManager) InitPlayerProfileInfo() { - bs := p.Rounter.PathPrefix("/Profile").Subrouter() - bs.HandleFunc("/GetBrief/{Id}", p.GetPlayerProfileInfo) -} - -func (p *HttpManager) GetPlayerProfileInfo(w http.ResponseWriter, r *http.Request) { - -} - -func (p *HttpManager) AddFriend(w http.ResponseWriter, r *http.Request) { - vars := mux.Vars(r) - SenderId, ok := vars["SenderId"] - if ok { - fmt.Println("AddFreind SenderId:" + SenderId) - } - - ReceiveId, ok1 := vars["ReceiveId"] - if ok1 { - fmt.Println("AddFreind ReceiveId:" + ReceiveId) - } -} - -func (p *HttpManager) DeleteFriend(w http.ResponseWriter, r *http.Request) { - vars := mux.Vars(r) - id, ok := vars["id"] - if !ok { - fmt.Println("id is missing in parameters") - } - fmt.Println(`id := `, id) - -} diff --git a/src/server/game/LimitedTimeTrigger.go b/src/server/game/LimitedTimeTrigger.go index 52c2bd27..6dd6cf8d 100644 --- a/src/server/game/LimitedTimeTrigger.go +++ b/src/server/game/LimitedTimeTrigger.go @@ -16,7 +16,7 @@ import ( ) // 限时事件触发器 -func LimitedTimeEventTrigger(p *Player, AddEventId int) { +func (p *Player) LimitedTimeEventTrigger(AddEventId int) { Lv := p.GetPlayerBaseMod().GetLevel() EndTime, TimeoutEvent, AddEvent := p.PlayMod.getLimitedTimeEventMod().Trigger(Lv) remainingTime := GoUtil.NextHourRemain() @@ -28,7 +28,7 @@ func LimitedTimeEventTrigger(p *Player, AddEventId int) { p.CallEvent(time.Duration(EndTime)*time.Second, func() { p.lock.Lock() defer p.lock.Unlock() - LimitedTimeEventTrigger(p, 0) + p.LimitedTimeEventTrigger(0) p.SendClientRes() }, "LimitedTimeEvent") } @@ -62,7 +62,7 @@ func LimitedTimeEventTrigger(p *Player, AddEventId int) { p.PlayMod.getCardMod().ResetCardFestival() case limitedTimeEvent.EVENT_TYPE_GOLDCARD_EX: p.PlayMod.getFriendMod().ResetGoldCardEx() - LimitedTimeCardTrigger(p) + p.LimitedTimeCardTrigger() } } @@ -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()) @@ -83,13 +92,13 @@ func LimitedTimeEventTrigger(p *Player, AddEventId int) { } // 限时猪猪存钱罐触发器 -func LimitedTimePiggyBankTrigger(p *Player) { +func (p *Player) LimitedTimePiggyBankTrigger() { Remain := p.PlayMod.getPiggyBankMod().TimeOut() if Remain > 0 { p.CallEvent(time.Duration(Remain)*time.Second, func() { p.lock.Lock() defer p.lock.Unlock() - LimitedTimePiggyBankTrigger(p) + p.LimitedTimePiggyBankTrigger() p.SendClientRes() }, "PiggyBank") } @@ -97,7 +106,7 @@ func LimitedTimePiggyBankTrigger(p *Player) { } // 限时卡牌触发器 -func LimitedTimeCardTrigger(p *Player) { +func (p *Player) LimitedTimeCardTrigger() { FriendMod := p.PlayMod.getFriendMod() CardMod := p.PlayMod.getCardMod() Now := GoUtil.Now() @@ -131,21 +140,21 @@ func LimitedTimeCardTrigger(p *Player) { p.CallEvent(time.Duration(EndTime-Now)*time.Second, func() { p.lock.Lock() defer p.lock.Unlock() - LimitedTimeCardTrigger(p) + p.LimitedTimeCardTrigger() p.SendClientRes() }, "LimitedTimeCard") } } -func LimitedTimePlayroomTrigger(p *Player) { +func (p *Player) LimitedTimePlayroomTrigger() { PlayroomMod := p.PlayMod.getPlayroomMod() for k, v := range PlayroomMod.Physiology { if v.Time > 0 { - LimitedTimePlayroomTrigger_(p, k) + p.LimitedTimePlayroomTrigger_(k) } } } -func LimitedTimePlayroomTrigger_(p *Player, Id int) { +func (p *Player) LimitedTimePlayroomTrigger_(Id int) { PlayroomMod := p.PlayMod.getPlayroomMod() Physiology := PlayroomMod.GetPhysiology(Id) if Physiology == nil { @@ -174,7 +183,7 @@ func LimitedTimePlayroomTrigger_(p *Player, Id int) { p.CallEvent(time.Duration(NextSecond)*time.Second, func() { p.lock.Lock() defer p.lock.Unlock() - LimitedTimePlayroomTrigger_(p, Id) + p.LimitedTimePlayroomTrigger_(Id) p.SendClientRes() }, fmt.Sprintf("Playroom_%d", Id)) } @@ -214,7 +223,7 @@ func LimitedTimePlayroomWorkTrigger(p *Player) { if EndTime > 0 && EndTime <= Now { PlayroomMod.ResetWork() p.PlayMod.save() - PlayroomBackData(p) + p.PlayroomBackData() p.SendClientRes() return } diff --git a/src/server/game/LogMgr.go b/src/server/game/LogMgr.go index 0040d983..0f216af1 100644 --- a/src/server/game/LogMgr.go +++ b/src/server/game/LogMgr.go @@ -2,10 +2,12 @@ package game import ( "encoding/json" + "runtime" kafkaMiddleware "server/middleware/kafka" + "server/pkg/github.com/name5566/leaf/log" "sync" - - "github.com/robfig/cron/v3" + "sync/atomic" + "time" ) const ( @@ -15,13 +17,18 @@ const ( ) const ( PLAYROOM_LOST = "playroom_lost" - LOG_LENGTH = 10000 + // 增大缓冲:针对 ~1000 条/s,保留足够秒数的缓冲(可按需调整) + LOG_LENGTH = 100000 + WORKER_COUNT = 500 ) 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,47 +41,198 @@ 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:] + // 初始化通道 + L.L = make(chan *Log, LOG_LENGTH) + + // 动态协程池参数 + maxWorkers := WORKER_COUNT + if cpuWorkers := runtime.NumCPU() * 2; cpuWorkers > maxWorkers { + maxWorkers = cpuWorkers + } + minWorkers := 100 + idleTimeout := 500 * time.Millisecond + + var activeWorkers int32 + + // worker 启动函数 + spawnWorker := func() { + L.wg.Add(1) + atomic.AddInt32(&activeWorkers, 1) + go func() { + defer L.wg.Done() + defer atomic.AddInt32(&activeWorkers, -1) + + for { + // 首先阻塞等待一个任务(若 channel 关闭则退出) + v, ok := <-L.L + if !ok { + return + } + // 处理消息(与原来逻辑一致) + value, _ := json.Marshal(v) + 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) + } else { + 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) + } + } + + // 快速循环处理后续可用任务,若超时则退出该 worker(回收) + timer := time.NewTimer(idleTimeout) + for { + select { + case v, ok := <-L.L: + if !ok { + if !timer.Stop() { + <-timer.C + } + return + } + // 处理消息 + value, _ := json.Marshal(v) + 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) + } else { + 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) + } + } + // 重置定时器以继续快速处理 + if !timer.Stop() { + <-timer.C + } + timer.Reset(idleTimeout) + case <-timer.C: + timer.Stop() + // 空闲超时,退出该 worker + return + } + } } - 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) + }() + } + + // 启动初始最小 worker 数量 + for i := 0; i < minWorkers; i++ { + spawnWorker() + } + + // 监督器:动态根据队列长度扩展 worker,但不超过 maxWorkers + go func() { + ticker := time.NewTicker(200 * time.Millisecond) + defer ticker.Stop() + for range ticker.C { + L.Lock.Lock() + closing := L.closing + L.Lock.Unlock() + if closing { + return + } + backlog := len(L.L) + active := int(atomic.LoadInt32(&activeWorkers)) + if backlog > active && active < maxWorkers { + toSpawn := backlog - active + remain := maxWorkers - active + if toSpawn > remain { + toSpawn = remain + } + for i := 0; i < toSpawn; i++ { + spawnWorker() + } } } - L.L = NewQuene - }) - L.McronSave.Start() + }() } func (L *LogMgr) AddLog(logs *Log) { - return + // 如果已经开始关闭,直接丢弃 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/PlayerFunc.go b/src/server/game/MessageHandler.go similarity index 73% rename from src/server/game/PlayerFunc.go rename to src/server/game/MessageHandler.go index 3ff6f698..ff25d17b 100644 --- a/src/server/game/PlayerFunc.go +++ b/src/server/game/MessageHandler.go @@ -1,15 +1,11 @@ package game import ( - "encoding/json" "fmt" - "os/exec" "server/GoUtil" - "server/MergeConst" mergeCluster "server/cluster" - "server/conf" cardCfg "server/conf/card" - chargeCfg "server/conf/charge" + catnipCfg "server/conf/catnip" decorateCfg "server/conf/decorate" itemCfg "server/conf/item" limitedTimeEventCfg "server/conf/limitedTimeEvent" @@ -18,11 +14,11 @@ import ( orderCfg "server/conf/order" playroomCfg "server/conf/playroom" userCfg "server/conf/user" - "server/db" "server/game/mod/activity" "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" @@ -30,11 +26,10 @@ import ( proto "server/msg" "server/pkg/github.com/name5566/leaf/log" "sort" - "strings" ) // 处理玩家异步请求 -func HandleMsg(p *Player, m *msg.Msg) { +func (p *Player) HandleMsg(m *msg.Msg) { p.lock.Lock() //加锁 backup := p.BackUp() // 备份当前的 Player 值 defer func() { @@ -45,7 +40,7 @@ func HandleMsg(p *Player, m *msg.Msg) { p.lock.Unlock() //解锁 }() p.args = make(map[string]interface{}) - err := handle(p, m) + err := p.handle(m) if err != nil { log.Debug("uid : %d, err : %s", p.M_DwUin, err) p.Recover(backup) //还原Player的数据 @@ -56,10 +51,72 @@ func HandleMsg(p *Player, m *msg.Msg) { } // 消息处理 -func handle(p *Player, m *msg.Msg) error { +func (p *Player) handle(m *msg.Msg) error { switch m.Type { - case msg.HANDLE_TYPE_DEL, msg.HANDLE_TYPE_APPLY, msg.HADNLE_TYPE_AGREE, msg.HANDLE_TYPE_REQ_CARD, msg.HANDLE_TYPE_REFUSE: - return HandleFriendMsg(p, m) + case msg.HANDLE_TYPE_APPLY: // 好友申请 + FriendMod := p.PlayMod.getFriendMod() + FriendMod.AddFriendApply(m.From) + p.AddLog(m.From, friend.LOG_TYPE_FRIEND_APPLY, "", m.SendT) + PlayerSimpleData := G_GameLogicPtr.GetResSimplePlayerByUid(m.From) + p.PushClientRes(&proto.ResFriendApplyNotify{ + Player: PlayerSimpleData, + Type: friend.FRIEND_NOTIFY_APPLY, + Time: int32(GoUtil.Now()), + }) + case msg.HADNLE_TYPE_AGREE: // 同意好友申请 + FriendMod := p.PlayMod.getFriendMod() + FriendMod.AgreeApply(m.From) + PlayerSimpleData := G_GameLogicPtr.GetResSimplePlayerByUid(m.From) + p.PushClientRes(&proto.ResFriendApplyNotify{ + Player: PlayerSimpleData, + Type: friend.FRIEND_NOTIFY_AGREE, + Time: int32(GoUtil.Now()), + }) + PlayroomMod := p.PlayMod.getPlayroomMod() + BaseMod := p.PlayMod.getBaseMod() + PlayroomMod.AddRoomPointAdd(BaseMod.GetLevel()) + p.PlayroomBackData() + p.TeLog("friend_add", map[string]interface{}{ + "player_id": m.From, + "add_type": "接受申请", + }) + p.AddLog(m.From, friend.LOG_TYPE_FRIEND_BECOME, "", m.SendT) + case msg.HANDLE_TYPE_DEL: // 删除好友 + FriendMod := p.PlayMod.getFriendMod() + FriendMod.DelFriend(m.From) + p.AddLog(m.From, friend.LOG_TYPE_FRIEND_APPLY, "", m.SendT) + PlayerSimpleData := G_GameLogicPtr.GetResSimplePlayerByUid(m.From) + p.PushClientRes(&proto.ResFriendApplyNotify{ + Player: PlayerSimpleData, + Type: friend.FRIEND_NOTIFY_DEL, + Time: int32(GoUtil.Now()), + }) + case msg.HANDLE_TYPE_REFUSE: // 拒绝好友申请 + FriendMod := p.PlayMod.getFriendMod() + FriendMod.RefuseApply(m.From) + PlayerSimpleData := G_GameLogicPtr.GetResSimplePlayerByUid(m.From) + p.PushClientRes(&proto.ResFriendApplyNotify{ + Player: PlayerSimpleData, + Type: friend.FRIEND_NOTIFY_REFUSE, + Time: int32(GoUtil.Now()), + }) + case msg.HANDLE_TYPE_REQ_CARD: // 卡牌申请 + FriendMod := p.PlayMod.getFriendMod() + CardInfo, ok := m.Extra.(card.CardInfo) + if !ok { + return nil + } + FriendMod.SetCardInfo(&CardInfo) + p.PushClientRes( + &proto.NotifyFriendCard{ + Info: GetCardInfoMsg(&CardInfo), + }, + ) + case msg.HANDLE_TYPE_FACEBOOK_UNBIND: // facebook解绑 + FaceMod := p.PlayMod.getFaceMod() + if FaceMod.SetId == 0 { + FaceMod.SetId = 2 + } case msg.SERVER_ZERO_UPDATE: p.ZeroUpdate(nil) case msg.SERVER_NOON_UPDATE: @@ -73,7 +130,7 @@ func handle(p *Player, m *msg.Msg) error { PlayroomMod := p.PlayMod.getPlayroomMod() BaseMod := p.PlayMod.getBaseMod() PlayroomMod.AddRoomPointAdd(BaseMod.GetLevel()) - PlayroomBackData(p) + p.PlayroomBackData() p.TeLog("friend_add", map[string]interface{}{ "player_id": m.From, "add_type": "发起申请", @@ -113,7 +170,10 @@ func handle(p *Player, m *msg.Msg) error { p.PushClientRes(CardMod.NotifyCard()) p.PushClientRes(CardMod.NotifyTimes()) case msg.HANDLE_TYPE_REG_CARD_FINISH, msg.HANDLE_TYPE_AGREE_CARD_FAIL: // B收到A的请求已结束 - CardInfo := m.Extra.(card.CardInfo) + CardInfo, ok := m.Extra.(card.CardInfo) + if !ok { + return nil + } FriendMod := p.PlayMod.getFriendMod() FriendMod.DelCardInfo(CardInfo.Id) p.PushClientRes( @@ -123,7 +183,10 @@ func handle(p *Player, m *msg.Msg) error { ) p.PlayMod.save() case msg.HANDLE_TYPE_AGREE_CARD: // A收到B同意卡牌 - CardInfo := m.Extra.(card.CardInfo) + CardInfo, ok := m.Extra.(card.CardInfo) + if !ok { + return nil + } CardMod := p.PlayMod.getCardMod() OtherUid, err := CardMod.DelRequestCard(CardInfo.BUid) FriendMod := p.PlayMod.getFriendMod() @@ -148,7 +211,10 @@ func handle(p *Player, m *msg.Msg) error { ) p.PushClientRes(CardMod.NotifyTimes()) case msg.HANDLE_TYPE_REG_CARD_REFUSE: // A收到B拒绝索要卡牌 - CardInfo := m.Extra.(card.CardInfo) + CardInfo, ok := m.Extra.(card.CardInfo) + if !ok { + return nil + } CardMod := p.PlayMod.getCardMod() CardMod.DelRequestCard(CardInfo.BUid) CardMod.AddReqTimes(CardInfo.Id, CardInfo.StartTime) @@ -157,7 +223,10 @@ func handle(p *Player, m *msg.Msg) error { p.PushClientRes(CardMod.NotifyCard()) case msg.HANDLE_TYPE_EX_CARD: // B收到A置换卡牌 FriendMod := p.PlayMod.getFriendMod() - CardInfo := m.Extra.(card.CardInfo) + CardInfo, ok := m.Extra.(card.CardInfo) + if !ok { + return nil + } FriendMod.SetCardInfo(&CardInfo) FriendMod.Interact(CardInfo.AUid, friend.INTERACT_TYPE_EX, m.SendT) p.PlayMod.save() @@ -168,7 +237,10 @@ func handle(p *Player, m *msg.Msg) error { ) case msg.HANDLE_TYPE_SELECT_EX_CARD: // A收到B选择卡牌进行置换 FriendMod := p.PlayMod.getFriendMod() - CardInfo := m.Extra.(card.CardInfo) + CardInfo, ok := m.Extra.(card.CardInfo) + if !ok { + return nil + } FriendMod.SetCardInfo(&CardInfo) // p.AddLog(int(p.M_DwUin), friend.LOG_TYPE_CARD_SELECT_GET, fmt.Sprintf("%d", CardInfo.CardId)) p.PlayMod.save() @@ -178,7 +250,10 @@ func handle(p *Player, m *msg.Msg) error { }, ) case msg.HANDLE_TYPE_ARGREE_EX_CARD: // B收到A同意置换卡牌 - CardInfo := m.Extra.(card.CardInfo) + CardInfo, ok := m.Extra.(card.CardInfo) + if !ok { + return nil + } FriendMod := p.PlayMod.getFriendMod() FriendMod.SetCardInfo(&CardInfo) p.PushClientRes( @@ -189,7 +264,10 @@ func handle(p *Player, m *msg.Msg) error { p.PlayMod.save() case msg.HANDLE_TYPE_REFUSE_SELECT_CARD: // A收到B拒绝置换卡牌 CardMod := p.PlayMod.getCardMod() - CardInfo := m.Extra.(card.CardInfo) + CardInfo, ok := m.Extra.(card.CardInfo) + if !ok { + return nil + } CardMod.AddExTimes(&CardInfo) p.AddCard(CardInfo.CardId) CardMod.DelExCard(&CardInfo) @@ -198,7 +276,10 @@ func handle(p *Player, m *msg.Msg) error { p.PlayMod.save() case msg.HANDLE_TYPE_REFUSE_EX_CARD: // B收到A拒绝置换卡牌 CardMod := p.PlayMod.getCardMod() - CardInfo := m.Extra.(card.CardInfo) + CardInfo, ok := m.Extra.(card.CardInfo) + if !ok { + return nil + } p.AddCard(CardInfo.ExId) FriendMod := p.PlayMod.getFriendMod() FriendMod.DelCardInfo(CardInfo.Id) @@ -208,9 +289,9 @@ func handle(p *Player, m *msg.Msg) error { p.PlayMod.save() p.PushClientRes(CardMod.NotifyCard()) case msg.HANDLE_TYPE_CHAMPSHIP_NOTIFY: // # 锦标赛排名变动通知 - BackChampship(p) + p.BackChampship() case msg.HANDLE_TYPE_CHAMPSHIP_RESULT: // # 好友锦标赛结果 - Extra := m.Extra.([]int) + Extra := GoUtil.IntSlice(m.Extra) p.AddLog(m.From, friend.LOG_TYPE_PLAYROOM_CHAMPSHIP, fmt.Sprintf("%d_%d", Extra[0], Extra[1]), m.SendT) case msg.HANDLE_TYPE_TREASURE_RESULT: // # 好友宝藏结果 //p.AddLog(m.From, friend.LOG_TYPE_TREASURE, fmt.Sprintf("%d", m.Extra.(int)), m.SendT) @@ -264,9 +345,9 @@ func handle(p *Player, m *msg.Msg) error { p.AddLog(m.From, friend.LOG_TYPE_PLAYROOM_CAT_LOSE, fmt.Sprintf("%d", Emoji), m.SendT) FriendMod.Interact(m.From, friend.INTERACT_TYPE_VISIT, m.SendT) case msg.FRIEND_TREASURE_HANDLE: // # 好友宝藏 - Items := make([]*item.Item, 0) - if m.Extra != nil { - Items = m.Extra.([]*item.Item) + Items, ok := m.Extra.([]*item.Item) + if !ok { + Items = []*item.Item{} } p.AddLog(m.From, friend.LOG_TYPE_TREASURE_HELP, "", m.SendT) p.HandleItem(Items, proto.ITEM_POP_LABEL_Friendtreasure.String()) @@ -284,21 +365,21 @@ func handle(p *Player, m *msg.Msg) error { FriendMod.Interact(m.From, friend.INTERACT_TYPE_UPVOTE, m.SendT) p.AddLog(m.From, friend.LOG_TYPE_HANDBOOK_UPVOTE, "", m.SendT) case msg.HANDLE_TYPE_SEND_CHARGE: // 收到好友赠送的充值礼包 - C := &ChargeExtra{} - if m.Extra != nil { - C = m.Extra.(*ChargeExtra) + C, ok := m.Extra.(*ChargeExtra) + if !ok { + C = &ChargeExtra{} } PlayerSimpleData := G_GameLogicPtr.GetResSimplePlayerByUid(m.From) MailMod := p.PlayMod.getMailMod() mt, mc, mt_en, mc_en := mailCfg.GetChargeSendMail(PlayerSimpleData.Name) - Items := ChargeItem(p, C.ChargeId) + Items := p.ChargeItem(C.ChargeId) MailId := MailMod.Send(mt, "", mc, mt_en, "", mc_en, Items, mail.MAIL_TYPE_GIFT) p.AddLog(m.From, friend.LOG_TYPE_CHARGE_SEND, fmt.Sprintf("%d", MailId), m.SendT) p.PushClientRes(MailMod.NotifyMail(MailId)) case msg.HANDLE_TYPE_CHARGE_RECEIVE: // 收到好友的感谢信 - Content := "" - if m.Extra != nil { - Content = m.Extra.(string) + Content, ok := m.Extra.(string) + if !ok { + Content = "" } PlayerSimpleData := G_GameLogicPtr.GetResSimplePlayerByUid(m.From) MailMod := p.PlayMod.getMailMod() @@ -320,66 +401,82 @@ 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: // 邀请好友参与猫咪游戏 CatnipMod := p.PlayMod.getCatnipMod() - CatnipMsg := m.Extra.(CatnipMsg) - ActivityId := GetActivityId(p, activity.ACT_TYPE_CATNIP) + CatnipMsg, ok := m.Extra.(CatnipMsg) + if !ok { + return nil + } + ActivityId := p.GetActivityId(activity.ACT_TYPE_CATNIP) if ActivityId != CatnipMsg.ActivityId { // 活动ID不匹配 return nil } - CatnipMod.BeInvited(CatnipMsg.GameId, int(m.From), m.SendT) + CatnipMod.BeInvited(int(m.From), m.SendT) + FriendMod := p.PlayMod.getFriendMod() + FriendMod.AddReplyInfo(m.From, friend.REPLY_TYPE_CATNIP, fmt.Sprintf("%d", CatnipMsg.GameId), m.End, nil) case msg.HANDLE_TYPE_CATNIP_AGREE: // 同意好友参与猫咪游戏 CatnipMod := p.PlayMod.getCatnipMod() - CatnipMsgInfo := m.Extra.(CatnipMsg) - ActivityId := GetActivityId(p, activity.ACT_TYPE_CATNIP) - if ActivityId != CatnipMsgInfo.ActivityId { // 活动ID不匹配 + CatnipMsg, ok := m.Extra.(CatnipMsg) + if !ok { return nil } - UserList, _ := CatnipMod.Agree(CatnipMsgInfo.GameId, int(m.From)) - for _, v := range UserList { - FriendMgrSend(&msg.Msg{ - From: int(p.M_DwUin), - To: int(v), - Type: msg.HANDLE_TYPE_CATNIP_AGREE, - Extra: CatnipMsg{ - ActivityId: ActivityId, - GameId: int(CatnipMsgInfo.GameId), - }, - SendT: GoUtil.Now(), - }) + ActivityId := p.GetActivityId(activity.ACT_TYPE_CATNIP) + if ActivityId != CatnipMsg.ActivityId { // 活动ID不匹配 + return nil } + CatnipMod.BeAgree(CatnipMsg.GameId, int(m.From)) case msg.HANDLE_TYPE_CATNIP_AGREE_DEL: // 同意好友参与猫咪游戏后删除邀请 CatnipMod := p.PlayMod.getCatnipMod() - CatnipMsg := m.Extra.(CatnipMsg) - ActivityId := GetActivityId(p, activity.ACT_TYPE_CATNIP) + CatnipMsg, ok := m.Extra.(CatnipMsg) + if !ok { + return nil + } + ActivityId := p.GetActivityId(activity.ACT_TYPE_CATNIP) if ActivityId != CatnipMsg.ActivityId { // 活动ID不匹配 return nil } CatnipMod.DelInvited(CatnipMsg.GameId, int(m.From)) case msg.HANDLE_TYPE_CATNIP_REFUSE: // 拒绝好友参与猫咪游戏 CatnipMod := p.PlayMod.getCatnipMod() - CatnipMsg := m.Extra.(CatnipMsg) - ActivityId := GetActivityId(p, activity.ACT_TYPE_CATNIP) + CatnipMsg, ok := m.Extra.(CatnipMsg) + if !ok { + return nil + } + ActivityId := p.GetActivityId(activity.ACT_TYPE_CATNIP) if ActivityId != CatnipMsg.ActivityId { // 活动ID不匹配 return nil } CatnipMod.DelInvited(CatnipMsg.GameId, int(m.From)) case msg.HANDLE_TYPE_CATNIP_GROWTH: CatnipMod := p.PlayMod.getCatnipMod() - CatnipGrowthInfo := m.Extra.(CatnipMsg) - ActivityId := GetActivityId(p, activity.ACT_TYPE_CATNIP) - if ActivityId != CatnipGrowthInfo.ActivityId { // 活动ID不匹配 + CatnipMsg, ok := m.Extra.(CatnipMsg) + if !ok { return nil } - CatnipMod.Growth(CatnipGrowthInfo.GameId, CatnipGrowthInfo.Growth) + ActivityId := p.GetActivityId(activity.ACT_TYPE_CATNIP) + if ActivityId != CatnipMsg.ActivityId { // 活动ID不匹配 + return nil + } + CatnipMod.GrowthByUid(m.From, CatnipMsg.Growth) + if CatnipMsg.FriendItems > 0 { + Items := catnipCfg.GetItemCost(ActivityId, CatnipMsg.FriendItems) + FriendMod := p.PlayMod.getFriendMod() + FriendMod.AddReplyInfo(m.From, friend.REPLY_TYPE_CATNIP_ITEMS, "", m.End, Items) + } + p.CatnipBackData() + case msg.HANDLE_TYPE_CATNIP_SEND_EMOJI: + CatnipMod := p.PlayMod.getCatnipMod() + EmojiId := GoUtil.Int(m.Extra) + CatnipMod.SetEmoji(m.From, EmojiId) + p.CatnipBackData() 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) - FriendLogBackData(p) + FriendMod.AddReplyInfo(v.Uid, v.Type, v.Param, GoUtil.Now()+24*3600, nil) + p.FriendLogBackData() } case msg.HANDLE_TYPE_FRIEND_SPONSOER: p.AddLog(m.From, friend.LOG_TYPE_FRIEND_SPONSOR_GET, "", m.SendT) @@ -390,75 +487,8 @@ func handle(p *Player, m *msg.Msg) error { return nil } -// 处理系统请求 -func HandleServerMsg(p *Player, msg *msg.Msg) error { - return nil -} - -// 处理好友请求 -func HandleFriendMsg(p *Player, m *msg.Msg) error { - FriendMod := p.PlayMod.getFriendMod() - PlayerSimpleData := G_GameLogicPtr.GetResSimplePlayerByUid(m.From) - switch m.Type { - case msg.HANDLE_TYPE_APPLY: // 好友申请 - FriendMod.AddFriendApply(m.From) - p.AddLog(m.From, friend.LOG_TYPE_FRIEND_APPLY, "", m.SendT) - p.PushClientRes(&proto.ResFriendApplyNotify{ - Player: PlayerSimpleData, - Type: friend.FRIEND_NOTIFY_APPLY, - Time: int32(GoUtil.Now()), - }) - case msg.HADNLE_TYPE_AGREE: // 同意好友申请 - FriendMod.AgreeApply(m.From) - p.PushClientRes(&proto.ResFriendApplyNotify{ - Player: PlayerSimpleData, - Type: friend.FRIEND_NOTIFY_AGREE, - Time: int32(GoUtil.Now()), - }) - PlayroomMod := p.PlayMod.getPlayroomMod() - BaseMod := p.PlayMod.getBaseMod() - PlayroomMod.AddRoomPointAdd(BaseMod.GetLevel()) - PlayroomBackData(p) - p.TeLog("friend_add", map[string]interface{}{ - "player_id": m.From, - "add_type": "接受申请", - }) - p.AddLog(m.From, friend.LOG_TYPE_FRIEND_BECOME, "", m.SendT) - case msg.HANDLE_TYPE_DEL: // 删除好友 - FriendMod.DelFriend(m.From) - p.AddLog(m.From, friend.LOG_TYPE_FRIEND_APPLY, "", m.SendT) - p.PushClientRes(&proto.ResFriendApplyNotify{ - Player: PlayerSimpleData, - Type: friend.FRIEND_NOTIFY_DEL, - Time: int32(GoUtil.Now()), - }) - case msg.HANDLE_TYPE_REFUSE: // 拒绝好友申请 - FriendMod.RefuseApply(m.From) - p.PushClientRes(&proto.ResFriendApplyNotify{ - Player: PlayerSimpleData, - Type: friend.FRIEND_NOTIFY_REFUSE, - Time: int32(GoUtil.Now()), - }) - case msg.HANDLE_TYPE_REQ_CARD: // 卡牌申请 - CardInfo := m.Extra.(card.CardInfo) - FriendMod.SetCardInfo(&CardInfo) - p.PushClientRes( - &proto.NotifyFriendCard{ - Info: GetCardInfoMsg(&CardInfo), - }, - ) - case msg.HANDLE_TYPE_FACEBOOK_UNBIND: // facebook解绑 - FaceMod := p.PlayMod.getFaceMod() - if FaceMod.SetId == 0 { - FaceMod.SetId = 2 - } - } - p.PlayMod.save() - return nil -} - // 同步好友请求 -func SyncFriendMsg(p *Player) { +func (p *Player) SyncFriendMsg() { MsgList := G_GameLogicPtr.FriendMgrCall(&msg.Msg{Type: msg.HANDLE_TYPE_SYNC, From: int(p.M_DwUin)}) FriendMod := p.PlayMod.getFriendMod() MsgId := FriendMod.GetSyncId() @@ -470,7 +500,7 @@ func SyncFriendMsg(p *Player) { return } sort.Slice(ml, func(i, j int) bool { - return ml[i].SendT < ml[j].SendT + return ml[i].Id < ml[j].Id }) maxId := int64(0) for _, v := range ml { @@ -482,7 +512,7 @@ func SyncFriendMsg(p *Player) { continue } log.Debug("uid : %d, handle friend msg : %v", p.M_DwUin, v) - handle(p, v) + p.handle(v) v.H = 1 } FriendMod.SetSyncId(maxId) @@ -511,103 +541,21 @@ func SyncMailMsg(p *Player) { p.PushClientRes(MailMod.BackData()) } -// 返回好友信息 -func FriendListBackData(p *Player) { - FriendMod := p.PlayMod.getFriendMod() - var fl []*proto.ResPlayerSimple - for k, v := range FriendMod.GetFriendList() { - if k == int(p.M_DwUin) { - continue - } - ps := G_GameLogicPtr.GetResSimplePlayerByUid(k) - if ps != nil { - ps.AddTime = v.AddTime - ps.Interact = FriendMod.GetInteractTime(k) - fl = append(fl, ps) - } - } - ReqFriendList := make([]int64, 0) - for k := range FriendMod.SendApply { - ReqFriendList = append(ReqFriendList, int64(k)) - } - p.PushClientRes(&proto.ResFriendList{ - FriendList: fl, - ReqApplyList: ReqFriendList, - Npc: GoUtil.IntToInt32(FriendMod.GetNpc()), - Sponsor: int32(FriendMod.GetSponsor()), - }) -} - -func FriendApplyBackData(p *Player) { - FriendMod := p.PlayMod.getFriendMod() - var al []*proto.ResFriendApplyInfo - for k, v := range FriendMod.ApplyList { - ps := G_GameLogicPtr.GetResSimplePlayerByUid(k) - if ps != nil { - al = append(al, &proto.ResFriendApplyInfo{ - Player: ps, - Time: int32(v), - }) - } - } - p.PushClientRes(&proto.ResFriendApply{ - ApplyList: al, - }) -} - -func FriendLogBackData(p *Player) { - FriendMod := p.PlayMod.getFriendMod() - var log []*proto.ResFriendLog - for _, v := range FriendMod.Log { - ps := G_GameLogicPtr.GetResSimplePlayerByUid(v.Uid) - if ps == nil { - ps = &proto.ResPlayerSimple{ - Uid: int64(v.Uid), - } - } - log = append(log, &proto.ResFriendLog{ - Player: ps, - Type: int32(v.Type), - Time: int32(v.Time), - Param: v.Param, - Id: int32(v.Id), - Upvote: v.Upvote, - }) - } - var reply []*proto.ResFriendReply - for _, v := range FriendMod.ReplyList { - ps := G_GameLogicPtr.GetResSimplePlayerByUid(v.Uid) - if ps == nil { - ps = &proto.ResPlayerSimple{ - Uid: int64(v.Uid), - } - } - reply = append(reply, &proto.ResFriendReply{ - Player: ps, - Type: int32(v.Type), - Param: v.Param, - Id: int32(v.Id), - Status: int32(v.Status), - AddTime: v.AddTime, - EndTime: v.EndTime, - }) - } - p.PushClientRes(&proto.ResFriendTimeLine{ - Log: log, - Reply: reply, - }) -} - -func FriendCardBackData(p *Player) { - FriendMod := p.PlayMod.getFriendMod() - var msgList []*proto.ResFriendCard - for _, v := range FriendMod.Card { - m := GetCardInfoMsg(v) - msgList = append(msgList, m) - } - p.PushClientRes(&proto.ResFriendCardMsg{ - MsgList: msgList, +func (p *Player) CatnipGrowthMsg(To, Id, Growth, FriendItems int) error { + ActivityId := p.GetActivityId(activity.ACT_TYPE_CATNIP) + FriendMgrSend(&msg.Msg{ + From: int(p.M_DwUin), + To: To, + Type: msg.HANDLE_TYPE_CATNIP_GROWTH, + SendT: GoUtil.Now(), + Extra: CatnipMsg{ + ActivityId: ActivityId, + GameId: Id, + Growth: Growth, + FriendItems: FriendItems, + }, }) + return nil } // 发送消息给玩家 @@ -615,95 +563,6 @@ func ClusterSendMsg(ServerId int, m *msg.Msg) { mergeCluster.SendServerMsg(m, ServerId) } -// 创建订单 -func CreateOrderSn(p *Player, req *proto.ReqCreateOrderSn) (string, error) { - Uid := int(p.M_DwUin) - OrderSn := GoUtil.CreateOrderSn(Uid) - - Price, Currency := chargeCfg.GetChargeInfo(int(req.ChargeId)) - Extra := &ChargeExtra{ - Type: int(req.Type), - Uid: req.Uid, - } - ExtraData, _ := json.Marshal(Extra) - err := db.CreateOrderSn(Uid, int(req.ChargeId), OrderSn, req.PlatForm, req.Channel, Price, Currency, string(ExtraData)) - if err != nil { - return "", err - } - return OrderSn, nil -} - -func GoogleVerify(p *Player, OrderSn, ProduceId, Token string) (*db.SqlChargeOrderStruct, error) { - Order, err := db.GetPlayerChargeData(OrderSn) - if err != nil { - return nil, err - } - if Order.PayStatus == MergeConst.ORDER_STATUS_SHIP { - return nil, fmt.Errorf("订单已经发货") - } - if !conf.Server.GoogleVerify { - Order.PayStatus = MergeConst.ORDER_STATUS_PAY - return Order, nil - } - if Order.PayStatus != MergeConst.ORDER_STATUS_IDLE { - return nil, fmt.Errorf("订单已经支付") - } - cmd := exec.Command(conf.Server.AppPath+"/script/verifyOrder", ProduceId, Token) - - // 获取命令的输出 - output, err := cmd.Output() - if err != nil { - return nil, err - } - // 将输出转换为字符串 - outputStr := string(output) - - // 替换单引号为双引号 - outputStr = strings.Replace(outputStr, "'", "\"", -1) - type VerifyData struct { - PurchaseState int `json:"purchaseState"` - DeveloperPayload string `json:"developerPayload"` - OrderId string `json:"orderId"` - ConsumptionState int `json:"consumptionState"` - } - r := &VerifyData{} - err = json.Unmarshal([]byte(outputStr), &r) - if err != nil { - log.Debug("output %s", string(output)) - return nil, err - } - _, err = db.GetPlayerPayChannelOrderId(r.OrderId) - if err == nil { - return nil, fmt.Errorf("订单已支付发货 param: %v", r) - } - // if r.DeveloperPayload != OrderSn { - // return nil, fmt.Errorf("订单号不匹配") - // } - if r.ConsumptionState != 1 { - return nil, fmt.Errorf("订单未消费") - } - Order.PayStatus = MergeConst.ORDER_STATUS_PAY - Order.PayChannelOrderId = r.OrderId - Order.PayTime = GoUtil.Now() - return Order, nil -} - -func CancelOrder(p *Player, OrderSn string) error { - Order, err := db.GetPlayerChargeData(OrderSn) - if err != nil { - return err - } - if Order.PayStatus != MergeConst.ORDER_STATUS_IDLE { - return fmt.Errorf("订单已支付") - } - Order.PayStatus = MergeConst.ORDER_STATUS_CANCEL - err = db.UpdatePlayerChargeData(Order) - if err != nil { - return err - } - return nil -} - func GetCardInfoMsg(CardInfo *card.CardInfo) *proto.ResFriendCard { Uid := 0 if CardInfo.Type == card.TYPE_CARD_SEND { @@ -743,142 +602,8 @@ func GetCardInfoMsg(CardInfo *card.CardInfo) *proto.ResFriendCard { } } -func BackChampship(p *Player) { - ChampshipMod := p.PlayMod.getChampshipMod() - MyRank := G_GameLogicPtr.ChampshipMgr.getMyRank(int(p.M_DwUin)) - MyPreRank := G_GameLogicPtr.ChampshipMgr.getLastMyRank(int(p.M_DwUin)) - p.PushClientRes(ChampshipMod.BackData(MyRank, MyPreRank)) -} - -func GetVisitorPlayer(p *Player) int { - PlayroomMod := p.PlayMod.getPlayroomMod() - VisitorList := PlayroomMod.GetVisitor() // 到访用户 - TodayVisitedUsers := PlayroomMod.GetTodayVisitedUsers() // 今日已互动用户 - FriendMod := p.PlayMod.getFriendMod() - type sortData struct { - Uid int - Time int64 - } - PlayerList := make([]sortData, 0) - PlayerList2 := make([]sortData, 0) - Now := GoUtil.Now() - /** - 排除当日玩家已对其发起过交互的用户 - 优先选择24小时内曾经与玩家进行过宠物交互的好友 - 若存在复数对象的情况下,优先选择交互发生时间与当前时间最近的好友 - 若不存在符合条件的用户,则选择24小时内曾经与玩家进行过宠物交互的陌生用户 - 若存在复数对象的情况下,优先选择交互发生时间与当前时间最近的用户 - 若不存在符合条件的用户,则选择24小时内登入过游戏且上次登入时间与当前时间最近的好友 - 若不存在符合条件的用户,则依据以上用户推荐算法,选择一位随机推荐用户,并且在下次触发式订单完成时,不再排除已发起过交互的用户 - */ - for k, v := range VisitorList { - if GoUtil.InArray(k, TodayVisitedUsers) { - continue - } - if v.Time < Now-86400 { - continue - } - if FriendMod.CheckFriend(k) { - PlayerList = append(PlayerList, sortData{k, v.Time}) - } else { - PlayerList2 = append(PlayerList, sortData{k, v.Time}) - } - } - if len(PlayerList) != 0 { - sort.Slice(PlayerList, func(i, j int) bool { - return PlayerList[i].Time < PlayerList[j].Time - }) - return PlayerList[0].Uid - } - if len(PlayerList2) != 0 { - sort.Slice(PlayerList2, func(i, j int) bool { - return PlayerList2[i].Time < PlayerList2[j].Time - }) - return PlayerList2[0].Uid - } - // 若不存在符合条件的用户,则选择24小时内登入过游戏且上次登入时间与当前时间最近的好友 - var recentFriendUid int - var recentLoginTime int64 = 0 - for uid := range FriendMod.GetFriendList() { - if uid == int(p.M_DwUin) { - continue - } - if GoUtil.InArray(uid, TodayVisitedUsers) { - continue - } - ps := G_GameLogicPtr.GetSimplePlayerByUid(uid) - if ps == nil { - continue - } - if GoUtil.Now()-ps.Loginout > 86400 { // 24小时内登录过 - continue - } - if ps.Loginout > recentLoginTime { - recentLoginTime = ps.Loginout - recentFriendUid = uid - } - } - if recentFriendUid != 0 { - return recentFriendUid - } - PlayerList3 := G_GameLogicPtr.RankMgr.getAllRank(RANK_TYPE_USER) - PlayerList4 := make([]int, 0) - for _, v := range PlayerList3 { - if v.Uid == int(p.M_DwUin) { - continue - } - PlayerSimpleData := G_GameLogicPtr.GetSimplePlayerByUid(v.Uid) - if PlayerSimpleData.Level < 15 { - continue - } - PlayerList4 = append(PlayerList4, v.Uid) - } - L := GoUtil.RandSliceNum(PlayerList4, 1) - if len(L) == 0 { - return 0 - } - return L[0] -} - -func GetRecommendPlayer(p *Player, Num int) []int { - PlayerList := G_GameLogicPtr.RankMgr.getAllRank(RANK_TYPE_USER) - PlayerList1 := make([]int, 0) - FriendMod := p.PlayMod.getFriendMod() - for _, v := range PlayerList { - if v.Uid == int(p.M_DwUin) { - continue - } - if FriendMod.CheckSendApply(v.Uid) { - continue - } - if FriendMod.CheckFriend(v.Uid) { - continue - } - PlayerSimpleData := G_GameLogicPtr.GetSimplePlayerByUid(v.Uid) - if PlayerSimpleData == nil { - continue - } - if GoUtil.Now()-PlayerSimpleData.Loginout > 86400 { - continue - } - if PlayerSimpleData.Level < 4 { - continue - } - PlayerList1 = append(PlayerList1, v.Uid) - } - if len(PlayerList1) == 0 { - for _, v := range PlayerList { - if v.Uid == int(p.M_DwUin) { - continue - } - PlayerList1 = append(PlayerList1, v.Uid) - } - } - return GoUtil.RandSliceNum(PlayerList1, Num) -} - // 发射器退役第一步 不再生成此发射器订单 -func EmitRetireTrigger1(p *Player) { +func (p *Player) EmitRetireTrigger1() { ChessMod := p.PlayMod.getChessMod() EmitList := ChessMod.GetEmitList() EmitId := make(map[string]struct{}, 0) @@ -908,7 +633,7 @@ func EmitRetireTrigger1(p *Player) { } // 发射器退役第二步 生成清理订单 -func EmitRetireTrigger2(p *Player) { +func (p *Player) EmitRetireTrigger2() { ChessMod := p.PlayMod.getChessMod() OrderMod := p.PlayMod.getOrderMod() BaseMod := p.PlayMod.getBaseMod() @@ -965,7 +690,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) @@ -973,36 +698,6 @@ func EmitRetireTrigger2(p *Player) { } } -func Benchmark(player *Player) { - ChampshipMod := player.PlayMod.getChampshipMod() - ChampshipMod.AddScore([]int{949, 941, 10}) - player.HandleInChampshipRank() - player.HandleInUserRank() -} - -func GetUidByFaceBook(Fb string) (int, error) { - sqlStr := "SELECT dwUin FROM t_player_baseinfo WHERE FaceBookId = ?" - type Result struct { - Uid int `db:"dwUin"` - } - R := Result{} - err := db.SqlDb.Get(&R, sqlStr, Fb) - log.Debug("Fb :%s;Uid :%d", Fb, R.Uid) - return R.Uid, err -} - -func NotifyAllFriend(p *Player, m1 *msg.Msg) { - m := m1.Clone() - FriendMod := p.PlayMod.getFriendMod() - for k := range FriendMod.GetFriendList() { - if k == int(p.M_DwUin) { - continue - } - m.To = k - FriendMgrSend(m) - } -} - func NotifyChampshipResult(Uid, Rank int) { PlayerSimpleData := G_GameLogicPtr.GetSimplePlayerByUid(Uid) if PlayerSimpleData == nil { @@ -1576,3 +1271,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/Player.go b/src/server/game/Player.go index 4bb2a5b9..0b303e72 100644 --- a/src/server/game/Player.go +++ b/src/server/game/Player.go @@ -110,7 +110,7 @@ func (p *Player) Send(m *MsgMod.Msg) { } func (p *Player) Call(m MsgMod.Msg) { - HandleMsg(p, &m) + p.HandleMsg(m.Clone()) } func (p *Player) SendClientRes() { @@ -239,28 +239,8 @@ func (p *Player) InitPlayer(UserName string) error { } p.PlayMod.mod_list = modData.ModList p.PlayMod.is_update = IsUpdate - - go func() { // 处理数据回调 - var cb *timer.Timer - for { - select { - case <-p.stopSignal: - return - case cb = <-p.MDispatr.ChanTimer: - if cb != nil { - cb.Cb() - } else { - log.Debug("Timer callback or Timer is nil") - } - case msg := <-p.msgChan: - if msg != nil { - p.wg.Done() - log.Debug("player %d recive msg %v", p.M_DwUin, msg) - go HandleMsg(p, msg) - } - } - } - }() + // 启动定时器 + p.DispatcherHandle() p.McronSave = cron.New() _, err = p.McronSave.AddFunc("@every 1m", p.AutoSaveData) if err != nil { @@ -271,10 +251,8 @@ func (p *Player) InitPlayer(UserName string) error { p.ZeroUpdate(nil) p.NoonUpdate(nil) p.Login() - // GoUtil.RegisterEvent(MergeConst.Notify_Daily_Renew, p.ZeroUpdate, p) - // GoUtil.RegisterEvent(MergeConst.Notify_Midday_Renew, p.ZeroUpdate, p) p.OrderShip() - SyncFriendMsg(p) + p.SyncFriendMsg() p.UpdateUserInfo() // fix bug ChargeMod := p.PlayMod.getChargeMod() @@ -291,7 +269,7 @@ func (p *Player) OrderShip() { return } for _, OrderInfo := range OrderList { - go TriggerShippingOrderOrigin(p, &msg.ReqShippingOrder{ + go p.TriggerShippingOrderOrigin(&msg.ReqShippingOrder{ OrderSn: OrderInfo.OrderId, }) } @@ -327,7 +305,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,10 +322,13 @@ func (p *Player) ZeroUpdate(a []interface{}) { // playroom PlayroomMod := p.PlayMod.getPlayroomMod() PlayroomMod.ZeroUpdate() - PlayroomBackData(p) + if ChargeMod.IsWeeklyDiscountDay() { + PlayroomMod.ResetWeeklyDiscount() + } + p.PlayroomBackData() p.PlayMod.getChampshipMod().ZeroUpdate() p.initAcitivity() - ActivityZeroUpdate(p) + p.ActivityZeroUpdate() p.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_LOGIN}) p.PlayMod.save() } @@ -375,7 +356,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() } @@ -384,9 +365,9 @@ func (p *Player) NoonUpdate(a []interface{}) { func (p *Player) Login() { // 添加定时器 // 限时事件触发 - LimitedTimeEventTrigger(p, 0) + p.LimitedTimeEventTrigger(0) // 猪猪银行触发 - LimitedTimePiggyBankTrigger(p) + p.LimitedTimePiggyBankTrigger() BaseMod := p.PlayMod.getBaseMod() FaceMod := p.PlayMod.getFaceMod() ChargeMod := p.PlayMod.getChargeMod() @@ -394,10 +375,10 @@ func (p *Player) Login() { PlayBaseMod := p.GetPlayerBaseMod() GuideTaskMod := p.PlayMod.getGuideTaskMod() // playroom触发 - LimitedTimePlayroomTrigger(p) // playroom数值变化 + p.LimitedTimePlayroomTrigger() // playroom数值变化 LimitedTimePlayroomWorkTrigger(p) // playroom打工 LimitedTimeEnergyAdd(p) // 能量定时处理 - ActivityLogin(p) // 活动登录 + p.ActivityLogin() // 活动登录 p.Compensation() SyncMailMsg(p) // 同步邮件 Duration := BaseMod.Login() @@ -414,17 +395,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()) - PlayroomBackData(p) - }() + ChargeMod.ResetWeeklyDiscount() + PlayroomMod := p.PlayMod.getPlayroomMod() + PlayroomMod.ResetWeeklyDiscount() + p.ChargeBackData() + p.PlayroomBackData() + }, "WeeklyDiscountStart") + } + if WeeklyEndTime > now { + p.CallEvent(time.Duration(WeeklyEndTime-now)*time.Second, func() { + ChargeMod.WeeklyEndTime = 0 + p.ChargeBackData() + p.PlayroomBackData() + 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() { @@ -684,7 +678,7 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error { Cd: int32(EffectList[1]), }) // 触发订单事件 生成超级订单 卡牌节 - LimitedTimeEventTrigger(p, EffectList[0]) + p.LimitedTimeEventTrigger(EffectList[0]) p.TeLog("time_limited_event_enable", map[string]interface{}{ "event_type": limitedTimeEventCfg.GetEventName(EffectList[0]), "enable_type": Label, @@ -693,7 +687,7 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error { PiggyBankMod := p.PlayMod.getPiggyBankMod() Effect := itemCfg.GetItemEffect(v.Id) PiggyBankMod.AddPiggyBank(Effect) - LimitedTimePiggyBankTrigger(p) + p.LimitedTimePiggyBankTrigger() p.PushClientRes(PiggyBankMod.BackData()) p.TeLog("piggy_bank_income", map[string]interface{}{ "piggy_bank_type": Effect, @@ -733,20 +727,20 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error { p.PlayerDecoLog("face", Effect[0], Label) BackDataType[item.ITEM_TYPE_FACE] = struct{}{} case item.ITEM_TYPE_ACTIVITY_RACE: // 活动竞速 - ActivityInfo := GetActivityInfo(p, activity.ACT_TYPE_RACE) + ActivityInfo := p.GetActivityInfo(activity.ACT_TYPE_RACE) if ActivityInfo == nil { continue } RaceMod := p.PlayMod.getRaceMod() RaceMod.AddCoin(v.Num) - RaceBackData(p) + p.RaceBackData() case item.ITEM_TYPE_PLAYROOM_VISIT: // 拜访玩家 - Target := GetVisitorPlayer(p) + Target := p.GetVisitorPlayer() playroomMod := p.PlayMod.getPlayroomMod() playroomMod.Target = Target playroomMod.Status = playroom.STATUS_VISIT // PlayroomVisit(p, Target) - PlayroomBackData(p) + p.PlayroomBackData() case item.ITEM_TYPE_PLAYROOM_DECORATION: // playroom装饰 Effect := itemCfg.GetItemEffect(v.Id) PlayroomMod := p.PlayMod.getPlayroomMod() @@ -808,13 +802,13 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error { } BackDataType[item.ITEM_TYPE_PLAYROOM_DRESS_SET] = struct{}{} case item.ITEM_TYPE_ACT_PASS: // 活动通行证 - ActivityInfo := GetActivityInfo(p, activity.ACT_TYPE_PASS) + ActivityInfo := p.GetActivityInfo(activity.ACT_TYPE_PASS) if ActivityInfo == nil { continue } PassMod := p.PlayMod.getPassMod() PassMod.AddExp(v.Num) - ActPassBackData(p) + p.ActPassBackData() default: err := ItemMod.AddItem(v.Id, v.Num) p.TeLog("asset_change", map[string]interface{}{ @@ -844,16 +838,16 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error { for k := range BackDataType { switch k { case item.ITEM_TYPE_AVATAR: - BackUserInfo(p) + p.BackUserInfo() case item.ITEM_TYPE_EMOJI: - BackUserInfo(p) + p.BackUserInfo() case item.ITEM_TYPE_FACE: - BackUserInfo(p) + p.BackUserInfo() case item.ITEM_TYPE_PLAYROOM_DECORATION, item.ITEM_TYPE_PLAYROOM_DRESS, item.ITEM_TYPE_PLAYROOM_DECORATION_SET, item.ITEM_TYPE_PLAYROOM_DRESS_SET: - PlayroomBackData(p) + p.PlayroomBackData() } } p.PetItemUseLog(itemList) @@ -879,7 +873,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,8 +883,9 @@ func (p *Player) LoginBackData() { p.PushClientRes(p.PlayMod.mod_list.Friend.BubbleBackData()) p.PushClientRes(p.PlayMod.mod_list.Guide.BackData()) p.BackDataActivity() - BackChampship(p) - BackUserInfo(p) + p.ChargeBackData() + p.BackChampship() + p.BackUserInfo() } func (p *Player) InitPlayerOnly() { @@ -1111,7 +1105,7 @@ func (p *Player) BackDataActivity() { } func (p *Player) GetRed(AI *ActivityInfo) int { - Status := GetActivityStatus(p, AI.Type) + Status := p.GetActivityStatus(AI.Type) if Status != ACT_STATUS_START { return 0 } @@ -1128,8 +1122,8 @@ func (p *Player) GetRed(AI *ActivityInfo) int { } func (p *Player) NotifyRed(actType int) { - ActivityInfo := GetActivityInfo(p, actType) - Status := GetActivityStatus(p, actType) + ActivityInfo := p.GetActivityInfo(actType) + Status := p.GetActivityStatus(actType) if Status != ACT_STATUS_START { return } @@ -1177,3 +1171,27 @@ func (p *Player) GetIp() string { } return p.GetAgent().RemoteAddr().String() } + +func (p *Player) DispatcherHandle() { + go func() { + var cb *timer.Timer + for { + select { + case <-p.stopSignal: + return + case cb = <-p.MDispatr.ChanTimer: + if cb != nil { + cb.Cb() + } else { + log.Debug("Timer callback or Timer is nil") + } + case msg := <-p.msgChan: + if msg != nil { + p.wg.Done() + log.Debug("player %d recive msg %v", p.M_DwUin, msg) + go p.HandleMsg(msg.Clone()) + } + } + } + }() +} diff --git a/src/server/game/PlayerBack.go b/src/server/game/PlayerBack.go index d38c795c..e4fc9bc1 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" ) @@ -16,7 +18,7 @@ func (p *Player) NotifyPlayroomTask() { p.PushClientRes(m) } -func PlayroomBackData(p *Player) { +func (p *Player) PlayroomBackData() { r := &proto.ResPlayroom{} PlayroomMod := p.PlayMod.getPlayroomMod() FriendMod := p.PlayMod.getFriendMod() @@ -25,7 +27,7 @@ func PlayroomBackData(p *Player) { Opponent := make([]*proto.RoomOpponent, 0) FriendList := make([]*proto.FriendRoom, 0) if PlayroomMod.Target == 0 { - PlayroomMod.Target = GetVisitorPlayer(p) + PlayroomMod.Target = p.GetVisitorPlayer() } TargerRoom := &proto.FriendRoom{} if PlayroomMod.Target != 0 { @@ -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] @@ -159,7 +163,7 @@ func PlayroomBackData(p *Player) { p.PushClientRes(r) } -func PlayroomVisit(p *Player, Uid int) { +func (p *Player) PlayroomVisit(Uid int) { if Uid == 0 { p.PushClientRes(&proto.ResPlayroomInfo{}) return @@ -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) } @@ -208,7 +211,7 @@ func (p *Player) NotifyPlayroomKiss() { p.PushClientRes(m) } -func BackUserInfo(p *Player) { +func (p *Player) BackUserInfo() { BaseMod := p.PlayMod.getBaseMod() FaceMod := p.PlayMod.getFaceMod() AvatarMod := p.PlayMod.getAvatarMod() @@ -229,3 +232,171 @@ 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), + }) +} + +func (p *Player) BackChampship() { + ChampshipMod := p.PlayMod.getChampshipMod() + MyRank := G_GameLogicPtr.ChampshipMgr.getMyRank(int(p.M_DwUin)) + MyPreRank := G_GameLogicPtr.ChampshipMgr.getLastMyRank(int(p.M_DwUin)) + p.PushClientRes(ChampshipMod.BackData(MyRank, MyPreRank)) +} + +// 返回好友信息 +func (p *Player) FriendListBackData() { + FriendMod := p.PlayMod.getFriendMod() + var fl []*proto.ResPlayerSimple + for k, v := range FriendMod.GetFriendList() { + if k == int(p.M_DwUin) { + continue + } + ps := G_GameLogicPtr.GetResSimplePlayerByUid(k) + if ps != nil { + ps.AddTime = v.AddTime + ps.Interact = FriendMod.GetInteractTime(k) + fl = append(fl, ps) + } + } + ReqFriendList := make([]int64, 0) + for k := range FriendMod.SendApply { + ReqFriendList = append(ReqFriendList, int64(k)) + } + p.PushClientRes(&proto.ResFriendList{ + FriendList: fl, + ReqApplyList: ReqFriendList, + Npc: GoUtil.IntToInt32(FriendMod.GetNpc()), + Sponsor: int32(FriendMod.GetSponsor()), + }) +} + +func (p *Player) FriendApplyBackData() { + FriendMod := p.PlayMod.getFriendMod() + var al []*proto.ResFriendApplyInfo + for k, v := range FriendMod.ApplyList { + ps := G_GameLogicPtr.GetResSimplePlayerByUid(k) + if ps != nil { + al = append(al, &proto.ResFriendApplyInfo{ + Player: ps, + Time: int32(v), + }) + } + } + p.PushClientRes(&proto.ResFriendApply{ + ApplyList: al, + }) +} + +func (p *Player) FriendLogBackData() { + FriendMod := p.PlayMod.getFriendMod() + var log []*proto.ResFriendLog + for _, v := range FriendMod.Log { + ps := G_GameLogicPtr.GetResSimplePlayerByUid(v.Uid) + if ps == nil { + ps = &proto.ResPlayerSimple{ + Uid: int64(v.Uid), + } + } + log = append(log, &proto.ResFriendLog{ + Player: ps, + Type: int32(v.Type), + Time: int32(v.Time), + Param: v.Param, + Id: int32(v.Id), + Upvote: v.Upvote, + }) + } + var reply []*proto.ResFriendReply + for _, v := range FriendMod.ReplyList { + ps := G_GameLogicPtr.GetResSimplePlayerByUid(v.Uid) + if ps == nil { + ps = &proto.ResPlayerSimple{ + Uid: int64(v.Uid), + } + } + reply = append(reply, &proto.ResFriendReply{ + Player: ps, + Type: int32(v.Type), + Param: v.Param, + Id: int32(v.Id), + Status: int32(v.Status), + AddTime: v.AddTime, + EndTime: v.EndTime, + }) + } + p.PushClientRes(&proto.ResFriendTimeLine{ + Log: log, + Reply: reply, + }) +} + +func (p *Player) FriendCardBackData() { + FriendMod := p.PlayMod.getFriendMod() + var msgList []*proto.ResFriendCard + for _, v := range FriendMod.Card { + m := GetCardInfoMsg(v) + msgList = append(msgList, m) + } + p.PushClientRes(&proto.ResFriendCardMsg{ + MsgList: msgList, + }) +} diff --git a/src/server/game/PlayerBaseMod.go b/src/server/game/PlayerBaseMod.go index 2d407bec..cd994d00 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()) @@ -550,7 +562,7 @@ func (p *PlayerBaseData) AddExp(player *Player, exp int, pexp int) (int, error) return 0, err } } - EmitRetireTrigger2(player) + player.EmitRetireTrigger2() player.InitOrderItem() player.PushClientRes(p.BackAsset()) return upLv, nil diff --git a/src/server/game/PlayerChessMod.go b/src/server/game/PlayerChessMod.go index 454390bb..b875d1e0 100644 --- a/src/server/game/PlayerChessMod.go +++ b/src/server/game/PlayerChessMod.go @@ -129,6 +129,24 @@ func (p *PlayerChessData) UpdateChessData(player *Player, MChessData map[string] return nil } +func (p *PlayerChessData) UpdateChessDataTest(player *Player, MChessData map[string]int32) error { + p.Data.MChessData = MChessData + if true { + res := &msg.ResUpdatePlayerChessData{ + Code: msg.RES_CODE_FAIL, + Msg: "棋子数据不一致", + } + log.Debug("棋子数据不一致, %v---%v", p.Data.MChessData, player.PlayMod.getChessMod().GetChessList()) + player.SendErrClienRes(res) + player.TeLog("outsync_event", map[string]interface{}{ + "outsync_event": "UpdatePlayerChessDataFunc", + }) + return fmt.Errorf("棋子数据不一致") + } + player.PlayMod.getChessMod().ChessMap = MChessData + return nil +} + // 检查棋子数据是否一致 func (p *PlayerChessData) checkChessEqual(player *Player) bool { if len(p.Data.MChessData) == 0 && conf.Server.GameName == "Merge_Pet_Local" { @@ -207,7 +225,7 @@ func (p *PlayerChessData) HandleChess(player *Player, handle_list []*msg.ChessHa player.PushClientRes(HandbookMod.BackData()) triggerComposeChess(player, NewChessId, player.PlayMod.getBaseMod().EnergyMul, player.PlayMod.getChessMod().GetEmitList()) // 获取活动道具 - ActItem := GetActivityItem(player, GoUtil.Int32ToInt(v.ActType)) + ActItem := player.GetActivityItem(GoUtil.Int32ToInt(v.ActType)) itemList = item.Merge(itemList, ActItem) case msg.HANDLE_TYPE_BUY: //购买棋子 loseGold, err := ChessMod.BuyChess(ChessId) @@ -287,7 +305,7 @@ func (p *PlayerChessData) HandleChess(player *Player, handle_list []*msg.ChessHa player.PushClientRes(LimitedTimeEventMod.BackData()) } player.QuestTriggerList(TriggerList) - EmitRetireTrigger1(player) + player.EmitRetireTrigger1() player.InitOrderItem() player.PushClientRes(ChessMod.BackData()) player.PlayMod.save() diff --git a/src/server/game/PlayerDataModule.go b/src/server/game/PlayerDataModule.go deleted file mode 100644 index 7068b39c..00000000 --- a/src/server/game/PlayerDataModule.go +++ /dev/null @@ -1,62 +0,0 @@ -package game - -// "fmt" - -// "math" - -type PlayerDataModule interface { - LoadDataFromDB(key interface{}) bool - SaveDataFromDB(key interface{}) bool - SetPlayer(p *Player) - GetPlayer() *Player - GetData() interface{} - ClearData() bool - Reconnect(bool) - AutoSaveInterval() -} - -type PlayerData struct { - Name string - IsHaveDataDb bool - M_Player *Player -} - -func (d *PlayerData) SetPlayer(p *Player) { - d.M_Player = p -} - -func (d *PlayerData) GetPlayer() *Player { - return d.M_Player -} - -func (d *PlayerData) Reconnect(b bool) { - -} -func (d *PlayerData) AutoSaveInterval() { - -} - -func (d *PlayerData) LoadDataFromDB(UserName interface{}) bool { - - return true -} - -func (d *PlayerData) SaveDataFromDB(Key interface{}) bool { - - return true -} -func (d *PlayerData) ClearData() bool { - - return true -} -func (d *PlayerData) GetData() interface{} { - res := struct{}{} - return res -} - -func NewPlayerData(name string, player *Player) *PlayerData { - return &PlayerData{ - Name: name, - M_Player: player, - } -} diff --git a/src/server/game/PlayerMod.go b/src/server/game/PlayerMod.go index 3b9f9e81..939ba214 100644 --- a/src/server/game/PlayerMod.go +++ b/src/server/game/PlayerMod.go @@ -44,6 +44,32 @@ import ( "time" ) +type PlayerData struct { + Name string + IsHaveDataDb bool + M_Player *Player +} + +func (d *PlayerData) SetPlayer(p *Player) { + d.M_Player = p +} + +func (d *PlayerData) GetPlayer() *Player { + return d.M_Player +} + +func (d *PlayerData) GetData() interface{} { + res := struct{}{} + return res +} + +func NewPlayerData(name string, player *Player) *PlayerData { + return &PlayerData{ + Name: name, + M_Player: player, + } +} + type PlayerModData struct { *PlayerData Data db.SqlModStruct diff --git a/src/server/game/PlayerMsg.go b/src/server/game/PlayerMsg.go deleted file mode 100644 index b0e7ddb7..00000000 --- a/src/server/game/PlayerMsg.go +++ /dev/null @@ -1,23 +0,0 @@ -package game - -import ( - "server/GoUtil" - "server/game/mod/activity" - "server/game/mod/msg" -) - -func (p *Player) CatnipGrowthMsg(To, Id, Growth int) error { - ActivityId := GetActivityId(p, activity.ACT_TYPE_CATNIP) - FriendMgrSend(&msg.Msg{ - From: int(p.M_DwUin), - To: To, - Type: msg.HANDLE_TYPE_CATNIP_GROWTH, - SendT: GoUtil.Now(), - Extra: CatnipMsg{ - ActivityId: ActivityId, - GameId: Id, - Growth: Growth, - }, - }) - return nil -} diff --git a/src/server/game/RegisterNetworkFunc.go b/src/server/game/RegisterNetworkFunc.go index 6e1be934..01939ee3 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() @@ -262,7 +290,7 @@ func ReqRewardOrder(player *Player, buf []byte) error { if OrderType == order.Pet_type { Item = player.FormatPetOrderItem(Item) } - ActItem := GetActivityItem(player, GoUtil.Int32ToInt(req.ActType)) + ActItem := player.GetActivityItem(GoUtil.Int32ToInt(req.ActType)) Item = item.Merge(Item, ActItem) if !OrderMod.CheckSuperOrder() { if LimitedTimeEventMod.RemoveSuperOrder() { @@ -380,11 +408,11 @@ func ReqRewardOrder(player *Player, buf []byte) error { "preset_order_step": preset_order_step, }) player.PetItemGetLog(Item, nil, "Order") - EmitRetireTrigger2(player) + player.EmitRetireTrigger2() Lv := player.GetPlayerBaseMod().GetLevel() EnergyMul := player.PlayMod.getBaseMod().GetEnergyMul() Emit := ChessMod.GetOrderEmit() - TriggerSeedSource(player) + player.TriggerSeedSource() //NewOrder := TriggerSeedOrder(player) // if NewOrder == nil || len(NewOrder.MergeId) == 0 { // OrderMod.CreateOrder(Lv, Emit, EnergyMul) @@ -424,7 +452,7 @@ func ReqRewardOrder(player *Player, buf []byte) error { player.PlayMod.save() player.PushClientRes(PiggyBankMod.BackData()) player.PushClientRes(OrderMod.BackData()) - BackChampship(player) + player.BackChampship() player.PushClientRes(LimitedTimeEventMod.BackData()) player.PushClientRes(ChessMod.BackData()) player.PushClientRes(LimitedTimeEventMod.ProgressBackData()) @@ -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, @@ -542,7 +578,7 @@ func ReqDecorate(player *Player, buf []byte) error { Code: msg.RES_CODE_SUCCESS, }) player.HandleInUserRank() - BackUserInfo(player) + player.BackUserInfo() player.UpdateUserInfo() return nil } @@ -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, @@ -610,40 +651,39 @@ func ReqDecorateAll(player *Player, buf []byte) error { Code: msg.RES_CODE_SUCCESS, }) player.HandleInUserRank() - BackUserInfo(player) + player.BackUserInfo() player.UpdateUserInfo() return nil } -func ReqDecorateReward(player *Player, buf []byte) error { - // req := &msg.ReqDecorateReward{} - // proto.Unmarshal(buf, req) - // DecorateMod := player.PlayMod.getDecorateMod() - // Item, err := DecorateMod.GetDecorateReward(int(req.AreaId)) - // if err != nil { - // player.SendErrClienRes(&msg.ResDecorateReward{ - // Code: msg.RES_CODE_FAIL, - // Msg: err.Error(), - // }) - // return err - // } - // err = player.HandleItem(Item, msg.ITEM_POP_LABEL_DecorateReward.String()) - // if err != nil { - // player.SendErrClienRes(&msg.ResDecorateReward{ - // Code: msg.RES_CODE_FAIL, - // Msg: err.Error(), - // }) - // return err - // } - // player.TeLog("scene_reward", map[string]interface{}{ - // "deco_step_id": fmt.Sprintf("%d_%d", DecorateMod.AreaId, DecorateMod.Progress), - // "item_list": Item, - // }) - // player.PushClientRes(&msg.ResDecorateReward{ - // Code: msg.RES_CODE_SUCCESS, - // }) - // player.PushClientRes(DecorateMod.BackData()) - // player.PlayMod.save() +func ReqAreaReward(player *Player, buf []byte) error { + req := &msg.ReqAreaReward{} + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } + DecorateMod := player.PlayMod.getDecorateMod() + RewardItem, err := DecorateMod.GetDecorateReward(int(req.AreaId)) + if err != nil { + player.SendErrClienRes(&msg.ResAreaReward{ + Code: msg.RES_CODE_FAIL, + Msg: err.Error(), + }) + return err + } + err = player.HandleItem(RewardItem, msg.ITEM_POP_LABEL_DecorateReward.String()) + if err != nil { + player.SendErrClienRes(&msg.ResAreaReward{ + Code: msg.RES_CODE_FAIL, + Msg: err.Error(), + }) + return err + } + player.PushClientRes(&msg.ResAreaReward{ + Code: msg.RES_CODE_SUCCESS, + }) + player.PushClientRes(DecorateMod.BackData()) + player.PlayMod.save() return nil } @@ -652,7 +692,7 @@ func ReqDecorateReward(player *Player, buf []byte) error { func UpdatePlayerChessDataFunc(player *Player, buf []byte) error { data := &PlayerChessData{} err := data.UpdatePlayerChessData(player, buf) - RedBackData(player) + player.RedBackData() player.UpdateUserInfo() return err } @@ -660,13 +700,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 { @@ -697,7 +740,7 @@ func ReqGetChessFromBuff(player *Player, buf []byte) error { player.PushClientRes(OrderMod.BackData()) } triggerComposeChess(player, ChessId, player.PlayMod.getBaseMod().EnergyMul, player.PlayMod.getChessMod().GetEmitList()) - EmitRetireTrigger1(player) + player.EmitRetireTrigger1() player.InitOrderItem() player.PlayMod.save() player.PushClientRes(ChessMod.BackData()) @@ -711,9 +754,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 +791,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 +829,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 +873,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 +912,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 +954,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 +997,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 +1017,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 +1084,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 +1138,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 +1173,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 +1217,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 +1297,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 +1334,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 +1372,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 +1410,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 +1426,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 +1465,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 +1503,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, @@ -1423,7 +1520,7 @@ func ReqSetAvatar(player *Player, buf []byte) error { player.PushClientRes(&msg.ResSetAvatar{ Code: msg.RES_CODE_SUCCESS, }) - BackUserInfo(player) + player.BackUserInfo() player.UpdateUserInfo() b := false if req.Avatar == 0 { @@ -1440,9 +1537,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, @@ -1463,7 +1563,7 @@ func ReqSetFace(player *Player, buf []byte) error { "is_platform": is_platform, }) player.PlayerDecoSetLog("face", int(req.Face), "") - BackUserInfo(player) + player.BackUserInfo() player.UpdateUserInfo() return nil } @@ -1471,11 +1571,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 +1591,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 +1631,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 +1669,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 +1717,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 +1805,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 +1851,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) { @@ -1802,14 +1920,17 @@ func ReqApplyFriend(player *Player, buf []byte) error { PlayroomMod := player.PlayMod.getPlayroomMod() BaseMod := player.PlayMod.getBaseMod() PlayroomMod.AddRoomPointInvite(BaseMod.GetLevel()) - PlayroomBackData(player) + player.PlayroomBackData() return nil } // 同意申请 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 +1948,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, nil) player.PushClientRes(&msg.ResAgreeFriend{ Code: msg.RES_CODE_SUCCESS, Uid: req.Uid, @@ -1838,12 +1959,12 @@ func ReqAgreeFriend(player *Player, buf []byte) error { "add_type": "接受申请", }) player.AddLog(Uid, friend.LOG_TYPE_FRIEND_BECOME, "", GoUtil.Now()) - FriendApplyBackData(player) - FriendLogBackData(player) + player.FriendApplyBackData() + player.FriendLogBackData() PlayroomMod := player.PlayMod.getPlayroomMod() BaseMod := player.PlayMod.getBaseMod() PlayroomMod.AddRoomPointAdd(BaseMod.GetLevel()) - PlayroomBackData(player) + player.PlayroomBackData() player.PlayMod.save() return nil } @@ -1851,7 +1972,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, @@ -1868,7 +1992,7 @@ func ReqDelFriend(player *Player, buf []byte) error { Uid: req.Uid, }) player.AddLog(Uid, friend.LOG_TYPE_FRIEND_DELETE, "", GoUtil.Now()) - FriendListBackData(player) + player.FriendListBackData() player.TeLog("friend_delete", map[string]interface{}{ "player_id": Uid, }) @@ -1878,7 +2002,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) @@ -1894,20 +2021,23 @@ func ReqRefuseFriend(player *Player, buf []byte) error { SendT: GoUtil.Now(), } FriendMgrSend(m) - FriendApplyBackData(player) + player.FriendApplyBackData() return nil } // 向好友请求卡牌 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 +2124,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 +2138,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 +2174,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 +2210,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 +2252,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 +2295,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 +2331,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 +2365,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 +2425,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 +2465,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 +2511,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 +2542,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 +2570,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 +2581,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 +2600,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 +2625,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 +2663,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 +2705,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 +2720,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 +2756,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 +2771,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 +2817,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 +2844,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 +2854,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,8 +2929,11 @@ func ReqPiggyBankReward(player *Player, buf []byte) error { // 生成订单号 func ReqCreateOrderSn(player *Player, buf []byte) error { req := &msg.ReqCreateOrderSn{} - proto.Unmarshal(buf, req) - OrderSn, err := CreateOrderSn(player, req) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } + OrderSn, err := player.CreateOrderSn(req) if err != nil { return err } @@ -2760,9 +2947,12 @@ 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) + go player.TriggerShippingOrder(req) player.PushClientRes(&msg.ResShippingOrder{ Code: msg.RES_CODE_SUCCESS, }) @@ -2782,8 +2972,8 @@ func ReqChampshipReward(player *Player, buf []byte) error { return err } player.PlayMod.save() - BackChampship(player) - TriggerSeed(player) + player.BackChampship() + player.TriggerSeed() player.PushClientRes(&msg.ResChampshipReward{ Code: msg.RES_CODE_SUCCESS, }) @@ -2810,7 +3000,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 @@ -2850,28 +3043,31 @@ func ReqFriendRecommend(player *Player, buf []byte) error { } func ReqFriendList(player *Player, buf []byte) error { - FriendListBackData(player) + player.FriendListBackData() return nil } func ReqFriendApply(player *Player, buf []byte) error { - FriendApplyBackData(player) + player.FriendApplyBackData() return nil } func ReqFriendCardMsg(player *Player, buf []byte) error { - FriendCardBackData(player) + player.FriendCardBackData() return nil } func ReqFriendTimeLine(player *Player, buf []byte) error { - FriendLogBackData(player) + player.FriendLogBackData() return nil } 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 +3106,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 { @@ -2960,7 +3159,7 @@ func ReqChampshipRankReward(player *Player, buf []byte) error { FriendMod.AddActLog(friend.ACT_LOG_TYPE_GET_CHAMPIONSHIP_RANK, GoUtil.String(MyLastRank)) } player.PlayMod.save() - BackChampship(player) + player.BackChampship() player.PushClientRes(&msg.ResChampshipRankReward{ Code: msg.RES_CODE_SUCCESS, }) @@ -2976,14 +3175,17 @@ 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{ ResultCode: msg.RES_CODE_SUCCESS, }) player.PlayMod.save() - BackUserInfo(player) + player.BackUserInfo() player.UpdateUserInfo() player.TeLog("nickname_set", map[string]interface{}{ "nickname_name": req.Name, @@ -2993,17 +3195,20 @@ 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{ ResultCode: msg.RES_CODE_SUCCESS, }) player.PlayMod.save() - BackUserInfo(player) + player.BackUserInfo() PlayroomMod := player.PlayMod.getPlayroomMod() PlayroomMod.UnLock(BaseMod.GetLevel()) - LimitedTimePlayroomTrigger(player) + player.LimitedTimePlayroomTrigger() player.UpdateUserInfo() player.TeLog("petname_set", map[string]interface{}{ "petname": req.Name, @@ -3012,15 +3217,18 @@ func ReqSetPetName(player *Player, buf []byte) error { } func ReqUserInfo(player *Player, buf []byte) error { - BackUserInfo(player) + player.BackUserInfo() return nil } 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 +3252,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 +3273,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 +3291,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 +3327,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) { @@ -3133,7 +3353,7 @@ func ReqAutoAddInviteFriend(player *Player, buf []byte) error { PlayroomMod := player.PlayMod.getPlayroomMod() BaseMod := player.PlayMod.getBaseMod() PlayroomMod.AddRoomPointAdd(BaseMod.GetLevel()) - PlayroomBackData(player) + player.PlayroomBackData() player.TeLog("friend_add", map[string]interface{}{ "player_id": req.Id, "add_type": "邀请注册", @@ -3143,7 +3363,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) { @@ -3174,7 +3397,7 @@ func ReqAutoAddInviteFriend2(player *Player, buf []byte) error { PlayroomMod := player.PlayMod.getPlayroomMod() BaseMod := player.PlayMod.getBaseMod() PlayroomMod.AddRoomPointAdd(BaseMod.GetLevel()) - PlayroomBackData(player) + player.PlayroomBackData() player.TeLog("friend_add", map[string]interface{}{ "player_id": req.Id, "add_type": "邀请注册", @@ -3184,7 +3407,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()) @@ -3219,17 +3445,20 @@ func ReqSelectLimitEvent(player *Player, buf []byte) error { // 请求挖矿基础数据 func ReqMining(player *Player, buf []byte) error { - MiningBackData(player) + player.MiningBackData() return nil } // 请求挖矿 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) + ActivityInfo := player.GetActivityInfo(activity.ACT_TYPE_MINING) + Status := player.GetActivityStatus(activity.ACT_TYPE_MINING) if Status != ACT_STATUS_START { player.SendErrClienRes(&msg.ResMiningTake{ Code: msg.RES_CODE_FAIL, @@ -3238,7 +3467,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, @@ -3265,14 +3494,14 @@ func ReqMiningTake(player *Player, buf []byte) error { player.TeLog("ReqMiningTake", map[string]interface{}{}) player.PlayMod.save() player.NotifyRed(activity.ACT_TYPE_MINING) - MiningBackData(player) + player.MiningBackData() return nil } // 领取关卡奖励 func ReqMiningReward(player *Player, buf []byte) error { MiningMod := player.PlayMod.getMiningMod() - Status := GetActivityStatus(player, activity.ACT_TYPE_MINING) + Status := player.GetActivityStatus(activity.ACT_TYPE_MINING) if Status != ACT_STATUS_START { player.SendErrClienRes(&msg.ResMiningReward{ Code: msg.RES_CODE_FAIL, @@ -3304,30 +3533,36 @@ func ReqMiningReward(player *Player, buf []byte) error { Code: msg.RES_CODE_SUCCESS, }) player.PlayMod.save() - MiningBackData(player) + player.MiningBackData() return nil } // 请求猜颜色基础数据 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 } player.PlayMod.save() - GuessColorBackData(player) + player.GuessColorBackData() return nil } // 请求猜颜色 func ReqGuessColorTake(player *Player, buf []byte) error { req := &msg.ReqGuessColorTake{} - proto.Unmarshal(buf, req) - Status := GetActivityStatus(player, activity.ACT_TYPE_GUESS_COLOR) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } + Status := player.GetActivityStatus(activity.ACT_TYPE_GUESS_COLOR) if Status != ACT_STATUS_START { player.SendErrClienRes(&msg.ResGuessColorTake{ Code: msg.RES_CODE_FAIL, @@ -3337,7 +3572,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, @@ -3345,13 +3580,17 @@ func ReqGuessColorTake(player *Player, buf []byte) error { }) return err } - GuessColorMod.Take(req.Map.Map, req.OMap) + var M map[int32]int32 + if req.Map != nil { + M = req.Map.Map + } + GuessColorMod.Take(M, req.OMap) player.TeLog("ReqGuessColorTake", map[string]interface{}{ "map": req.Map.Map, "o_map": req.OMap, }) player.PlayMod.save() - GuessColorBackData(player) + player.GuessColorBackData() player.NotifyRed(activity.ACT_TYPE_GUESS_COLOR) return nil } @@ -3359,8 +3598,11 @@ func ReqGuessColorTake(player *Player, buf []byte) error { // 请求猜颜色奖励 func ReqGuessColorReward(player *Player, buf []byte) error { req := &msg.ReqGuessColorReward{} - proto.Unmarshal(buf, req) - Status := GetActivityStatus(player, activity.ACT_TYPE_GUESS_COLOR) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } + Status := player.GetActivityStatus(activity.ACT_TYPE_GUESS_COLOR) if Status != ACT_STATUS_START { player.SendErrClienRes(&msg.ResGuessColorReward{ Code: msg.RES_CODE_FAIL, @@ -3389,22 +3631,25 @@ func ReqGuessColorReward(player *Player, buf []byte) error { "item_list": itemList, }) player.PlayMod.save() - GuessColorBackData(player) + player.GuessColorBackData() return nil } // 请求竞赛基础数据 func ReqRace(player *Player, buf []byte) error { - RaceBackData(player) + player.RaceBackData() return nil } // 请求竞赛开始 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, @@ -3412,7 +3657,7 @@ func ReqRaceStart(player *Player, buf []byte) error { }) return err } - RaceBackData(player) + player.RaceBackData() player.PushClientRes(&msg.ResRaceStart{ Code: msg.RES_CODE_SUCCESS, }) @@ -3422,7 +3667,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 { @@ -3440,7 +3688,7 @@ func ReqRaceReward(player *Player, buf []byte) error { }) return err } - RaceBackData(player) + player.RaceBackData() player.TeLog("ReqRaceReward", map[string]interface{}{ "item_list": Items, }) @@ -3452,24 +3700,27 @@ func ReqRaceReward(player *Player, buf []byte) error { // 请求playroom基础数据 func ReqPlayroom(player *Player, buf []byte) error { - PlayroomBackData(player) + player.PlayroomBackData() return nil } // 请求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 { Targer = PlayroomMod.GetTarget() } if req.Uid == -1 { - Targer = GetVisitorPlayer(player) + Targer = player.GetVisitorPlayer() } if Targer == 0 { - PlayroomVisit(player, Targer) + player.PlayroomVisit(Targer) return nil } PlayerData := G_GameLogicPtr.GetSimplePlayerByUid(Targer) @@ -3508,14 +3759,17 @@ func ReqPlayroomInfo(player *Player, buf []byte) error { PlayroomMod.SetGameRewardFlip(int(float64(PlayerData.Star)*0.03), int(float64(PlayerData.Star)*0.05), int(float64(PlayerData.Star)*0.1)) } player.PlayMod.save() - PlayroomVisit(player, Targer) + player.PlayroomVisit(Targer) return nil } // 请求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 { @@ -3549,7 +3803,7 @@ func ReqPlayroomInteract(player *Player, buf []byte) error { player.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_INTERACT, A: []interface{}{int(req.Id)}}) player.PlayMod.save() G_GameLogicPtr.SetUserData(int(player.M_DwUin), VAR_OP_KISS, 0) - LimitedTimePlayroomTrigger_(player, PType) + player.LimitedTimePlayroomTrigger_(PType) player.NotifyPlayroomKiss() player.TeLog("playroom_interact", map[string]interface{}{ "interact_id": int(req.Id), @@ -3565,9 +3819,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 +3844,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 +3858,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, @@ -3629,7 +3889,7 @@ func ReqPlayroomGame(player *Player, buf []byte) error { "item_list": Items, }) PlayroomMod.ResetGame() - PlayroomBackData(player) + player.PlayroomBackData() player.PlayerDecoSetLog("emoji", int(req.EmojiId), "playroom_game") player.PushClientRes(&msg.ResPlayroomGame{ Code: msg.RES_CODE_SUCCESS, @@ -3643,10 +3903,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, @@ -3688,7 +3951,7 @@ func ReqPlayroomSelectReward(player *Player, buf []byte) error { FriendMod.AddActLog(friend.ACT_LOG_TYPE_GET_VISIT_GAME_PRIZE_1, "") PlayroomMod.ResetGame() player.PlayerDecoSetLog("emoji", int(req.EmojiId), "playroom_select_reward") - PlayroomBackData(player) + player.PlayroomBackData() player.PlayMod.save() player.PushClientRes(&msg.ResPlayroomSelectReward{ Code: msg.RES_CODE_SUCCESS, @@ -3707,7 +3970,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 { @@ -3736,7 +4002,7 @@ func ReqPlayroomWork(player *Player, buf []byte) error { }) player.PlayMod.save() player.PushClientRes(PlayroomMod.NotifyWork()) - // PlayroomBackData(player) + // player.PlayroomBackData() player.PushClientRes(&msg.ResPlayroomWork{ Code: msg.RES_CODE_SUCCESS, }) @@ -3775,7 +4041,7 @@ func ReqPlayroomDraw(player *Player, buf []byte) error { return err } player.PlayMod.save() - // PlayroomBackData(player) + // player.PlayroomBackData() player.PushClientRes(PlayroomMod.NotifyMood()) player.TeLog("playroom_draw", map[string]interface{}{ "draw_id": Id, @@ -3791,7 +4057,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 { @@ -3815,7 +4084,7 @@ func ReqPlayroomChip(player *Player, buf []byte) error { G_GameLogicPtr.SetUserData(int(player.M_DwUin), VAR_OP_CHIP_SET, len(PlayroomMod.ChipList)) player.PlayMod.save() - PlayroomBackData(player) + player.PlayroomBackData() player.PushClientRes(&msg.ResPlayroomChip{ Code: msg.RES_CODE_SUCCESS, }) @@ -3825,7 +4094,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)) @@ -3841,7 +4113,7 @@ func ReqPlayroomFlip(player *Player, buf []byte) error { "Id": req.Id, }) player.PlayMod.save() - PlayroomBackData(player) + player.PlayroomBackData() player.PushClientRes(&msg.ResPlayroomFlip{ Code: msg.RES_CODE_SUCCESS, Id: req.Id, @@ -3852,7 +4124,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 { @@ -3897,7 +4172,7 @@ func ReqPlayroomFlipReward(player *Player, buf []byte) error { }) player.PlayerDecoSetLog("emoji", int(req.EmojiId), "playroom_flip_reward") player.PlayMod.save() - PlayroomBackData(player) + player.PlayroomBackData() player.PushClientRes(&msg.ResPlayroomFlipReward{ Code: msg.RES_CODE_SUCCESS, }) @@ -3906,7 +4181,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 +4196,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 +4224,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 +4270,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, @@ -4007,13 +4291,16 @@ func ReqPlayroomUnlock(player *Player, buf []byte) error { Code: msg.RES_CODE_SUCCESS, Id: int32(req.Id), }) - PlayroomBackData(player) + player.PlayroomBackData() return nil } 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 { @@ -4041,13 +4328,16 @@ func ReqPlayroomTask(player *Player, buf []byte) error { Code: msg.RES_CODE_SUCCESS, Id: int32(req.Id), }) - PlayroomBackData(player) + player.PlayroomBackData() return nil } 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 +4373,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 { @@ -4094,6 +4387,7 @@ func ReqOfflineReconnectFunc(a gate.Agent, buf []byte) error { internal.AsignPlayerToAgents(a, player) internal.Agents.Delete(agent) } + player.TeLog("reconnect", nil) res.Result = 3 } else { res.Result = 2 @@ -4106,7 +4400,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 +4419,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 +4460,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, @@ -4209,7 +4508,7 @@ func ReqPlayroomShop(player *Player, buf []byte) error { player.PetItemGetLog(AddItems, LoseItem, "Shop") player.PlayMod.save() player.PushClientRes(PlayroomMod.NotifyMood()) - PlayroomBackData(player) + player.PlayroomBackData() player.PushClientRes(&msg.ResPlayroomShop{ Code: msg.RES_CODE_SUCCESS, }) @@ -4223,7 +4522,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 +4555,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 +4655,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 +4668,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 +4704,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, @@ -4412,7 +4726,7 @@ func ReqSetEmoji(player *Player, buf []byte) error { player.PushClientRes(&msg.ResSetEmoji{ Code: msg.RES_CODE_SUCCESS, }) - BackUserInfo(player) + player.BackUserInfo() return nil } @@ -4426,7 +4740,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 +4791,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 +4809,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 { @@ -4502,7 +4825,7 @@ func ReqPlayroomDressSet(player *Player, buf []byte) error { player.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_PETDRESS, A: []interface{}{Parts}}) player.PlayMod.save() //player.PetDecoSetLog(Diff) - PlayroomBackData(player) + player.PlayroomBackData() player.PushClientRes(&msg.ResPlayroomDressSet{ Code: msg.RES_CODE_SUCCESS, }) @@ -4511,7 +4834,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 { @@ -4522,7 +4848,7 @@ func ReqPlayroomPetAirSet(player *Player, buf []byte) error { return error } player.PlayMod.save() - PlayroomBackData(player) + player.PlayroomBackData() player.PushClientRes(&msg.ResPlayroomPetAirSet{ Code: msg.RES_CODE_SUCCESS, }) @@ -4574,8 +4900,11 @@ func ReqLimitEventLuckyCat(player *Player, buf []byte) error { func ReqActivityReward(player *Player, buf []byte) error { req := &msg.ReqActivityReward{} - proto.Unmarshal(buf, req) - ActivityInfo := GetActivityInfo(player, int(req.Id)) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } + ActivityInfo := player.GetActivityInfo(int(req.Id)) if ActivityInfo == nil { player.SendErrClienRes(&msg.ResActivityReward{ Code: msg.RES_CODE_FAIL, @@ -4615,7 +4944,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 +4958,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 +5000,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 视为邀请好友成功 @@ -4673,17 +5011,17 @@ func ReqAddNpc(player *Player, buf []byte) error { InviteMod.AddInvite(int(req.NpcId)) } player.PlayMod.save() - FriendListBackData(player) + player.FriendListBackData() PlayroomMod := player.PlayMod.getPlayroomMod() BaseMod := player.PlayMod.getBaseMod() PlayroomMod.AddRoomPointInvite(BaseMod.GetLevel()) PlayroomMod.AddRoomPointAdd(BaseMod.GetLevel()) - PlayroomBackData(player) + player.PlayroomBackData() 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, nil) + FriendMod.AddReplyInfo(int(req.NpcId), friend.REPLY_TYPE_GREETING_Get, "", GoUtil.Now()+24*3600, nil) 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 +5032,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 +5051,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 +5088,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 +5123,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 +5156,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 +5183,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 +5215,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 +5229,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 +5247,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 +5258,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 +5281,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 +5326,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 +5339,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 +5371,21 @@ func ReqCatnip(player *Player, buf []byte) error { // TODO : 猫草大作战邀请好友 func ReqCatnipInvite(player *Player, buf []byte) error { req := &msg.ReqCatnipInvite{} - proto.Unmarshal(buf, req) - ActivityId := GetActivityId(player, activity.ACT_TYPE_MINING) + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } + ActivityId := player.GetActivityId(activity.ACT_TYPE_CATNIP) + if ActivityId == 0 { + player.SendErrClienRes(&msg.ResCatnipInvite{ + Code: msg.RES_CODE_FAIL, + Msg: "activity not active", + }) + return fmt.Errorf("activity not active") + } + ActivityInfo := player.GetActivityInfo(ActivityId) CatnipMod := player.PlayMod.getCatnipMod() - err := CatnipMod.Invite(int(req.Id), int(req.Uid)) + err = CatnipMod.Invite(int(req.Uid), int(req.Id)) if err != nil { player.SendErrClienRes(&msg.ResCatnipInvite{ Code: msg.RES_CODE_FAIL, @@ -5011,33 +5393,45 @@ func ReqCatnipInvite(player *Player, buf []byte) error { }) return err } - player.TeLog("catnip_invite", map[string]interface{}{ + player.TeLog("cats_garden_invite", map[string]interface{}{ "Id": int(req.Id), }) FriendMgrSend(&MsqMod.Msg{ From: int(player.M_DwUin), To: int(req.Uid), Type: MsqMod.HANDLE_TYPE_CATNIP_INVITE, + End: ActivityInfo.EndT, Extra: CatnipMsg{ ActivityId: ActivityId, GameId: int(req.Id), }, SendT: GoUtil.Now(), }) - + //player.CatnipBackData() player.PlayMod.save() player.PushClientRes(&msg.ResCatnipInvite{ Code: msg.RES_CODE_SUCCESS, + Uid: req.Uid, }) return nil } 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)) + ActivityId := player.GetActivityId(activity.ACT_TYPE_CATNIP) + if ActivityId == 0 { + player.SendErrClienRes(&msg.ResCatnipAgree{ + Code: msg.RES_CODE_FAIL, + Msg: "activity not active", + }) + return fmt.Errorf("activity not active") + } + _, err = CatnipMod.Agree(int(req.Id), int(req.Uid)) if err != nil { player.SendErrClienRes(&msg.ResCatnipAgree{ Code: msg.RES_CODE_FAIL, @@ -5045,7 +5439,15 @@ func ReqCatnipAgree(player *Player, buf []byte) error { }) return err } - player.TeLog("catnip_agree", map[string]interface{}{ + 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("cats_garden_accept_invite", map[string]interface{}{ "Id": int(req.Id), }) FriendMgrSend(&MsqMod.Msg{ @@ -5058,22 +5460,11 @@ func ReqCatnipAgree(player *Player, buf []byte) error { }, SendT: GoUtil.Now(), }) - - for _, v := range UserList { - FriendMgrSend(&MsqMod.Msg{ - From: int(player.M_DwUin), - To: int(v), - Type: MsqMod.HANDLE_TYPE_CATNIP_AGREE, - Extra: CatnipMsg{ - ActivityId: ActivityId, - GameId: int(req.Id), - }, - SendT: GoUtil.Now(), - }) - } + //player.CatnipBackData() player.PlayMod.save() player.PushClientRes(&msg.ResCatnipAgree{ Code: msg.RES_CODE_SUCCESS, + Uid: req.Uid, }) return nil } @@ -5081,9 +5472,20 @@ 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)) + ActivityId := player.GetActivityId(activity.ACT_TYPE_CATNIP) + if ActivityId == 0 { + player.SendErrClienRes(&msg.ResCatnipMultiply{ + Code: msg.RES_CODE_FAIL, + Msg: "activity not active", + }) + return fmt.Errorf("activity not active") + } + err = CatnipMod.Multiply(int(req.Multiply)) if err != nil { player.SendErrClienRes(&msg.ResCatnipMultiply{ Code: msg.RES_CODE_FAIL, @@ -5092,12 +5494,13 @@ 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, + Code: msg.RES_CODE_SUCCESS, + Multiply: req.Multiply, }) return nil } @@ -5105,9 +5508,20 @@ 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)) + ActivityId := player.GetActivityId(activity.ACT_TYPE_CATNIP) + if ActivityId == 0 { + player.SendErrClienRes(&msg.ResCatnipPlay{ + Code: msg.RES_CODE_FAIL, + Msg: "activity not active", + }) + return fmt.Errorf("activity not active") + } + Id, Growth, PartnerId, Items, ItemCost, FriendItems, err := CatnipMod.Play(int(req.Id)) if err != nil { player.SendErrClienRes(&msg.ResCatnipPlay{ Code: msg.RES_CODE_FAIL, @@ -5121,6 +5535,7 @@ func ReqCatnipPlay(player *Player, buf []byte) error { Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) + return err } err = player.HandleItem(Items, msg.ITEM_POP_LABEL_CatnipPlay.String()) if err != nil { @@ -5128,16 +5543,18 @@ func ReqCatnipPlay(player *Player, buf []byte) error { Code: msg.RES_CODE_FAIL, Msg: err.Error(), }) + return err } - player.TeLog("catnip_play", map[string]interface{}{ - "Id": int(req.Id), - "Growth": Growth, - "PartnerId": PartnerId, - "Items": Items, + player.TeLog("cats_garden_expend_token", map[string]interface{}{ + "friends_ID": PartnerId, + "multiple": CatnipMod.GetMultiple(), + "expend_num": ItemCost[0].Num, + "get_award": Items, }) if Growth > 0 { - player.CatnipGrowthMsg(PartnerId, int(req.Id), Growth) + player.CatnipGrowthMsg(PartnerId, int(req.Id), Growth, FriendItems*CatnipMod.Mul) } + //player.CatnipBackData() player.PlayMod.save() player.PushClientRes(&msg.ResCatnipPlay{ Code: msg.RES_CODE_SUCCESS, @@ -5149,9 +5566,20 @@ 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)) + ActivityId := player.GetActivityId(activity.ACT_TYPE_CATNIP) + if ActivityId == 0 { + player.SendErrClienRes(&msg.ResCatnipPlay{ + Code: msg.RES_CODE_FAIL, + Msg: "activity not active", + }) + return fmt.Errorf("activity not active") + } + Items, GameInfo, err := CatnipMod.Reward(int(req.Id)) if err != nil { player.SendErrClienRes(&msg.ResCatnipReward{ Code: msg.RES_CODE_FAIL, @@ -5167,11 +5595,13 @@ func ReqCatnipReward(player *Player, buf []byte) error { }) return err } - player.TeLog("catnip_reward", map[string]interface{}{ - "Id": int(req.Id), - "Progress": int(req.Progress), - "Items": Items, + player.TeLog("cats_garden_stage_reward", map[string]interface{}{ + "Id": int(req.Id), + "friends_ID": GameInfo.Partner, + "friends_get_num": GameInfo.PartnerAdd, + "user_get_num": GameInfo.Progress - GameInfo.PartnerAdd, }) + //player.CatnipBackData() player.PlayMod.save() player.PushClientRes(&msg.ResCatnipReward{ Code: msg.RES_CODE_SUCCESS, @@ -5182,8 +5612,19 @@ 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() + ActivityId := player.GetActivityId(activity.ACT_TYPE_CATNIP) + if ActivityId == 0 { + player.SendErrClienRes(&msg.ResCatnipPlay{ + Code: msg.RES_CODE_FAIL, + Msg: "activity not active", + }) + return fmt.Errorf("activity not active") + } Items, err := CatnipMod.GrandReward() if err != nil { player.SendErrClienRes(&msg.ResCatnipGrandReward{ @@ -5200,9 +5641,10 @@ func ReqCatnipGrandReward(player *Player, buf []byte) error { }) return err } - player.TeLog("catnip_grand_reward", map[string]interface{}{ - "Items": Items, + player.TeLog("cats_garden_final_reward", map[string]interface{}{ + "get_reward": Items, }) + //player.CatnipBackData() player.PlayMod.save() player.PushClientRes(&msg.ResCatnipGrandReward{ Code: msg.RES_CODE_SUCCESS, @@ -5212,9 +5654,20 @@ 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)) + ActivityId := player.GetActivityId(activity.ACT_TYPE_CATNIP) + if ActivityId == 0 { + player.SendErrClienRes(&msg.ResCatnipRefuse{ + Code: msg.RES_CODE_FAIL, + Msg: "activity not active", + }) + return fmt.Errorf("activity not active") + } + err = CatnipMod.Refuse(int(req.Id), int(req.Uid)) if err != nil { player.SendErrClienRes(&msg.ResCatnipRefuse{ Code: msg.RES_CODE_FAIL, @@ -5231,19 +5684,21 @@ func ReqCatnipRefuse(player *Player, buf []byte) error { Type: MsqMod.HANDLE_TYPE_CATNIP_REFUSE, SendT: GoUtil.Now(), Extra: CatnipMsg{ - ActivityId: GetActivityId(player, activity.ACT_TYPE_MINING), + ActivityId: player.GetActivityId(activity.ACT_TYPE_CATNIP), GameId: int(req.Id), }, }) + //player.CatnipBackData() player.PlayMod.save() player.PushClientRes(&msg.ResCatnipRefuse{ Code: msg.RES_CODE_SUCCESS, + Uid: req.Uid, }) return nil } func ReqActPass(player *Player, buf []byte) error { - ActPassBackData(player) + player.ActPassBackData() return nil } @@ -5272,7 +5727,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 +5755,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 := player.GetActivityId(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, @@ -5308,7 +5807,7 @@ func ReqFriendReplyHandle(player *Player, buf []byte) error { }) return err } - FriendLogBackData(player) + player.FriendLogBackData() player.PushClientRes(&msg.ResFriendReplyHandle{ Code: msg.RES_CODE_SUCCESS, LogId: req.LogId, @@ -5318,7 +5817,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 +5850,42 @@ 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() + ActivityId := player.GetActivityId(activity.ACT_TYPE_CATNIP) + if ActivityId == 0 { + player.SendErrClienRes(&msg.ResCatnipEmoji{ + Code: msg.RES_CODE_FAIL, + Msg: "activity not active", + }) + return fmt.Errorf("activity not active") + } + GameInfo := CatnipMod.GetGameInfo(int(req.Id)) + if GameInfo.Partner == 0 { + player.SendErrClienRes(&msg.ResCatnipEmoji{ + Code: msg.RES_CODE_FAIL, + Msg: "no partner", + }) + return fmt.Errorf("no partner") + } + FriendMgrSend(&MsqMod.Msg{ + From: int(player.M_DwUin), + To: GameInfo.Partner, + Type: MsqMod.HANDLE_TYPE_CATNIP_SEND_EMOJI, + Extra: int(req.EmojiId), + }) + player.PushClientRes(&msg.ResCatnipEmoji{ + Code: msg.RES_CODE_SUCCESS, + EmojiId: req.EmojiId, + Id: req.Id, + }) + + player.CatnipBackData() + return nil +} diff --git a/src/server/game/Trigger.go b/src/server/game/Trigger.go index f68c6ed8..4e9b475f 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" @@ -46,7 +47,7 @@ func (player *Player) MailTrigger(Tr *quest.Trigger) bool { } tr := false for _, v := range t { - if checkTriggerCondition(player, v.Trigger) { + if player.checkTriggerCondition(v.Trigger) { Title := languageCfg.GetLanguage(msg.LANG_TYPE_LANG_CN, v.Title) Content := languageCfg.GetLanguage(msg.LANG_TYPE_LANG_CN, v.Content) TitleEn := languageCfg.GetLanguage(msg.LANG_TYPE_LANG_EN, v.Title) @@ -75,7 +76,7 @@ func (player *Player) MailTrigger(Tr *quest.Trigger) bool { return tr } -func checkTriggerCondition(player *Player, Trigger []string) bool { +func (player *Player) checkTriggerCondition(Trigger []string) bool { if len(Trigger) < 4 { return false } @@ -92,11 +93,11 @@ func checkTriggerCondition(player *Player, Trigger []string) bool { } } -func TriggerShippingOrderOrigin(player *Player, req *msg.ReqShippingOrder) { +func (player *Player) TriggerShippingOrderOrigin(req *msg.ReqShippingOrder) { OrderSn := req.OrderSn Status := int(req.Status) if Status == MergeConst.ORDER_STATUS_CANCEL { // 取消支付 - CancelOrder(player, OrderSn) + player.CancelOrder(OrderSn) player.PushClientRes(&msg.ResShippingOrder{ Code: msg.RES_CODE_SUCCESS, Msg: "cancel success", @@ -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() @@ -133,9 +132,9 @@ func TriggerShippingOrderOrigin(player *Player, req *msg.ReqShippingOrder) { OrderExtraData.ChargeId = OrderData.ProductId } if OrderExtraData.Type == 0 { - Charge(player, int(OrderData.ProductId)) + player.Charge(int(OrderData.ProductId)) } else { - SendCharge(player, OrderExtraData) + player.SendCharge(OrderExtraData) } OrderData.PayStatus = MergeConst.ORDER_STATUS_SHIP OrderData.ProductName = req.ProduceId @@ -160,11 +159,11 @@ func TriggerShippingOrderOrigin(player *Player, req *msg.ReqShippingOrder) { player.SendClientRes() } -func TriggerShippingOrder(player *Player, req *msg.ReqShippingOrder) { +func (player *Player) TriggerShippingOrder(req *msg.ReqShippingOrder) { OrderSn := req.OrderSn Status := int(req.Status) if Status == MergeConst.ORDER_STATUS_CANCEL { // 取消支付 - CancelOrder(player, OrderSn) + player.CancelOrder(OrderSn) player.PushClientRes(&msg.ResShippingOrder{ Code: msg.RES_CODE_SUCCESS, Msg: "cancel success", @@ -179,7 +178,7 @@ func TriggerShippingOrder(player *Player, req *msg.ReqShippingOrder) { if n > 14 { break } - OrderData, err = GoogleVerify(player, OrderSn, req.ProduceId, req.Token) + OrderData, err = player.GoogleVerify(OrderSn, req.ProduceId, req.Token) if err != nil { log.Debug("GoogleVerify parmas OrderSn:%s; ProduceId:%s; Token:%s", OrderSn, req.ProduceId, req.Token) log.Debug("GoogleVerify err:%v", err) @@ -226,9 +225,9 @@ func TriggerShippingOrder(player *Player, req *msg.ReqShippingOrder) { OrderExtraData.ChargeId = OrderData.ProductId } if OrderExtraData.Type == 0 { - Charge(player, int(OrderData.ProductId)) + player.Charge(int(OrderData.ProductId)) } else { - SendCharge(player, OrderExtraData) + player.SendCharge(OrderExtraData) } OrderData.PayStatus = MergeConst.ORDER_STATUS_SHIP OrderData.ProductName = req.ProduceId @@ -250,7 +249,7 @@ func TriggerShippingOrder(player *Player, req *msg.ReqShippingOrder) { player.SendClientRes() } -func TriggerComfortOrder(p *Player) { +func (p *Player) TriggerComfortOrder() { BaseMod := p.PlayMod.getBaseMod() Now := GoUtil.Now() Lv := BaseMod.GetLevel() @@ -266,8 +265,8 @@ func TriggerComfortOrder(p *Player) { OrderMod.CreateNormalOrder(BaseMod.GetLevel(), EmitList, EnergyMul, order.COMFORT_TYPE) } -func TriggerSeed(player *Player) { - ChampshipMod := player.PlayMod.getChampshipMod() +func (p *Player) TriggerSeed() { + ChampshipMod := p.PlayMod.getChampshipMod() Items, Score := champshipCfg.GetRewardItems(ChampshipMod.Reward + 1) if Score < 50 { return @@ -279,7 +278,7 @@ func TriggerSeed(player *Player) { break } } - BaseMod := player.PlayMod.getBaseMod() + BaseMod := p.PlayMod.getBaseMod() if !b { BaseMod.SetSeed(false) } else { @@ -287,8 +286,8 @@ func TriggerSeed(player *Player) { } } -func TriggerSeedSource(player *Player) { - BaseMod := player.PlayMod.getBaseMod() +func (p *Player) TriggerSeedSource() { + BaseMod := p.PlayMod.getBaseMod() if !BaseMod.GetSeed() { return } @@ -296,7 +295,7 @@ func TriggerSeedSource(player *Player) { Energy := BaseMod.GetEnergy() Total += Energy - ChessMod := player.PlayMod.getChessMod() + ChessMod := p.PlayMod.getChessMod() ChessList := ChessMod.GetUnlockChessList() ChessBuff := ChessMod.GetChessBuf() AllChess := append(ChessList, ChessBuff...) @@ -323,15 +322,15 @@ func TriggerSeedSource(player *Player) { BaseMod.SetSource(Total) } -func TriggerSeedOrder(player *Player) *order.Order { - OrderMod := player.PlayMod.getOrderMod() - ChessMod := player.PlayMod.getChessMod() - BaseMod := player.PlayMod.getBaseMod() +func (p *Player) TriggerSeedOrder() *order.Order { + OrderMod := p.PlayMod.getOrderMod() + ChessMod := p.PlayMod.getChessMod() + BaseMod := p.PlayMod.getBaseMod() if !BaseMod.GetSeed() { return nil } OrderMod.CreatOrderPool(BaseMod.Level, ChessMod.GetOrderEmit(), BaseMod.EnergyMul) - ChampshipMod := player.PlayMod.getChampshipMod() + ChampshipMod := p.PlayMod.getChampshipMod() NeedScore := champshipCfg.GetRewardTotalScore(ChampshipMod.Reward + 1) E := BaseMod.GetSource() ChessList := ChessMod.GetUnlockChessList() diff --git a/src/server/game/Type.go b/src/server/game/Type.go index 9ff8994d..55d416d4 100644 --- a/src/server/game/Type.go +++ b/src/server/game/Type.go @@ -86,9 +86,10 @@ type GameResult struct { } type CatnipMsg struct { - ActivityId int - GameId int - Growth int // 增长值 + ActivityId int + GameId int + Growth int // 增长值 + FriendItems int // 赠送好友的道具数量 } type CatnipLock struct { @@ -108,6 +109,6 @@ func init() { gob.Register(&ActivityInfo{}) gob.Register(&ChargeExtra{}) gob.Register(&GameResult{}) - gob.Register(&CatnipMsg{}) + gob.Register(CatnipMsg{}) gob.Register(&CatnipLock{}) } diff --git a/src/server/game/UnitTest.go b/src/server/game/UnitTest.go index 513e40b0..25662c4a 100644 --- a/src/server/game/UnitTest.go +++ b/src/server/game/UnitTest.go @@ -1,6 +1,8 @@ package game import ( + "bytes" + "encoding/gob" "fmt" "math" mergeDataCfg "server/conf/mergeData" @@ -133,8 +135,8 @@ func UnitOrderSeed(player *Player) error { BaseMod := player.PlayMod.getBaseMod() BaseMod.Seed = true - TriggerSeedSource(player) - o := TriggerSeedOrder(player) + player.TriggerSeedSource() + o := player.TriggerSeedOrder() fmt.Println(o) elapsed := time.Since(start) @@ -273,16 +275,15 @@ func UnitOrder2(p *Player, Lv, EnergyMul int) float64 { func UnitChess1(p *Player) error { ChessMod := p.PlayMod.getChessMod() p.PushClientRes(ChessMod.BackData()) - EmitRetireTrigger1(p) + p.EmitRetireTrigger1() DailyTaskMod := p.PlayMod.getDailyTaskMod() p.PushClientRes(DailyTaskMod.BackData()) return nil } func UnitPlayroom(p *Player) error { - //PlayroomMod := p.PlayMod.getPlayroomMod() - //PlayroomMod.UnLock(15) - PlayroomBackData(p) + + p.PlayroomBackData() return nil } @@ -332,7 +333,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) @@ -371,3 +372,21 @@ func UnitOrderPetReward(p *Player) error { } return nil } + +func UnitCatnip(p *Player) error { + //OrderMod := p.PlayMod.getOrderMod() + //KvMod := p.PlayMod.getKvMod() + ChessMod := p.PlayMod.getChessMod() + var buf bytes.Buffer + encode := gob.NewEncoder(&buf) + encode.Encode(ChessMod) + fmt.Printf("buf len:%dk\n", buf.Len()/1024) + return nil +} + +func Benchmark(player *Player) { + ChampshipMod := player.PlayMod.getChampshipMod() + ChampshipMod.AddScore([]int{949, 941, 10}) + player.HandleInChampshipRank() + player.HandleInUserRank() +} diff --git a/src/server/game/VarMgr.go b/src/server/game/VarMgr.go index aa195ca9..70c343f4 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" @@ -47,10 +48,14 @@ func (f *VarMgr) Init() { if f.data.(*VarData).UserVar == nil { f.data.(*VarData).UserVar = make(map[string]*VarUserData) } + if f.data.(*VarData).VarExpire == nil { + f.data.(*VarData).VarExpire = make(map[string]*VarExpireData) + } if f.getData().ZeroTime == GoUtil.ZeroTimestamp() { 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 +84,33 @@ 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", MyUid) + key := fmt.Sprintf("catnip_partner_%d", CatnipPartnerId) + OtherPartnerInfo := f.GetExpireVar(key) + MyPartnerInfo := f.GetExpireVar(myKey) + MyOfPartnerList := GoUtil.IntSlice(MyPartnerInfo.D) + OtherOfPartnerList := GoUtil.IntSlice(OtherPartnerInfo.D) + if len(MyOfPartnerList) > 4 || len(OtherOfPartnerList) > 4 { + return nil, fmt.Errorf("catnip partner already full for uid %d in game %d", CatnipPartnerId, CatnipGameId) + } + f.SetExpireVar(key, &VarExpireData{ + D: append(OtherOfPartnerList, MyUid), + T: m.End, + }) + f.SetExpireVar(myKey, &VarExpireData{ + D: append(MyOfPartnerList, 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/admin.go b/src/server/game/admin.go index 59c8befc..ba4a62e1 100644 --- a/src/server/game/admin.go +++ b/src/server/game/admin.go @@ -134,7 +134,7 @@ func ReqAdminShipping(args []interface{}) error { } Player := G_GameLogicPtr.GetPlayer(int64(OrderInfo.Uid)) if Player != nil { - go TriggerShippingOrderOrigin(Player, &msg.ReqShippingOrder{ + go Player.TriggerShippingOrderOrigin(&msg.ReqShippingOrder{ OrderSn: req.OrderSn, }) res["Msg"] = "player online,triggered sync" diff --git a/src/server/game/mod/catnip/Catnip.go b/src/server/game/mod/catnip/Catnip.go index e91a314d..ab86953d 100644 --- a/src/server/game/mod/catnip/Catnip.go +++ b/src/server/game/mod/catnip/Catnip.go @@ -8,10 +8,12 @@ import ( ) type CatnipMod struct { - Id int - Game map[int]*CatnipGame - - IsGetGrandReward bool // 是否领取过大丰收奖励 + Id int + Game map[int]*CatnipGame + Mul int // 倍数 + IsGetGrandReward bool // 是否领取过大丰收奖励 + InviteList map[int]*InviteInfo // 邀请列表,key: 邀请者ID, value: 被邀请者ID + BeInvitedList map[int]*InviteInfo // 被邀请列表,key: 被邀请者ID, value: 邀请者ID } type InviteInfo struct { @@ -20,15 +22,14 @@ type InviteInfo struct { } type CatnipGame struct { - Id int // 游戏ID - Partner int // 伙伴ID - 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 + Id int // 游戏ID + Partner int // 伙伴ID + Progress int // 进度 + PartnerAdd int // 伙伴贡献 + Reward []int // 已领取阶段奖励 + Status int // 0: Not Started, 1: In Progress, 2: Completed + + EmojiId int // 表情ID } const ( @@ -39,9 +40,16 @@ const ( func (c *CatnipMod) InitData() { // Initialize Catnip data here + // c.Game = nil if c.Game == nil { c.Game = make(map[int]*CatnipGame) } + if c.InviteList == nil { + c.InviteList = make(map[int]*InviteInfo) + } + if c.BeInvitedList == nil { + c.BeInvitedList = make(map[int]*InviteInfo) + } } func (c *CatnipMod) Login(Id int) int { @@ -56,7 +64,10 @@ 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 + c.InviteList = make(map[int]*InviteInfo) + c.BeInvitedList = make(map[int]*InviteInfo) for i := 1; i <= GameNum; i++ { c.Game[i] = &CatnipGame{ Id: i, @@ -72,125 +83,117 @@ func (c *CatnipMod) ZeroUpdate(Id int) { c.Login(Id) } -func (c *CatnipMod) Invite(Id, Uid int) error { - GameInfo, ok := c.Game[Id] - if !ok { - return fmt.Errorf("game with ID %d does not exist", Id) - } - if GameInfo.Status != 0 { - return fmt.Errorf("game with ID %d is already in progress or completed", Id) +func (c *CatnipMod) Invite(Uid, Id int) error { + if c.InviteList[Uid] != nil { + return fmt.Errorf("user with ID %d is already invited", Uid) } - if GameInfo.InviteList[Uid] != nil { - return fmt.Errorf("user with ID %d is already invited to game ID %d", Uid, Id) - } - - GameInfo.InviteList[Uid] = &InviteInfo{ - InviteId: Uid, + c.InviteList[Uid] = &InviteInfo{ + InviteId: Id, Time: GoUtil.Now(), } return nil } -func (c *CatnipMod) BeInvited(Id, Uid int, Time int64) error { - GameInfo, ok := c.Game[Id] - if !ok { - return fmt.Errorf("game with ID %d does not exist", Id) - } - if GameInfo.Status != GAME_STATUS_IDLE { - return fmt.Errorf("game with ID %d is already in progress or completed", Id) - } +func (c *CatnipMod) BeInvited(Uid int, Time int64) error { // Check if the user is already invited - invite := GameInfo.BeInvitedList[Uid] - if invite != nil && invite.InviteId == Id { - return fmt.Errorf("user with ID %d has already been invited to game ID %d", Uid, Id) + invite := c.BeInvitedList[Uid] + if invite != nil { + return fmt.Errorf("user with ID %d has already been invited ", Uid) } - GameInfo.BeInvitedList[Uid] = &InviteInfo{ - InviteId: Id, + c.BeInvitedList[Uid] = &InviteInfo{ + InviteId: Uid, Time: Time, } return nil } func (c *CatnipMod) Agree(Id, Uid int) ([]int, error) { - GameInfo, ok := c.Game[Id] - if !ok { - return nil, fmt.Errorf("game with ID %d does not exist", Id) - } - if GameInfo.Status != GAME_STATUS_IDLE { - return nil, fmt.Errorf("game with ID %d is already in progress or completed", Id) - } - // Check if the user is in the invite list - _, exists := GameInfo.InviteList[Uid] + _, exists := c.BeInvitedList[Uid] if !exists { return nil, fmt.Errorf("user with ID %d is not invited to game ID %d", Uid, Id) } // Remove the invite after agreeing - delete(GameInfo.InviteList, Uid) - GameInfo.Partner = Uid // Set the partner for the game - GameInfo.Status = GAME_STATUS_COMPLETED // Set the game status to completed + + delete(c.BeInvitedList, Uid) + for _, GameInfo := range c.Game { + if GameInfo.Partner == 0 { + GameInfo.Partner = Uid + GameInfo.Status = GAME_STATUS_IN_PROGRESS + return []int{}, nil + } + } + return []int{}, nil +} + +func (c *CatnipMod) BeAgree(Id, Uid int) ([]int, error) { + info, exists := c.InviteList[Uid] + if !exists { + return nil, fmt.Errorf("user with ID %d is not invited to game ID %d", Uid, Id) + } + // Remove the invite after agreeing + GameInfo := c.Game[info.InviteId] + if GameInfo.Partner == 0 { + GameInfo.Partner = Uid + GameInfo.Status = GAME_STATUS_IN_PROGRESS + delete(c.InviteList, Uid) + return []int{}, nil + } + delete(c.InviteList, Uid) + for _, GameInfo := range c.Game { + if GameInfo.Partner == 0 { + GameInfo.Partner = Uid + GameInfo.Status = GAME_STATUS_IN_PROGRESS + return []int{}, nil + } + } return []int{}, nil } func (c *CatnipMod) DelInvited(Id, Uid int) error { - GameInfo, ok := c.Game[Id] - if !ok { - return fmt.Errorf("game with ID %d does not exist", Id) - } - if GameInfo.Status != GAME_STATUS_IDLE { - return fmt.Errorf("game with ID %d is already in progress or completed", Id) - } - delete(GameInfo.InviteList, Uid) + delete(c.InviteList, Uid) 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 } func (c *CatnipMod) Refuse(Id, Uid int) error { - GameInfo, ok := c.Game[Id] - if !ok { - return fmt.Errorf("game with ID %d does not exist", Id) - } - if GameInfo.Status != GAME_STATUS_IDLE { - return fmt.Errorf("game with ID %d is already in progress or completed", Id) - } - delete(GameInfo.BeInvitedList, Uid) + delete(c.BeInvitedList, Uid) return nil } -func (c *CatnipMod) Play(Id int) (int, int, int, []*item.Item, []*item.Item, error) { +func (c *CatnipMod) Play(Id int) (int, int, int, []*item.Item, []*item.Item, int, error) { GameInfo, ok := c.Game[Id] if !ok { - return 0, 0, 0, nil, nil, fmt.Errorf("game with ID %d does not exist", Id) + return 0, 0, 0, nil, nil, 0, fmt.Errorf("game with ID %d does not exist", Id) } - Id, Items, Growth := catnipCfg.GetJackpotItem(GameInfo.Mul) + if GameInfo.Status != GAME_STATUS_IN_PROGRESS { + return 0, 0, 0, nil, nil, 0, fmt.Errorf("game with ID %d is not in progress", Id) + } + Id, Items, Growth, FriendItems := catnipCfg.GetJackpotItem(c.Mul) + Growth = Growth * c.Mul if Growth > 0 { c.Growth(Id, Growth) } - ItemCost := catnipCfg.GetItemCost(c.Id, GameInfo.Mul) - return Id, Growth, GameInfo.Partner, Items, ItemCost, nil + ItemCost := catnipCfg.GetItemCost(c.Id, c.Mul) + GameInfo.Progress += Growth + return Id, Growth, GameInfo.Partner, Items, ItemCost, FriendItems, nil } -func (c *CatnipMod) Reward(Id, Progress int) ([]*item.Item, error) { +func (c *CatnipMod) Reward(Id int) ([]*item.Item, *CatnipGame, error) { GameInfo, ok := c.Game[Id] if !ok { - return nil, fmt.Errorf("game with Progress %d does not exist", Id) + return nil, nil, fmt.Errorf("game with Progress %d does not exist", Id) } - if GameInfo.Progress < Progress { - return nil, fmt.Errorf("game with ID %d has not reached the required progress %d", Id, Progress) + Items, Ids := catnipCfg.GetProgressReward(c.Id, GameInfo.Reward, GameInfo.Progress) + GameInfo.Reward = append(GameInfo.Reward, Ids...) + if Items == nil { + return nil, nil, fmt.Errorf("no reward found for progress %d in game ID %d", GameInfo.Progress, Id) } - if GoUtil.InArray(Progress, GameInfo.Reward) { - return nil, fmt.Errorf("reward for progress %d has already been claimed in game ID %d", Progress, Id) - } - GameInfo.Reward = append(GameInfo.Reward, Progress) - return catnipCfg.GetProgressReward(c.Id, Progress), nil + return Items, GameInfo, nil } func (c *CatnipMod) GrandReward() ([]*item.Item, error) { @@ -215,7 +218,37 @@ func (c *CatnipMod) Growth(Id, Growth int) { return // Game is not in progress } GameInfo.Progress += Growth - if GameInfo.Progress >= catnipCfg.GetGameNum(Id) { // Assuming the game ends when progress reaches a certain threshold + if GameInfo.Progress >= catnipCfg.GetGameMaxProgress(c.Id) { // Assuming the game ends when progress reaches a certain threshold GameInfo.Status = GAME_STATUS_COMPLETED } } + +func (c *CatnipMod) GrowthByUid(Uid, Growth int) { + for _, v := range c.Game { + if v.Partner == Uid { + v.Progress += Growth + v.PartnerAdd += Growth + if v.Progress >= catnipCfg.GetGameMaxProgress(c.Id) { // Assuming the game ends when progress reaches a certain threshold + v.Status = GAME_STATUS_COMPLETED + } + } + } + +} + +func (c *CatnipMod) SetEmoji(Uid, EmojiId int) { + for _, v := range c.Game { + if v.Partner == Uid { + v.EmojiId = EmojiId + return + } + } +} + +func (c *CatnipMod) GetMultiple() int { + return c.Mul +} + +func (c *CatnipMod) GetGameInfo(Id int) *CatnipGame { + return c.Game[Id] +} 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..ed04d977 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 } @@ -175,7 +185,7 @@ func (d *Decorate) GetDecorateReward(areaId int) ([]*item.Item, error) { return nil, fmt.Errorf("areaId already rewarded") } d.AreaReward = append(d.AreaReward, areaId) - return decorateCfg.GetDecoarteReward(areaId, 20), nil + return decorateCfg.GetAreaReward(areaId), nil } func (d *Decorate) GetAreaId() int { diff --git a/src/server/game/mod/friend/Friend.go b/src/server/game/mod/friend/Friend.go index b8706228..3623036d 100644 --- a/src/server/game/mod/friend/Friend.go +++ b/src/server/game/mod/friend/Friend.go @@ -35,6 +35,7 @@ type ReplyInfo struct { AddTime int64 ReplyTime int64 EndTime int64 + Items []*item.Item } type ActLogInfo struct { @@ -69,6 +70,8 @@ type ApplyInfo struct { const ( REPLY_TYPE_GREETING = 1 // 问候 REPLY_TYPE_GREETING_Get = 2 // 收到问候 + REPLY_TYPE_CATNIP = 3 // 猫薄荷加好友 + REPLY_TYPE_CATNIP_ITEMS = 4 // 收到猫薄荷好友道具 ) // 24小时内与玩家进行过以下互动的用户,若被选中参加本次宠物宝藏,在其头像旁添加礼物盒 @@ -499,9 +502,8 @@ 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, Items []*item.Item) { f.AutoId++ - EndTime := GoUtil.Now() + 24*3600 f.ReplyList = append(f.ReplyList, &ReplyInfo{ Id: f.AutoId, Uid: Uid, @@ -510,6 +512,7 @@ func (f *FriendMod) AddReplyInfo(Uid int, Type int, Param string) { Status: 0, AddTime: GoUtil.Now(), EndTime: EndTime, + Items: Items, }) } diff --git a/src/server/game/mod/guessColor/guessColor.go b/src/server/game/mod/guessColor/guessColor.go index 532989bd..4c13e32d 100644 --- a/src/server/game/mod/guessColor/guessColor.go +++ b/src/server/game/mod/guessColor/guessColor.go @@ -89,9 +89,11 @@ func (g *GuessColorMod) FirstIn() []*item.Item { } func (g *GuessColorMod) Take(Map map[int32]int32, OMap map[int32]int32) { - g.MapList = append(g.MapList, Map) + if len(Map) > 0 { + g.MapList = append(g.MapList, Map) + g.Guess++ + } g.OMap = OMap - g.Guess++ } func (g *GuessColorMod) GetLoseItem() []*item.Item { 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..22415fee 100644 --- a/src/server/game/mod/msg/Msg.go +++ b/src/server/game/mod/msg/Msg.go @@ -107,6 +107,11 @@ const ( HANDLE_TYPE_FRIEND_GREETING_REPLY // 好友问候回复 HANDLE_TYPE_FRIEND_SPONSOER // 好友赞助体力 + + HANDLE_TYPE_CHAMPSHIP_LOGIN // 锦标赛登录 + HANDLE_TYPE_CHAMPSHIP_RANK_INFO // 锦标赛排名信息 + HANDLE_TYPE_SET_CATNIP_PARTNER // 设置猫薄荷伙伴 + HANDLE_TYPE_CATNIP_SEND_EMOJI // 发送猫薄荷表情 ) const ( diff --git a/src/server/game/mod/order/OrderFunc.go b/src/server/game/mod/order/OrderFunc.go index c286cfe4..91cabb17 100644 --- a/src/server/game/mod/order/OrderFunc.go +++ b/src/server/game/mod/order/OrderFunc.go @@ -501,7 +501,7 @@ func randOrderChess(o *OrderMod, lv int, Emit []int, EnergyMul, OrderType int) ( } //获取订单体力范围和棋子数量 MinEnergy, MaxEnergy, ChessNum := getChessByDiff(lv, OrderDiff, OrderType) - mergeList := getChessFromPoolByEnergy(o, MinEnergy, MaxEnergy, ChessNum, Emit, EnergyMul, OrderDiff) + mergeList := getChessFromPoolByEnergy(o, MinEnergy, MaxEnergy, ChessNum, Emit, EnergyMul, OrderDiff, OrderType) return mergeList, OrderDiff, nil } @@ -626,7 +626,7 @@ func ShuffleColor(List []string, Last string) []string { } // 获取发射器系列 -func getEmitSeries(o *OrderMod, Emit []int) string { +func getEmitSeries(o *OrderMod, Emit []int, OrderType int) string { o.initColorShuffle(Emit) PopEmitId := "" NewSlice := make([]string, 0) @@ -652,6 +652,14 @@ func getEmitSeries(o *OrderMod, Emit []int) string { if o.LastColor == PopEmitId { continue } + + if OrderType == Pet_type { + EmitId := getEmitBySeries(Emit, PopEmitId) + EmitInfo, _ := mergeDataCfg.GetOne(EmitId) + if EmitInfo.Emit_Type == "auto" { + continue + } + } PopEmitIdProductNum := mergeDataCfg.GetEmitProductNumByColor(PopEmitId) o.initColorShuffle(Emit) // 单链棋子 且订单中已有两个 跳过 @@ -845,10 +853,10 @@ func (o *OrderMod) getChessIdPool(Emit []int, Color string, EnergyMul, Lv, MinEn } return Chess, ChessLv } -func getChessFromPoolByEnergy(o *OrderMod, MinEnergy, MaxEnergy, ChessNum int, Emit []int, EnergyMul, OrderDiff int) []int { +func getChessFromPoolByEnergy(o *OrderMod, MinEnergy, MaxEnergy, ChessNum int, Emit []int, EnergyMul, OrderDiff, OrderType int) []int { ColorArr := make([]string, 0) for i := 0; i < ChessNum; i++ { - ColorArr = append(ColorArr, getEmitSeries(o, Emit)) + ColorArr = append(ColorArr, getEmitSeries(o, Emit, OrderType)) } if len(ColorArr) == 2 && ColorArr[0] == ColorArr[1] { log.Default() @@ -876,7 +884,7 @@ func getChessFromPoolByEnergy(o *OrderMod, MinEnergy, MaxEnergy, ChessNum int, E // 从棋子池中获取棋子 func getChessFromPoolByDiff(o *OrderMod, Diff int, Emit []int, EnergyMul int) int { - Color := getEmitSeries(o, Emit) + Color := getEmitSeries(o, Emit, 0) EmitChessId := getEmitBySeries(Emit, Color) //ColorRand := mergeDataCfg.GetEmitProduceType(EmitChessId) // 从棋子池中获取棋子 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/gamedata/type.go b/src/server/gamedata/type.go index 0268123a..2bb48771 100644 --- a/src/server/gamedata/type.go +++ b/src/server/gamedata/type.go @@ -16,6 +16,7 @@ type MergeDataRecord struct { Type string `json:"Type"` Emit_Product string `json:"Emit_Product"` Color string `json:"Color"` + Emit_Type string `json:"Emit_Type"` } type StartOrderData struct { diff --git a/src/server/go.mod b/src/server/go.mod index b5f48239..5dd700d0 100644 --- a/src/server/go.mod +++ b/src/server/go.mod @@ -11,7 +11,6 @@ require ( github.com/alibabacloud-go/tea-utils/v2 v2.0.7 github.com/aliyun/credentials-go v1.4.6 github.com/go-sql-driver/mysql v1.8.1 - github.com/gorilla/mux v1.8.1 github.com/gorilla/websocket v1.5.3 github.com/jmoiron/sqlx v1.4.0 github.com/redis/go-redis/v9 v9.6.1 @@ -61,9 +60,9 @@ require ( github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect github.com/google/uuid v1.6.0 // indirect + github.com/tuyou/galog v0.0.0 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect gopkg.in/yaml.v2 v2.4.0 // indirect - github.com/tuyou/galog v0.0.0 ) replace github.com/tuyou/galog => ./galog diff --git a/src/server/go.sum b/src/server/go.sum index 8db7fcaf..f3a9147f 100644 --- a/src/server/go.sum +++ b/src/server/go.sum @@ -124,8 +124,6 @@ github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= -github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg= github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/jmoiron/sqlx v1.4.0 h1:1PLqN7S1UYp5t4SrVVnt4nUVNemrDAtxlulVe+Qgm3o= 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..6e023587 100644 --- a/src/server/msg/Gameapi.pb.go +++ b/src/server/msg/Gameapi.pb.go @@ -1081,6 +1081,61 @@ func (ActLogType) EnumDescriptor() ([]byte, []int) { return file_proto_Gameapi_proto_rawDescGZIP(), []int{11} } +type FRIEND_REPLY_TYPE int32 + +const ( + FRIEND_REPLY_TYPE_FRIEND_REPLY_TYPE_NONE FRIEND_REPLY_TYPE = 0 // 默认 + FRIEND_REPLY_TYPE_FRIEND_REPLY_TYPE_GREET FRIEND_REPLY_TYPE = 1 // 打招呼 + FRIEND_REPLY_TYPE_FRIEND_REPLY_TYPE_RETURN_GREET FRIEND_REPLY_TYPE = 2 // 被打招呼 + FRIEND_REPLY_TYPE_REPLY_TYPE_CATNIP FRIEND_REPLY_TYPE = 3 // 猫薄荷加好友 + FRIEND_REPLY_TYPE_REPLY_TYPE_CATNIP_ITEMS FRIEND_REPLY_TYPE = 4 // 收到猫薄荷好友道具 +) + +// Enum value maps for FRIEND_REPLY_TYPE. +var ( + FRIEND_REPLY_TYPE_name = map[int32]string{ + 0: "FRIEND_REPLY_TYPE_NONE", + 1: "FRIEND_REPLY_TYPE_GREET", + 2: "FRIEND_REPLY_TYPE_RETURN_GREET", + 3: "REPLY_TYPE_CATNIP", + 4: "REPLY_TYPE_CATNIP_ITEMS", + } + FRIEND_REPLY_TYPE_value = map[string]int32{ + "FRIEND_REPLY_TYPE_NONE": 0, + "FRIEND_REPLY_TYPE_GREET": 1, + "FRIEND_REPLY_TYPE_RETURN_GREET": 2, + "REPLY_TYPE_CATNIP": 3, + "REPLY_TYPE_CATNIP_ITEMS": 4, + } +) + +func (x FRIEND_REPLY_TYPE) Enum() *FRIEND_REPLY_TYPE { + p := new(FRIEND_REPLY_TYPE) + *p = x + return p +} + +func (x FRIEND_REPLY_TYPE) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (FRIEND_REPLY_TYPE) Descriptor() protoreflect.EnumDescriptor { + return file_proto_Gameapi_proto_enumTypes[12].Descriptor() +} + +func (FRIEND_REPLY_TYPE) Type() protoreflect.EnumType { + return &file_proto_Gameapi_proto_enumTypes[12] +} + +func (x FRIEND_REPLY_TYPE) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use FRIEND_REPLY_TYPE.Descriptor instead. +func (FRIEND_REPLY_TYPE) EnumDescriptor() ([]byte, []int) { + return file_proto_Gameapi_proto_rawDescGZIP(), []int{12} +} + type ClientReq struct { state protoimpl.MessageState `protogen:"open.v1"` Func string `protobuf:"bytes,1,opt,name=func,proto3" json:"func,omitempty"` // serverMode/functionID @@ -7243,27 +7298,27 @@ func (x *ResDecorateAll) GetMsg() string { return "" } -type ReqDecorateReward struct { +type ReqAreaReward struct { state protoimpl.MessageState `protogen:"open.v1"` AreaId int32 `protobuf:"varint,1,opt,name=AreaId,proto3" json:"AreaId,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } -func (x *ReqDecorateReward) Reset() { - *x = ReqDecorateReward{} +func (x *ReqAreaReward) Reset() { + *x = ReqAreaReward{} mi := &file_proto_Gameapi_proto_msgTypes[108] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *ReqDecorateReward) String() string { +func (x *ReqAreaReward) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ReqDecorateReward) ProtoMessage() {} +func (*ReqAreaReward) ProtoMessage() {} -func (x *ReqDecorateReward) ProtoReflect() protoreflect.Message { +func (x *ReqAreaReward) ProtoReflect() protoreflect.Message { mi := &file_proto_Gameapi_proto_msgTypes[108] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7275,19 +7330,19 @@ func (x *ReqDecorateReward) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ReqDecorateReward.ProtoReflect.Descriptor instead. -func (*ReqDecorateReward) Descriptor() ([]byte, []int) { +// Deprecated: Use ReqAreaReward.ProtoReflect.Descriptor instead. +func (*ReqAreaReward) Descriptor() ([]byte, []int) { return file_proto_Gameapi_proto_rawDescGZIP(), []int{108} } -func (x *ReqDecorateReward) GetAreaId() int32 { +func (x *ReqAreaReward) GetAreaId() int32 { if x != nil { return x.AreaId } return 0 } -type ResDecorateReward struct { +type ResAreaReward 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"` @@ -7295,20 +7350,20 @@ type ResDecorateReward struct { sizeCache protoimpl.SizeCache } -func (x *ResDecorateReward) Reset() { - *x = ResDecorateReward{} +func (x *ResAreaReward) Reset() { + *x = ResAreaReward{} mi := &file_proto_Gameapi_proto_msgTypes[109] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *ResDecorateReward) String() string { +func (x *ResAreaReward) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ResDecorateReward) ProtoMessage() {} +func (*ResAreaReward) ProtoMessage() {} -func (x *ResDecorateReward) ProtoReflect() protoreflect.Message { +func (x *ResAreaReward) ProtoReflect() protoreflect.Message { mi := &file_proto_Gameapi_proto_msgTypes[109] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7320,19 +7375,19 @@ func (x *ResDecorateReward) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ResDecorateReward.ProtoReflect.Descriptor instead. -func (*ResDecorateReward) Descriptor() ([]byte, []int) { +// Deprecated: Use ResAreaReward.ProtoReflect.Descriptor instead. +func (*ResAreaReward) Descriptor() ([]byte, []int) { return file_proto_Gameapi_proto_rawDescGZIP(), []int{109} } -func (x *ResDecorateReward) GetCode() RES_CODE { +func (x *ResAreaReward) GetCode() RES_CODE { if x != nil { return x.Code } return RES_CODE_FAIL } -func (x *ResDecorateReward) GetMsg() string { +func (x *ResAreaReward) GetMsg() string { if x != nil { return x.Msg } @@ -15102,6 +15157,7 @@ type ResFriendReply struct { AddTime int64 `protobuf:"varint,5,opt,name=AddTime,proto3" json:"AddTime,omitempty"` // 添加时间 EndTime int64 `protobuf:"varint,6,opt,name=EndTime,proto3" json:"EndTime,omitempty"` // Player *ResPlayerSimple `protobuf:"bytes,7,opt,name=Player,proto3" json:"Player,omitempty"` // 玩家信息 + Items []*ItemInfo `protobuf:"bytes,8,rep,name=Items,proto3" json:"Items,omitempty"` // 奖励 unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -15185,11 +15241,18 @@ func (x *ResFriendReply) GetPlayer() *ResPlayerSimple { return nil } +func (x *ResFriendReply) GetItems() []*ItemInfo { + if x != nil { + return x.Items + } + return nil +} + type ReqFriendReplyHandle struct { state protoimpl.MessageState `protogen:"open.v1"` LogId int32 `protobuf:"varint,1,opt,name=LogId,proto3" json:"LogId,omitempty"` // 时间线id Param string `protobuf:"bytes,2,opt,name=Param,proto3" json:"Param,omitempty"` // 回复内容 - Type int32 `protobuf:"varint,3,opt,name=Type,proto3" json:"Type,omitempty"` // 回复类型 1:打招呼 2:删除 3:查看 + Type int32 `protobuf:"varint,3,opt,name=Type,proto3" json:"Type,omitempty"` // 回复类型 1:处理 2:删除 3:查看 unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -25868,11 +25931,13 @@ func (*ReqCatnip) Descriptor() ([]byte, []int) { type ResCatnip 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 已结束 - 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"` // 小游戏列表 + 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 已结束 + 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"` // 倍数 + FriendList []*CatnipInvite `protobuf:"bytes,7,rep,name=FriendList,proto3" json:"FriendList,omitempty"` // 好友列表 unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -25942,16 +26007,32 @@ func (x *ResCatnip) GetGameList() []*CatnipGame { return nil } +func (x *ResCatnip) GetMultiply() int32 { + if x != nil { + return x.Multiply + } + return 0 +} + +func (x *ResCatnip) GetFriendList() []*CatnipInvite { + if x != nil { + return x.FriendList + } + return nil +} + // 小游戏信息 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"` // 伙伴 - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + 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"` // 伙伴 + Emoji int32 `protobuf:"varint,6,opt,name=Emoji,proto3" json:"Emoji,omitempty"` // 表情id + FriendProgress int32 `protobuf:"varint,7,opt,name=FriendProgress,proto3" json:"FriendProgress,omitempty"` // 好友进度 + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CatnipGame) Reset() { @@ -26019,6 +26100,88 @@ func (x *CatnipGame) GetPartner() *ResPlayerSimple { return nil } +func (x *CatnipGame) GetEmoji() int32 { + if x != nil { + return x.Emoji + } + return 0 +} + +func (x *CatnipGame) GetFriendProgress() int32 { + if x != nil { + return x.FriendProgress + } + 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"` // 邀请时间 + Type int32 `protobuf:"varint,3,opt,name=Type,proto3" json:"Type,omitempty"` // 状态 0 可以邀请,1 已邀请 2 被邀请 3 已满员 + Player *ResPlayerSimple `protobuf:"bytes,4,opt,name=Player,proto3" json:"Player,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 +} + +func (x *CatnipInvite) GetType() int32 { + if x != nil { + return x.Type + } + return 0 +} + +func (x *CatnipInvite) GetPlayer() *ResPlayerSimple { + if x != nil { + return x.Player + } + return nil +} + // 邀请好友 type ReqCatnipInvite struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -26030,7 +26193,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 +26205,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 +26218,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 { @@ -26076,13 +26239,14 @@ type ResCatnipInvite 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"` + Uid int64 `protobuf:"varint,3,opt,name=Uid,proto3" json:"Uid,omitempty"` // 好友id unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } 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 +26258,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 +26271,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 { @@ -26124,6 +26288,13 @@ func (x *ResCatnipInvite) GetMsg() string { return "" } +func (x *ResCatnipInvite) GetUid() int64 { + if x != nil { + return x.Uid + } + return 0 +} + // 同意邀请 type ReqCatnipAgree struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -26135,7 +26306,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 +26318,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 +26331,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 { @@ -26181,13 +26352,14 @@ type ResCatnipAgree 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"` + Uid int64 `protobuf:"varint,3,opt,name=Uid,proto3" json:"Uid,omitempty"` // 好友id unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } 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 +26371,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 +26384,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 { @@ -26229,6 +26401,13 @@ func (x *ResCatnipAgree) GetMsg() string { return "" } +func (x *ResCatnipAgree) GetUid() int64 { + if x != nil { + return x.Uid + } + return 0 +} + type ReqCatnipRefuse struct { state protoimpl.MessageState `protogen:"open.v1"` Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` // 游戏id @@ -26239,7 +26418,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 +26430,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 +26443,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 { @@ -26285,13 +26464,14 @@ type ResCatnipRefuse 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"` + Uid int64 `protobuf:"varint,3,opt,name=Uid,proto3" json:"Uid,omitempty"` // 好友id unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } 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 +26483,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 +26496,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 { @@ -26333,18 +26513,24 @@ func (x *ResCatnipRefuse) GetMsg() string { return "" } +func (x *ResCatnipRefuse) GetUid() int64 { + if x != nil { + return x.Uid + } + return 0 +} + // 设置游戏倍数 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 +26542,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 +26555,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 { @@ -26390,13 +26569,14 @@ type ResCatnipMultiply 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"` + Multiply int32 `protobuf:"varint,3,opt,name=Multiply,proto3" json:"Multiply,omitempty"` // 倍数 unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } 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 +26588,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 +26601,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 { @@ -26438,6 +26618,13 @@ func (x *ResCatnipMultiply) GetMsg() string { return "" } +func (x *ResCatnipMultiply) GetMultiply() int32 { + if x != nil { + return x.Multiply + } + return 0 +} + // 游戏转盘 type ReqCatnipPlay struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -26448,7 +26635,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 +26647,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 +26660,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 +26674,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 +26693,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 +26706,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 { @@ -26546,15 +26733,14 @@ func (x *ResCatnipPlay) GetId() int32 { // 领取阶段奖励 type ReqCatnipReward struct { state protoimpl.MessageState `protogen:"open.v1"` - Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` // 猫草id - Progress int32 `protobuf:"varint,2,opt,name=Progress,proto3" json:"Progress,omitempty"` // 进度 + Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` // 猫草id unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } 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 +26752,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 +26765,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 { @@ -26589,13 +26775,6 @@ func (x *ReqCatnipReward) GetId() int32 { return 0 } -func (x *ReqCatnipReward) GetProgress() int32 { - if x != nil { - return x.Progress - } - return 0 -} - type ResCatnipReward struct { state protoimpl.MessageState `protogen:"open.v1"` Code RES_CODE `protobuf:"varint,1,opt,name=Code,proto3,enum=tutorial.RES_CODE" json:"Code,omitempty"` @@ -26606,7 +26785,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 +26797,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 +26810,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 +26836,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 +26848,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 +26861,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 +26874,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 +26886,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 +26899,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 +26916,127 @@ 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"` + EmojiId int32 `protobuf:"varint,3,opt,name=EmojiId,proto3" json:"EmojiId,omitempty"` // 表情id + Id int32 `protobuf:"varint,4,opt,name=Id,proto3" json:"Id,omitempty"` // 猫草id + 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 "" +} + +func (x *ResCatnipEmoji) GetEmojiId() int32 { + if x != nil { + return x.EmojiId + } + return 0 +} + +func (x *ResCatnipEmoji) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + // -------------------后台管理------------------- type AdminReq struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -26748,7 +27048,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 +27060,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 +27073,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 +27100,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 +27112,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 +27125,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 +27151,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 +27163,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 +27176,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 +27194,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 +27206,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 +27219,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 +27230,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 +27242,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 +27255,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 +27266,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 +27278,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 +27291,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 +27304,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 +27316,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 +27329,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 +27357,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 +27369,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 +27382,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 +27417,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 +27429,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 +27442,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 { @@ -27701,10 +28001,10 @@ const file_proto_Gameapi_proto_rawDesc = "" + "\x0eReqDecorateAll\"J\n" + "\x0eResDecorateAll\x12&\n" + "\x04Code\x18\x01 \x01(\x0e2\x12.tutorial.RES_CODER\x04Code\x12\x10\n" + - "\x03Msg\x18\x02 \x01(\tR\x03Msg\"+\n" + - "\x11ReqDecorateReward\x12\x16\n" + - "\x06AreaId\x18\x01 \x01(\x05R\x06AreaId\"M\n" + - "\x11ResDecorateReward\x12&\n" + + "\x03Msg\x18\x02 \x01(\tR\x03Msg\"'\n" + + "\rReqAreaReward\x12\x16\n" + + "\x06AreaId\x18\x01 \x01(\x05R\x06AreaId\"I\n" + + "\rResAreaReward\x12&\n" + "\x04Code\x18\x01 \x01(\x0e2\x12.tutorial.RES_CODER\x04Code\x12\x10\n" + "\x03Msg\x18\x02 \x01(\tR\x03Msg\"<\n" + "\fReqGmCommand\x12\x18\n" + @@ -28261,7 +28561,7 @@ const file_proto_Gameapi_proto_rawDesc = "" + "\x11ReqFriendTimeLine\"m\n" + "\x11ResFriendTimeLine\x12(\n" + "\x03Log\x18\x01 \x03(\v2\x16.tutorial.ResFriendLogR\x03Log\x12.\n" + - "\x05Reply\x18\x02 \x03(\v2\x18.tutorial.ResFriendReplyR\x05Reply\"\xc9\x01\n" + + "\x05Reply\x18\x02 \x03(\v2\x18.tutorial.ResFriendReplyR\x05Reply\"\xf3\x01\n" + "\x0eResFriendReply\x12\x0e\n" + "\x02Id\x18\x01 \x01(\x05R\x02Id\x12\x12\n" + "\x04Type\x18\x02 \x01(\x05R\x04Type\x12\x14\n" + @@ -28269,7 +28569,8 @@ const file_proto_Gameapi_proto_rawDesc = "" + "\x06Status\x18\x04 \x01(\x05R\x06Status\x12\x18\n" + "\aAddTime\x18\x05 \x01(\x03R\aAddTime\x12\x18\n" + "\aEndTime\x18\x06 \x01(\x03R\aEndTime\x121\n" + - "\x06Player\x18\a \x01(\v2\x19.tutorial.ResPlayerSimpleR\x06Player\"V\n" + + "\x06Player\x18\a \x01(\v2\x19.tutorial.ResPlayerSimpleR\x06Player\x12(\n" + + "\x05Items\x18\b \x03(\v2\x12.tutorial.ItemInfoR\x05Items\"V\n" + "\x14ReqFriendReplyHandle\x12\x14\n" + "\x05LogId\x18\x01 \x01(\x05R\x05LogId\x12\x14\n" + "\x05Param\x18\x02 \x01(\tR\x05Param\x12\x12\n" + @@ -29075,60 +29376,81 @@ 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\"\xef\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\x126\n" + + "\n" + + "FriendList\x18\a \x03(\v2\x16.tutorial.CatnipInviteR\n" + + "FriendList\"\xdb\x01\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\x12\x14\n" + + "\x05Emoji\x18\x06 \x01(\x05R\x05Emoji\x12&\n" + + "\x0eFriendProgress\x18\a \x01(\x05R\x0eFriendProgress\"{\n" + + "\fCatnipInvite\x12\x10\n" + + "\x03Uid\x18\x01 \x01(\x03R\x03Uid\x12\x12\n" + + "\x04Time\x18\x02 \x01(\x03R\x04Time\x12\x12\n" + + "\x04Type\x18\x03 \x01(\x05R\x04Type\x121\n" + + "\x06Player\x18\x04 \x01(\v2\x19.tutorial.ResPlayerSimpleR\x06Player\"3\n" + "\x0fReqCatnipInvite\x12\x0e\n" + "\x02Id\x18\x01 \x01(\x05R\x02Id\x12\x10\n" + - "\x03Uid\x18\x02 \x01(\x03R\x03Uid\"K\n" + + "\x03Uid\x18\x02 \x01(\x03R\x03Uid\"]\n" + "\x0fResCatnipInvite\x12&\n" + "\x04Code\x18\x01 \x01(\x0e2\x12.tutorial.RES_CODER\x04Code\x12\x10\n" + - "\x03Msg\x18\x02 \x01(\tR\x03Msg\"2\n" + + "\x03Msg\x18\x02 \x01(\tR\x03Msg\x12\x10\n" + + "\x03Uid\x18\x03 \x01(\x03R\x03Uid\"2\n" + "\x0eReqCatnipAgree\x12\x0e\n" + "\x02Id\x18\x01 \x01(\x05R\x02Id\x12\x10\n" + - "\x03Uid\x18\x02 \x01(\x03R\x03Uid\"J\n" + + "\x03Uid\x18\x02 \x01(\x03R\x03Uid\"\\\n" + "\x0eResCatnipAgree\x12&\n" + "\x04Code\x18\x01 \x01(\x0e2\x12.tutorial.RES_CODER\x04Code\x12\x10\n" + - "\x03Msg\x18\x02 \x01(\tR\x03Msg\"3\n" + + "\x03Msg\x18\x02 \x01(\tR\x03Msg\x12\x10\n" + + "\x03Uid\x18\x03 \x01(\x03R\x03Uid\"3\n" + "\x0fReqCatnipRefuse\x12\x0e\n" + "\x02Id\x18\x01 \x01(\x05R\x02Id\x12\x10\n" + - "\x03Uid\x18\x02 \x01(\x03R\x03Uid\"K\n" + + "\x03Uid\x18\x02 \x01(\x03R\x03Uid\"]\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\x12\x10\n" + + "\x03Uid\x18\x03 \x01(\x03R\x03Uid\"/\n" + + "\x11ReqCatnipMultiply\x12\x1a\n" + + "\bMultiply\x18\x01 \x01(\x05R\bMultiply\"i\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" + + "\x03Msg\x18\x02 \x01(\tR\x03Msg\x12\x1a\n" + + "\bMultiply\x18\x03 \x01(\x05R\bMultiply\"\x1f\n" + "\rReqCatnipPlay\x12\x0e\n" + "\x02Id\x18\x01 \x01(\x05R\x02Id\"Y\n" + "\rResCatnipPlay\x12&\n" + "\x04Code\x18\x01 \x01(\x0e2\x12.tutorial.RES_CODER\x04Code\x12\x10\n" + "\x03Msg\x18\x02 \x01(\tR\x03Msg\x12\x0e\n" + - "\x02Id\x18\x03 \x01(\x05R\x02Id\"=\n" + + "\x02Id\x18\x03 \x01(\x05R\x02Id\"!\n" + "\x0fReqCatnipReward\x12\x0e\n" + - "\x02Id\x18\x01 \x01(\x05R\x02Id\x12\x1a\n" + - "\bProgress\x18\x02 \x01(\x05R\bProgress\"K\n" + + "\x02Id\x18\x01 \x01(\x05R\x02Id\"K\n" + "\x0fResCatnipReward\x12&\n" + "\x04Code\x18\x01 \x01(\x0e2\x12.tutorial.RES_CODER\x04Code\x12\x10\n" + "\x03Msg\x18\x02 \x01(\tR\x03Msg\"\x16\n" + "\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\"2\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\"t\n" + + "\x0eResCatnipEmoji\x12&\n" + + "\x04Code\x18\x01 \x01(\x0e2\x12.tutorial.RES_CODER\x04Code\x12\x10\n" + + "\x03Msg\x18\x02 \x01(\tR\x03Msg\x12\x18\n" + + "\aEmojiId\x18\x03 \x01(\x05R\aEmojiId\x12\x0e\n" + + "\x02Id\x18\x04 \x01(\x05R\x02Id\"2\n" + "\bAdminReq\x12\x12\n" + "\x04Func\x18\x01 \x01(\tR\x04Func\x12\x12\n" + "\x04Info\x18\x02 \x01(\fR\x04Info\"2\n" + @@ -29378,7 +29700,13 @@ const file_proto_Gameapi_proto_rawDesc = "" + "\x19ACT_LOG_TYPE_VISIT_UPVOTE\x10\x14\x12.\n" + "*ACT_LOG_TYPE_COMPLETE_HANDBOOK_ACHIEVEMENT\x10\x15\x12(\n" + "$ACT_LOG_TYPE_COMPLETE_CHAPTER_SCENES\x10\x16\x12!\n" + - "\x1dACT_LOG_TYPE_LOST_USER_RETURN\x10\x17B\bZ\x06../msgb\x06proto3" + "\x1dACT_LOG_TYPE_LOST_USER_RETURN\x10\x17*\xa4\x01\n" + + "\x11FRIEND_REPLY_TYPE\x12\x1a\n" + + "\x16FRIEND_REPLY_TYPE_NONE\x10\x00\x12\x1b\n" + + "\x17FRIEND_REPLY_TYPE_GREET\x10\x01\x12\"\n" + + "\x1eFRIEND_REPLY_TYPE_RETURN_GREET\x10\x02\x12\x15\n" + + "\x11REPLY_TYPE_CATNIP\x10\x03\x12\x1b\n" + + "\x17REPLY_TYPE_CATNIP_ITEMS\x10\x04B\bZ\x06../msgb\x06proto3" var ( file_proto_Gameapi_proto_rawDescOnce sync.Once @@ -29392,8 +29720,8 @@ func file_proto_Gameapi_proto_rawDescGZIP() []byte { return file_proto_Gameapi_proto_rawDescData } -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_enumTypes = make([]protoimpl.EnumInfo, 13) +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 @@ -29407,612 +29735,616 @@ var file_proto_Gameapi_proto_goTypes = []any{ (LANG_TYPE)(0), // 9: tutorial.LANG_TYPE (LimitEventParam)(0), // 10: tutorial.LimitEventParam (ActLogType)(0), // 11: tutorial.ActLogType - (*ClientReq)(nil), // 12: tutorial.ClientReq - (*ReqOfflineReconnect)(nil), // 13: tutorial.ReqOfflineReconnect - (*ResOfflineReconnect)(nil), // 14: tutorial.ResOfflineReconnect - (*ReqBindFacebookAccount)(nil), // 15: tutorial.ReqBindFacebookAccount - (*ResBindFacebookAccount)(nil), // 16: tutorial.ResBindFacebookAccount - (*ReqOnlyBindFacebook)(nil), // 17: tutorial.ReqOnlyBindFacebook - (*ResOnlyBindFacebook)(nil), // 18: tutorial.ResOnlyBindFacebook - (*ReqUnBindFacebook)(nil), // 19: tutorial.ReqUnBindFacebook - (*ResUnBindFacebook)(nil), // 20: tutorial.ResUnBindFacebook - (*ReqSynGameData)(nil), // 21: tutorial.ReqSynGameData - (*ResSynGameData)(nil), // 22: tutorial.ResSynGameData - (*ForceKickOut)(nil), // 23: tutorial.ForceKickOut - (*ResServerVersion)(nil), // 24: tutorial.ResServerVersion - (*ResChessColorData)(nil), // 25: tutorial.ResChessColorData - (*ClientRes)(nil), // 26: tutorial.ClientRes - (*ReqRegisterAccount)(nil), // 27: tutorial.ReqRegisterAccount - (*ResRegisterAccount)(nil), // 28: tutorial.ResRegisterAccount - (*ReqLogin)(nil), // 29: tutorial.ReqLogin - (*ReqLoginCode)(nil), // 30: tutorial.ReqLoginCode - (*ResLoginCode)(nil), // 31: tutorial.ResLoginCode - (*ReqId2Verify)(nil), // 32: tutorial.ReqId2Verify - (*ResId2Verify)(nil), // 33: tutorial.ResId2Verify - (*ResLogin)(nil), // 34: tutorial.ResLogin - (*ReqChangePassword)(nil), // 35: tutorial.ReqChangePassword - (*ResChangePassword)(nil), // 36: tutorial.ResChangePassword - (*ReqPlayerBaseInfo)(nil), // 37: tutorial.ReqPlayerBaseInfo - (*ResPlayerBaseInfo)(nil), // 38: tutorial.ResPlayerBaseInfo - (*ReqPlayerAsset)(nil), // 39: tutorial.ReqPlayerAsset - (*ResPlayerAsset)(nil), // 40: tutorial.ResPlayerAsset - (*UpdateBaseItemInfo)(nil), // 41: tutorial.UpdateBaseItemInfo - (*NotifyRenewBuyEnergyCnt)(nil), // 42: tutorial.NotifyRenewBuyEnergyCnt - (*ReqRemoveAd)(nil), // 43: tutorial.ReqRemoveAd - (*ResRemoveAd)(nil), // 44: tutorial.ResRemoveAd - (*NotifyAddEnergy)(nil), // 45: tutorial.NotifyAddEnergy - (*ReqServerTime)(nil), // 46: tutorial.ReqServerTime - (*ResServerTime)(nil), // 47: tutorial.ResServerTime - (*ReqPlayerChessData)(nil), // 48: tutorial.ReqPlayerChessData - (*ResPlayerChessData)(nil), // 49: tutorial.ResPlayerChessData - (*ResPlayerChessInfo)(nil), // 50: tutorial.ResPlayerChessInfo - (*ReqGetChessRetireReward)(nil), // 51: tutorial.ReqGetChessRetireReward - (*ResGetChessRetireReward)(nil), // 52: tutorial.ResGetChessRetireReward - (*PartBag)(nil), // 53: tutorial.PartBag - (*PartBagGrid)(nil), // 54: tutorial.PartBagGrid - (*ReqPutPartInBag)(nil), // 55: tutorial.ReqPutPartInBag - (*ResPutPartInBag)(nil), // 56: tutorial.ResPutPartInBag - (*ChessHandle)(nil), // 57: tutorial.ChessHandle - (*UpdatePlayerChessData)(nil), // 58: tutorial.UpdatePlayerChessData - (*ResUpdatePlayerChessData)(nil), // 59: tutorial.ResUpdatePlayerChessData - (*ReqSeparateChess)(nil), // 60: tutorial.ReqSeparateChess - (*ResSeparateChess)(nil), // 61: tutorial.ResSeparateChess - (*ReqUpgradeChess)(nil), // 62: tutorial.ReqUpgradeChess - (*ResUpgradeChess)(nil), // 63: tutorial.ResUpgradeChess - (*ReqGetChessFromBuff)(nil), // 64: tutorial.ReqGetChessFromBuff - (*ResGetChessFromBuff)(nil), // 65: tutorial.ResGetChessFromBuff - (*ReqChessEx)(nil), // 66: tutorial.ReqChessEx - (*ResChessEx)(nil), // 67: tutorial.ResChessEx - (*ReqSourceChest)(nil), // 68: tutorial.ReqSourceChest - (*ResSourceChest)(nil), // 69: tutorial.ResSourceChest - (*ReqPlayroomOutline)(nil), // 70: tutorial.ReqPlayroomOutline - (*ResPlayroomOutline)(nil), // 71: tutorial.ResPlayroomOutline - (*ChessBag)(nil), // 72: tutorial.ChessBag - (*ChessBagGrid)(nil), // 73: tutorial.ChessBagGrid - (*ReqPutChessInBag)(nil), // 74: tutorial.ReqPutChessInBag - (*ResPutChessInBag)(nil), // 75: tutorial.ResPutChessInBag - (*ReqTakeChessOutBag)(nil), // 76: tutorial.ReqTakeChessOutBag - (*ResTakeChessOutBag)(nil), // 77: tutorial.ResTakeChessOutBag - (*ReqBuyChessBagGrid)(nil), // 78: tutorial.ReqBuyChessBagGrid - (*ResBuyChessBagGrid)(nil), // 79: tutorial.ResBuyChessBagGrid - (*ReqPlayerProfileData)(nil), // 80: tutorial.ReqPlayerProfileData - (*ResPlayerProfileData)(nil), // 81: tutorial.ResPlayerProfileData - (*ReqPlayerBriefProfileData)(nil), // 82: tutorial.ReqPlayerBriefProfileData - (*ResPlayerBriefProfileData)(nil), // 83: tutorial.ResPlayerBriefProfileData - (*ReqSetEnergyMul)(nil), // 84: tutorial.ReqSetEnergyMul - (*ResSetEnergyMul)(nil), // 85: tutorial.ResSetEnergyMul - (*ReqLang)(nil), // 86: tutorial.ReqLang - (*ResLang)(nil), // 87: tutorial.ResLang - (*BaseInfo)(nil), // 88: tutorial.BaseInfo - (*ReqUserInfo)(nil), // 89: tutorial.ReqUserInfo - (*UserInfo)(nil), // 90: tutorial.UserInfo - (*ReqSetName)(nil), // 91: tutorial.ReqSetName - (*ResSetName)(nil), // 92: tutorial.ResSetName - (*ReqSetPetName)(nil), // 93: tutorial.ReqSetPetName - (*ResSetPetName)(nil), // 94: tutorial.ResSetPetName - (*ReqBuyEnergy)(nil), // 95: tutorial.ReqBuyEnergy - (*ResBuyEnergy)(nil), // 96: tutorial.ResBuyEnergy - (*ReqGetEnergyByAD)(nil), // 97: tutorial.ReqGetEnergyByAD - (*ResGetEnergyByAD)(nil), // 98: tutorial.ResGetEnergyByAD - (*ReqGetHandbookReward)(nil), // 99: tutorial.ReqGetHandbookReward - (*ResGetHandbookReward)(nil), // 100: tutorial.ResGetHandbookReward - (*HandbookInfo)(nil), // 101: tutorial.HandbookInfo - (*Handbook)(nil), // 102: tutorial.Handbook - (*RegHandbookAllReward)(nil), // 103: tutorial.RegHandbookAllReward - (*ResHandbookAllReward)(nil), // 104: tutorial.ResHandbookAllReward - (*ReqRewardOrder)(nil), // 105: tutorial.ReqRewardOrder - (*ResRewardOrder)(nil), // 106: tutorial.ResRewardOrder - (*ReqCreatePetOrder)(nil), // 107: tutorial.ReqCreatePetOrder - (*ReqDelOrder)(nil), // 108: tutorial.ReqDelOrder - (*ResDelOrder)(nil), // 109: tutorial.ResDelOrder - (*ReqSellChessNum)(nil), // 110: tutorial.ReqSellChessNum - (*ResSellChessNum)(nil), // 111: tutorial.ResSellChessNum - (*Order)(nil), // 112: tutorial.Order - (*ResOrderList)(nil), // 113: tutorial.ResOrderList - (*ResDecorateInfo)(nil), // 114: tutorial.ResDecorateInfo - (*DecoratePart)(nil), // 115: tutorial.DecoratePart - (*ReqDecorate)(nil), // 116: tutorial.ReqDecorate - (*ResDecorate)(nil), // 117: tutorial.ResDecorate - (*ReqDecorateAll)(nil), // 118: tutorial.ReqDecorateAll - (*ResDecorateAll)(nil), // 119: tutorial.ResDecorateAll - (*ReqDecorateReward)(nil), // 120: tutorial.ReqDecorateReward - (*ResDecorateReward)(nil), // 121: tutorial.ResDecorateReward - (*ReqGmCommand)(nil), // 122: tutorial.ReqGmCommand - (*Card)(nil), // 123: tutorial.Card - (*ReqCardInfo)(nil), // 124: tutorial.ReqCardInfo - (*ResCardInfo)(nil), // 125: tutorial.ResCardInfo - (*ResNotifyCardTimes)(nil), // 126: tutorial.ResNotifyCardTimes - (*ReqCardSeasonFirstReward)(nil), // 127: tutorial.ReqCardSeasonFirstReward - (*ResCardSeasonFirstReward)(nil), // 128: tutorial.ResCardSeasonFirstReward - (*ReqCardHandbookReward)(nil), // 129: tutorial.ReqCardHandbookReward - (*ResCardHandbookReward)(nil), // 130: tutorial.ResCardHandbookReward - (*ReqMasterCard)(nil), // 131: tutorial.ReqMasterCard - (*ResMasterCard)(nil), // 132: tutorial.ResMasterCard - (*ReqCardCollectReward)(nil), // 133: tutorial.ReqCardCollectReward - (*ResCardCollectReward)(nil), // 134: tutorial.ResCardCollectReward - (*ReqExStarReward)(nil), // 135: tutorial.ReqExStarReward - (*ResExStarReward)(nil), // 136: tutorial.ResExStarReward - (*ReqAllCollectReward)(nil), // 137: tutorial.ReqAllCollectReward - (*ResAllCollectReward)(nil), // 138: tutorial.ResAllCollectReward - (*ReqCardGive)(nil), // 139: tutorial.ReqCardGive - (*ResCardGive)(nil), // 140: tutorial.ResCardGive - (*ReqAgreeCardGive)(nil), // 141: tutorial.ReqAgreeCardGive - (*ResAgreeCardGive)(nil), // 142: tutorial.ResAgreeCardGive - (*ReqRefuseCardGive)(nil), // 143: tutorial.ReqRefuseCardGive - (*ResRefuseCardGive)(nil), // 144: tutorial.ResRefuseCardGive - (*ReqCardSend)(nil), // 145: tutorial.ReqCardSend - (*ResCardSend)(nil), // 146: tutorial.ResCardSend - (*ReqCardExchange)(nil), // 147: tutorial.ReqCardExchange - (*ResCardExchange)(nil), // 148: tutorial.ResCardExchange - (*ReqSelectCardExchange)(nil), // 149: tutorial.ReqSelectCardExchange - (*ResSelectCardExchange)(nil), // 150: tutorial.ResSelectCardExchange - (*ReqAgreeCardExchange)(nil), // 151: tutorial.ReqAgreeCardExchange - (*ResAgreeCardExchange)(nil), // 152: tutorial.ResAgreeCardExchange - (*ReqRefuseCardSelect)(nil), // 153: tutorial.ReqRefuseCardSelect - (*ResRefuseCardSelect)(nil), // 154: tutorial.ResRefuseCardSelect - (*ReqRefuseCardExchange)(nil), // 155: tutorial.ReqRefuseCardExchange - (*ResRefuseCardExchange)(nil), // 156: tutorial.ResRefuseCardExchange - (*ReqGetFriendCard)(nil), // 157: tutorial.ReqGetFriendCard - (*ResGetFriendCard)(nil), // 158: tutorial.ResGetFriendCard - (*ReqGetGoldCard)(nil), // 159: tutorial.ReqGetGoldCard - (*ResGetGoldCard)(nil), // 160: tutorial.ResGetGoldCard - (*ReqGuideReward)(nil), // 161: tutorial.ReqGuideReward - (*ResGuideReward)(nil), // 162: tutorial.ResGuideReward - (*ReqGuidePlayroom)(nil), // 163: tutorial.ReqGuidePlayroom - (*ResGuidePlayroom)(nil), // 164: tutorial.ResGuidePlayroom - (*ResGuildInfo)(nil), // 165: tutorial.ResGuildInfo - (*ResGuideInfo)(nil), // 166: tutorial.ResGuideInfo - (*ResItemPop)(nil), // 167: tutorial.ResItemPop - (*ItemInfo)(nil), // 168: tutorial.ItemInfo - (*CardPack)(nil), // 169: tutorial.CardPack - (*ResGuideTask)(nil), // 170: tutorial.ResGuideTask - (*GuideTask)(nil), // 171: tutorial.GuideTask - (*ReqGetGuideTaskReward)(nil), // 172: tutorial.ReqGetGuideTaskReward - (*ResGetGuideTaskReward)(nil), // 173: tutorial.ResGetGuideTaskReward - (*ReqGetGuideActiveReward)(nil), // 174: tutorial.ReqGetGuideActiveReward - (*ResGetGuideActiveReward)(nil), // 175: tutorial.ResGetGuideActiveReward - (*ResDailyTask)(nil), // 176: tutorial.ResDailyTask - (*DailyWeek)(nil), // 177: tutorial.DailyWeek - (*DailyTask)(nil), // 178: tutorial.DailyTask - (*QuestProgress)(nil), // 179: tutorial.QuestProgress - (*ReqGetDailyTaskReward)(nil), // 180: tutorial.ReqGetDailyTaskReward - (*ResGetDailyTaskReward)(nil), // 181: tutorial.ResGetDailyTaskReward - (*ReqGetDailyWeekReward)(nil), // 182: tutorial.ReqGetDailyWeekReward - (*ResGetDailyWeekReward)(nil), // 183: tutorial.ResGetDailyWeekReward - (*ReqDailyUnlock)(nil), // 184: tutorial.ReqDailyUnlock - (*ResDailyUnlock)(nil), // 185: tutorial.ResDailyUnlock - (*ResFaceInfo)(nil), // 186: tutorial.ResFaceInfo - (*FaceInfo)(nil), // 187: tutorial.FaceInfo - (*ReqSetFace)(nil), // 188: tutorial.ReqSetFace - (*ResSetFace)(nil), // 189: tutorial.ResSetFace - (*ResAvatarInfo)(nil), // 190: tutorial.ResAvatarInfo - (*AvatarInfo)(nil), // 191: tutorial.AvatarInfo - (*ReqSetAvatar)(nil), // 192: tutorial.ReqSetAvatar - (*ResSetAvatar)(nil), // 193: tutorial.ResSetAvatar - (*EmojiInfo)(nil), // 194: tutorial.EmojiInfo - (*ReqSetEmoji)(nil), // 195: tutorial.ReqSetEmoji - (*ResSetEmoji)(nil), // 196: tutorial.ResSetEmoji - (*ResSevenLogin)(nil), // 197: tutorial.ResSevenLogin - (*SevenLoginReward)(nil), // 198: tutorial.SevenLoginReward - (*ReqGetSevenLoginReward)(nil), // 199: tutorial.ReqGetSevenLoginReward - (*ResGetSevenLoginReward)(nil), // 200: tutorial.ResGetSevenLoginReward - (*ReqGetMonthLoginReward)(nil), // 201: tutorial.ReqGetMonthLoginReward - (*ResGetMonthLoginReward)(nil), // 202: tutorial.ResGetMonthLoginReward - (*ResActivity)(nil), // 203: tutorial.ResActivity - (*ActivityInfo)(nil), // 204: tutorial.ActivityInfo - (*ReqActivityReward)(nil), // 205: tutorial.ReqActivityReward - (*ResActivityReward)(nil), // 206: tutorial.ResActivityReward - (*ReqLimitEvent)(nil), // 207: tutorial.ReqLimitEvent - (*ResLimitEvent)(nil), // 208: tutorial.ResLimitEvent - (*ResLimitEventProgress)(nil), // 209: tutorial.ResLimitEventProgress - (*ReqLimitEventReward)(nil), // 210: tutorial.ReqLimitEventReward - (*ResLimitEventReward)(nil), // 211: tutorial.ResLimitEventReward - (*ReqSelectLimitEvent)(nil), // 212: tutorial.ReqSelectLimitEvent - (*ResSelectLimitEvent)(nil), // 213: tutorial.ResSelectLimitEvent - (*LimitEvent)(nil), // 214: tutorial.LimitEvent - (*LimitEventNotify)(nil), // 215: tutorial.LimitEventNotify - (*ReqLimitEventLuckyCat)(nil), // 216: tutorial.ReqLimitEventLuckyCat - (*ResLimitEventLuckyCat)(nil), // 217: tutorial.ResLimitEventLuckyCat - (*ReqLimitSenceReward)(nil), // 218: tutorial.ReqLimitSenceReward - (*ResLimitSenceReward)(nil), // 219: tutorial.ResLimitSenceReward - (*ResChessRainReward)(nil), // 220: tutorial.ResChessRainReward - (*ReqFastProduceInfo)(nil), // 221: tutorial.ReqFastProduceInfo - (*ResFastProduceInfo)(nil), // 222: tutorial.ResFastProduceInfo - (*ReqFastProduceReward)(nil), // 223: tutorial.ReqFastProduceReward - (*ResFastProduceReward)(nil), // 224: tutorial.ResFastProduceReward - (*ReqCatTrickReward)(nil), // 225: tutorial.ReqCatTrickReward - (*ResCatTrickReward)(nil), // 226: tutorial.ResCatTrickReward - (*ReqSearchPlayer)(nil), // 227: tutorial.ReqSearchPlayer - (*ResSearchPlayer)(nil), // 228: tutorial.ResSearchPlayer - (*ReqFriendPlayerSimple)(nil), // 229: tutorial.ReqFriendPlayerSimple - (*ResFriendPlayerSimple)(nil), // 230: tutorial.ResFriendPlayerSimple - (*ResPlayerSimple)(nil), // 231: tutorial.ResPlayerSimple - (*ActLog)(nil), // 232: tutorial.ActLog - (*ResPlayerRank)(nil), // 233: tutorial.ResPlayerRank - (*ResFriendLog)(nil), // 234: tutorial.ResFriendLog - (*NotifyFriendLog)(nil), // 235: tutorial.NotifyFriendLog - (*FriendBubbleInfo)(nil), // 236: tutorial.FriendBubbleInfo - (*NotifyFriendCard)(nil), // 237: tutorial.NotifyFriendCard - (*ResFriendCard)(nil), // 238: tutorial.ResFriendCard - (*ReqKv)(nil), // 239: tutorial.ReqKv - (*ResKv)(nil), // 240: tutorial.ResKv - (*ReqFriendByCode)(nil), // 241: tutorial.ReqFriendByCode - (*ResFriendByCode)(nil), // 242: tutorial.ResFriendByCode - (*ReqFriendRecommend)(nil), // 243: tutorial.ReqFriendRecommend - (*ResFriendRecommend)(nil), // 244: tutorial.ResFriendRecommend - (*ReqFriendIgnore)(nil), // 245: tutorial.ReqFriendIgnore - (*ResFriendIgnore)(nil), // 246: tutorial.ResFriendIgnore - (*ReqFriendList)(nil), // 247: tutorial.ReqFriendList - (*ResFriendList)(nil), // 248: tutorial.ResFriendList - (*ReqAddNpc)(nil), // 249: tutorial.ReqAddNpc - (*ResAddNpc)(nil), // 250: tutorial.ResAddNpc - (*ReqFriendApply)(nil), // 251: tutorial.ReqFriendApply - (*ResFriendApply)(nil), // 252: tutorial.ResFriendApply - (*ResFriendApplyInfo)(nil), // 253: tutorial.ResFriendApplyInfo - (*ReqFriendCardMsg)(nil), // 254: tutorial.ReqFriendCardMsg - (*ResFriendCardMsg)(nil), // 255: tutorial.ResFriendCardMsg - (*ReqWishApplyList)(nil), // 256: tutorial.ReqWishApplyList - (*ResWishApplyList)(nil), // 257: tutorial.ResWishApplyList - (*ReqWishApply)(nil), // 258: tutorial.ReqWishApply - (*ResWishApply)(nil), // 259: tutorial.ResWishApply - (*ReqFriendTimeLine)(nil), // 260: tutorial.ReqFriendTimeLine - (*ResFriendTimeLine)(nil), // 261: tutorial.ResFriendTimeLine - (*ResFriendReply)(nil), // 262: tutorial.ResFriendReply - (*ReqFriendReplyHandle)(nil), // 263: tutorial.ReqFriendReplyHandle - (*ResFriendReplyHandle)(nil), // 264: tutorial.ResFriendReplyHandle - (*ResFriendBubble)(nil), // 265: tutorial.ResFriendBubble - (*ReqFriendTLUpvote)(nil), // 266: tutorial.ReqFriendTLUpvote - (*ResFriendTLUpvote)(nil), // 267: tutorial.ResFriendTLUpvote - (*ReqFriendTReward)(nil), // 268: tutorial.ReqFriendTReward - (*ResFriendTReward)(nil), // 269: tutorial.ResFriendTReward - (*ResFriendApplyNotify)(nil), // 270: tutorial.ResFriendApplyNotify - (*ReqApplyFriend)(nil), // 271: tutorial.ReqApplyFriend - (*ResApplyFriend)(nil), // 272: tutorial.ResApplyFriend - (*ReqAgreeFriend)(nil), // 273: tutorial.ReqAgreeFriend - (*ResAgreeFriend)(nil), // 274: tutorial.ResAgreeFriend - (*ReqRefuseFriend)(nil), // 275: tutorial.ReqRefuseFriend - (*ResRefuseFriend)(nil), // 276: tutorial.ResRefuseFriend - (*ReqDelFriend)(nil), // 277: tutorial.ReqDelFriend - (*ResDelFriend)(nil), // 278: tutorial.ResDelFriend - (*ReqRank)(nil), // 279: tutorial.ReqRank - (*ResRank)(nil), // 280: tutorial.ResRank - (*ReqMailList)(nil), // 281: tutorial.ReqMailList - (*ResMailList)(nil), // 282: tutorial.ResMailList - (*MailInfo)(nil), // 283: tutorial.MailInfo - (*MailNotify)(nil), // 284: tutorial.MailNotify - (*ReqReadMail)(nil), // 285: tutorial.ReqReadMail - (*ResReadMail)(nil), // 286: tutorial.ResReadMail - (*ReqGetMailReward)(nil), // 287: tutorial.ReqGetMailReward - (*ResGetMailReward)(nil), // 288: tutorial.ResGetMailReward - (*ReqDeleteMail)(nil), // 289: tutorial.ReqDeleteMail - (*ResDeleteMail)(nil), // 290: tutorial.ResDeleteMail - (*ResCharge)(nil), // 291: tutorial.ResCharge - (*LogoutPetWork)(nil), // 292: tutorial.LogoutPetWork - (*WeeklyDiscountInfo)(nil), // 293: tutorial.WeeklyDiscountInfo - (*WishList)(nil), // 294: tutorial.WishList - (*ReqAddWish)(nil), // 295: tutorial.ReqAddWish - (*ResAddWish)(nil), // 296: tutorial.ResAddWish - (*ReqGetWish)(nil), // 297: tutorial.ReqGetWish - (*ResGetWish)(nil), // 298: tutorial.ResGetWish - (*ReqSendWishBeg)(nil), // 299: tutorial.ReqSendWishBeg - (*ResSendWishBeg)(nil), // 300: tutorial.ResSendWishBeg - (*ResSpecialShop)(nil), // 301: tutorial.ResSpecialShop - (*ResChessShop)(nil), // 302: tutorial.ResChessShop - (*ReqFreeShop)(nil), // 303: tutorial.ReqFreeShop - (*ResFreeShop)(nil), // 304: tutorial.ResFreeShop - (*ReqBuyChessShop)(nil), // 305: tutorial.ReqBuyChessShop - (*ResBuyChessShop)(nil), // 306: tutorial.ResBuyChessShop - (*ReqBuyChessShop2)(nil), // 307: tutorial.ReqBuyChessShop2 - (*ResBuyChessShop2)(nil), // 308: tutorial.ResBuyChessShop2 - (*ReqRefreshChessShop)(nil), // 309: tutorial.ReqRefreshChessShop - (*ResRefreshChessShop)(nil), // 310: tutorial.ResRefreshChessShop - (*ReqEndless)(nil), // 311: tutorial.ReqEndless - (*ResEndless)(nil), // 312: tutorial.ResEndless - (*ResEndlessInfo)(nil), // 313: tutorial.ResEndlessInfo - (*ReqEndlessReward)(nil), // 314: tutorial.ReqEndlessReward - (*ResEndlessReward)(nil), // 315: tutorial.ResEndlessReward - (*ResPiggyBank)(nil), // 316: tutorial.ResPiggyBank - (*ReqPiggyBankReward)(nil), // 317: tutorial.ReqPiggyBankReward - (*ResPiggyBankReward)(nil), // 318: tutorial.ResPiggyBankReward - (*ReqChargeReceive)(nil), // 319: tutorial.ReqChargeReceive - (*ResChargeReceive)(nil), // 320: tutorial.ResChargeReceive - (*ReqCreateOrderSn)(nil), // 321: tutorial.ReqCreateOrderSn - (*ResCreateOrderSn)(nil), // 322: tutorial.ResCreateOrderSn - (*ReqShippingOrder)(nil), // 323: tutorial.ReqShippingOrder - (*ResShippingOrder)(nil), // 324: tutorial.ResShippingOrder - (*ReqChampship)(nil), // 325: tutorial.ReqChampship - (*ResChampship)(nil), // 326: tutorial.ResChampship - (*ReqChampshipReward)(nil), // 327: tutorial.ReqChampshipReward - (*ResChampshipReward)(nil), // 328: tutorial.ResChampshipReward - (*ReqChampshipRankReward)(nil), // 329: tutorial.ReqChampshipRankReward - (*ResChampshipRankReward)(nil), // 330: tutorial.ResChampshipRankReward - (*ReqChampshipRank)(nil), // 331: tutorial.ReqChampshipRank - (*ResChampshipRank)(nil), // 332: tutorial.ResChampshipRank - (*ReqChampshipPreRank)(nil), // 333: tutorial.ReqChampshipPreRank - (*ResChampshipPreRank)(nil), // 334: tutorial.ResChampshipPreRank - (*ResNotifyCard)(nil), // 335: tutorial.ResNotifyCard - (*ReqSetFacebookUrl)(nil), // 336: tutorial.ReqSetFacebookUrl - (*ResSetFacebookUrl)(nil), // 337: tutorial.ResSetFacebookUrl - (*ReqInviteFriendData)(nil), // 338: tutorial.ReqInviteFriendData - (*ResInviteFriendData)(nil), // 339: tutorial.ResInviteFriendData - (*ReqSelfInvited)(nil), // 340: tutorial.ReqSelfInvited - (*ResSelfInvited)(nil), // 341: tutorial.ResSelfInvited - (*NotifyInvitedSuccess)(nil), // 342: tutorial.NotifyInvitedSuccess - (*ReqGetInviteReward)(nil), // 343: tutorial.ReqGetInviteReward - (*ResGetInviteReward)(nil), // 344: tutorial.ResGetInviteReward - (*ReqAutoAddInviteFriend)(nil), // 345: tutorial.ReqAutoAddInviteFriend - (*ResAutoAddInviteFriend)(nil), // 346: tutorial.ResAutoAddInviteFriend - (*ReqAutoAddInviteFriend2)(nil), // 347: tutorial.ReqAutoAddInviteFriend2 - (*ResAutoAddInviteFriend2)(nil), // 348: tutorial.ResAutoAddInviteFriend2 - (*ReqMining)(nil), // 349: tutorial.ReqMining - (*ResMining)(nil), // 350: tutorial.ResMining - (*ReqMiningTake)(nil), // 351: tutorial.ReqMiningTake - (*ResMiningTake)(nil), // 352: tutorial.ResMiningTake - (*ReqMiningReward)(nil), // 353: tutorial.ReqMiningReward - (*ResMiningReward)(nil), // 354: tutorial.ResMiningReward - (*ReqActPass)(nil), // 355: tutorial.ReqActPass - (*ResActPass)(nil), // 356: tutorial.ResActPass - (*ReqActPassReward)(nil), // 357: tutorial.ReqActPassReward - (*ResActPassReward)(nil), // 358: tutorial.ResActPassReward - (*ResActRed)(nil), // 359: tutorial.ResActRed - (*NotifyActRed)(nil), // 360: tutorial.NotifyActRed - (*ActivityNotify)(nil), // 361: tutorial.ActivityNotify - (*ResItem)(nil), // 362: tutorial.ResItem - (*ItemNotify)(nil), // 363: tutorial.ItemNotify - (*ReqGuessColor)(nil), // 364: tutorial.ReqGuessColor - (*ResGuessColor)(nil), // 365: tutorial.ResGuessColor - (*Opponent)(nil), // 366: tutorial.opponent - (*ReqGuessColorTake)(nil), // 367: tutorial.ReqGuessColorTake - (*GuessColorInfo)(nil), // 368: tutorial.GuessColorInfo - (*ResGuessColorTake)(nil), // 369: tutorial.ResGuessColorTake - (*ReqGuessColorReward)(nil), // 370: tutorial.ReqGuessColorReward - (*ResGuessColorReward)(nil), // 371: tutorial.ResGuessColorReward - (*ReqRace)(nil), // 372: tutorial.ReqRace - (*ResRace)(nil), // 373: tutorial.ResRace - (*Raceopponent)(nil), // 374: tutorial.raceopponent - (*ReqRaceStart)(nil), // 375: tutorial.ReqRaceStart - (*ResRaceStart)(nil), // 376: tutorial.ResRaceStart - (*ReqRaceReward)(nil), // 377: tutorial.ReqRaceReward - (*ResRaceReward)(nil), // 378: tutorial.ResRaceReward - (*ReqPlayroom)(nil), // 379: tutorial.ReqPlayroom - (*ResPlayroom)(nil), // 380: tutorial.ResPlayroom - (*NotifyPlayroomTask)(nil), // 381: tutorial.NotifyPlayroomTask - (*ReqPlayroomTask)(nil), // 382: tutorial.ReqPlayroomTask - (*ResPlayroomTask)(nil), // 383: tutorial.ResPlayroomTask - (*ReqPlayroomTaskReward)(nil), // 384: tutorial.ReqPlayroomTaskReward - (*ResPlayroomTaskReward)(nil), // 385: tutorial.ResPlayroomTaskReward - (*ReqPlayroomUnlock)(nil), // 386: tutorial.ReqPlayroomUnlock - (*ResPlayroomUnlock)(nil), // 387: tutorial.ResPlayroomUnlock - (*ReqPlayroomUpvote)(nil), // 388: tutorial.ReqPlayroomUpvote - (*ResPlayroomUpvote)(nil), // 389: tutorial.ResPlayroomUpvote - (*PlayroomDress)(nil), // 390: tutorial.PlayroomDress - (*PlayroomDressInfo)(nil), // 391: tutorial.PlayroomDressInfo - (*PlayroomAirInfo)(nil), // 392: tutorial.PlayroomAirInfo - (*PlayroomCollectInfo)(nil), // 393: tutorial.PlayroomCollectInfo - (*ReqPlayroomDressSet)(nil), // 394: tutorial.ReqPlayroomDressSet - (*ResPlayroomDressSet)(nil), // 395: tutorial.ResPlayroomDressSet - (*ReqPlayroomPetAirSet)(nil), // 396: tutorial.ReqPlayroomPetAirSet - (*ResPlayroomPetAirSet)(nil), // 397: tutorial.ResPlayroomPetAirSet - (*ReqPlayroomWrokOutline)(nil), // 398: tutorial.ReqPlayroomWrokOutline - (*ResPlayroomWrokOutline)(nil), // 399: tutorial.ResPlayroomWrokOutline - (*NofiPlayroomStatus)(nil), // 400: tutorial.NofiPlayroomStatus - (*NotifyPlayroomWork)(nil), // 401: tutorial.NotifyPlayroomWork - (*NotifyPlayroomLose)(nil), // 402: tutorial.NotifyPlayroomLose - (*ChipInfo)(nil), // 403: tutorial.ChipInfo - (*NotifyPlayroomMood)(nil), // 404: tutorial.NotifyPlayroomMood - (*AdItem)(nil), // 405: tutorial.AdItem - (*NotifyPlayroomKiss)(nil), // 406: tutorial.NotifyPlayroomKiss - (*FriendRoom)(nil), // 407: tutorial.FriendRoom - (*RoomOpponent)(nil), // 408: tutorial.RoomOpponent - (*ReqPlayroomInfo)(nil), // 409: tutorial.ReqPlayroomInfo - (*ResPlayroomInfo)(nil), // 410: tutorial.ResPlayroomInfo - (*ReqPlayroomFlip)(nil), // 411: tutorial.ReqPlayroomFlip - (*ResPlayroomFlip)(nil), // 412: tutorial.ResPlayroomFlip - (*ReqPlayroomGuide)(nil), // 413: tutorial.ReqPlayroomGuide - (*ResPlayroomGuide)(nil), // 414: tutorial.ResPlayroomGuide - (*ReqPlayroomFlipReward)(nil), // 415: tutorial.ReqPlayroomFlipReward - (*ResPlayroomFlipReward)(nil), // 416: tutorial.ResPlayroomFlipReward - (*ReqPlayroomGame)(nil), // 417: tutorial.ReqPlayroomGame - (*ResPlayroomGame)(nil), // 418: tutorial.ResPlayroomGame - (*ReqPlayroomGameShowReward)(nil), // 419: tutorial.ReqPlayroomGameShowReward - (*ResPlayroomGameShowReward)(nil), // 420: tutorial.ResPlayroomGameShowReward - (*ReqPlayroomInteract)(nil), // 421: tutorial.ReqPlayroomInteract - (*ResPlayroomInteract)(nil), // 422: tutorial.ResPlayroomInteract - (*ReqPlayroomSetRoom)(nil), // 423: tutorial.ReqPlayroomSetRoom - (*ResPlayroomSetRoom)(nil), // 424: tutorial.ResPlayroomSetRoom - (*ReqPlayroomSelectReward)(nil), // 425: tutorial.ReqPlayroomSelectReward - (*ResPlayroomSelectReward)(nil), // 426: tutorial.ResPlayroomSelectReward - (*ReqPlayroomLose)(nil), // 427: tutorial.ReqPlayroomLose - (*ResPlayroomLose)(nil), // 428: tutorial.ResPlayroomLose - (*ReqPlayroomWork)(nil), // 429: tutorial.ReqPlayroomWork - (*ResPlayroomWork)(nil), // 430: tutorial.ResPlayroomWork - (*ReqPlayroomRest)(nil), // 431: tutorial.ReqPlayroomRest - (*ResPlayroomRest)(nil), // 432: tutorial.ResPlayroomRest - (*ReqPlayroomDraw)(nil), // 433: tutorial.ReqPlayroomDraw - (*ResPlayroomDraw)(nil), // 434: tutorial.ResPlayroomDraw - (*ReqPlayroomChip)(nil), // 435: tutorial.ReqPlayroomChip - (*ResPlayroomChip)(nil), // 436: tutorial.ResPlayroomChip - (*ReqPlayroomBuyItem)(nil), // 437: tutorial.ReqPlayroomBuyItem - (*ResPlayroomBuyItem)(nil), // 438: tutorial.ResPlayroomBuyItem - (*ReqPlayroomShop)(nil), // 439: tutorial.ReqPlayroomShop - (*ResPlayroomShop)(nil), // 440: tutorial.ResPlayroomShop - (*ReqFriendTreasure)(nil), // 441: tutorial.ReqFriendTreasure - (*ResFriendTreasure)(nil), // 442: tutorial.ResFriendTreasure - (*TreasureInfo)(nil), // 443: tutorial.TreasureInfo - (*ReqFriendTreasureStart)(nil), // 444: tutorial.ReqFriendTreasureStart - (*ResFriendTreasureStart)(nil), // 445: tutorial.ResFriendTreasureStart - (*ReqFriendTreasureEnd)(nil), // 446: tutorial.ReqFriendTreasureEnd - (*ResFriendTreasureEnd)(nil), // 447: tutorial.ResFriendTreasureEnd - (*ReqFriendTreasureFilp)(nil), // 448: tutorial.ReqFriendTreasureFilp - (*ResFriendTreasureFilp)(nil), // 449: tutorial.ResFriendTreasureFilp - (*ResFriendTreasureStar)(nil), // 450: tutorial.ResFriendTreasureStar - (*ReqKafkaLog)(nil), // 451: tutorial.ReqKafkaLog - (*ReqCollectInfo)(nil), // 452: tutorial.ReqCollectInfo - (*ResCollectInfo)(nil), // 453: tutorial.ResCollectInfo - (*CollectItem)(nil), // 454: tutorial.CollectItem - (*ReqCollect)(nil), // 455: tutorial.ReqCollect - (*ResCollect)(nil), // 456: tutorial.ResCollect - (*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 + (FRIEND_REPLY_TYPE)(0), // 12: tutorial.FRIEND_REPLY_TYPE + (*ClientReq)(nil), // 13: tutorial.ClientReq + (*ReqOfflineReconnect)(nil), // 14: tutorial.ReqOfflineReconnect + (*ResOfflineReconnect)(nil), // 15: tutorial.ResOfflineReconnect + (*ReqBindFacebookAccount)(nil), // 16: tutorial.ReqBindFacebookAccount + (*ResBindFacebookAccount)(nil), // 17: tutorial.ResBindFacebookAccount + (*ReqOnlyBindFacebook)(nil), // 18: tutorial.ReqOnlyBindFacebook + (*ResOnlyBindFacebook)(nil), // 19: tutorial.ResOnlyBindFacebook + (*ReqUnBindFacebook)(nil), // 20: tutorial.ReqUnBindFacebook + (*ResUnBindFacebook)(nil), // 21: tutorial.ResUnBindFacebook + (*ReqSynGameData)(nil), // 22: tutorial.ReqSynGameData + (*ResSynGameData)(nil), // 23: tutorial.ResSynGameData + (*ForceKickOut)(nil), // 24: tutorial.ForceKickOut + (*ResServerVersion)(nil), // 25: tutorial.ResServerVersion + (*ResChessColorData)(nil), // 26: tutorial.ResChessColorData + (*ClientRes)(nil), // 27: tutorial.ClientRes + (*ReqRegisterAccount)(nil), // 28: tutorial.ReqRegisterAccount + (*ResRegisterAccount)(nil), // 29: tutorial.ResRegisterAccount + (*ReqLogin)(nil), // 30: tutorial.ReqLogin + (*ReqLoginCode)(nil), // 31: tutorial.ReqLoginCode + (*ResLoginCode)(nil), // 32: tutorial.ResLoginCode + (*ReqId2Verify)(nil), // 33: tutorial.ReqId2Verify + (*ResId2Verify)(nil), // 34: tutorial.ResId2Verify + (*ResLogin)(nil), // 35: tutorial.ResLogin + (*ReqChangePassword)(nil), // 36: tutorial.ReqChangePassword + (*ResChangePassword)(nil), // 37: tutorial.ResChangePassword + (*ReqPlayerBaseInfo)(nil), // 38: tutorial.ReqPlayerBaseInfo + (*ResPlayerBaseInfo)(nil), // 39: tutorial.ResPlayerBaseInfo + (*ReqPlayerAsset)(nil), // 40: tutorial.ReqPlayerAsset + (*ResPlayerAsset)(nil), // 41: tutorial.ResPlayerAsset + (*UpdateBaseItemInfo)(nil), // 42: tutorial.UpdateBaseItemInfo + (*NotifyRenewBuyEnergyCnt)(nil), // 43: tutorial.NotifyRenewBuyEnergyCnt + (*ReqRemoveAd)(nil), // 44: tutorial.ReqRemoveAd + (*ResRemoveAd)(nil), // 45: tutorial.ResRemoveAd + (*NotifyAddEnergy)(nil), // 46: tutorial.NotifyAddEnergy + (*ReqServerTime)(nil), // 47: tutorial.ReqServerTime + (*ResServerTime)(nil), // 48: tutorial.ResServerTime + (*ReqPlayerChessData)(nil), // 49: tutorial.ReqPlayerChessData + (*ResPlayerChessData)(nil), // 50: tutorial.ResPlayerChessData + (*ResPlayerChessInfo)(nil), // 51: tutorial.ResPlayerChessInfo + (*ReqGetChessRetireReward)(nil), // 52: tutorial.ReqGetChessRetireReward + (*ResGetChessRetireReward)(nil), // 53: tutorial.ResGetChessRetireReward + (*PartBag)(nil), // 54: tutorial.PartBag + (*PartBagGrid)(nil), // 55: tutorial.PartBagGrid + (*ReqPutPartInBag)(nil), // 56: tutorial.ReqPutPartInBag + (*ResPutPartInBag)(nil), // 57: tutorial.ResPutPartInBag + (*ChessHandle)(nil), // 58: tutorial.ChessHandle + (*UpdatePlayerChessData)(nil), // 59: tutorial.UpdatePlayerChessData + (*ResUpdatePlayerChessData)(nil), // 60: tutorial.ResUpdatePlayerChessData + (*ReqSeparateChess)(nil), // 61: tutorial.ReqSeparateChess + (*ResSeparateChess)(nil), // 62: tutorial.ResSeparateChess + (*ReqUpgradeChess)(nil), // 63: tutorial.ReqUpgradeChess + (*ResUpgradeChess)(nil), // 64: tutorial.ResUpgradeChess + (*ReqGetChessFromBuff)(nil), // 65: tutorial.ReqGetChessFromBuff + (*ResGetChessFromBuff)(nil), // 66: tutorial.ResGetChessFromBuff + (*ReqChessEx)(nil), // 67: tutorial.ReqChessEx + (*ResChessEx)(nil), // 68: tutorial.ResChessEx + (*ReqSourceChest)(nil), // 69: tutorial.ReqSourceChest + (*ResSourceChest)(nil), // 70: tutorial.ResSourceChest + (*ReqPlayroomOutline)(nil), // 71: tutorial.ReqPlayroomOutline + (*ResPlayroomOutline)(nil), // 72: tutorial.ResPlayroomOutline + (*ChessBag)(nil), // 73: tutorial.ChessBag + (*ChessBagGrid)(nil), // 74: tutorial.ChessBagGrid + (*ReqPutChessInBag)(nil), // 75: tutorial.ReqPutChessInBag + (*ResPutChessInBag)(nil), // 76: tutorial.ResPutChessInBag + (*ReqTakeChessOutBag)(nil), // 77: tutorial.ReqTakeChessOutBag + (*ResTakeChessOutBag)(nil), // 78: tutorial.ResTakeChessOutBag + (*ReqBuyChessBagGrid)(nil), // 79: tutorial.ReqBuyChessBagGrid + (*ResBuyChessBagGrid)(nil), // 80: tutorial.ResBuyChessBagGrid + (*ReqPlayerProfileData)(nil), // 81: tutorial.ReqPlayerProfileData + (*ResPlayerProfileData)(nil), // 82: tutorial.ResPlayerProfileData + (*ReqPlayerBriefProfileData)(nil), // 83: tutorial.ReqPlayerBriefProfileData + (*ResPlayerBriefProfileData)(nil), // 84: tutorial.ResPlayerBriefProfileData + (*ReqSetEnergyMul)(nil), // 85: tutorial.ReqSetEnergyMul + (*ResSetEnergyMul)(nil), // 86: tutorial.ResSetEnergyMul + (*ReqLang)(nil), // 87: tutorial.ReqLang + (*ResLang)(nil), // 88: tutorial.ResLang + (*BaseInfo)(nil), // 89: tutorial.BaseInfo + (*ReqUserInfo)(nil), // 90: tutorial.ReqUserInfo + (*UserInfo)(nil), // 91: tutorial.UserInfo + (*ReqSetName)(nil), // 92: tutorial.ReqSetName + (*ResSetName)(nil), // 93: tutorial.ResSetName + (*ReqSetPetName)(nil), // 94: tutorial.ReqSetPetName + (*ResSetPetName)(nil), // 95: tutorial.ResSetPetName + (*ReqBuyEnergy)(nil), // 96: tutorial.ReqBuyEnergy + (*ResBuyEnergy)(nil), // 97: tutorial.ResBuyEnergy + (*ReqGetEnergyByAD)(nil), // 98: tutorial.ReqGetEnergyByAD + (*ResGetEnergyByAD)(nil), // 99: tutorial.ResGetEnergyByAD + (*ReqGetHandbookReward)(nil), // 100: tutorial.ReqGetHandbookReward + (*ResGetHandbookReward)(nil), // 101: tutorial.ResGetHandbookReward + (*HandbookInfo)(nil), // 102: tutorial.HandbookInfo + (*Handbook)(nil), // 103: tutorial.Handbook + (*RegHandbookAllReward)(nil), // 104: tutorial.RegHandbookAllReward + (*ResHandbookAllReward)(nil), // 105: tutorial.ResHandbookAllReward + (*ReqRewardOrder)(nil), // 106: tutorial.ReqRewardOrder + (*ResRewardOrder)(nil), // 107: tutorial.ResRewardOrder + (*ReqCreatePetOrder)(nil), // 108: tutorial.ReqCreatePetOrder + (*ReqDelOrder)(nil), // 109: tutorial.ReqDelOrder + (*ResDelOrder)(nil), // 110: tutorial.ResDelOrder + (*ReqSellChessNum)(nil), // 111: tutorial.ReqSellChessNum + (*ResSellChessNum)(nil), // 112: tutorial.ResSellChessNum + (*Order)(nil), // 113: tutorial.Order + (*ResOrderList)(nil), // 114: tutorial.ResOrderList + (*ResDecorateInfo)(nil), // 115: tutorial.ResDecorateInfo + (*DecoratePart)(nil), // 116: tutorial.DecoratePart + (*ReqDecorate)(nil), // 117: tutorial.ReqDecorate + (*ResDecorate)(nil), // 118: tutorial.ResDecorate + (*ReqDecorateAll)(nil), // 119: tutorial.ReqDecorateAll + (*ResDecorateAll)(nil), // 120: tutorial.ResDecorateAll + (*ReqAreaReward)(nil), // 121: tutorial.ReqAreaReward + (*ResAreaReward)(nil), // 122: tutorial.ResAreaReward + (*ReqGmCommand)(nil), // 123: tutorial.ReqGmCommand + (*Card)(nil), // 124: tutorial.Card + (*ReqCardInfo)(nil), // 125: tutorial.ReqCardInfo + (*ResCardInfo)(nil), // 126: tutorial.ResCardInfo + (*ResNotifyCardTimes)(nil), // 127: tutorial.ResNotifyCardTimes + (*ReqCardSeasonFirstReward)(nil), // 128: tutorial.ReqCardSeasonFirstReward + (*ResCardSeasonFirstReward)(nil), // 129: tutorial.ResCardSeasonFirstReward + (*ReqCardHandbookReward)(nil), // 130: tutorial.ReqCardHandbookReward + (*ResCardHandbookReward)(nil), // 131: tutorial.ResCardHandbookReward + (*ReqMasterCard)(nil), // 132: tutorial.ReqMasterCard + (*ResMasterCard)(nil), // 133: tutorial.ResMasterCard + (*ReqCardCollectReward)(nil), // 134: tutorial.ReqCardCollectReward + (*ResCardCollectReward)(nil), // 135: tutorial.ResCardCollectReward + (*ReqExStarReward)(nil), // 136: tutorial.ReqExStarReward + (*ResExStarReward)(nil), // 137: tutorial.ResExStarReward + (*ReqAllCollectReward)(nil), // 138: tutorial.ReqAllCollectReward + (*ResAllCollectReward)(nil), // 139: tutorial.ResAllCollectReward + (*ReqCardGive)(nil), // 140: tutorial.ReqCardGive + (*ResCardGive)(nil), // 141: tutorial.ResCardGive + (*ReqAgreeCardGive)(nil), // 142: tutorial.ReqAgreeCardGive + (*ResAgreeCardGive)(nil), // 143: tutorial.ResAgreeCardGive + (*ReqRefuseCardGive)(nil), // 144: tutorial.ReqRefuseCardGive + (*ResRefuseCardGive)(nil), // 145: tutorial.ResRefuseCardGive + (*ReqCardSend)(nil), // 146: tutorial.ReqCardSend + (*ResCardSend)(nil), // 147: tutorial.ResCardSend + (*ReqCardExchange)(nil), // 148: tutorial.ReqCardExchange + (*ResCardExchange)(nil), // 149: tutorial.ResCardExchange + (*ReqSelectCardExchange)(nil), // 150: tutorial.ReqSelectCardExchange + (*ResSelectCardExchange)(nil), // 151: tutorial.ResSelectCardExchange + (*ReqAgreeCardExchange)(nil), // 152: tutorial.ReqAgreeCardExchange + (*ResAgreeCardExchange)(nil), // 153: tutorial.ResAgreeCardExchange + (*ReqRefuseCardSelect)(nil), // 154: tutorial.ReqRefuseCardSelect + (*ResRefuseCardSelect)(nil), // 155: tutorial.ResRefuseCardSelect + (*ReqRefuseCardExchange)(nil), // 156: tutorial.ReqRefuseCardExchange + (*ResRefuseCardExchange)(nil), // 157: tutorial.ResRefuseCardExchange + (*ReqGetFriendCard)(nil), // 158: tutorial.ReqGetFriendCard + (*ResGetFriendCard)(nil), // 159: tutorial.ResGetFriendCard + (*ReqGetGoldCard)(nil), // 160: tutorial.ReqGetGoldCard + (*ResGetGoldCard)(nil), // 161: tutorial.ResGetGoldCard + (*ReqGuideReward)(nil), // 162: tutorial.ReqGuideReward + (*ResGuideReward)(nil), // 163: tutorial.ResGuideReward + (*ReqGuidePlayroom)(nil), // 164: tutorial.ReqGuidePlayroom + (*ResGuidePlayroom)(nil), // 165: tutorial.ResGuidePlayroom + (*ResGuildInfo)(nil), // 166: tutorial.ResGuildInfo + (*ResGuideInfo)(nil), // 167: tutorial.ResGuideInfo + (*ResItemPop)(nil), // 168: tutorial.ResItemPop + (*ItemInfo)(nil), // 169: tutorial.ItemInfo + (*CardPack)(nil), // 170: tutorial.CardPack + (*ResGuideTask)(nil), // 171: tutorial.ResGuideTask + (*GuideTask)(nil), // 172: tutorial.GuideTask + (*ReqGetGuideTaskReward)(nil), // 173: tutorial.ReqGetGuideTaskReward + (*ResGetGuideTaskReward)(nil), // 174: tutorial.ResGetGuideTaskReward + (*ReqGetGuideActiveReward)(nil), // 175: tutorial.ReqGetGuideActiveReward + (*ResGetGuideActiveReward)(nil), // 176: tutorial.ResGetGuideActiveReward + (*ResDailyTask)(nil), // 177: tutorial.ResDailyTask + (*DailyWeek)(nil), // 178: tutorial.DailyWeek + (*DailyTask)(nil), // 179: tutorial.DailyTask + (*QuestProgress)(nil), // 180: tutorial.QuestProgress + (*ReqGetDailyTaskReward)(nil), // 181: tutorial.ReqGetDailyTaskReward + (*ResGetDailyTaskReward)(nil), // 182: tutorial.ResGetDailyTaskReward + (*ReqGetDailyWeekReward)(nil), // 183: tutorial.ReqGetDailyWeekReward + (*ResGetDailyWeekReward)(nil), // 184: tutorial.ResGetDailyWeekReward + (*ReqDailyUnlock)(nil), // 185: tutorial.ReqDailyUnlock + (*ResDailyUnlock)(nil), // 186: tutorial.ResDailyUnlock + (*ResFaceInfo)(nil), // 187: tutorial.ResFaceInfo + (*FaceInfo)(nil), // 188: tutorial.FaceInfo + (*ReqSetFace)(nil), // 189: tutorial.ReqSetFace + (*ResSetFace)(nil), // 190: tutorial.ResSetFace + (*ResAvatarInfo)(nil), // 191: tutorial.ResAvatarInfo + (*AvatarInfo)(nil), // 192: tutorial.AvatarInfo + (*ReqSetAvatar)(nil), // 193: tutorial.ReqSetAvatar + (*ResSetAvatar)(nil), // 194: tutorial.ResSetAvatar + (*EmojiInfo)(nil), // 195: tutorial.EmojiInfo + (*ReqSetEmoji)(nil), // 196: tutorial.ReqSetEmoji + (*ResSetEmoji)(nil), // 197: tutorial.ResSetEmoji + (*ResSevenLogin)(nil), // 198: tutorial.ResSevenLogin + (*SevenLoginReward)(nil), // 199: tutorial.SevenLoginReward + (*ReqGetSevenLoginReward)(nil), // 200: tutorial.ReqGetSevenLoginReward + (*ResGetSevenLoginReward)(nil), // 201: tutorial.ResGetSevenLoginReward + (*ReqGetMonthLoginReward)(nil), // 202: tutorial.ReqGetMonthLoginReward + (*ResGetMonthLoginReward)(nil), // 203: tutorial.ResGetMonthLoginReward + (*ResActivity)(nil), // 204: tutorial.ResActivity + (*ActivityInfo)(nil), // 205: tutorial.ActivityInfo + (*ReqActivityReward)(nil), // 206: tutorial.ReqActivityReward + (*ResActivityReward)(nil), // 207: tutorial.ResActivityReward + (*ReqLimitEvent)(nil), // 208: tutorial.ReqLimitEvent + (*ResLimitEvent)(nil), // 209: tutorial.ResLimitEvent + (*ResLimitEventProgress)(nil), // 210: tutorial.ResLimitEventProgress + (*ReqLimitEventReward)(nil), // 211: tutorial.ReqLimitEventReward + (*ResLimitEventReward)(nil), // 212: tutorial.ResLimitEventReward + (*ReqSelectLimitEvent)(nil), // 213: tutorial.ReqSelectLimitEvent + (*ResSelectLimitEvent)(nil), // 214: tutorial.ResSelectLimitEvent + (*LimitEvent)(nil), // 215: tutorial.LimitEvent + (*LimitEventNotify)(nil), // 216: tutorial.LimitEventNotify + (*ReqLimitEventLuckyCat)(nil), // 217: tutorial.ReqLimitEventLuckyCat + (*ResLimitEventLuckyCat)(nil), // 218: tutorial.ResLimitEventLuckyCat + (*ReqLimitSenceReward)(nil), // 219: tutorial.ReqLimitSenceReward + (*ResLimitSenceReward)(nil), // 220: tutorial.ResLimitSenceReward + (*ResChessRainReward)(nil), // 221: tutorial.ResChessRainReward + (*ReqFastProduceInfo)(nil), // 222: tutorial.ReqFastProduceInfo + (*ResFastProduceInfo)(nil), // 223: tutorial.ResFastProduceInfo + (*ReqFastProduceReward)(nil), // 224: tutorial.ReqFastProduceReward + (*ResFastProduceReward)(nil), // 225: tutorial.ResFastProduceReward + (*ReqCatTrickReward)(nil), // 226: tutorial.ReqCatTrickReward + (*ResCatTrickReward)(nil), // 227: tutorial.ResCatTrickReward + (*ReqSearchPlayer)(nil), // 228: tutorial.ReqSearchPlayer + (*ResSearchPlayer)(nil), // 229: tutorial.ResSearchPlayer + (*ReqFriendPlayerSimple)(nil), // 230: tutorial.ReqFriendPlayerSimple + (*ResFriendPlayerSimple)(nil), // 231: tutorial.ResFriendPlayerSimple + (*ResPlayerSimple)(nil), // 232: tutorial.ResPlayerSimple + (*ActLog)(nil), // 233: tutorial.ActLog + (*ResPlayerRank)(nil), // 234: tutorial.ResPlayerRank + (*ResFriendLog)(nil), // 235: tutorial.ResFriendLog + (*NotifyFriendLog)(nil), // 236: tutorial.NotifyFriendLog + (*FriendBubbleInfo)(nil), // 237: tutorial.FriendBubbleInfo + (*NotifyFriendCard)(nil), // 238: tutorial.NotifyFriendCard + (*ResFriendCard)(nil), // 239: tutorial.ResFriendCard + (*ReqKv)(nil), // 240: tutorial.ReqKv + (*ResKv)(nil), // 241: tutorial.ResKv + (*ReqFriendByCode)(nil), // 242: tutorial.ReqFriendByCode + (*ResFriendByCode)(nil), // 243: tutorial.ResFriendByCode + (*ReqFriendRecommend)(nil), // 244: tutorial.ReqFriendRecommend + (*ResFriendRecommend)(nil), // 245: tutorial.ResFriendRecommend + (*ReqFriendIgnore)(nil), // 246: tutorial.ReqFriendIgnore + (*ResFriendIgnore)(nil), // 247: tutorial.ResFriendIgnore + (*ReqFriendList)(nil), // 248: tutorial.ReqFriendList + (*ResFriendList)(nil), // 249: tutorial.ResFriendList + (*ReqAddNpc)(nil), // 250: tutorial.ReqAddNpc + (*ResAddNpc)(nil), // 251: tutorial.ResAddNpc + (*ReqFriendApply)(nil), // 252: tutorial.ReqFriendApply + (*ResFriendApply)(nil), // 253: tutorial.ResFriendApply + (*ResFriendApplyInfo)(nil), // 254: tutorial.ResFriendApplyInfo + (*ReqFriendCardMsg)(nil), // 255: tutorial.ReqFriendCardMsg + (*ResFriendCardMsg)(nil), // 256: tutorial.ResFriendCardMsg + (*ReqWishApplyList)(nil), // 257: tutorial.ReqWishApplyList + (*ResWishApplyList)(nil), // 258: tutorial.ResWishApplyList + (*ReqWishApply)(nil), // 259: tutorial.ReqWishApply + (*ResWishApply)(nil), // 260: tutorial.ResWishApply + (*ReqFriendTimeLine)(nil), // 261: tutorial.ReqFriendTimeLine + (*ResFriendTimeLine)(nil), // 262: tutorial.ResFriendTimeLine + (*ResFriendReply)(nil), // 263: tutorial.ResFriendReply + (*ReqFriendReplyHandle)(nil), // 264: tutorial.ReqFriendReplyHandle + (*ResFriendReplyHandle)(nil), // 265: tutorial.ResFriendReplyHandle + (*ResFriendBubble)(nil), // 266: tutorial.ResFriendBubble + (*ReqFriendTLUpvote)(nil), // 267: tutorial.ReqFriendTLUpvote + (*ResFriendTLUpvote)(nil), // 268: tutorial.ResFriendTLUpvote + (*ReqFriendTReward)(nil), // 269: tutorial.ReqFriendTReward + (*ResFriendTReward)(nil), // 270: tutorial.ResFriendTReward + (*ResFriendApplyNotify)(nil), // 271: tutorial.ResFriendApplyNotify + (*ReqApplyFriend)(nil), // 272: tutorial.ReqApplyFriend + (*ResApplyFriend)(nil), // 273: tutorial.ResApplyFriend + (*ReqAgreeFriend)(nil), // 274: tutorial.ReqAgreeFriend + (*ResAgreeFriend)(nil), // 275: tutorial.ResAgreeFriend + (*ReqRefuseFriend)(nil), // 276: tutorial.ReqRefuseFriend + (*ResRefuseFriend)(nil), // 277: tutorial.ResRefuseFriend + (*ReqDelFriend)(nil), // 278: tutorial.ReqDelFriend + (*ResDelFriend)(nil), // 279: tutorial.ResDelFriend + (*ReqRank)(nil), // 280: tutorial.ReqRank + (*ResRank)(nil), // 281: tutorial.ResRank + (*ReqMailList)(nil), // 282: tutorial.ReqMailList + (*ResMailList)(nil), // 283: tutorial.ResMailList + (*MailInfo)(nil), // 284: tutorial.MailInfo + (*MailNotify)(nil), // 285: tutorial.MailNotify + (*ReqReadMail)(nil), // 286: tutorial.ReqReadMail + (*ResReadMail)(nil), // 287: tutorial.ResReadMail + (*ReqGetMailReward)(nil), // 288: tutorial.ReqGetMailReward + (*ResGetMailReward)(nil), // 289: tutorial.ResGetMailReward + (*ReqDeleteMail)(nil), // 290: tutorial.ReqDeleteMail + (*ResDeleteMail)(nil), // 291: tutorial.ResDeleteMail + (*ResCharge)(nil), // 292: tutorial.ResCharge + (*LogoutPetWork)(nil), // 293: tutorial.LogoutPetWork + (*WeeklyDiscountInfo)(nil), // 294: tutorial.WeeklyDiscountInfo + (*WishList)(nil), // 295: tutorial.WishList + (*ReqAddWish)(nil), // 296: tutorial.ReqAddWish + (*ResAddWish)(nil), // 297: tutorial.ResAddWish + (*ReqGetWish)(nil), // 298: tutorial.ReqGetWish + (*ResGetWish)(nil), // 299: tutorial.ResGetWish + (*ReqSendWishBeg)(nil), // 300: tutorial.ReqSendWishBeg + (*ResSendWishBeg)(nil), // 301: tutorial.ResSendWishBeg + (*ResSpecialShop)(nil), // 302: tutorial.ResSpecialShop + (*ResChessShop)(nil), // 303: tutorial.ResChessShop + (*ReqFreeShop)(nil), // 304: tutorial.ReqFreeShop + (*ResFreeShop)(nil), // 305: tutorial.ResFreeShop + (*ReqBuyChessShop)(nil), // 306: tutorial.ReqBuyChessShop + (*ResBuyChessShop)(nil), // 307: tutorial.ResBuyChessShop + (*ReqBuyChessShop2)(nil), // 308: tutorial.ReqBuyChessShop2 + (*ResBuyChessShop2)(nil), // 309: tutorial.ResBuyChessShop2 + (*ReqRefreshChessShop)(nil), // 310: tutorial.ReqRefreshChessShop + (*ResRefreshChessShop)(nil), // 311: tutorial.ResRefreshChessShop + (*ReqEndless)(nil), // 312: tutorial.ReqEndless + (*ResEndless)(nil), // 313: tutorial.ResEndless + (*ResEndlessInfo)(nil), // 314: tutorial.ResEndlessInfo + (*ReqEndlessReward)(nil), // 315: tutorial.ReqEndlessReward + (*ResEndlessReward)(nil), // 316: tutorial.ResEndlessReward + (*ResPiggyBank)(nil), // 317: tutorial.ResPiggyBank + (*ReqPiggyBankReward)(nil), // 318: tutorial.ReqPiggyBankReward + (*ResPiggyBankReward)(nil), // 319: tutorial.ResPiggyBankReward + (*ReqChargeReceive)(nil), // 320: tutorial.ReqChargeReceive + (*ResChargeReceive)(nil), // 321: tutorial.ResChargeReceive + (*ReqCreateOrderSn)(nil), // 322: tutorial.ReqCreateOrderSn + (*ResCreateOrderSn)(nil), // 323: tutorial.ResCreateOrderSn + (*ReqShippingOrder)(nil), // 324: tutorial.ReqShippingOrder + (*ResShippingOrder)(nil), // 325: tutorial.ResShippingOrder + (*ReqChampship)(nil), // 326: tutorial.ReqChampship + (*ResChampship)(nil), // 327: tutorial.ResChampship + (*ReqChampshipReward)(nil), // 328: tutorial.ReqChampshipReward + (*ResChampshipReward)(nil), // 329: tutorial.ResChampshipReward + (*ReqChampshipRankReward)(nil), // 330: tutorial.ReqChampshipRankReward + (*ResChampshipRankReward)(nil), // 331: tutorial.ResChampshipRankReward + (*ReqChampshipRank)(nil), // 332: tutorial.ReqChampshipRank + (*ResChampshipRank)(nil), // 333: tutorial.ResChampshipRank + (*ReqChampshipPreRank)(nil), // 334: tutorial.ReqChampshipPreRank + (*ResChampshipPreRank)(nil), // 335: tutorial.ResChampshipPreRank + (*ResNotifyCard)(nil), // 336: tutorial.ResNotifyCard + (*ReqSetFacebookUrl)(nil), // 337: tutorial.ReqSetFacebookUrl + (*ResSetFacebookUrl)(nil), // 338: tutorial.ResSetFacebookUrl + (*ReqInviteFriendData)(nil), // 339: tutorial.ReqInviteFriendData + (*ResInviteFriendData)(nil), // 340: tutorial.ResInviteFriendData + (*ReqSelfInvited)(nil), // 341: tutorial.ReqSelfInvited + (*ResSelfInvited)(nil), // 342: tutorial.ResSelfInvited + (*NotifyInvitedSuccess)(nil), // 343: tutorial.NotifyInvitedSuccess + (*ReqGetInviteReward)(nil), // 344: tutorial.ReqGetInviteReward + (*ResGetInviteReward)(nil), // 345: tutorial.ResGetInviteReward + (*ReqAutoAddInviteFriend)(nil), // 346: tutorial.ReqAutoAddInviteFriend + (*ResAutoAddInviteFriend)(nil), // 347: tutorial.ResAutoAddInviteFriend + (*ReqAutoAddInviteFriend2)(nil), // 348: tutorial.ReqAutoAddInviteFriend2 + (*ResAutoAddInviteFriend2)(nil), // 349: tutorial.ResAutoAddInviteFriend2 + (*ReqMining)(nil), // 350: tutorial.ReqMining + (*ResMining)(nil), // 351: tutorial.ResMining + (*ReqMiningTake)(nil), // 352: tutorial.ReqMiningTake + (*ResMiningTake)(nil), // 353: tutorial.ResMiningTake + (*ReqMiningReward)(nil), // 354: tutorial.ReqMiningReward + (*ResMiningReward)(nil), // 355: tutorial.ResMiningReward + (*ReqActPass)(nil), // 356: tutorial.ReqActPass + (*ResActPass)(nil), // 357: tutorial.ResActPass + (*ReqActPassReward)(nil), // 358: tutorial.ReqActPassReward + (*ResActPassReward)(nil), // 359: tutorial.ResActPassReward + (*ResActRed)(nil), // 360: tutorial.ResActRed + (*NotifyActRed)(nil), // 361: tutorial.NotifyActRed + (*ActivityNotify)(nil), // 362: tutorial.ActivityNotify + (*ResItem)(nil), // 363: tutorial.ResItem + (*ItemNotify)(nil), // 364: tutorial.ItemNotify + (*ReqGuessColor)(nil), // 365: tutorial.ReqGuessColor + (*ResGuessColor)(nil), // 366: tutorial.ResGuessColor + (*Opponent)(nil), // 367: tutorial.opponent + (*ReqGuessColorTake)(nil), // 368: tutorial.ReqGuessColorTake + (*GuessColorInfo)(nil), // 369: tutorial.GuessColorInfo + (*ResGuessColorTake)(nil), // 370: tutorial.ResGuessColorTake + (*ReqGuessColorReward)(nil), // 371: tutorial.ReqGuessColorReward + (*ResGuessColorReward)(nil), // 372: tutorial.ResGuessColorReward + (*ReqRace)(nil), // 373: tutorial.ReqRace + (*ResRace)(nil), // 374: tutorial.ResRace + (*Raceopponent)(nil), // 375: tutorial.raceopponent + (*ReqRaceStart)(nil), // 376: tutorial.ReqRaceStart + (*ResRaceStart)(nil), // 377: tutorial.ResRaceStart + (*ReqRaceReward)(nil), // 378: tutorial.ReqRaceReward + (*ResRaceReward)(nil), // 379: tutorial.ResRaceReward + (*ReqPlayroom)(nil), // 380: tutorial.ReqPlayroom + (*ResPlayroom)(nil), // 381: tutorial.ResPlayroom + (*NotifyPlayroomTask)(nil), // 382: tutorial.NotifyPlayroomTask + (*ReqPlayroomTask)(nil), // 383: tutorial.ReqPlayroomTask + (*ResPlayroomTask)(nil), // 384: tutorial.ResPlayroomTask + (*ReqPlayroomTaskReward)(nil), // 385: tutorial.ReqPlayroomTaskReward + (*ResPlayroomTaskReward)(nil), // 386: tutorial.ResPlayroomTaskReward + (*ReqPlayroomUnlock)(nil), // 387: tutorial.ReqPlayroomUnlock + (*ResPlayroomUnlock)(nil), // 388: tutorial.ResPlayroomUnlock + (*ReqPlayroomUpvote)(nil), // 389: tutorial.ReqPlayroomUpvote + (*ResPlayroomUpvote)(nil), // 390: tutorial.ResPlayroomUpvote + (*PlayroomDress)(nil), // 391: tutorial.PlayroomDress + (*PlayroomDressInfo)(nil), // 392: tutorial.PlayroomDressInfo + (*PlayroomAirInfo)(nil), // 393: tutorial.PlayroomAirInfo + (*PlayroomCollectInfo)(nil), // 394: tutorial.PlayroomCollectInfo + (*ReqPlayroomDressSet)(nil), // 395: tutorial.ReqPlayroomDressSet + (*ResPlayroomDressSet)(nil), // 396: tutorial.ResPlayroomDressSet + (*ReqPlayroomPetAirSet)(nil), // 397: tutorial.ReqPlayroomPetAirSet + (*ResPlayroomPetAirSet)(nil), // 398: tutorial.ResPlayroomPetAirSet + (*ReqPlayroomWrokOutline)(nil), // 399: tutorial.ReqPlayroomWrokOutline + (*ResPlayroomWrokOutline)(nil), // 400: tutorial.ResPlayroomWrokOutline + (*NofiPlayroomStatus)(nil), // 401: tutorial.NofiPlayroomStatus + (*NotifyPlayroomWork)(nil), // 402: tutorial.NotifyPlayroomWork + (*NotifyPlayroomLose)(nil), // 403: tutorial.NotifyPlayroomLose + (*ChipInfo)(nil), // 404: tutorial.ChipInfo + (*NotifyPlayroomMood)(nil), // 405: tutorial.NotifyPlayroomMood + (*AdItem)(nil), // 406: tutorial.AdItem + (*NotifyPlayroomKiss)(nil), // 407: tutorial.NotifyPlayroomKiss + (*FriendRoom)(nil), // 408: tutorial.FriendRoom + (*RoomOpponent)(nil), // 409: tutorial.RoomOpponent + (*ReqPlayroomInfo)(nil), // 410: tutorial.ReqPlayroomInfo + (*ResPlayroomInfo)(nil), // 411: tutorial.ResPlayroomInfo + (*ReqPlayroomFlip)(nil), // 412: tutorial.ReqPlayroomFlip + (*ResPlayroomFlip)(nil), // 413: tutorial.ResPlayroomFlip + (*ReqPlayroomGuide)(nil), // 414: tutorial.ReqPlayroomGuide + (*ResPlayroomGuide)(nil), // 415: tutorial.ResPlayroomGuide + (*ReqPlayroomFlipReward)(nil), // 416: tutorial.ReqPlayroomFlipReward + (*ResPlayroomFlipReward)(nil), // 417: tutorial.ResPlayroomFlipReward + (*ReqPlayroomGame)(nil), // 418: tutorial.ReqPlayroomGame + (*ResPlayroomGame)(nil), // 419: tutorial.ResPlayroomGame + (*ReqPlayroomGameShowReward)(nil), // 420: tutorial.ReqPlayroomGameShowReward + (*ResPlayroomGameShowReward)(nil), // 421: tutorial.ResPlayroomGameShowReward + (*ReqPlayroomInteract)(nil), // 422: tutorial.ReqPlayroomInteract + (*ResPlayroomInteract)(nil), // 423: tutorial.ResPlayroomInteract + (*ReqPlayroomSetRoom)(nil), // 424: tutorial.ReqPlayroomSetRoom + (*ResPlayroomSetRoom)(nil), // 425: tutorial.ResPlayroomSetRoom + (*ReqPlayroomSelectReward)(nil), // 426: tutorial.ReqPlayroomSelectReward + (*ResPlayroomSelectReward)(nil), // 427: tutorial.ResPlayroomSelectReward + (*ReqPlayroomLose)(nil), // 428: tutorial.ReqPlayroomLose + (*ResPlayroomLose)(nil), // 429: tutorial.ResPlayroomLose + (*ReqPlayroomWork)(nil), // 430: tutorial.ReqPlayroomWork + (*ResPlayroomWork)(nil), // 431: tutorial.ResPlayroomWork + (*ReqPlayroomRest)(nil), // 432: tutorial.ReqPlayroomRest + (*ResPlayroomRest)(nil), // 433: tutorial.ResPlayroomRest + (*ReqPlayroomDraw)(nil), // 434: tutorial.ReqPlayroomDraw + (*ResPlayroomDraw)(nil), // 435: tutorial.ResPlayroomDraw + (*ReqPlayroomChip)(nil), // 436: tutorial.ReqPlayroomChip + (*ResPlayroomChip)(nil), // 437: tutorial.ResPlayroomChip + (*ReqPlayroomBuyItem)(nil), // 438: tutorial.ReqPlayroomBuyItem + (*ResPlayroomBuyItem)(nil), // 439: tutorial.ResPlayroomBuyItem + (*ReqPlayroomShop)(nil), // 440: tutorial.ReqPlayroomShop + (*ResPlayroomShop)(nil), // 441: tutorial.ResPlayroomShop + (*ReqFriendTreasure)(nil), // 442: tutorial.ReqFriendTreasure + (*ResFriendTreasure)(nil), // 443: tutorial.ResFriendTreasure + (*TreasureInfo)(nil), // 444: tutorial.TreasureInfo + (*ReqFriendTreasureStart)(nil), // 445: tutorial.ReqFriendTreasureStart + (*ResFriendTreasureStart)(nil), // 446: tutorial.ResFriendTreasureStart + (*ReqFriendTreasureEnd)(nil), // 447: tutorial.ReqFriendTreasureEnd + (*ResFriendTreasureEnd)(nil), // 448: tutorial.ResFriendTreasureEnd + (*ReqFriendTreasureFilp)(nil), // 449: tutorial.ReqFriendTreasureFilp + (*ResFriendTreasureFilp)(nil), // 450: tutorial.ResFriendTreasureFilp + (*ResFriendTreasureStar)(nil), // 451: tutorial.ResFriendTreasureStar + (*ReqKafkaLog)(nil), // 452: tutorial.ReqKafkaLog + (*ReqCollectInfo)(nil), // 453: tutorial.ReqCollectInfo + (*ResCollectInfo)(nil), // 454: tutorial.ResCollectInfo + (*CollectItem)(nil), // 455: tutorial.CollectItem + (*ReqCollect)(nil), // 456: tutorial.ReqCollect + (*ResCollect)(nil), // 457: tutorial.ResCollect + (*ReqCatnip)(nil), // 458: tutorial.ReqCatnip + (*ResCatnip)(nil), // 459: tutorial.ResCatnip + (*CatnipGame)(nil), // 460: tutorial.CatnipGame + (*CatnipInvite)(nil), // 461: tutorial.CatnipInvite + (*ReqCatnipInvite)(nil), // 462: tutorial.ReqCatnipInvite + (*ResCatnipInvite)(nil), // 463: tutorial.ResCatnipInvite + (*ReqCatnipAgree)(nil), // 464: tutorial.ReqCatnipAgree + (*ResCatnipAgree)(nil), // 465: tutorial.ResCatnipAgree + (*ReqCatnipRefuse)(nil), // 466: tutorial.ReqCatnipRefuse + (*ResCatnipRefuse)(nil), // 467: tutorial.ResCatnipRefuse + (*ReqCatnipMultiply)(nil), // 468: tutorial.ReqCatnipMultiply + (*ResCatnipMultiply)(nil), // 469: tutorial.ResCatnipMultiply + (*ReqCatnipPlay)(nil), // 470: tutorial.ReqCatnipPlay + (*ResCatnipPlay)(nil), // 471: tutorial.ResCatnipPlay + (*ReqCatnipReward)(nil), // 472: tutorial.ReqCatnipReward + (*ResCatnipReward)(nil), // 473: tutorial.ResCatnipReward + (*ReqCatnipGrandReward)(nil), // 474: tutorial.ReqCatnipGrandReward + (*ResCatnipGrandReward)(nil), // 475: tutorial.ResCatnipGrandReward + (*ReqCatnipEmoji)(nil), // 476: tutorial.ReqCatnipEmoji + (*ResCatnipEmoji)(nil), // 477: tutorial.ResCatnipEmoji + (*AdminReq)(nil), // 478: tutorial.AdminReq + (*AdminRes)(nil), // 479: tutorial.AdminRes + (*ReqAdminInfo)(nil), // 480: tutorial.ReqAdminInfo + (*ReqReloadServerMail)(nil), // 481: tutorial.ReqReloadServerMail + (*ReqServerInfo)(nil), // 482: tutorial.ReqServerInfo + (*ReqReload)(nil), // 483: tutorial.ReqReload + (*ReqAdminGm)(nil), // 484: tutorial.ReqAdminGm + (*ReqAdminBan)(nil), // 485: tutorial.ReqAdminBan + (*ReqAdminShipping)(nil), // 486: tutorial.ReqAdminShipping + nil, // 487: tutorial.ResChessColorData.MChessColorDataEntry + nil, // 488: tutorial.UpdateBaseItemInfo.MUpdateItemEntry + nil, // 489: tutorial.ResPlayerChessData.MChessDataEntry + nil, // 490: tutorial.ReqPutPartInBag.MChessDataEntry + nil, // 491: tutorial.UpdatePlayerChessData.MChessDataEntry + nil, // 492: tutorial.ReqSeparateChess.MChessDataEntry + nil, // 493: tutorial.ReqUpgradeChess.MChessDataEntry + nil, // 494: tutorial.ReqGetChessFromBuff.MChessDataEntry + nil, // 495: tutorial.ReqChessEx.MChessDataEntry + nil, // 496: tutorial.ReqSourceChest.MChessDataEntry + nil, // 497: tutorial.ReqPlayroomOutline.MChessDataEntry + nil, // 498: tutorial.ReqPutChessInBag.MChessDataEntry + nil, // 499: tutorial.ReqTakeChessOutBag.MChessDataEntry + nil, // 500: tutorial.ResPlayerBriefProfileData.SetEmojiEntry + nil, // 501: tutorial.UserInfo.SetEmojiEntry + nil, // 502: tutorial.ReqRewardOrder.MChessDataEntry + nil, // 503: tutorial.ResCardInfo.AllCardEntry + nil, // 504: tutorial.ResCardInfo.HandbookEntry + nil, // 505: tutorial.ResGuildInfo.RewardEntry + nil, // 506: tutorial.ResGuideInfo.RewardEntry + nil, // 507: tutorial.ResGuideTask.TaskEntry + nil, // 508: tutorial.ResDailyTask.WeekRewardEntry + nil, // 509: tutorial.ResDailyTask.DailyTaskEntry + nil, // 510: tutorial.ResLimitEvent.LimitEventListEntry + nil, // 511: tutorial.ResLimitEventProgress.ProgressRewardEntry + nil, // 512: tutorial.LimitEvent.ParamEntry + nil, // 513: tutorial.ReqLimitEventLuckyCat.MChessDataEntry + nil, // 514: tutorial.ResFriendPlayerSimple.EmojiEntry + nil, // 515: tutorial.ResFriendPlayerSimple.PlayroomEntry + nil, // 516: tutorial.ResFriendPlayerSimple.DressSetEntry + nil, // 517: tutorial.ResFriendPlayerSimple.PhysiologyEntry + nil, // 518: tutorial.ResPlayerSimple.EmojiEntry + nil, // 519: tutorial.ResKv.KvEntry + nil, // 520: tutorial.ResRank.RankListEntry + nil, // 521: tutorial.ResMailList.MailListEntry + nil, // 522: tutorial.ResCharge.SpecialShopEntry + nil, // 523: tutorial.ResCharge.ChessShopEntry + nil, // 524: tutorial.ResCharge.GiftEntry + nil, // 525: tutorial.ResCharge.WeeklyDiscountEntry + nil, // 526: tutorial.ReqBuyChessShop2.MChessDataEntry + nil, // 527: tutorial.ResEndless.EndlessListEntry + nil, // 528: tutorial.ResChampshipRank.RankListEntry + nil, // 529: tutorial.ResChampshipPreRank.RankListEntry + nil, // 530: tutorial.ResNotifyCard.CardEntry + nil, // 531: tutorial.ResNotifyCard.MasterEntry + nil, // 532: tutorial.ResNotifyCard.HandbookEntry + nil, // 533: tutorial.ResMining.MapEntry + nil, // 534: tutorial.ReqMiningTake.MapEntry + nil, // 535: tutorial.ResActRed.RedEntry + nil, // 536: tutorial.ResItem.ItemEntry + nil, // 537: tutorial.ItemNotify.ItemEntry + nil, // 538: tutorial.ResGuessColor.OMapEntry + nil, // 539: tutorial.ReqGuessColorTake.OMapEntry + nil, // 540: tutorial.GuessColorInfo.MapEntry + nil, // 541: tutorial.ResPlayroom.PlayroomEntry + nil, // 542: tutorial.ResPlayroom.MoodEntry + nil, // 543: tutorial.ResPlayroom.PhysiologyEntry + nil, // 544: tutorial.ResPlayroom.DressEntry + nil, // 545: tutorial.ResPlayroom.DressSetEntry + nil, // 546: tutorial.ResPlayroom.WeeklyDiscountEntry + nil, // 547: tutorial.ReqPlayroomDressSet.DressSetEntry + nil, // 548: tutorial.NotifyPlayroomMood.MoodEntry + nil, // 549: tutorial.NotifyPlayroomMood.PhysiologyEntry + nil, // 550: tutorial.ResPlayroomInfo.PlayroomEntry + nil, // 551: tutorial.ResPlayroomInfo.ItemsEntry + nil, // 552: tutorial.ResPlayroomInfo.FlipEntry + nil, // 553: tutorial.ResPlayroomInfo.EmojiEntry + nil, // 554: tutorial.ResPlayroomInfo.DressSetEntry + nil, // 555: tutorial.ResPlayroomGame.ItemsEntry + nil, // 556: tutorial.ReqPlayroomSetRoom.PlayroomEntry } var file_proto_Gameapi_proto_depIdxs = []int32{ - 483, // 0: tutorial.ResChessColorData.mChessColorData:type_name -> tutorial.ResChessColorData.MChessColorDataEntry + 487, // 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 - 72, // 5: tutorial.ResPlayerChessInfo.ChessBag:type_name -> tutorial.ChessBag - 53, // 6: tutorial.ResPlayerChessInfo.PartBag:type_name -> tutorial.PartBag + 488, // 3: tutorial.UpdateBaseItemInfo.mUpdateItem:type_name -> tutorial.UpdateBaseItemInfo.MUpdateItemEntry + 489, // 4: tutorial.ResPlayerChessData.mChessData:type_name -> tutorial.ResPlayerChessData.MChessDataEntry + 73, // 5: tutorial.ResPlayerChessInfo.ChessBag:type_name -> tutorial.ChessBag + 54, // 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 + 55, // 8: tutorial.PartBag.PartBagGrids:type_name -> tutorial.PartBagGrid + 490, // 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 - 57, // 13: tutorial.UpdatePlayerChessData.mChessHandle:type_name -> tutorial.ChessHandle + 491, // 12: tutorial.UpdatePlayerChessData.mChessData:type_name -> tutorial.UpdatePlayerChessData.MChessDataEntry + 58, // 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 + 492, // 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 + 493, // 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 + 494, // 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 + 495, // 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 + 496, // 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 + 497, // 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 + 74, // 28: tutorial.ChessBag.ChessBagGrids:type_name -> tutorial.ChessBagGrid + 498, // 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 + 499, // 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 + 500, // 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 9, // 38: tutorial.BaseInfo.Lang:type_name -> tutorial.LANG_TYPE - 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 + 192, // 39: tutorial.UserInfo.AvatarList:type_name -> tutorial.AvatarInfo + 188, // 40: tutorial.UserInfo.FaceList:type_name -> tutorial.FaceInfo + 195, // 41: tutorial.UserInfo.EmojiList:type_name -> tutorial.EmojiInfo + 501, // 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 2, // 46: tutorial.ResGetEnergyByAD.Code:type_name -> tutorial.RES_CODE 2, // 47: tutorial.ResGetHandbookReward.Code:type_name -> tutorial.RES_CODE - 101, // 48: tutorial.Handbook.Handbooks:type_name -> tutorial.HandbookInfo + 102, // 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 + 502, // 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 - 112, // 54: tutorial.ResOrderList.OrderList:type_name -> tutorial.Order - 115, // 55: tutorial.ResDecorateInfo.Parts:type_name -> tutorial.DecoratePart - 168, // 56: tutorial.DecoratePart.Items:type_name -> tutorial.ItemInfo + 169, // 53: tutorial.Order.Items:type_name -> tutorial.ItemInfo + 113, // 54: tutorial.ResOrderList.OrderList:type_name -> tutorial.Order + 116, // 55: tutorial.ResDecorateInfo.Parts:type_name -> tutorial.DecoratePart + 169, // 56: tutorial.DecoratePart.Items:type_name -> tutorial.ItemInfo 2, // 57: tutorial.ResDecorate.Code:type_name -> tutorial.RES_CODE 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 + 2, // 59: tutorial.ResAreaReward.Code:type_name -> tutorial.RES_CODE + 124, // 60: tutorial.ResCardInfo.CardList:type_name -> tutorial.Card + 503, // 61: tutorial.ResCardInfo.AllCard:type_name -> tutorial.ResCardInfo.AllCardEntry + 504, // 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,229 +30363,233 @@ 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 - 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 - 179, // 86: tutorial.GuideTask.Progress:type_name -> tutorial.QuestProgress + 505, // 81: tutorial.ResGuildInfo.Reward:type_name -> tutorial.ResGuildInfo.RewardEntry + 506, // 82: tutorial.ResGuideInfo.Reward:type_name -> tutorial.ResGuideInfo.RewardEntry + 169, // 83: tutorial.ResItemPop.Items:type_name -> tutorial.ItemInfo + 170, // 84: tutorial.ResItemPop.CardPacks:type_name -> tutorial.CardPack + 507, // 85: tutorial.ResGuideTask.Task:type_name -> tutorial.ResGuideTask.TaskEntry + 180, // 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 - 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 + 508, // 89: tutorial.ResDailyTask.WeekReward:type_name -> tutorial.ResDailyTask.WeekRewardEntry + 509, // 90: tutorial.ResDailyTask.DailyTask:type_name -> tutorial.ResDailyTask.DailyTaskEntry + 169, // 91: tutorial.DailyWeek.Items:type_name -> tutorial.ItemInfo + 180, // 92: tutorial.DailyTask.Progress:type_name -> tutorial.QuestProgress + 169, // 93: tutorial.DailyTask.Items:type_name -> tutorial.ItemInfo 2, // 94: tutorial.ResGetDailyTaskReward.Code:type_name -> tutorial.RES_CODE 2, // 95: tutorial.ResGetDailyWeekReward.Code:type_name -> tutorial.RES_CODE 2, // 96: tutorial.ResDailyUnlock.Code:type_name -> tutorial.RES_CODE - 187, // 97: tutorial.ResFaceInfo.FaceList:type_name -> tutorial.FaceInfo + 188, // 97: tutorial.ResFaceInfo.FaceList:type_name -> tutorial.FaceInfo 2, // 98: tutorial.ResSetFace.Code:type_name -> tutorial.RES_CODE - 191, // 99: tutorial.ResAvatarInfo.AvatarList:type_name -> tutorial.AvatarInfo + 192, // 99: tutorial.ResAvatarInfo.AvatarList:type_name -> tutorial.AvatarInfo 2, // 100: tutorial.ResSetAvatar.Code:type_name -> tutorial.RES_CODE 2, // 101: tutorial.ResSetEmoji.Code:type_name -> tutorial.RES_CODE - 198, // 102: tutorial.ResSevenLogin.WeekReward:type_name -> tutorial.SevenLoginReward - 198, // 103: tutorial.ResSevenLogin.MonthReward:type_name -> tutorial.SevenLoginReward - 168, // 104: tutorial.SevenLoginReward.Item1:type_name -> tutorial.ItemInfo - 168, // 105: tutorial.SevenLoginReward.Item2:type_name -> tutorial.ItemInfo - 168, // 106: tutorial.SevenLoginReward.Item3:type_name -> tutorial.ItemInfo + 199, // 102: tutorial.ResSevenLogin.WeekReward:type_name -> tutorial.SevenLoginReward + 199, // 103: tutorial.ResSevenLogin.MonthReward:type_name -> tutorial.SevenLoginReward + 169, // 104: tutorial.SevenLoginReward.Item1:type_name -> tutorial.ItemInfo + 169, // 105: tutorial.SevenLoginReward.Item2:type_name -> tutorial.ItemInfo + 169, // 106: tutorial.SevenLoginReward.Item3:type_name -> tutorial.ItemInfo 2, // 107: tutorial.ResGetSevenLoginReward.Code:type_name -> tutorial.RES_CODE 2, // 108: tutorial.ResGetMonthLoginReward.Code:type_name -> tutorial.RES_CODE - 204, // 109: tutorial.ResActivity.ActiveList:type_name -> tutorial.ActivityInfo + 205, // 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 + 510, // 111: tutorial.ResLimitEvent.LimitEventList:type_name -> tutorial.ResLimitEvent.LimitEventListEntry + 511, // 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 + 512, // 115: tutorial.LimitEvent.Param:type_name -> tutorial.LimitEvent.ParamEntry + 513, // 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 + 169, // 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 - 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 - 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 + 232, // 122: tutorial.ResSearchPlayer.List:type_name -> tutorial.ResPlayerSimple + 514, // 123: tutorial.ResFriendPlayerSimple.Emoji:type_name -> tutorial.ResFriendPlayerSimple.EmojiEntry + 515, // 124: tutorial.ResFriendPlayerSimple.Playroom:type_name -> tutorial.ResFriendPlayerSimple.PlayroomEntry + 516, // 125: tutorial.ResFriendPlayerSimple.DressSet:type_name -> tutorial.ResFriendPlayerSimple.DressSetEntry + 233, // 126: tutorial.ResFriendPlayerSimple.Last:type_name -> tutorial.ActLog + 517, // 127: tutorial.ResFriendPlayerSimple.Physiology:type_name -> tutorial.ResFriendPlayerSimple.PhysiologyEntry + 518, // 128: tutorial.ResPlayerSimple.Emoji:type_name -> tutorial.ResPlayerSimple.EmojiEntry + 232, // 129: tutorial.ResFriendLog.Player:type_name -> tutorial.ResPlayerSimple + 235, // 130: tutorial.NotifyFriendLog.info:type_name -> tutorial.ResFriendLog + 237, // 131: tutorial.NotifyFriendLog.Bubble:type_name -> tutorial.FriendBubbleInfo + 169, // 132: tutorial.FriendBubbleInfo.Items:type_name -> tutorial.ItemInfo + 239, // 133: tutorial.NotifyFriendCard.Info:type_name -> tutorial.ResFriendCard + 519, // 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 + 232, // 136: tutorial.ResFriendByCode.Player:type_name -> tutorial.ResPlayerSimple + 232, // 137: tutorial.ResFriendRecommend.List:type_name -> tutorial.ResPlayerSimple 2, // 138: tutorial.ResFriendIgnore.Code:type_name -> tutorial.RES_CODE - 231, // 139: tutorial.ResFriendList.FriendList:type_name -> tutorial.ResPlayerSimple + 232, // 139: tutorial.ResFriendList.FriendList:type_name -> tutorial.ResPlayerSimple 2, // 140: tutorial.ResAddNpc.Code:type_name -> tutorial.RES_CODE - 253, // 141: tutorial.ResFriendApply.ApplyList:type_name -> tutorial.ResFriendApplyInfo - 231, // 142: tutorial.ResFriendApplyInfo.Player:type_name -> tutorial.ResPlayerSimple - 238, // 143: tutorial.ResFriendCardMsg.MsgList:type_name -> tutorial.ResFriendCard - 253, // 144: tutorial.ResWishApplyList.ApplyList:type_name -> tutorial.ResFriendApplyInfo + 254, // 141: tutorial.ResFriendApply.ApplyList:type_name -> tutorial.ResFriendApplyInfo + 232, // 142: tutorial.ResFriendApplyInfo.Player:type_name -> tutorial.ResPlayerSimple + 239, // 143: tutorial.ResFriendCardMsg.MsgList:type_name -> tutorial.ResFriendCard + 254, // 144: tutorial.ResWishApplyList.ApplyList:type_name -> tutorial.ResFriendApplyInfo 2, // 145: tutorial.ResWishApply.Code:type_name -> tutorial.RES_CODE - 234, // 146: tutorial.ResFriendTimeLine.Log:type_name -> tutorial.ResFriendLog - 262, // 147: tutorial.ResFriendTimeLine.Reply:type_name -> tutorial.ResFriendReply - 231, // 148: tutorial.ResFriendReply.Player:type_name -> tutorial.ResPlayerSimple - 2, // 149: tutorial.ResFriendReplyHandle.Code:type_name -> tutorial.RES_CODE - 236, // 150: tutorial.ResFriendBubble.Bubble:type_name -> tutorial.FriendBubbleInfo - 2, // 151: tutorial.ResFriendTLUpvote.Code:type_name -> tutorial.RES_CODE - 2, // 152: tutorial.ResFriendTReward.Code:type_name -> tutorial.RES_CODE - 231, // 153: tutorial.ResFriendApplyNotify.Player:type_name -> tutorial.ResPlayerSimple - 2, // 154: tutorial.ResApplyFriend.Code:type_name -> tutorial.RES_CODE - 2, // 155: tutorial.ResAgreeFriend.Code:type_name -> tutorial.RES_CODE - 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 - 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 - 294, // 169: tutorial.ResCharge.Wish:type_name -> tutorial.WishList - 521, // 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 - 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 - 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 - 2, // 183: tutorial.ResChargeReceive.Code:type_name -> tutorial.RES_CODE - 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 - 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 - 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 - 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 - 368, // 202: tutorial.ResGuessColor.MapList:type_name -> tutorial.GuessColorInfo - 534, // 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 - 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 - 2, // 211: tutorial.ResRaceStart.Code:type_name -> tutorial.RES_CODE - 2, // 212: tutorial.ResRaceReward.Code:type_name -> tutorial.RES_CODE - 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 - 393, // 217: tutorial.ResPlayroom.collect:type_name -> tutorial.PlayroomCollectInfo - 538, // 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 2, // 260: tutorial.ResPlayroomWork.Code:type_name -> tutorial.RES_CODE - 2, // 261: tutorial.ResPlayroomRest.Code:type_name -> tutorial.RES_CODE - 2, // 262: tutorial.ResPlayroomDraw.Code:type_name -> tutorial.RES_CODE - 2, // 263: tutorial.ResPlayroomChip.Code:type_name -> tutorial.RES_CODE - 2, // 264: tutorial.ResPlayroomBuyItem.Code:type_name -> tutorial.RES_CODE - 2, // 265: tutorial.ResPlayroomShop.Code:type_name -> tutorial.RES_CODE - 443, // 266: tutorial.ResFriendTreasure.List:type_name -> tutorial.TreasureInfo - 443, // 267: tutorial.ReqFriendTreasureStart.List:type_name -> tutorial.TreasureInfo - 2, // 268: tutorial.ResFriendTreasureStart.Code:type_name -> tutorial.RES_CODE - 2, // 269: tutorial.ResFriendTreasureEnd.Code:type_name -> tutorial.RES_CODE - 2, // 270: tutorial.ResFriendTreasureFilp.Code:type_name -> tutorial.RES_CODE - 454, // 271: tutorial.ResCollectInfo.Items:type_name -> tutorial.CollectItem - 168, // 272: tutorial.CollectItem.Items:type_name -> tutorial.ItemInfo - 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 + 235, // 146: tutorial.ResFriendTimeLine.Log:type_name -> tutorial.ResFriendLog + 263, // 147: tutorial.ResFriendTimeLine.Reply:type_name -> tutorial.ResFriendReply + 232, // 148: tutorial.ResFriendReply.Player:type_name -> tutorial.ResPlayerSimple + 169, // 149: tutorial.ResFriendReply.Items:type_name -> tutorial.ItemInfo + 2, // 150: tutorial.ResFriendReplyHandle.Code:type_name -> tutorial.RES_CODE + 237, // 151: tutorial.ResFriendBubble.Bubble:type_name -> tutorial.FriendBubbleInfo + 2, // 152: tutorial.ResFriendTLUpvote.Code:type_name -> tutorial.RES_CODE + 2, // 153: tutorial.ResFriendTReward.Code:type_name -> tutorial.RES_CODE + 232, // 154: tutorial.ResFriendApplyNotify.Player:type_name -> tutorial.ResPlayerSimple + 2, // 155: tutorial.ResApplyFriend.Code:type_name -> tutorial.RES_CODE + 2, // 156: tutorial.ResAgreeFriend.Code:type_name -> tutorial.RES_CODE + 232, // 157: tutorial.ResAgreeFriend.Player:type_name -> tutorial.ResPlayerSimple + 2, // 158: tutorial.ResRefuseFriend.Code:type_name -> tutorial.RES_CODE + 2, // 159: tutorial.ResDelFriend.Code:type_name -> tutorial.RES_CODE + 520, // 160: tutorial.ResRank.RankList:type_name -> tutorial.ResRank.RankListEntry + 521, // 161: tutorial.ResMailList.MailList:type_name -> tutorial.ResMailList.MailListEntry + 169, // 162: tutorial.MailInfo.Items:type_name -> tutorial.ItemInfo + 284, // 163: tutorial.MailNotify.Info:type_name -> tutorial.MailInfo + 2, // 164: tutorial.ResReadMail.Code:type_name -> tutorial.RES_CODE + 2, // 165: tutorial.ResGetMailReward.Code:type_name -> tutorial.RES_CODE + 2, // 166: tutorial.ResDeleteMail.Code:type_name -> tutorial.RES_CODE + 522, // 167: tutorial.ResCharge.SpecialShop:type_name -> tutorial.ResCharge.SpecialShopEntry + 523, // 168: tutorial.ResCharge.ChessShop:type_name -> tutorial.ResCharge.ChessShopEntry + 524, // 169: tutorial.ResCharge.Gift:type_name -> tutorial.ResCharge.GiftEntry + 295, // 170: tutorial.ResCharge.Wish:type_name -> tutorial.WishList + 525, // 171: tutorial.ResCharge.WeeklyDiscount:type_name -> tutorial.ResCharge.WeeklyDiscountEntry + 2, // 172: tutorial.ResAddWish.Code:type_name -> tutorial.RES_CODE + 2, // 173: tutorial.ResGetWish.Code:type_name -> tutorial.RES_CODE + 2, // 174: tutorial.ResSendWishBeg.Code:type_name -> tutorial.RES_CODE + 2, // 175: tutorial.ResFreeShop.Code:type_name -> tutorial.RES_CODE + 2, // 176: tutorial.ResBuyChessShop.Code:type_name -> tutorial.RES_CODE + 526, // 177: tutorial.ReqBuyChessShop2.mChessData:type_name -> tutorial.ReqBuyChessShop2.MChessDataEntry + 2, // 178: tutorial.ResBuyChessShop2.Code:type_name -> tutorial.RES_CODE + 2, // 179: tutorial.ResRefreshChessShop.Code:type_name -> tutorial.RES_CODE + 527, // 180: tutorial.ResEndless.EndlessList:type_name -> tutorial.ResEndless.EndlessListEntry + 169, // 181: tutorial.ResEndlessInfo.Items:type_name -> tutorial.ItemInfo + 2, // 182: tutorial.ResEndlessReward.Code:type_name -> tutorial.RES_CODE + 2, // 183: tutorial.ResPiggyBankReward.Code:type_name -> tutorial.RES_CODE + 2, // 184: tutorial.ResChargeReceive.Code:type_name -> tutorial.RES_CODE + 2, // 185: tutorial.ResShippingOrder.Code:type_name -> tutorial.RES_CODE + 2, // 186: tutorial.ResChampshipReward.Code:type_name -> tutorial.RES_CODE + 2, // 187: tutorial.ResChampshipRankReward.Code:type_name -> tutorial.RES_CODE + 528, // 188: tutorial.ResChampshipRank.RankList:type_name -> tutorial.ResChampshipRank.RankListEntry + 529, // 189: tutorial.ResChampshipPreRank.RankList:type_name -> tutorial.ResChampshipPreRank.RankListEntry + 530, // 190: tutorial.ResNotifyCard.Card:type_name -> tutorial.ResNotifyCard.CardEntry + 531, // 191: tutorial.ResNotifyCard.Master:type_name -> tutorial.ResNotifyCard.MasterEntry + 532, // 192: tutorial.ResNotifyCard.Handbook:type_name -> tutorial.ResNotifyCard.HandbookEntry + 2, // 193: tutorial.ResSetFacebookUrl.Code:type_name -> tutorial.RES_CODE + 533, // 194: tutorial.ResMining.Map:type_name -> tutorial.ResMining.MapEntry + 534, // 195: tutorial.ReqMiningTake.Map:type_name -> tutorial.ReqMiningTake.MapEntry + 2, // 196: tutorial.ResMiningTake.Code:type_name -> tutorial.RES_CODE + 2, // 197: tutorial.ResMiningReward.Code:type_name -> tutorial.RES_CODE + 2, // 198: tutorial.ResActPassReward.Code:type_name -> tutorial.RES_CODE + 535, // 199: tutorial.ResActRed.Red:type_name -> tutorial.ResActRed.RedEntry + 205, // 200: tutorial.ActivityNotify.Info:type_name -> tutorial.ActivityInfo + 536, // 201: tutorial.ResItem.Item:type_name -> tutorial.ResItem.ItemEntry + 537, // 202: tutorial.ItemNotify.Item:type_name -> tutorial.ItemNotify.ItemEntry + 369, // 203: tutorial.ResGuessColor.MapList:type_name -> tutorial.GuessColorInfo + 538, // 204: tutorial.ResGuessColor.OMap:type_name -> tutorial.ResGuessColor.OMapEntry + 367, // 205: tutorial.ResGuessColor.Opponent:type_name -> tutorial.opponent + 369, // 206: tutorial.ReqGuessColorTake.Map:type_name -> tutorial.GuessColorInfo + 539, // 207: tutorial.ReqGuessColorTake.OMap:type_name -> tutorial.ReqGuessColorTake.OMapEntry + 540, // 208: tutorial.GuessColorInfo.Map:type_name -> tutorial.GuessColorInfo.MapEntry + 2, // 209: tutorial.ResGuessColorTake.Code:type_name -> tutorial.RES_CODE + 2, // 210: tutorial.ResGuessColorReward.Code:type_name -> tutorial.RES_CODE + 375, // 211: tutorial.ResRace.Opponent:type_name -> tutorial.raceopponent + 2, // 212: tutorial.ResRaceStart.Code:type_name -> tutorial.RES_CODE + 2, // 213: tutorial.ResRaceReward.Code:type_name -> tutorial.RES_CODE + 169, // 214: tutorial.ResPlayroom.Items:type_name -> tutorial.ItemInfo + 409, // 215: tutorial.ResPlayroom.Opponent:type_name -> tutorial.RoomOpponent + 408, // 216: tutorial.ResPlayroom.Friend:type_name -> tutorial.FriendRoom + 541, // 217: tutorial.ResPlayroom.Playroom:type_name -> tutorial.ResPlayroom.PlayroomEntry + 394, // 218: tutorial.ResPlayroom.collect:type_name -> tutorial.PlayroomCollectInfo + 542, // 219: tutorial.ResPlayroom.Mood:type_name -> tutorial.ResPlayroom.MoodEntry + 169, // 220: tutorial.ResPlayroom.LoseItem:type_name -> tutorial.ItemInfo + 404, // 221: tutorial.ResPlayroom.Chip:type_name -> tutorial.ChipInfo + 543, // 222: tutorial.ResPlayroom.Physiology:type_name -> tutorial.ResPlayroom.PhysiologyEntry + 544, // 223: tutorial.ResPlayroom.Dress:type_name -> tutorial.ResPlayroom.DressEntry + 545, // 224: tutorial.ResPlayroom.DressSet:type_name -> tutorial.ResPlayroom.DressSetEntry + 393, // 225: tutorial.ResPlayroom.PetAir:type_name -> tutorial.PlayroomAirInfo + 179, // 226: tutorial.ResPlayroom.DailyTask:type_name -> tutorial.DailyTask + 406, // 227: tutorial.ResPlayroom.AdItem:type_name -> tutorial.AdItem + 408, // 228: tutorial.ResPlayroom.Target:type_name -> tutorial.FriendRoom + 546, // 229: tutorial.ResPlayroom.WeeklyDiscount:type_name -> tutorial.ResPlayroom.WeeklyDiscountEntry + 179, // 230: tutorial.NotifyPlayroomTask.DailyTask:type_name -> tutorial.DailyTask + 2, // 231: tutorial.ResPlayroomTask.Code:type_name -> tutorial.RES_CODE + 2, // 232: tutorial.ResPlayroomTaskReward.Code:type_name -> tutorial.RES_CODE + 2, // 233: tutorial.ResPlayroomUnlock.Code:type_name -> tutorial.RES_CODE + 2, // 234: tutorial.ResPlayroomUpvote.Code:type_name -> tutorial.RES_CODE + 392, // 235: tutorial.PlayroomDress.List:type_name -> tutorial.PlayroomDressInfo + 547, // 236: tutorial.ReqPlayroomDressSet.DressSet:type_name -> tutorial.ReqPlayroomDressSet.DressSetEntry + 2, // 237: tutorial.ResPlayroomDressSet.Code:type_name -> tutorial.RES_CODE + 2, // 238: tutorial.ResPlayroomPetAirSet.Code:type_name -> tutorial.RES_CODE + 2, // 239: tutorial.ResPlayroomWrokOutline.Code:type_name -> tutorial.RES_CODE + 169, // 240: tutorial.NotifyPlayroomLose.LoseItem:type_name -> tutorial.ItemInfo + 404, // 241: tutorial.NotifyPlayroomLose.Chip:type_name -> tutorial.ChipInfo + 548, // 242: tutorial.NotifyPlayroomMood.Mood:type_name -> tutorial.NotifyPlayroomMood.MoodEntry + 549, // 243: tutorial.NotifyPlayroomMood.Physiology:type_name -> tutorial.NotifyPlayroomMood.PhysiologyEntry + 406, // 244: tutorial.NotifyPlayroomMood.AdItem:type_name -> tutorial.AdItem + 550, // 245: tutorial.ResPlayroomInfo.Playroom:type_name -> tutorial.ResPlayroomInfo.PlayroomEntry + 551, // 246: tutorial.ResPlayroomInfo.Items:type_name -> tutorial.ResPlayroomInfo.ItemsEntry + 552, // 247: tutorial.ResPlayroomInfo.flip:type_name -> tutorial.ResPlayroomInfo.FlipEntry + 553, // 248: tutorial.ResPlayroomInfo.Emoji:type_name -> tutorial.ResPlayroomInfo.EmojiEntry + 554, // 249: tutorial.ResPlayroomInfo.DressSet:type_name -> tutorial.ResPlayroomInfo.DressSetEntry + 2, // 250: tutorial.ResPlayroomFlip.Code:type_name -> tutorial.RES_CODE + 2, // 251: tutorial.ResPlayroomGuide.Code:type_name -> tutorial.RES_CODE + 2, // 252: tutorial.ResPlayroomFlipReward.Code:type_name -> tutorial.RES_CODE + 2, // 253: tutorial.ResPlayroomGame.Code:type_name -> tutorial.RES_CODE + 555, // 254: tutorial.ResPlayroomGame.Items:type_name -> tutorial.ResPlayroomGame.ItemsEntry + 169, // 255: tutorial.ResPlayroomGameShowReward.Items:type_name -> tutorial.ItemInfo + 2, // 256: tutorial.ResPlayroomInteract.Code:type_name -> tutorial.RES_CODE + 556, // 257: tutorial.ReqPlayroomSetRoom.Playroom:type_name -> tutorial.ReqPlayroomSetRoom.PlayroomEntry + 2, // 258: tutorial.ResPlayroomSetRoom.Code:type_name -> tutorial.RES_CODE + 2, // 259: tutorial.ResPlayroomSelectReward.Code:type_name -> tutorial.RES_CODE + 2, // 260: tutorial.ResPlayroomLose.Code:type_name -> tutorial.RES_CODE + 2, // 261: tutorial.ResPlayroomWork.Code:type_name -> tutorial.RES_CODE + 2, // 262: tutorial.ResPlayroomRest.Code:type_name -> tutorial.RES_CODE + 2, // 263: tutorial.ResPlayroomDraw.Code:type_name -> tutorial.RES_CODE + 2, // 264: tutorial.ResPlayroomChip.Code:type_name -> tutorial.RES_CODE + 2, // 265: tutorial.ResPlayroomBuyItem.Code:type_name -> tutorial.RES_CODE + 2, // 266: tutorial.ResPlayroomShop.Code:type_name -> tutorial.RES_CODE + 444, // 267: tutorial.ResFriendTreasure.List:type_name -> tutorial.TreasureInfo + 444, // 268: tutorial.ReqFriendTreasureStart.List:type_name -> tutorial.TreasureInfo + 2, // 269: tutorial.ResFriendTreasureStart.Code:type_name -> tutorial.RES_CODE + 2, // 270: tutorial.ResFriendTreasureEnd.Code:type_name -> tutorial.RES_CODE + 2, // 271: tutorial.ResFriendTreasureFilp.Code:type_name -> tutorial.RES_CODE + 455, // 272: tutorial.ResCollectInfo.Items:type_name -> tutorial.CollectItem + 169, // 273: tutorial.CollectItem.Items:type_name -> tutorial.ItemInfo + 2, // 274: tutorial.ResCollect.Code:type_name -> tutorial.RES_CODE + 460, // 275: tutorial.ResCatnip.GameList:type_name -> tutorial.CatnipGame + 461, // 276: tutorial.ResCatnip.FriendList:type_name -> tutorial.CatnipInvite + 232, // 277: tutorial.CatnipGame.Partner:type_name -> tutorial.ResPlayerSimple + 232, // 278: tutorial.CatnipInvite.Player:type_name -> tutorial.ResPlayerSimple + 2, // 279: tutorial.ResCatnipInvite.Code:type_name -> tutorial.RES_CODE + 2, // 280: tutorial.ResCatnipAgree.Code:type_name -> tutorial.RES_CODE + 2, // 281: tutorial.ResCatnipRefuse.Code:type_name -> tutorial.RES_CODE + 2, // 282: tutorial.ResCatnipMultiply.Code:type_name -> tutorial.RES_CODE + 2, // 283: tutorial.ResCatnipPlay.Code:type_name -> tutorial.RES_CODE + 2, // 284: tutorial.ResCatnipReward.Code:type_name -> tutorial.RES_CODE + 2, // 285: tutorial.ResCatnipGrandReward.Code:type_name -> tutorial.RES_CODE + 2, // 286: tutorial.ResCatnipEmoji.Code:type_name -> tutorial.RES_CODE + 172, // 287: tutorial.ResGuideTask.TaskEntry.value:type_name -> tutorial.GuideTask + 178, // 288: tutorial.ResDailyTask.WeekRewardEntry.value:type_name -> tutorial.DailyWeek + 179, // 289: tutorial.ResDailyTask.DailyTaskEntry.value:type_name -> tutorial.DailyTask + 215, // 290: tutorial.ResLimitEvent.LimitEventListEntry.value:type_name -> tutorial.LimitEvent + 232, // 291: tutorial.ResRank.RankListEntry.value:type_name -> tutorial.ResPlayerSimple + 284, // 292: tutorial.ResMailList.MailListEntry.value:type_name -> tutorial.MailInfo + 302, // 293: tutorial.ResCharge.SpecialShopEntry.value:type_name -> tutorial.ResSpecialShop + 303, // 294: tutorial.ResCharge.ChessShopEntry.value:type_name -> tutorial.ResChessShop + 294, // 295: tutorial.ResCharge.WeeklyDiscountEntry.value:type_name -> tutorial.WeeklyDiscountInfo + 314, // 296: tutorial.ResEndless.EndlessListEntry.value:type_name -> tutorial.ResEndlessInfo + 234, // 297: tutorial.ResChampshipRank.RankListEntry.value:type_name -> tutorial.ResPlayerRank + 234, // 298: tutorial.ResChampshipPreRank.RankListEntry.value:type_name -> tutorial.ResPlayerRank + 391, // 299: tutorial.ResPlayroom.DressEntry.value:type_name -> tutorial.PlayroomDress + 294, // 300: tutorial.ResPlayroom.WeeklyDiscountEntry.value:type_name -> tutorial.WeeklyDiscountInfo + 169, // 301: tutorial.ResPlayroomInfo.ItemsEntry.value:type_name -> tutorial.ItemInfo + 169, // 302: tutorial.ResPlayroomGame.ItemsEntry.value:type_name -> tutorial.ItemInfo + 303, // [303:303] is the sub-list for method output_type + 303, // [303:303] is the sub-list for method input_type + 303, // [303:303] is the sub-list for extension type_name + 303, // [303:303] is the sub-list for extension extendee + 0, // [0:303] is the sub-list for field type_name } func init() { file_proto_Gameapi_proto_init() } @@ -30266,8 +30602,8 @@ func file_proto_Gameapi_proto_init() { File: protoimpl.DescBuilder{ 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, + NumEnums: 13, + NumMessages: 544, NumExtensions: 0, NumServices: 0, }, diff --git a/src/server/test/catnip_test.go b/src/server/test/catnip_test.go new file mode 100644 index 00000000..32e844fb --- /dev/null +++ b/src/server/test/catnip_test.go @@ -0,0 +1,52 @@ +package test + +import ( + "testing" + + "google.golang.org/protobuf/proto" + + "server/game" + "server/msg" +) + +func TestCatnipBackData(t *testing.T) { + p1 := new(game.Player) + p1.InitPlayer("aaa001") + game.G_GameLogicPtr.SetPlayer(p1) + p1.CatnipBackData() +} + +func TestReqCatnipEmoji(t *testing.T) { + p1 := new(game.Player) + p1.InitPlayer("aaa001") + game.G_GameLogicPtr.SetPlayer(p1) + + req := &msg.ReqCatnipEmoji{ + Id: 1, + EmojiId: 1, + } + data, err := proto.Marshal(req) + if err != nil { + t.Fatalf("proto.Marshal error: %v", err) + } + + if err := game.ReqCatnipEmoji(p1, data); err != nil { + t.Fatalf("ReqCatnipEmoji returned error: %v", err) + } +} + +func TestReqCatnipReward(t *testing.T) { + p1 := new(game.Player) + p1.InitPlayer("aaa001") + game.G_GameLogicPtr.SetPlayer(p1) + req := &msg.ReqCatnipReward{ + Id: 2, + } + data, err := proto.Marshal(req) + if err != nil { + t.Fatalf("proto.Marshal error: %v", err) + } + if err := game.ReqCatnipReward(p1, data); err != nil { + t.Fatalf("ReqCatnipReward returned error: %v", err) + } +} diff --git a/src/server/test/conf/server.json b/src/server/test/conf/server.json new file mode 100644 index 00000000..c6779e49 --- /dev/null +++ b/src/server/test/conf/server.json @@ -0,0 +1,48 @@ +{ + "AppID": 1, + "LogLevel": "debug", + "LogPath": "./log", + "TCPAddr": ":3601", + "WSAddr": ":3566", + "MySqlAddr": "127.0.0.1", + "MySqlPort": "3306", + "MySqlUsr": "root", + "MySqlPwd": "IOagNEq3C84c-20CmHEin5iODVc=", + "MaxConnNum": 20000, + "DbName": "Merge_Pet_1", + "HttpPort": ":8081", + "AppPath": "./app", + "TELOGDIR" : "./teLog/", + + "GameName": "Merge_Pet_Local", + + "ServerType":"node", + + "ServerID": 1, + "ServerOpenTime": "2018-01-01 00:00:00", + "ServerName": "Merge_Pet", + "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", + "RedisPwd" :"", + + "RedisWriteAddr":"127.0.0.1:6379", + "RedisReadAddrs":"127.0.0.1:6379", + "RedisMasterName":"mymaster", + "RedisConnType":"Direct", + + "GoogleVerify":false, + "Partition":3, + "KafkaHost":"kafka-server", + "CountryCode":"004", + "KafkaPort":"9092", + "Version":"1.0.0", + "IdVerify":false +}