From b0db5645eae703998c348ec20126d6998f2ea0a5 Mon Sep 17 00:00:00 2001 From: meixiongfeng <766881921@qq.com> Date: Wed, 17 Aug 2022 18:57:15 +0800 Subject: [PATCH 01/10] =?UTF-8?q?=E4=B8=9B=E6=9E=97=E7=BE=8E=E9=A3=9F?= =?UTF-8?q?=E9=A6=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/gourmet/api.go | 1 + modules/gourmet/api_createorder.go | 24 +++++++-- modules/gourmet/api_foodskilllv.go | 74 ++++++++++++++++++++++++++++ modules/gourmet/api_getReward.go | 2 +- modules/gourmet/api_getlist.go | 2 +- modules/gourmet/api_skilllv.go | 25 ---------- modules/gourmet/model_gourmet.go | 79 +++++++++++++++++++++++++----- pb/errorcode.pb.go | 10 ++-- pb/gourmet_db.pb.go | 75 +++++++++++++++------------- pb/gourmet_msg.pb.go | 22 ++++----- 10 files changed, 222 insertions(+), 92 deletions(-) create mode 100644 modules/gourmet/api_foodskilllv.go delete mode 100644 modules/gourmet/api_skilllv.go diff --git a/modules/gourmet/api.go b/modules/gourmet/api.go index a0fbdc083..74c06d9c3 100644 --- a/modules/gourmet/api.go +++ b/modules/gourmet/api.go @@ -8,6 +8,7 @@ import ( const ( GourmetGetListResp = "getlist" GourmetCreateOrderResp = "createorder" + GourmetSkillLvResp = "skilllv" PagodaGetRewardResp = "getreward" ) diff --git a/modules/gourmet/api_createorder.go b/modules/gourmet/api_createorder.go index eb5ce51f3..8053f6e6d 100644 --- a/modules/gourmet/api_createorder.go +++ b/modules/gourmet/api_createorder.go @@ -24,6 +24,7 @@ func (this *apiComp) CreateOrder(session comm.IUserSession, req *pb.GourmetCreat res []*cfg.Gameatn costTime int32 ) + code = this.CreateOrderCheck(session, req) if code != pb.ErrorCode_Success { return // 参数校验失败直接返回 @@ -38,10 +39,9 @@ func (this *apiComp) CreateOrder(session comm.IUserSession, req *pb.GourmetCreat if order.FoodCount == 0 { continue } - foodtype := order.FoodType // + foodtype := order.FoodType // 获取技能等级 skillLv := _gourmet.Skill[foodtype] - // 计算出需要的时间 _skillCfg := this.module.configure.GetGourmetSkillConfigData(foodtype, skillLv) costTime += _skillCfg.Needtime * order.FoodCount @@ -49,15 +49,21 @@ func (this *apiComp) CreateOrder(session comm.IUserSession, req *pb.GourmetCreat if _gourmet.Foods == nil { // 队列数据为nil 直接将订单数据给ta _gourmet.Foods = req.Order } else { - for _, v := range _gourmet.Foods { - for _, v1 := range req.Order { + for _, v := range req.Order { + bFound := false + for _, v1 := range _gourmet.Foods { if v.FoodType == v1.FoodType { - v.FoodCount += v1.FoodCount // 加对应的数量 + v1.FoodCount += v.FoodCount // 加对应的数量 + bFound = true break } } + if !bFound { + _gourmet.Foods = append(_gourmet.Foods, v) + } } } + if _gourmet.CookingFood == nil || (_gourmet.CookingFood != nil && _gourmet.CookingFood.ETime == 0) { for _, v := range _gourmet.Foods { if v.FoodCount > 0 { @@ -71,6 +77,14 @@ func (this *apiComp) CreateOrder(session comm.IUserSession, req *pb.GourmetCreat break } } + + } + // 計算耗時 + for _, v := range _gourmet.Foods { + if v.FoodCount > 0 { + _skillCfg := this.module.configure.GetGourmetSkillConfigData(v.FoodType, _gourmet.Skill[v.FoodType]) + v.CookTime = _skillCfg.Needtime * v.FoodCount + } } if _gourmet.CookingFood != nil && _gourmet.CookingFood.ETime == 0 { _gourmet.CookingFood = nil diff --git a/modules/gourmet/api_foodskilllv.go b/modules/gourmet/api_foodskilllv.go new file mode 100644 index 000000000..2d5da755e --- /dev/null +++ b/modules/gourmet/api_foodskilllv.go @@ -0,0 +1,74 @@ +package gourmet + +import ( + "crypto/rand" + "go_dreamfactory/comm" + "go_dreamfactory/pb" + "math/big" + + "google.golang.org/protobuf/proto" +) + +//参数校验 +func (this *apiComp) SkillLVCheck(session comm.IUserSession, req *pb.GourmetSkillLvReq) (code pb.ErrorCode) { + if req.SkillType == 0 { + code = pb.ErrorCode_ReqParameterError + } + return +} + +///美食城厨师技能升级 +func (this *apiComp) SkillLV(session comm.IUserSession, req *pb.GourmetSkillLvReq) (code pb.ErrorCode, dat proto.Message) { + var ( + bSpecial bool // 是不是特殊技能 + ) + code = this.SkillLVCheck(session, req) + if code != pb.ErrorCode_Success { + return // 参数校验失败直接返回 + } + _gourmet, err := this.module.modelGourmet.getGourmetList(session.GetUserId()) + if err != nil { + code = pb.ErrorCode_DBError + return + } + + skilllv, ok := _gourmet.Skill[req.SkillType] + if !ok { // 校验技能存不存在 + skilllv, ok = _gourmet.SpecialSkill[req.SkillType] + if !ok { + code = pb.ErrorCode_ReqParameterError + return + } + bSpecial = true + } + + if this.module.configure.GetGourmetSkillConfigData(req.SkillType, skilllv+1) == nil { // 下一级是否存在 + code = pb.ErrorCode_GourmetSkillMaxLv + return + } + _skillCfg := this.module.configure.GetGourmetSkillConfigData(req.SkillType, skilllv) // 获取技能配置 + + // code = this.module.CheckRes(session, _skillCfg.Consume) // 消耗检测 + // if code != pb.ErrorCode_Success { + // return + // } + code = this.module.ConsumeRes(session, _skillCfg.Consume, true) // 消耗检测 + if code != pb.ErrorCode_Success { + return + } + // 概率升级 + n, _ := rand.Int(rand.Reader, big.NewInt(1000)) + + if n.Int64() < int64(_skillCfg.Probability) { // 可以升级 + // 技能升级成功 + if bSpecial { // 通用技能升级 + _gourmet.SpecialSkill[req.SkillType] += 1 + this.module.modelGourmet.CalculationSpecialSkillLv(session.GetUserId(), _gourmet, req.SkillType, _gourmet.SpecialSkill[req.SkillType]) + } else { // 某一类型技能升级 + _gourmet.Skill[req.SkillType] += 1 + this.module.modelGourmet.CalculationGourmetbySkiiLv(session.GetUserId(), _gourmet, req.SkillType, _gourmet.Skill[req.SkillType]) + } + } + session.SendMsg(string(this.module.GetType()), GourmetSkillLvResp, &pb.GourmetSkillLvResp{Data: _gourmet}) + return +} diff --git a/modules/gourmet/api_getReward.go b/modules/gourmet/api_getReward.go index a23326c0a..42f05804e 100644 --- a/modules/gourmet/api_getReward.go +++ b/modules/gourmet/api_getReward.go @@ -20,6 +20,6 @@ func (this *apiComp) GetReward(session comm.IUserSession, req *pb.GourmetGetRewa if code != pb.ErrorCode_Success { return // 参数校验失败直接返回 } - + code = pb.ErrorCode_AgentUidEmpty return } diff --git a/modules/gourmet/api_getlist.go b/modules/gourmet/api_getlist.go index f8ff4814a..10d194f6b 100644 --- a/modules/gourmet/api_getlist.go +++ b/modules/gourmet/api_getlist.go @@ -26,7 +26,7 @@ func (this *apiComp) GetList(session comm.IUserSession, req *pb.GourmetGetListRe return } // 计算订单信息 - this.module.modelGourmet.CalculationGourmet(_gourmet) + this.module.modelGourmet.CalculationGourmet(session.GetUserId(), _gourmet) session.SendMsg(string(this.module.GetType()), GourmetGetListResp, &pb.GourmetGetListResp{Data: _gourmet}) return } diff --git a/modules/gourmet/api_skilllv.go b/modules/gourmet/api_skilllv.go deleted file mode 100644 index 0ad9f820f..000000000 --- a/modules/gourmet/api_skilllv.go +++ /dev/null @@ -1,25 +0,0 @@ -package gourmet - -import ( - "go_dreamfactory/comm" - "go_dreamfactory/pb" - - "google.golang.org/protobuf/proto" -) - -//参数校验 -func (this *apiComp) SkillLvCheck(session comm.IUserSession, req *pb.GourmetSkillLvReq) (code pb.ErrorCode) { - - return -} - -///美食城领取奖励 -func (this *apiComp) SkillLv(session comm.IUserSession, req *pb.GourmetSkillLvReq) (code pb.ErrorCode, data proto.Message) { - - code = this.SkillLvCheck(session, req) - if code != pb.ErrorCode_Success { - return // 参数校验失败直接返回 - } - - return -} diff --git a/modules/gourmet/model_gourmet.go b/modules/gourmet/model_gourmet.go index 5d5dc0b2a..8fa10e862 100644 --- a/modules/gourmet/model_gourmet.go +++ b/modules/gourmet/model_gourmet.go @@ -7,6 +7,8 @@ import ( "go_dreamfactory/modules" "go_dreamfactory/pb" "time" + + "go.mongodb.org/mongo-driver/bson/primitive" ) type modelGourmet struct { @@ -26,13 +28,15 @@ func (this *modelGourmet) getGourmetList(uid string) (result *pb.DBGourmet, err result = &pb.DBGourmet{} if err = this.Get(uid, result); err != nil { if redis.RedisNil != err { // 没有数据直接创建新的数据 + result.Id = primitive.NewObjectID().Hex() result.Uid = uid result.Skill = make(map[int32]int32, 0) - result.Skill[10011] = 1 - result.Skill[10021] = 1 - result.Skill[10031] = 1 - result.Skill[10041] = 1 // 需要后续查询初始为1 的技能id 临时push - result.ProductionSkill = 10051 // 通用技能 + result.Skill[1001] = 1 + result.Skill[1002] = 1 + result.Skill[1003] = 1 + result.Skill[1004] = 1 // 需要后续查询初始为1 的技能id 临时push + result.SpecialSkill = make(map[int32]int32, 0) + result.SpecialSkill[1005] = 1 // 通用技能 if err = this.Add(uid, result); err != nil { this.module.Errorf("err:%v", err) err = nil @@ -54,18 +58,22 @@ func GetDropReward(count, dropId int32) (res []*pb.UserAssets) { } // 计算订单信息 -func (this *modelGourmet) CalculationGourmet(gourmet *pb.DBGourmet) { +func (this *modelGourmet) CalculationGourmet(uid string, gourmet *pb.DBGourmet) { var ( bCooking bool costTime int32 curTime int32 ) - if gourmet.CookingFood != nil && gourmet.CookingFood.ETime == 0 { + mapData := make(map[string]interface{}, 0) + if gourmet.CookingFood != nil && gourmet.CookingFood.ETime > 0 { costTime = int32(time.Now().Unix() - gourmet.CookingFood.ETime) // 当前过去的时间 if costTime < 0 { // 没有完成 不做处理 return } } + if gourmet.CookingFood == nil { + gourmet.CookingFood = &pb.Cooking{} + } for _, order := range gourmet.Foods { if order.FoodCount == 0 { continue @@ -77,8 +85,12 @@ func (this *modelGourmet) CalculationGourmet(gourmet *pb.DBGourmet) { // 计算出需要的时间 _skillCfg := this.module.configure.GetGourmetSkillConfigData(foodtype, skillLv) // 技能配置表 _gourmetcfg := this.module.configure.GetGourmetConfigData(foodtype, skillLv) // 美食家配置表 - for i := 1; i < int(order.FoodCount+1); i++ { - curTime += _skillCfg.Needtime //* order.FoodCount + for i := 0; i < int(order.FoodCount); i++ { + curTime += _skillCfg.Needtime + order.FoodCount-- + gourmet.Items = GetDropReward(_gourmetcfg.Using, _gourmetcfg.Propsgroup) + // 累计时间也减少 + if curTime > costTime { // 转时间戳 eTimd := time.Now().Unix() + int64(curTime-costTime) @@ -88,15 +100,58 @@ func (this *modelGourmet) CalculationGourmet(gourmet *pb.DBGourmet) { // 记录下订单时间 gourmet.Ctime = time.Now().Unix() + mapData["ctime"] = gourmet.Ctime break } - order.FoodCount-- - gourmet.Items = GetDropReward(_gourmetcfg.Using, _gourmetcfg.Propsgroup) - // 累计时间也减少 gourmet.OrderCostTime += curTime } + if bCooking { // 分配了正在製作的食物 + break + } } if !bCooking { // 经过计算没有烹饪食物的时候 gourmet.CookingFood = nil } + + // 保存信息 + mapData["foods"] = gourmet.Foods + mapData["orderCostTime"] = gourmet.OrderCostTime + mapData["cookingFood"] = gourmet.CookingFood // 正在做的 + this.module.ModifyGourmetData(uid, mapData) +} + +// 技能等级提高了 重新计算订单时间(只对订单中数据有影响) +func (this *modelGourmet) CalculationGourmetbySkiiLv(uid string, gourmet *pb.DBGourmet, skillType int32, skilllv int32) { + mapData := make(map[string]interface{}, 0) + for _, v := range gourmet.Foods { + if v.FoodCount > 0 && v.FoodType == skillType { + _skillCfg := this.module.configure.GetGourmetSkillConfigData(skillType, skilllv) + if _skillCfg != nil { + v.CookTime = _skillCfg.Needtime * v.FoodCount + mapData["foods"] = gourmet.Foods + } + break + } + } + mapData["skill"] = gourmet.Skill + this.module.ModifyGourmetData(uid, mapData) +} + +// 升级高效制作技能重计算时间消耗 +func (this *modelGourmet) CalculationSpecialSkillLv(uid string, gourmet *pb.DBGourmet, skillType int32, skilllv int32) { + mapData := make(map[string]interface{}, 0) + for _, v := range gourmet.Foods { + if v.FoodCount > 0 { + _skillCfg := this.module.configure.GetGourmetSkillConfigData(skillType, skilllv) + if _skillCfg != nil { + v.CookTime += _skillCfg.Needtime * v.FoodCount + if v.CookTime < 0 { // 担心配置错误 为负数情况 所以这里做下判断 + v.CookTime = 0 + } + mapData["foods"] = gourmet.Foods + } + } + } + mapData["specialSkill"] = gourmet.SpecialSkill + this.module.ModifyGourmetData(uid, mapData) } diff --git a/pb/errorcode.pb.go b/pb/errorcode.pb.go index 6fce46288..80a968251 100644 --- a/pb/errorcode.pb.go +++ b/pb/errorcode.pb.go @@ -148,6 +148,7 @@ const ( ErrorCode_MartialhallUnlocked ErrorCode = 2002 //已解锁 // 美食馆 ErrorCode_GourmetMoreOrderTime ErrorCode = 2101 // 超过订单时长 + ErrorCode_GourmetSkillMaxLv ErrorCode = 2102 // 技能已经达到满级 ) // Enum value maps for ErrorCode. @@ -266,6 +267,7 @@ var ( 2001: "MartialhallInUse", 2002: "MartialhallUnlocked", 2101: "GourmetMoreOrderTime", + 2102: "GourmetSkillMaxLv", } ErrorCode_value = map[string]int32{ "Success": 0, @@ -381,6 +383,7 @@ var ( "MartialhallInUse": 2001, "MartialhallUnlocked": 2002, "GourmetMoreOrderTime": 2101, + "GourmetSkillMaxLv": 2102, } ) @@ -415,7 +418,7 @@ var File_errorcode_proto protoreflect.FileDescriptor var file_errorcode_proto_rawDesc = []byte{ 0x0a, 0x0f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2a, 0xf4, 0x12, 0x0a, 0x09, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, + 0x6f, 0x2a, 0x8c, 0x13, 0x0a, 0x09, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x4e, 0x6f, 0x46, 0x69, 0x6e, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x10, 0x0a, 0x12, 0x1b, 0x0a, 0x17, 0x4e, 0x6f, 0x46, 0x69, 0x6e, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, @@ -566,8 +569,9 @@ var file_errorcode_proto_rawDesc = []byte{ 0x10, 0xd1, 0x0f, 0x12, 0x18, 0x0a, 0x13, 0x4d, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x68, 0x61, 0x6c, 0x6c, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x10, 0xd2, 0x0f, 0x12, 0x19, 0x0a, 0x14, 0x47, 0x6f, 0x75, 0x72, 0x6d, 0x65, 0x74, 0x4d, 0x6f, 0x72, 0x65, 0x4f, 0x72, 0x64, 0x65, - 0x72, 0x54, 0x69, 0x6d, 0x65, 0x10, 0xb5, 0x10, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x72, 0x54, 0x69, 0x6d, 0x65, 0x10, 0xb5, 0x10, 0x12, 0x16, 0x0a, 0x11, 0x47, 0x6f, 0x75, 0x72, + 0x6d, 0x65, 0x74, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4d, 0x61, 0x78, 0x4c, 0x76, 0x10, 0xb6, 0x10, + 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/pb/gourmet_db.pb.go b/pb/gourmet_db.pb.go index 9f0405e8a..626fec87f 100644 --- a/pb/gourmet_db.pb.go +++ b/pb/gourmet_db.pb.go @@ -145,15 +145,15 @@ type DBGourmet struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id" bson:"_id"` //ID - Uid string `protobuf:"bytes,2,opt,name=uid,proto3" json:"uid" bson:"uid"` //用户ID - CookingFood *Cooking `protobuf:"bytes,3,opt,name=cookingFood,proto3" json:"cookingFood" bson:"cookingFood"` //正在烹饪的食品 - Foods []*OrderCook `protobuf:"bytes,4,rep,name=foods,proto3" json:"foods"` // 等待烹饪的食品 - Items []*UserAssets `protobuf:"bytes,5,rep,name=items,proto3" json:"items"` // 已经做好的食品 - Skill map[int32]int32 `protobuf:"bytes,6,rep,name=skill,proto3" json:"skill" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3" bson:"skill"` //技能ID - ProductionSkill int32 `protobuf:"varint,7,opt,name=productionSkill,proto3" json:"productionSkill"` // 通用技能 - OrderCostTime int32 `protobuf:"varint,8,opt,name=orderCostTime,proto3" json:"orderCostTime" bson:"orderCostTime"` //订单消耗的时常 - Ctime int64 `protobuf:"varint,9,opt,name=ctime,proto3" json:"ctime"` // 订单创建时间 + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id" bson:"_id"` //ID + Uid string `protobuf:"bytes,2,opt,name=uid,proto3" json:"uid" bson:"uid"` //用户ID + CookingFood *Cooking `protobuf:"bytes,3,opt,name=cookingFood,proto3" json:"cookingFood" bson:"cookingFood"` //正在烹饪的食品 + Foods []*OrderCook `protobuf:"bytes,4,rep,name=foods,proto3" json:"foods"` // 等待烹饪的食品 + Items []*UserAssets `protobuf:"bytes,5,rep,name=items,proto3" json:"items"` // 已经做好的食品 + Skill map[int32]int32 `protobuf:"bytes,6,rep,name=skill,proto3" json:"skill" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3" bson:"skill"` //技能ID + SpecialSkill map[int32]int32 `protobuf:"bytes,7,rep,name=specialSkill,proto3" json:"specialSkill" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3" bson:"specialSkill"` //通用技能 + OrderCostTime int32 `protobuf:"varint,8,opt,name=orderCostTime,proto3" json:"orderCostTime" bson:"orderCostTime"` //订单消耗的时常 + Ctime int64 `protobuf:"varint,9,opt,name=ctime,proto3" json:"ctime"` // 订单创建时间 } func (x *DBGourmet) Reset() { @@ -230,11 +230,11 @@ func (x *DBGourmet) GetSkill() map[int32]int32 { return nil } -func (x *DBGourmet) GetProductionSkill() int32 { +func (x *DBGourmet) GetSpecialSkill() map[int32]int32 { if x != nil { - return x.ProductionSkill + return x.SpecialSkill } - return 0 + return nil } func (x *DBGourmet) GetOrderCostTime() int32 { @@ -266,7 +266,7 @@ var file_gourmet_gourmet_db_proto_rawDesc = []byte{ 0x66, 0x6f, 0x6f, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x6f, 0x6f, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6f, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x63, 0x6f, - 0x6f, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xeb, 0x02, 0x0a, 0x09, 0x44, 0x42, 0x47, 0x6f, 0x75, + 0x6f, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xc4, 0x03, 0x0a, 0x09, 0x44, 0x42, 0x47, 0x6f, 0x75, 0x72, 0x6d, 0x65, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x2a, 0x0a, 0x0b, 0x63, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, @@ -279,18 +279,23 @@ var file_gourmet_gourmet_db_proto_rawDesc = []byte{ 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x2b, 0x0a, 0x05, 0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x44, 0x42, 0x47, 0x6f, 0x75, 0x72, 0x6d, 0x65, 0x74, 0x2e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x73, - 0x6b, 0x69, 0x6c, 0x6c, 0x12, 0x28, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x70, - 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x12, 0x24, - 0x0a, 0x0d, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x73, 0x74, - 0x54, 0x69, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x74, 0x69, 0x6d, 0x65, 0x1a, 0x38, 0x0a, 0x0a, 0x53, 0x6b, - 0x69, 0x6c, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, + 0x6b, 0x69, 0x6c, 0x6c, 0x12, 0x40, 0x0a, 0x0c, 0x73, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6c, 0x53, + 0x6b, 0x69, 0x6c, 0x6c, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x44, 0x42, 0x47, + 0x6f, 0x75, 0x72, 0x6d, 0x65, 0x74, 0x2e, 0x53, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6c, 0x53, 0x6b, + 0x69, 0x6c, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x73, 0x70, 0x65, 0x63, 0x69, 0x61, + 0x6c, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x12, 0x24, 0x0a, 0x0d, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x43, + 0x6f, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6f, + 0x72, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, + 0x63, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x74, 0x69, + 0x6d, 0x65, 0x1a, 0x38, 0x0a, 0x0a, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, + 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3f, 0x0a, 0x11, + 0x53, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6c, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x06, 0x5a, + 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -305,24 +310,26 @@ func file_gourmet_gourmet_db_proto_rawDescGZIP() []byte { return file_gourmet_gourmet_db_proto_rawDescData } -var file_gourmet_gourmet_db_proto_msgTypes = make([]protoimpl.MessageInfo, 4) +var file_gourmet_gourmet_db_proto_msgTypes = make([]protoimpl.MessageInfo, 5) var file_gourmet_gourmet_db_proto_goTypes = []interface{}{ (*Cooking)(nil), // 0: Cooking (*OrderCook)(nil), // 1: OrderCook (*DBGourmet)(nil), // 2: DBGourmet nil, // 3: DBGourmet.SkillEntry - (*UserAssets)(nil), // 4: UserAssets + nil, // 4: DBGourmet.SpecialSkillEntry + (*UserAssets)(nil), // 5: UserAssets } var file_gourmet_gourmet_db_proto_depIdxs = []int32{ 0, // 0: DBGourmet.cookingFood:type_name -> Cooking 1, // 1: DBGourmet.foods:type_name -> OrderCook - 4, // 2: DBGourmet.items:type_name -> UserAssets + 5, // 2: DBGourmet.items:type_name -> UserAssets 3, // 3: DBGourmet.skill:type_name -> DBGourmet.SkillEntry - 4, // [4:4] is the sub-list for method output_type - 4, // [4:4] is the sub-list for method input_type - 4, // [4:4] is the sub-list for extension type_name - 4, // [4:4] is the sub-list for extension extendee - 0, // [0:4] is the sub-list for field type_name + 4, // 4: DBGourmet.specialSkill:type_name -> DBGourmet.SpecialSkillEntry + 5, // [5:5] is the sub-list for method output_type + 5, // [5:5] is the sub-list for method input_type + 5, // [5:5] is the sub-list for extension type_name + 5, // [5:5] is the sub-list for extension extendee + 0, // [0:5] is the sub-list for field type_name } func init() { file_gourmet_gourmet_db_proto_init() } @@ -375,7 +382,7 @@ func file_gourmet_gourmet_db_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_gourmet_gourmet_db_proto_rawDesc, NumEnums: 0, - NumMessages: 4, + NumMessages: 5, NumExtensions: 0, NumServices: 0, }, diff --git a/pb/gourmet_msg.pb.go b/pb/gourmet_msg.pb.go index 35ebd947f..ca021a38b 100644 --- a/pb/gourmet_msg.pb.go +++ b/pb/gourmet_msg.pb.go @@ -294,7 +294,7 @@ type GourmetSkillLvReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - SkillId int32 `protobuf:"varint,1,opt,name=skillId,proto3" json:"skillId"` // 技能id + SkillType int32 `protobuf:"varint,1,opt,name=skillType,proto3" json:"skillType"` // 技能id } func (x *GourmetSkillLvReq) Reset() { @@ -329,9 +329,9 @@ func (*GourmetSkillLvReq) Descriptor() ([]byte, []int) { return file_gourmet_gourmet_msg_proto_rawDescGZIP(), []int{6} } -func (x *GourmetSkillLvReq) GetSkillId() int32 { +func (x *GourmetSkillLvReq) GetSkillType() int32 { if x != nil { - return x.SkillId + return x.SkillType } return 0 } @@ -406,14 +406,14 @@ var file_gourmet_gourmet_msg_proto_rawDesc = []byte{ 0x47, 0x6f, 0x75, 0x72, 0x6d, 0x65, 0x74, 0x47, 0x65, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1e, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x44, 0x42, 0x47, 0x6f, 0x75, 0x72, 0x6d, 0x65, 0x74, 0x52, 0x04, - 0x64, 0x61, 0x74, 0x61, 0x22, 0x2d, 0x0a, 0x11, 0x47, 0x6f, 0x75, 0x72, 0x6d, 0x65, 0x74, 0x53, - 0x6b, 0x69, 0x6c, 0x6c, 0x4c, 0x76, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x6b, 0x69, - 0x6c, 0x6c, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x73, 0x6b, 0x69, 0x6c, - 0x6c, 0x49, 0x64, 0x22, 0x34, 0x0a, 0x12, 0x47, 0x6f, 0x75, 0x72, 0x6d, 0x65, 0x74, 0x53, 0x6b, - 0x69, 0x6c, 0x6c, 0x4c, 0x76, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1e, 0x0a, 0x04, 0x64, 0x61, 0x74, - 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x44, 0x42, 0x47, 0x6f, 0x75, 0x72, - 0x6d, 0x65, 0x74, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, - 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x64, 0x61, 0x74, 0x61, 0x22, 0x31, 0x0a, 0x11, 0x47, 0x6f, 0x75, 0x72, 0x6d, 0x65, 0x74, 0x53, + 0x6b, 0x69, 0x6c, 0x6c, 0x4c, 0x76, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x6b, 0x69, + 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x73, 0x6b, + 0x69, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x22, 0x34, 0x0a, 0x12, 0x47, 0x6f, 0x75, 0x72, 0x6d, + 0x65, 0x74, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4c, 0x76, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1e, 0x0a, + 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x44, 0x42, + 0x47, 0x6f, 0x75, 0x72, 0x6d, 0x65, 0x74, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x42, 0x06, 0x5a, + 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( From 48270ee931ce1d55301a4ff6d6a30b143cb2fa0b Mon Sep 17 00:00:00 2001 From: meixiongfeng <766881921@qq.com> Date: Wed, 17 Aug 2022 19:09:53 +0800 Subject: [PATCH 02/10] =?UTF-8?q?=E5=88=AA=E9=99=A4=E4=B8=8D=E7=94=A8?= =?UTF-8?q?=E7=9A=84=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/hero/configure_comp.go | 44 ++++-------- sys/configure/structs/game.drawUpdraw.go | 42 ----------- sys/configure/structs/game.drawUpdrawData.go | 76 -------------------- 3 files changed, 12 insertions(+), 150 deletions(-) delete mode 100644 sys/configure/structs/game.drawUpdraw.go delete mode 100644 sys/configure/structs/game.drawUpdrawData.go diff --git a/modules/hero/configure_comp.go b/modules/hero/configure_comp.go index dd13398da..b88f23993 100644 --- a/modules/hero/configure_comp.go +++ b/modules/hero/configure_comp.go @@ -38,20 +38,18 @@ func (this *configureComp) Init(service core.IService, module core.IModule, comp err = this.MCompConfigure.Init(service, module, comp, options) err = this.LoadMultiConfigure(map[string]interface{}{ - new_hero: cfg.NewGamehero, - hero_stargrow: cfg.NewGameheroStargrow, - hero_levelgrow: cfg.NewGameheroLevelgrow, - hero_starup: cfg.NewGameheroStarup, - hero_levelup: cfg.NewGameheroLevelup, - hero_exp: cfg.NewGameheroExp, - hero_skillup: cfg.NewGameheroSkillLevel, - game_skillatk: cfg.NewGameskillAtk, - hero_resonance: cfg.NewGameheroResonance, - hero_comatn: cfg.NewGamecomAtn, - hero_awaken: cfg.NewGameheroAwaken, - hero_drawcard: cfg.NewGamedrawCard, - hero_drawupdraw: cfg.NewGame_drawUpdraw, - //hero_drawcost: cfg.NewGamedrawCost, + new_hero: cfg.NewGamehero, + hero_stargrow: cfg.NewGameheroStargrow, + hero_levelgrow: cfg.NewGameheroLevelgrow, + hero_starup: cfg.NewGameheroStarup, + hero_levelup: cfg.NewGameheroLevelup, + hero_exp: cfg.NewGameheroExp, + hero_skillup: cfg.NewGameheroSkillLevel, + game_skillatk: cfg.NewGameskillAtk, + hero_resonance: cfg.NewGameheroResonance, + hero_comatn: cfg.NewGamecomAtn, + hero_awaken: cfg.NewGameheroAwaken, + hero_drawcard: cfg.NewGamedrawCard, }) this.drawCardCfg = make(map[string]map[int32][]*cfg.GamedrawCardData, 0) @@ -383,21 +381,3 @@ func (this *configureComp) GetHeroAwakenConfig() (configure *cfg.GameheroAwaken, return } - -// 抽卡概率提高 -func (this *configureComp) GetDrawUpDrawConfig() (configure *cfg.Game_drawUpdraw, err error) { - var ( - v interface{} - ok bool - ) - if v, err = this.GetConfigure(hero_drawupdraw); err == nil { - if configure, ok = v.(*cfg.Game_drawUpdraw); !ok { - err = fmt.Errorf("%T no is *cfg.Game_drawUpdraw", v) - return - } - } else { - err = fmt.Errorf("%T no is *cfg.Game_drawUpdraw", v) - } - - return -} diff --git a/sys/configure/structs/game.drawUpdraw.go b/sys/configure/structs/game.drawUpdraw.go deleted file mode 100644 index 0cea3ae06..000000000 --- a/sys/configure/structs/game.drawUpdraw.go +++ /dev/null @@ -1,42 +0,0 @@ - -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ -package cfg - -type Game_drawUpdraw struct { - _dataMap map[int32]*Game_drawUpdrawData - _dataList []*Game_drawUpdrawData -} - -func NewGame_drawUpdraw(_buf []map[string]interface{}) (*Game_drawUpdraw, error) { - _dataList := make([]*Game_drawUpdrawData, 0, len(_buf)) - dataMap := make(map[int32]*Game_drawUpdrawData) - for _, _ele_ := range _buf { - if _v, err2 := NewGame_drawUpdrawData(_ele_); err2 != nil { - return nil, err2 - } else { - _dataList = append(_dataList, _v) - dataMap[_v.Key] = _v - } - } - return &Game_drawUpdraw{_dataList:_dataList, _dataMap:dataMap}, nil -} - -func (table *Game_drawUpdraw) GetDataMap() map[int32]*Game_drawUpdrawData { - return table._dataMap -} - -func (table *Game_drawUpdraw) GetDataList() []*Game_drawUpdrawData { - return table._dataList -} - -func (table *Game_drawUpdraw) Get(key int32) *Game_drawUpdrawData { - return table._dataMap[key] -} - - diff --git a/sys/configure/structs/game.drawUpdrawData.go b/sys/configure/structs/game.drawUpdrawData.go deleted file mode 100644 index 34ea70783..000000000 --- a/sys/configure/structs/game.drawUpdrawData.go +++ /dev/null @@ -1,76 +0,0 @@ - -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ -package cfg - -import "errors" - -type Game_drawUpdrawData struct { - Key int32 - TimeOn int32 - TimeOff int32 - UpHero []string - UpWeight []int32 - TriggerNum int32 - IncreaseWeight []int32 -} - -func (Game_drawUpdrawData) GetTypeId() int { - return 297664649 -} - -func NewGame_drawUpdrawData(_buf map[string]interface{}) (_v *Game_drawUpdrawData, err error) { - _v = &Game_drawUpdrawData{} - { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["key"].(float64); !_ok_ { err = errors.New("key error"); return }; _v.Key = int32(_tempNum_) } - { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["time_on"].(float64); !_ok_ { err = errors.New("time_on error"); return }; _v.TimeOn = int32(_tempNum_) } - { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["time_off"].(float64); !_ok_ { err = errors.New("time_off error"); return }; _v.TimeOff = int32(_tempNum_) } - { - var _arr_ []interface{} - var _ok_ bool - if _arr_, _ok_ = _buf["up_hero"].([]interface{}); !_ok_ { err = errors.New("up_hero error"); return } - - _v.UpHero = make([]string, 0, len(_arr_)) - - for _, _e_ := range _arr_ { - var _list_v_ string - { if _list_v_, _ok_ = _e_.(string); !_ok_ { err = errors.New("_list_v_ error"); return } } - _v.UpHero = append(_v.UpHero, _list_v_) - } - } - - { - var _arr_ []interface{} - var _ok_ bool - if _arr_, _ok_ = _buf["up_weight"].([]interface{}); !_ok_ { err = errors.New("up_weight error"); return } - - _v.UpWeight = make([]int32, 0, len(_arr_)) - - for _, _e_ := range _arr_ { - var _list_v_ int32 - { var _ok_ bool; var _x_ float64; if _x_, _ok_ = _e_.(float64); !_ok_ { err = errors.New("_list_v_ error"); return }; _list_v_ = int32(_x_) } - _v.UpWeight = append(_v.UpWeight, _list_v_) - } - } - - { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["trigger_num"].(float64); !_ok_ { err = errors.New("trigger_num error"); return }; _v.TriggerNum = int32(_tempNum_) } - { - var _arr_ []interface{} - var _ok_ bool - if _arr_, _ok_ = _buf["Increase_weight"].([]interface{}); !_ok_ { err = errors.New("Increase_weight error"); return } - - _v.IncreaseWeight = make([]int32, 0, len(_arr_)) - - for _, _e_ := range _arr_ { - var _list_v_ int32 - { var _ok_ bool; var _x_ float64; if _x_, _ok_ = _e_.(float64); !_ok_ { err = errors.New("_list_v_ error"); return }; _list_v_ = int32(_x_) } - _v.IncreaseWeight = append(_v.IncreaseWeight, _list_v_) - } - } - - return -} From 0f162b129c04ea2853b7e0c7f50d0d6c82c11033 Mon Sep 17 00:00:00 2001 From: wh_zcy Date: Tue, 16 Aug 2022 09:55:06 +0800 Subject: [PATCH 03/10] update mod --- go.mod | 12 ++++++------ go.sum | 11 +++++++++++ 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 7a8aed0b8..6e1c857b1 100644 --- a/go.mod +++ b/go.mod @@ -34,7 +34,7 @@ require ( github.com/valyala/fastrand v1.1.0 go.mongodb.org/mongo-driver v1.5.1 go.uber.org/multierr v1.6.0 - golang.org/x/net v0.0.0-20220407224826-aac1ed45d8e3 + golang.org/x/net v0.0.0-20220722155237-a158d28d115b google.golang.org/protobuf v1.28.0 gopkg.in/yaml.v2 v2.4.0 ) @@ -155,7 +155,7 @@ require ( github.com/xdg-go/stringprep v1.0.2 // indirect github.com/xtaci/kcp-go v5.4.20+incompatible // indirect github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d // indirect - github.com/yuin/goldmark v1.4.1 // indirect + github.com/yuin/goldmark v1.4.13 // indirect github.com/yusufpapurcu/wmi v1.2.2 // indirect go.opentelemetry.io/otel v1.6.3 // indirect go.opentelemetry.io/otel/trace v1.6.3 // indirect @@ -164,11 +164,11 @@ require ( golang.org/x/crypto v0.0.0-20220408190544-5352b0902921 // indirect golang.org/x/image v0.0.0-20220601225756-64ec528b34cd // indirect golang.org/x/mobile v0.0.0-20211207041440-4e6c2922fdee // indirect - golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3 // indirect - golang.org/x/sync v0.0.0-20210220032951-036812b2e83c // indirect - golang.org/x/sys v0.0.0-20220712014510-0a85c31ab51e // indirect + golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 // indirect + golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4 // indirect + golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f // indirect golang.org/x/text v0.3.7 // indirect - golang.org/x/tools v0.1.10 // indirect + golang.org/x/tools v0.1.12 // indirect golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect gopkg.in/ini.v1 v1.62.0 // indirect gopkg.in/natefinch/lumberjack.v2 v2.0.0 // indirect diff --git a/go.sum b/go.sum index ba6705670..51c8b765f 100644 --- a/go.sum +++ b/go.sum @@ -768,6 +768,8 @@ github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1 github.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.1 h1:/vn0k+RBvwlxEmP5E7SZMqNxPhfMVFEJiykr15/0XKM= github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.13 h1:fVcFKWvrslecOb/tg+Cc05dkeYx540o0FuFt3nUVDoE= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yusufpapurcu/wmi v1.2.2 h1:KBNDSne4vP5mbSWnJbO+51IMOXJB67QiYCSBrubbPRg= github.com/yusufpapurcu/wmi v1.2.2/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= @@ -867,6 +869,8 @@ golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3 h1:kQgndtyPBW/JIYERgdxfwMYh3AVStj88WQTlNDi2a+o= golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 h1:6zppjxzCulZykYSLyVDYbneBfbaBIQPYMevg0bEwv2s= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -923,6 +927,8 @@ golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qx golang.org/x/net v0.0.0-20211216030914-fe4d6282115f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220407224826-aac1ed45d8e3 h1:EN5+DfgmRMvRUrMGERW2gQl3Vc+Z7ZMnI/xdEpPSf0c= golang.org/x/net v0.0.0-20220407224826-aac1ed45d8e3/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b h1:PxfKdU9lEEDYjdIzOtC4qFWgkU2rGHdKlKowJSMN9h0= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -951,6 +957,7 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1030,6 +1037,8 @@ golang.org/x/sys v0.0.0-20220408201424-a24fb2fb8a0f/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220712014510-0a85c31ab51e h1:NHvCuwuS43lGnYhten69ZWqi2QOj/CiDNcKbVqwVoew= golang.org/x/sys v0.0.0-20220712014510-0a85c31ab51e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f h1:v4INt8xihDGvnrfjMDVXGxw9wrfxYyCjk0KbXjhR55s= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1116,6 +1125,8 @@ golang.org/x/tools v0.1.8-0.20211022200916-316ba0b74098/go.mod h1:LGqMHiF4EqQNHR golang.org/x/tools v0.1.8/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= golang.org/x/tools v0.1.10 h1:QjFRCZxdOhBJ/UNgnBZLbNV13DlbnK0quyivTnXJM20= golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= +golang.org/x/tools v0.1.12 h1:VveCTK38A2rkS8ZqFY25HIDFscX5X9OoEhJd3quQmXU= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= From 6de3e9e4388b844c9ac370d3721ea05fd4244e8a Mon Sep 17 00:00:00 2001 From: wh_zcy Date: Thu, 18 Aug 2022 09:23:54 +0800 Subject: [PATCH 04/10] gui --- cmd/v2/model/gen.go | 10 +++ cmd/v2/service/dbServer.go | 61 ++++++++++++++++ cmd/v2/ui/app_gen.go | 146 +++++++++++++++++++++++++++++++++++++ cmd/v2/ui/toolwindow.go | 69 ++++++++++++++++++ 4 files changed, 286 insertions(+) create mode 100644 cmd/v2/model/gen.go create mode 100644 cmd/v2/service/dbServer.go create mode 100644 cmd/v2/ui/app_gen.go create mode 100644 cmd/v2/ui/toolwindow.go diff --git a/cmd/v2/model/gen.go b/cmd/v2/model/gen.go new file mode 100644 index 000000000..c58151f44 --- /dev/null +++ b/cmd/v2/model/gen.go @@ -0,0 +1,10 @@ +package model + +type GenTool struct { + ClientDir string + InputDir string + OutputDir string + GenType int32 + + +} diff --git a/cmd/v2/service/dbServer.go b/cmd/v2/service/dbServer.go new file mode 100644 index 000000000..d908500b6 --- /dev/null +++ b/cmd/v2/service/dbServer.go @@ -0,0 +1,61 @@ +package service + +import ( + "fmt" + "go_dreamfactory/cmd/v2/model" + "log" + "sync" + "time" + + "github.com/boltdb/bolt" +) + +type DbService interface { + Create(conf *model.GenTool) error + Update() error +} + +type DbServiceImpl struct { +} + +func NewDbService() DbService { + return &DbServiceImpl{} +} + +func (this *DbServiceImpl) Create(conf *model.GenTool) error { + return nil +} + +func (this *DbServiceImpl) Update() error { + return nil +} + +var ( + boltDb *bolt.DB + bucket *bolt.Bucket + once sync.Once + err error +) + +func GetBoltDb() *bolt.DB { + once.Do(func() { + boltDb, err = bolt.Open("my.db", 0600, &bolt.Options{Timeout: 1 * time.Second}) + if err != nil { + log.Fatal(err) + } + + boltDb.Update(func(tx *bolt.Tx) error { + b := tx.Bucket([]byte("robotBucket")) + if b != nil { + bucket = b + } else { + bucket, err = tx.CreateBucket([]byte("robotBucket")) + if err != nil { + return fmt.Errorf("create bucket: %s", err) + } + } + return nil + }) + }) + return boltDb +} diff --git a/cmd/v2/ui/app_gen.go b/cmd/v2/ui/app_gen.go new file mode 100644 index 000000000..e6a75d723 --- /dev/null +++ b/cmd/v2/ui/app_gen.go @@ -0,0 +1,146 @@ +package ui + +import ( + "errors" + "fmt" + "go_dreamfactory/cmd/v2/lib/common" + "go_dreamfactory/cmd/v2/service/observer" + "os/exec" + "runtime" + + "fyne.io/fyne/v2" + "fyne.io/fyne/v2/container" + "fyne.io/fyne/v2/dialog" + "fyne.io/fyne/v2/theme" + "fyne.io/fyne/v2/widget" + "github.com/sirupsen/logrus" +) + +type appGen struct { + appAdapter + + obs observer.Observer +} + +func (this *appGen) LazyInit(obs observer.Observer) error { + this.obs = obs + + this.tabItem = container.NewTabItemWithIcon(common.TOOLBAR_GEN, theme.ContentCopyIcon(), nil) + + content := container.NewMax() + content.Objects = []fyne.CanvasObject{} + + serverAddr := widget.NewEntry() + serverAddr.PlaceHolder = "服务器地址" + serverAddr.Text = "10.0.1.11" + + projectDir := widget.NewEntry() + projectDir.PlaceHolder = "项目目录" + projectDir.Text = "E:\\projects\\workspace\\go_dreamfactory" + + workDir := widget.NewEntry() + workDir.PlaceHolder = "LuBan目录" + workDir.Text = "E:\\svn\\dreamworks\\client\\dreamworks\\ExcelFile" + + // client + client := widget.NewEntry() + client.PlaceHolder = "配置Luban Client.exe路径" + client.Text = "\\Luban.Client\\Luban.Client.exe" + + //define + define := widget.NewEntry() + define.PlaceHolder = "定义文件" + define.Text = "\\Defines\\__root__.xml" + + // output + outputCodeDir := widget.NewEntry() + outputCodeDir.Text = "\\sys\\configure\\structs" + outputJsonDir := widget.NewEntry() + outputJsonDir.Text = "\\bin\\json" + + //input + inputDir := widget.NewEntry() + inputDir.Text = "\\Datas" + + //genType + var genTypeText string + genType := widget.NewSelect([]string{"go", "json", "all"}, func(s string) { + genTypeText = s + }) + genType.PlaceHolder = "生成类型" + + form := widget.NewForm( + widget.NewFormItem("工作目录", workDir), + widget.NewFormItem("Client", client), + widget.NewFormItem("输入目录", inputDir), + widget.NewFormItem("输出Code目录", outputCodeDir), + widget.NewFormItem("输出JSON目录", outputJsonDir), + widget.NewFormItem("生成类型", genType), + ) + + getType := func() string { + if genTypeText == "" { + return "" + } else { + if genTypeText == "go" { + return "code_go_json" + } else if genTypeText == "json" { + return "data_json" + } else if genTypeText == "all" { + return "code_go_json,data_json" + } + } + return "" + } + + form.SubmitText = "确定" + form.OnSubmit = func() { + if runtime.GOOS != "windows" { + dialog.ShowError(errors.New("no support "+runtime.GOOS), toolWin.w) + return + } + + if genTypeText == "" { + dialog.ShowError(errors.New("类型未选择"), toolWin.w) + return + } + // service.GetBoltDb().Update(func(tx *bolt.Tx) error { + + // return nil + // }) + str := `%s -h %s -j cfg -- -d %s --input_data_dir %s --output_code_dir %s --output_data_dir %s --gen_types %s --go:bright_module_name bright -s server` + + arg := fmt.Sprintf(str, + workDir.Text+client.Text, + serverAddr.Text, + workDir.Text+define.Text, + workDir.Text+inputDir.Text, + projectDir.Text+outputCodeDir.Text, + projectDir.Text+outputJsonDir.Text, + getType(), + ) + + logrus.Debug(arg) + c := exec.Command("cmd.exe", "/c", arg) + if err := c.Run(); err != nil { + dialog.ShowError(err, toolWin.w) + return + } + } + content.Objects = append(content.Objects, form) + + this.tabItem.Content = content + return nil +} + +func (a *appGen) OpenDefault() bool { + return true +} + +func (a *appGen) GetAppName() string { + return common.TOOLBAR_GEN +} + +func (a appGen) OnClose() bool { + return false +} diff --git a/cmd/v2/ui/toolwindow.go b/cmd/v2/ui/toolwindow.go new file mode 100644 index 000000000..fd106563d --- /dev/null +++ b/cmd/v2/ui/toolwindow.go @@ -0,0 +1,69 @@ +package ui + +import ( + "go_dreamfactory/cmd/v2/lib/common" + + "fyne.io/fyne/v2" + "fyne.io/fyne/v2/container" + "fyne.io/fyne/v2/theme" + "fyne.io/fyne/v2/widget" + "github.com/sirupsen/logrus" +) + +type ToolWindow interface { + WindowInterface +} + +type ToolWindowImpl struct { + UIImpl + w fyne.Window + tb *toolBar //工具条 + sb *statusBar //状态栏 + at *appContainer //tabs +} + +func NewToolWindow(ui *UIImpl) ToolWindow { + mw := &ToolWindowImpl{ + UIImpl: *ui, + } + + toolWin = mw + + mw.sb = newStatusBar() + + toolbar := widget.NewToolbar( + widget.NewToolbarAction(theme.ContentCopyIcon(), func() { + openApp1(common.TOOLBAR_GEN) + }), + + widget.NewToolbarSpacer(), + widget.NewToolbarAction(theme.HelpIcon(), func() { + showAbout() + }), + ) + + mw.tb = newToolBar(toolbar) + + mw.at = newAppContainer(toolRegister, ui.obs) + + return mw +} + +func (ui *ToolWindowImpl) CreateWindow(title string, width, height float32, _ bool) { + w := ui.app.NewWindow(title) + ui.AddWindow("tool", w) + ui.w = w + + // content + content := container.NewBorder(ui.tb.toolbar, ui.sb.widget, + nil, nil, ui.at) + ui.w.SetContent(content) + appName, err := ui.at.openDefaultApp() + if err != nil { + logrus.WithField("appName", appName).Error(err) + } + w.Resize(fyne.NewSize(width, height)) + w.SetMaster() + w.CenterOnScreen() + w.Show() +} From d735a6bb15dd928c5439a0e5265a275e48ca73f1 Mon Sep 17 00:00:00 2001 From: wh_zcy Date: Thu, 18 Aug 2022 09:27:40 +0800 Subject: [PATCH 05/10] =?UTF-8?q?=E9=9A=8F=E6=9C=BA=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bin/json/game_rdtaksall.json | 66 -- bin/json/game_rdtakschoose.json | 38 -- bin/json/game_rdtaskall.json | 228 +++++++ bin/json/game_rdtaskchoose.json | 98 +++ ...e_rdtakstype.json => game_rdtasktype.json} | 30 +- comm/const.go | 14 + comm/imodule.go | 6 + modules/rtask/api.go | 29 + modules/rtask/api_choose.go | 56 ++ modules/rtask/config.go | 116 ++++ modules/rtask/model_rtask.go | 86 +++ modules/rtask/module.go | 131 ++++ pb/comm.pb.go | 115 +++- pb/errorcode.pb.go | 14 +- pb/friend_msg.pb.go | 627 +++++++++++------- pb/rtask_db.pb.go | 170 +++++ pb/rtask_msg.pb.go | 268 ++++++++ services/worker/main.go | 2 + sys/configure/structs/Tables.go | 77 ++- sys/configure/structs/game.rdtaskAll.go | 42 ++ sys/configure/structs/game.rdtaskAllData.go | 94 +++ sys/configure/structs/game.rdtaskChoose.go | 42 ++ .../structs/game.rdtaskChooseData.go | 54 ++ sys/configure/structs/game.rdtaskType.go | 42 ++ sys/configure/structs/game.rdtaskTypeData.go | 47 ++ utils/strings.go | 10 + 26 files changed, 2088 insertions(+), 414 deletions(-) delete mode 100644 bin/json/game_rdtaksall.json delete mode 100644 bin/json/game_rdtakschoose.json create mode 100644 bin/json/game_rdtaskall.json create mode 100644 bin/json/game_rdtaskchoose.json rename bin/json/{game_rdtakstype.json => game_rdtasktype.json} (83%) create mode 100644 modules/rtask/api.go create mode 100644 modules/rtask/api_choose.go create mode 100644 modules/rtask/config.go create mode 100644 modules/rtask/model_rtask.go create mode 100644 modules/rtask/module.go create mode 100644 pb/rtask_db.pb.go create mode 100644 pb/rtask_msg.pb.go create mode 100644 sys/configure/structs/game.rdtaskAll.go create mode 100644 sys/configure/structs/game.rdtaskAllData.go create mode 100644 sys/configure/structs/game.rdtaskChoose.go create mode 100644 sys/configure/structs/game.rdtaskChooseData.go create mode 100644 sys/configure/structs/game.rdtaskType.go create mode 100644 sys/configure/structs/game.rdtaskTypeData.go diff --git a/bin/json/game_rdtaksall.json b/bin/json/game_rdtaksall.json deleted file mode 100644 index 7347b8308..000000000 --- a/bin/json/game_rdtaksall.json +++ /dev/null @@ -1,66 +0,0 @@ -[ - { - "rdtaks_id": 1001, - "task_type": 2, - "rdtaks_num": [ - 101, - 102 - ], - "id_last": [ - 0 - ], - "id_after": 1002, - "id_tag": 1, - "story": 3, - "completetask": 0, - "reword": [ - { - "a": "attr", - "t": "diamond", - "n": 10 - }, - { - "a": "attr", - "t": "gold", - "n": 1000 - } - ], - "choose_id": [ - 10001, - 10002, - 10003 - ] - }, - { - "rdtaks_id": 1002, - "task_type": 2, - "rdtaks_num": [ - 101, - 104 - ], - "id_last": [ - 1001 - ], - "id_after": 0, - "id_tag": 2, - "story": 3, - "completetask": 0, - "reword": [ - { - "a": "attr", - "t": "diamond", - "n": 15 - }, - { - "a": "attr", - "t": "gold", - "n": 1500 - } - ], - "choose_id": [ - 10011, - 10012, - 10013 - ] - } -] \ No newline at end of file diff --git a/bin/json/game_rdtakschoose.json b/bin/json/game_rdtakschoose.json deleted file mode 100644 index 8ef50afe8..000000000 --- a/bin/json/game_rdtakschoose.json +++ /dev/null @@ -1,38 +0,0 @@ -[ - { - "choose_id": 10001, - "num": 1, - "rdtaks_num": 104, - "rdtaks_id": 0 - }, - { - "choose_id": 10002, - "num": 2, - "rdtaks_num": 105, - "rdtaks_id": 1002 - }, - { - "choose_id": 10003, - "num": 3, - "rdtaks_num": 0, - "rdtaks_id": 0 - }, - { - "choose_id": 10011, - "num": 1, - "rdtaks_num": 106, - "rdtaks_id": 0 - }, - { - "choose_id": 10012, - "num": 2, - "rdtaks_num": 107, - "rdtaks_id": 0 - }, - { - "choose_id": 10013, - "num": 3, - "rdtaks_num": 0, - "rdtaks_id": 0 - } -] \ No newline at end of file diff --git a/bin/json/game_rdtaskall.json b/bin/json/game_rdtaskall.json new file mode 100644 index 000000000..64cbcf8ce --- /dev/null +++ b/bin/json/game_rdtaskall.json @@ -0,0 +1,228 @@ +[ + { + "id": 1001, + "type": 2, + "lastend": 0, + "rdtaks_num": [ + 101 + ], + "aftertaks": 1002, + "icetime": 0, + "tag": 1, + "story": 3, + "completetask": 0, + "chooseid": [ + 10001, + 1002, + 1003 + ], + "reword": [ + { + "a": "attr", + "t": "diamond", + "n": 10 + }, + { + "a": "attr", + "t": "gold", + "n": 1000 + } + ] + }, + { + "id": 1002, + "type": 2, + "lastend": 1001, + "rdtaks_num": [ + 101, + 102 + ], + "aftertaks": 1003, + "icetime": 0, + "tag": 2, + "story": 3, + "completetask": 0, + "chooseid": [ + 10011, + 10012, + 10013 + ], + "reword": [ + { + "a": "attr", + "t": "diamond", + "n": 15 + }, + { + "a": "attr", + "t": "gold", + "n": 1500 + } + ] + }, + { + "id": 1003, + "type": 2, + "lastend": 1002, + "rdtaks_num": [ + 101, + 103 + ], + "aftertaks": 1004, + "icetime": 0, + "tag": 1, + "story": 3, + "completetask": 0, + "chooseid": [], + "reword": [ + { + "a": "attr", + "t": "diamond", + "n": 15 + }, + { + "a": "attr", + "t": "gold", + "n": 1500 + } + ] + }, + { + "id": 1004, + "type": 2, + "lastend": 1003, + "rdtaks_num": [ + 101, + 103 + ], + "aftertaks": 1005, + "icetime": 0, + "tag": 1, + "story": 3, + "completetask": 0, + "chooseid": [], + "reword": [ + { + "a": "attr", + "t": "diamond", + "n": 15 + }, + { + "a": "attr", + "t": "gold", + "n": 1500 + } + ] + }, + { + "id": 1005, + "type": 2, + "lastend": 1004, + "rdtaks_num": [ + 104, + 105 + ], + "aftertaks": 1006, + "icetime": 0, + "tag": 1, + "story": 3, + "completetask": 0, + "chooseid": [], + "reword": [ + { + "a": "attr", + "t": "diamond", + "n": 15 + }, + { + "a": "attr", + "t": "gold", + "n": 1500 + } + ] + }, + { + "id": 1006, + "type": 2, + "lastend": 1005, + "rdtaks_num": [ + 106 + ], + "aftertaks": 0, + "icetime": 0, + "tag": 1, + "story": 3, + "completetask": 0, + "chooseid": [ + 10021, + 10022 + ], + "reword": [ + { + "a": "attr", + "t": "diamond", + "n": 15 + }, + { + "a": "attr", + "t": "gold", + "n": 1500 + } + ] + }, + { + "id": 1007, + "type": 1, + "lastend": 0, + "rdtaks_num": [ + 107 + ], + "aftertaks": 1002, + "icetime": 1, + "tag": 1, + "story": 3, + "completetask": 0, + "chooseid": [], + "reword": [ + { + "a": "attr", + "t": "diamond", + "n": 15 + }, + { + "a": "attr", + "t": "gold", + "n": 1500 + } + ] + }, + { + "id": 1008, + "type": 1, + "lastend": 0, + "rdtaks_num": [ + 108 + ], + "aftertaks": 1002, + "icetime": -1, + "tag": 1, + "story": 3, + "completetask": 0, + "chooseid": [ + 10041, + 10042 + ], + "reword": [ + { + "a": "attr", + "t": "diamond", + "n": 15 + }, + { + "a": "attr", + "t": "gold", + "n": 1500 + } + ] + } +] \ No newline at end of file diff --git a/bin/json/game_rdtaskchoose.json b/bin/json/game_rdtaskchoose.json new file mode 100644 index 000000000..68e98b36d --- /dev/null +++ b/bin/json/game_rdtaskchoose.json @@ -0,0 +1,98 @@ +[ + { + "chooseid": 10001, + "num": 1, + "rdtaks_num": 101, + "need": [ + 0 + ] + }, + { + "chooseid": 10002, + "num": 2, + "rdtaks_num": 107, + "need": [ + 0 + ] + }, + { + "chooseid": 10003, + "num": 3, + "rdtaks_num": 101, + "need": [ + 0 + ] + }, + { + "chooseid": 10011, + "num": 1, + "rdtaks_num": 101, + "need": [ + 0 + ] + }, + { + "chooseid": 10012, + "num": 2, + "rdtaks_num": 101, + "need": [ + 0 + ] + }, + { + "chooseid": 10013, + "num": 3, + "rdtaks_num": 101, + "need": [ + 0 + ] + }, + { + "chooseid": 10021, + "num": 1, + "rdtaks_num": 101, + "need": [ + 0 + ] + }, + { + "chooseid": 10022, + "num": 2, + "rdtaks_num": 101, + "need": [ + 0 + ] + }, + { + "chooseid": 10031, + "num": 1, + "rdtaks_num": 0, + "need": [ + 10012 + ] + }, + { + "chooseid": 10032, + "num": 2, + "rdtaks_num": 0, + "need": [ + 0 + ] + }, + { + "chooseid": 10041, + "num": 1, + "rdtaks_num": 0, + "need": [ + 10010 + ] + }, + { + "chooseid": 10042, + "num": 2, + "rdtaks_num": 0, + "need": [ + 0 + ] + } +] \ No newline at end of file diff --git a/bin/json/game_rdtakstype.json b/bin/json/game_rdtasktype.json similarity index 83% rename from bin/json/game_rdtakstype.json rename to bin/json/game_rdtasktype.json index 08ee6b0e7..6a8ba67cc 100644 --- a/bin/json/game_rdtakstype.json +++ b/bin/json/game_rdtasktype.json @@ -13,7 +13,7 @@ "typdes": 2, "datatime": 1, "typtask_id": 2, - "data1": 10, + "data1": 3, "data2": 0, "data3": 0 }, @@ -22,7 +22,7 @@ "typdes": 2, "datatime": 1, "typtask_id": 3, - "data1": 3, + "data1": 2, "data2": 0, "data3": 0 }, @@ -31,44 +31,44 @@ "typdes": 2, "datatime": 1, "typtask_id": 4, - "data1": 2, - "data2": 0, + "data1": 90001, + "data2": 15, "data3": 0 }, { "rdtaks_num": 105, "typdes": 2, "datatime": 1, - "typtask_id": 5, - "data1": 101, - "data2": 0, + "typtask_id": 4, + "data1": 25001, + "data2": 10, "data3": 0 }, { "rdtaks_num": 106, "typdes": 2, "datatime": 1, - "typtask_id": 6, - "data1": 3, - "data2": 0, + "typtask_id": 5, + "data1": 90001, + "data2": 2, "data3": 0 }, { "rdtaks_num": 107, "typdes": 2, "datatime": 1, - "typtask_id": 7, - "data1": 10002, - "data2": 0, + "typtask_id": 4, + "data1": 25001, + "data2": 20, "data3": 0 }, { "rdtaks_num": 108, "typdes": 2, "datatime": 1, - "typtask_id": 8, + "typtask_id": 6, "data1": 90001, - "data2": 15, + "data2": 5, "data3": 0 } ] \ No newline at end of file diff --git a/comm/const.go b/comm/const.go index 626ec5f70..84b49b34b 100644 --- a/comm/const.go +++ b/comm/const.go @@ -48,6 +48,7 @@ const ( ModulePagoda core.M_Modules = "pagoda" //魔塔模块 ModuleMartialhall core.M_Modules = "martialhall" //武馆模块 ModuleGourmet core.M_Modules = "gourmet" //美食馆 + ModuleRtask core.M_Modules = "rtask" //随机任务 ) //数据表名定义处 @@ -96,6 +97,8 @@ const ( TableMartialhall = "martialhall" // 美食馆 TableGourmet = "gourmet" + // 随机任务 + TableRtask = "rtask" ) //RPC服务接口定义处 @@ -158,6 +161,7 @@ const ( type TaskType int32 +// 日常任务事件类型 const ( TaskTypeUpEquip TaskType = 101 //任意装备升级 TaskTypeUpHeroStar TaskType = 102 //获取星级英雄 @@ -174,6 +178,16 @@ const ( TASK_STRATEGY TaskTag = 4 // 攻略 ) +// 随机任务类型 +const ( + RtaskTypeHeroTarget TaskType = 1 //英雄指定 + RtaskTypeHeroLvTarget TaskType = 2 //指定英雄的等级 + RtaskTypeEquipNum TaskType = 3 //装备数量 + RtaskTypePoltId TaskType = 4 //剧情ID + RtaskTypeTaskDay TaskType = 5 //每日任务 + +) + const ( MailLineEasy string = "mainline_data_easy" // 简单 MailLineHard string = "mainline_data_hard" // 困难 diff --git a/comm/imodule.go b/comm/imodule.go index cc11cc821..87607355f 100644 --- a/comm/imodule.go +++ b/comm/imodule.go @@ -102,6 +102,12 @@ type ( CleanData(uid string) } + // 随机任务 + IRtask interface { + //任务触发 + SendToRtask(session IUserSession, param *pb.RtaskParam) (code pb.ErrorCode) + } + //好友 IFriend interface { // 重置点赞列表和每日友情点 diff --git a/modules/rtask/api.go b/modules/rtask/api.go new file mode 100644 index 000000000..01595de65 --- /dev/null +++ b/modules/rtask/api.go @@ -0,0 +1,29 @@ +package rtask + +import ( + "go_dreamfactory/lego/core" + "go_dreamfactory/modules" +) + +const ( + RtaskSubTypeChoose = "choose" //选择 +) + +type apiComp struct { + modules.MCompGate + service core.IService + moduleRtask *ModuleRtask +} + +//组件初始化接口 +func (this *apiComp) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) { + err = this.MCompGate.Init(service, module, comp, options) + this.moduleRtask = module.(*ModuleRtask) + this.service = service + return +} + +func (this *apiComp) Start() (err error) { + err = this.MCompGate.Start() + return +} diff --git a/modules/rtask/api_choose.go b/modules/rtask/api_choose.go new file mode 100644 index 000000000..3c1912e4f --- /dev/null +++ b/modules/rtask/api_choose.go @@ -0,0 +1,56 @@ +package rtask + +import ( + "go_dreamfactory/comm" + "go_dreamfactory/pb" + "go_dreamfactory/utils" + + "google.golang.org/protobuf/proto" +) + +func (this *apiComp) ChooseCheck(session comm.IUserSession, req *pb.RtaskChooseReq) (code pb.ErrorCode) { + + return +} + +func (this *apiComp) Choose(session comm.IUserSession, req *pb.RtaskChooseReq) (code pb.ErrorCode, data proto.Message) { + if code = this.ChooseCheck(session, req); code != pb.ErrorCode_Success { + return + } + + rtask := &pb.DBRtask{} + if err := this.moduleRtask.modelRtask.Get(session.GetUserId(), rtask); err != nil { + return + } + + // 是否已完成 + if _, ok := utils.Findx(rtask.FrtaskIds, req.RtaskId); !ok { + code = pb.ErrorCode_RtaskUnFinished + return + } + + // 获取当前任务配置 + conf := this.moduleRtask.configure.getRtaskById(req.RtaskId) + if conf == nil { + code = pb.ErrorCode_ConfigNoFound + return + } + + // var nextTaskId int32 + if req.ChooseId == 0 { + //读任务配置中的next taskId + // nextTaskId = conf.IdAfter + } else { + // nextTaskId = + } + + //发奖励 + code = this.moduleRtask.DispenseRes(session, conf.Reword, true) + + rsp := &pb.RtaskChooseResp{} + + if err := session.SendMsg(string(this.moduleRtask.GetType()), RtaskSubTypeChoose, rsp); err != nil { + code = pb.ErrorCode_SystemError + } + return +} diff --git a/modules/rtask/config.go b/modules/rtask/config.go new file mode 100644 index 000000000..052dd2246 --- /dev/null +++ b/modules/rtask/config.go @@ -0,0 +1,116 @@ +package rtask + +import ( + "fmt" + "go_dreamfactory/lego/core" + "go_dreamfactory/modules" + cfg "go_dreamfactory/sys/configure/structs" +) + +const ( + gameRtask = "game_rdtaskall.json" + gameRtaskChoose = "rdtaskchoose.json" + gameRtaskType = "rdtasktype.json" +) + +type configureComp struct { + modules.MCompConfigure +} + +func (this *configureComp) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) { + err = this.MCompConfigure.Init(service, module, comp, options) + err = this.LoadMultiConfigure(map[string]interface{}{ + gameRtask: cfg.NewGameRdtaskAll, + gameRtaskChoose: cfg.NewGameRdtaskChoose, + gameRtaskType: cfg.NewGameRdtaskType, + }) + return +} + +func (this *configureComp) getRtaskCfg() (data *cfg.GameRdtaskAll, err error) { + var ( + v interface{} + ok bool + ) + if v, err = this.GetConfigure(gameRtask); err != nil { + return + } else { + if data, ok = v.(*cfg.GameRdtaskAll); !ok { + err = fmt.Errorf("%T no is *cfg.GameRdtaskAll", v) + return + } + } + return +} + +func (this *configureComp) getRtaskTypeCfg() (data *cfg.GameRdtaskType, err error) { + var ( + v interface{} + ok bool + ) + if v, err = this.GetConfigure(gameRtask); err != nil { + return + } else { + if data, ok = v.(*cfg.GameRdtaskType); !ok { + err = fmt.Errorf("%T is *cfg.GameRdtaskType", v) + return + } + } + return +} + +// 获取随机任务配置 +func (this *configureComp) getRtaskList() (data []*cfg.GameRdtaskAllData, err error) { + cfg, err := this.getRtaskCfg() + if err != nil { + return + } + if cfg != nil { + data = cfg.GetDataList() + } + return +} + +// 查询任务类型 +func (this *configureComp) getRtaskTypeById(typeId int32) (data *cfg.GameRdtaskTypeData, err error) { + cfg, err := this.getRtaskTypeCfg() + if err != nil { + return + } + if cfg != nil { + if data, ok := cfg.GetDataMap()[typeId]; ok { + return data, nil + } + } + return +} + +// 任务 +func (this *configureComp) getRtaskById(taskId int32) (data *cfg.GameRdtaskAllData) { + cfg, err := this.getRtaskCfg() + if err != nil { + return + } + if cfg != nil { + if data, ok := cfg.GetDataMap()[taskId]; ok { + return data + } + } + return nil +} + +// 首个任务 +func (this *configureComp) getFirstTask() *cfg.GameRdtaskAllData { + cfg, err := this.getRtaskCfg() + if err != nil { + return nil + } + if cfg != nil { + for _, v := range cfg.GetDataList() { + if v.IdLast == 0 { + return v + } + } + } + return nil +} diff --git a/modules/rtask/model_rtask.go b/modules/rtask/model_rtask.go new file mode 100644 index 000000000..9dc44caa3 --- /dev/null +++ b/modules/rtask/model_rtask.go @@ -0,0 +1,86 @@ +package rtask + +import ( + "go_dreamfactory/comm" + "go_dreamfactory/lego/core" + "go_dreamfactory/lego/sys/log" + "go_dreamfactory/modules" + "go_dreamfactory/pb" + cfg "go_dreamfactory/sys/configure/structs" +) + +type ModelRtask struct { + modules.MCompModel + moduleRtask *ModuleRtask +} + +func (this *ModelRtask) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) { + this.TableName = comm.TableRtask + err = this.MCompModel.Init(service, module, comp, options) + this.moduleRtask = module.(*ModuleRtask) + return +} + +func (this *ModelRtask) setNextTask(uid string, rtaskId int32) error { + update := map[string]interface{}{ + "nextRtaskId": rtaskId, + } + + return this.Change(uid, update) +} + +func (this *ModelRtask) doRtaskHandle(uid string, param *pb.RtaskParam) (rtaskId int32, err error) { + log.Debugf("do rtask params: %v %v %v ", param.Param1, param.Param2, param.Param3) + //查询玩家的 + rtask := &pb.DBRtask{} + if err = this.Get(uid, rtask); err != nil { + return + } + + var taskId int32 + if len(rtask.FrtaskIds) == 0 { + conf := this.moduleRtask.configure.getFirstTask() + if conf != nil { + taskId = conf.IdLast + } + } else { + //TODO + } + + if rtask, ok := this.moduleRtask.rtaskHandleMap[taskId]; ok { + for _, handle := range rtask.handlers { + if ok := handle.fn(handle.cfg, param); !ok { + log.Infof("uid: %v do rtask %v condition not", uid, taskId) + break + } + } + rtaskId = taskId + } + + return +} + +// 1 英雄指定 +func (this *ModelRtask) HeroTarget(cfg *cfg.GameRdtaskTypeData, tp *pb.RtaskParam) (ok bool) { + return cfg.Data1 == tp.Param1 +} + +// 2 指定英雄的等级 +func (this *ModelRtask) HeroLvTarget(cfg *cfg.GameRdtaskTypeData, tp *pb.RtaskParam) (ok bool) { + return cfg.Data1 == tp.Param1 && cfg.Data1 == tp.Param2 +} + +// 3 指定英雄的指定装备的数量 +func (this *ModelRtask) EquipNum(cfg *cfg.GameRdtaskTypeData, tp *pb.RtaskParam) (ok bool) { + return cfg.Data1 == tp.Param1 && cfg.Data2 == tp.Param2 && cfg.Data3 == tp.Param3 +} + +// 4 剧情ID +func (this *ModelRtask) PoltId(cfg *cfg.GameRdtaskTypeData, tp *pb.RtaskParam) (ok bool) { + return cfg.Data1 == tp.Param1 +} + +// 5 每日任务 +func (this *ModelRtask) TaskDay(cfg *cfg.GameRdtaskTypeData, tp *pb.RtaskParam) (ok bool) { + return cfg.Data1 == tp.Param1 +} diff --git a/modules/rtask/module.go b/modules/rtask/module.go new file mode 100644 index 000000000..1be0f62c0 --- /dev/null +++ b/modules/rtask/module.go @@ -0,0 +1,131 @@ +// package 随机任务 +package rtask + +import ( + "go_dreamfactory/comm" + "go_dreamfactory/lego/core" + "go_dreamfactory/lego/sys/log" + "go_dreamfactory/modules" + "go_dreamfactory/pb" + cfg "go_dreamfactory/sys/configure/structs" +) + +// 随机任务 +type rtask struct { + rtaskId int32 + handlers []*rtaskCondi +} + +// 限定条件 +type rtaskCondi struct { + cfg *cfg.GameRdtaskTypeData + fn rtaskHandle +} + +// 设定返回值 +type rtaskHandle func(cfg *cfg.GameRdtaskTypeData, tp *pb.RtaskParam) (ok bool) + +type ModuleRtask struct { + modules.ModuleBase + modelRtask *ModelRtask + api *apiComp + configure *configureComp + + rtaskHandleMap map[int32]*rtask // 任务处理器 +} + +func NewModule() core.IModule { + return &ModuleRtask{ + rtaskHandleMap: make(map[int32]*rtask), + } +} + +func (this *ModuleRtask) GetType() core.M_Modules { + return comm.ModuleRtask +} + +func (this *ModuleRtask) Init(service core.IService, module core.IModule, options core.IModuleOptions) (err error) { + err = this.ModuleBase.Init(service, module, options) + this.initRtaskHandle() + return +} + +func (this *ModuleRtask) OnInstallComp() { + this.ModuleBase.OnInstallComp() + +} + +func (this *ModuleRtask) register(rtaskId int32, rtask *rtask) { + if _, ok := this.rtaskHandleMap[rtaskId]; !ok { + this.rtaskHandleMap[rtaskId] = rtask + } +} + +func (this *ModuleRtask) initRtaskHandle() { + if data, err := this.configure.getRtaskList(); err == nil { + for _, v := range data { + var handlers []*rtaskCondi + rtask := &rtask{ + rtaskId: v.RdtaksId, + handlers: handlers, + } + + //遍历任务的限定条件 + for _, rtaskTypeId := range v.RdtaksNum { + // 获取每个限定条件配置 + if typeCfg, err2 := this.configure.getRtaskTypeById(rtaskTypeId); err2 == nil { + if typeCfg != nil { + switch comm.TaskType(typeCfg.GetTypeId()) { + case comm.RtaskTypeHeroTarget: + handlers = append(handlers, &rtaskCondi{ + cfg: typeCfg, + fn: this.modelRtask.HeroTarget, + }) + case comm.RtaskTypeHeroLvTarget: + handlers = append(handlers, &rtaskCondi{ + cfg: typeCfg, + fn: this.modelRtask.HeroLvTarget, + }) + case comm.RtaskTypeEquipNum: + handlers = append(handlers, &rtaskCondi{ + cfg: typeCfg, + fn: this.modelRtask.EquipNum, + }) + case comm.RtaskTypePoltId: + handlers = append(handlers, &rtaskCondi{ + cfg: typeCfg, + fn: this.modelRtask.PoltId, + }) + case comm.RtaskTypeTaskDay: + handlers = append(handlers, &rtaskCondi{ + cfg: typeCfg, + fn: this.modelRtask.TaskDay, + }) + + default: + log.Warnf("%v rtask type not configure", typeCfg.GetTypeId()) + } + } + } + } + + this.register(v.RdtaksId, rtask) + + } + } +} + +// 通知随机任务 +func (this *ModuleRtask) SendToRtask(session comm.IUserSession, param *pb.RtaskParam) (code pb.ErrorCode) { + if taskId, err := this.modelRtask.doRtaskHandle(session.GetUserId(), param); err != nil { + code = pb.ErrorCode_TaskHandle + } else { + if err := session.SendMsg(string(comm.ModuleRtask), "", &pb.RtaskFinishPush{ + RtaskId: taskId, + }); err != nil { + code = pb.ErrorCode_SystemError + } + } + + return +} diff --git a/pb/comm.pb.go b/pb/comm.pb.go index 529b5dc1a..63e26ac16 100644 --- a/pb/comm.pb.go +++ b/pb/comm.pb.go @@ -957,6 +957,69 @@ func (x *TaskParam) GetSecond() int32 { return 0 } +type RtaskParam struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Param1 int32 `protobuf:"varint,1,opt,name=param1,proto3" json:"param1"` + Param2 int32 `protobuf:"varint,2,opt,name=param2,proto3" json:"param2"` + Param3 int32 `protobuf:"varint,3,opt,name=param3,proto3" json:"param3"` +} + +func (x *RtaskParam) Reset() { + *x = RtaskParam{} + if protoimpl.UnsafeEnabled { + mi := &file_comm_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RtaskParam) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RtaskParam) ProtoMessage() {} + +func (x *RtaskParam) ProtoReflect() protoreflect.Message { + mi := &file_comm_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RtaskParam.ProtoReflect.Descriptor instead. +func (*RtaskParam) Descriptor() ([]byte, []int) { + return file_comm_proto_rawDescGZIP(), []int{13} +} + +func (x *RtaskParam) GetParam1() int32 { + if x != nil { + return x.Param1 + } + return 0 +} + +func (x *RtaskParam) GetParam2() int32 { + if x != nil { + return x.Param2 + } + return 0 +} + +func (x *RtaskParam) GetParam3() int32 { + if x != nil { + return x.Param3 + } + return 0 +} + var File_comm_proto protoreflect.FileDescriptor var file_comm_proto_rawDesc = []byte{ @@ -1065,13 +1128,18 @@ var file_comm_proto_rawDesc = []byte{ 0x05, 0x52, 0x01, 0x4e, 0x22, 0x39, 0x0a, 0x09, 0x54, 0x61, 0x73, 0x6b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x69, 0x72, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x66, 0x69, 0x72, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x63, 0x6f, 0x6e, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x2a, - 0x43, 0x0a, 0x12, 0x48, 0x65, 0x72, 0x6f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x73, 0x54, 0x79, 0x70, 0x65, 0x12, 0x06, 0x0a, 0x02, 0x48, 0x70, 0x10, 0x00, 0x12, 0x07, 0x0a, - 0x03, 0x41, 0x74, 0x6b, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x44, 0x65, 0x66, 0x10, 0x02, 0x12, - 0x09, 0x0a, 0x05, 0x53, 0x70, 0x65, 0x65, 0x64, 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, 0x43, 0x72, - 0x69, 0x74, 0x10, 0x04, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x22, + 0x54, 0x0a, 0x0a, 0x52, 0x74, 0x61, 0x73, 0x6b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x16, 0x0a, + 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x31, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x70, + 0x61, 0x72, 0x61, 0x6d, 0x31, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x32, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x32, 0x12, 0x16, 0x0a, + 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x33, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x70, + 0x61, 0x72, 0x61, 0x6d, 0x33, 0x2a, 0x43, 0x0a, 0x12, 0x48, 0x65, 0x72, 0x6f, 0x41, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x54, 0x79, 0x70, 0x65, 0x12, 0x06, 0x0a, 0x02, 0x48, + 0x70, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x74, 0x6b, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, + 0x44, 0x65, 0x66, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x70, 0x65, 0x65, 0x64, 0x10, 0x03, + 0x12, 0x08, 0x0a, 0x04, 0x43, 0x72, 0x69, 0x74, 0x10, 0x04, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, + 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1087,7 +1155,7 @@ func file_comm_proto_rawDescGZIP() []byte { } var file_comm_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_comm_proto_msgTypes = make([]protoimpl.MessageInfo, 13) +var file_comm_proto_msgTypes = make([]protoimpl.MessageInfo, 14) var file_comm_proto_goTypes = []interface{}{ (HeroAttributesType)(0), // 0: HeroAttributesType (*UserMessage)(nil), // 1: UserMessage @@ -1103,18 +1171,19 @@ var file_comm_proto_goTypes = []interface{}{ (*NoticeUserCloseReq)(nil), // 11: NoticeUserCloseReq (*UserAssets)(nil), // 12: UserAssets (*TaskParam)(nil), // 13: TaskParam - (*anypb.Any)(nil), // 14: google.protobuf.Any - (ErrorCode)(0), // 15: ErrorCode + (*RtaskParam)(nil), // 14: RtaskParam + (*anypb.Any)(nil), // 15: google.protobuf.Any + (ErrorCode)(0), // 16: ErrorCode } var file_comm_proto_depIdxs = []int32{ - 14, // 0: UserMessage.data:type_name -> google.protobuf.Any - 14, // 1: AgentMessage.Message:type_name -> google.protobuf.Any - 15, // 2: RPCMessageReply.Code:type_name -> ErrorCode - 14, // 3: RPCMessageReply.ErrorData:type_name -> google.protobuf.Any + 15, // 0: UserMessage.data:type_name -> google.protobuf.Any + 15, // 1: AgentMessage.Message:type_name -> google.protobuf.Any + 16, // 2: RPCMessageReply.Code:type_name -> ErrorCode + 15, // 3: RPCMessageReply.ErrorData:type_name -> google.protobuf.Any 1, // 4: RPCMessageReply.Reply:type_name -> UserMessage 1, // 5: AgentSendMessageReq.Reply:type_name -> UserMessage - 14, // 6: BatchMessageReq.Data:type_name -> google.protobuf.Any - 14, // 7: BroadCastMessageReq.Data:type_name -> google.protobuf.Any + 15, // 6: BatchMessageReq.Data:type_name -> google.protobuf.Any + 15, // 7: BroadCastMessageReq.Data:type_name -> google.protobuf.Any 8, // [8:8] is the sub-list for method output_type 8, // [8:8] is the sub-list for method input_type 8, // [8:8] is the sub-list for extension type_name @@ -1285,6 +1354,18 @@ func file_comm_proto_init() { return nil } } + file_comm_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RtaskParam); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ @@ -1292,7 +1373,7 @@ func file_comm_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_comm_proto_rawDesc, NumEnums: 1, - NumMessages: 13, + NumMessages: 14, NumExtensions: 0, NumServices: 0, }, diff --git a/pb/errorcode.pb.go b/pb/errorcode.pb.go index 80a968251..1c67f8477 100644 --- a/pb/errorcode.pb.go +++ b/pb/errorcode.pb.go @@ -149,6 +149,9 @@ const ( // 美食馆 ErrorCode_GourmetMoreOrderTime ErrorCode = 2101 // 超过订单时长 ErrorCode_GourmetSkillMaxLv ErrorCode = 2102 // 技能已经达到满级 + // rtask + ErrorCode_RtaskFinished ErrorCode = 2201 //任务已完成 + ErrorCode_RtaskUnFinished ErrorCode = 2202 //任务未完成 ) // Enum value maps for ErrorCode. @@ -268,6 +271,8 @@ var ( 2002: "MartialhallUnlocked", 2101: "GourmetMoreOrderTime", 2102: "GourmetSkillMaxLv", + 2201: "RtaskFinished", + 2202: "RtaskUnFinished", } ErrorCode_value = map[string]int32{ "Success": 0, @@ -384,6 +389,8 @@ var ( "MartialhallUnlocked": 2002, "GourmetMoreOrderTime": 2101, "GourmetSkillMaxLv": 2102, + "RtaskFinished": 2201, + "RtaskUnFinished": 2202, } ) @@ -418,7 +425,7 @@ var File_errorcode_proto protoreflect.FileDescriptor var file_errorcode_proto_rawDesc = []byte{ 0x0a, 0x0f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2a, 0x8c, 0x13, 0x0a, 0x09, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, + 0x6f, 0x2a, 0xb6, 0x13, 0x0a, 0x09, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x4e, 0x6f, 0x46, 0x69, 0x6e, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x10, 0x0a, 0x12, 0x1b, 0x0a, 0x17, 0x4e, 0x6f, 0x46, 0x69, 0x6e, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, @@ -571,7 +578,10 @@ var file_errorcode_proto_rawDesc = []byte{ 0x14, 0x47, 0x6f, 0x75, 0x72, 0x6d, 0x65, 0x74, 0x4d, 0x6f, 0x72, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x10, 0xb5, 0x10, 0x12, 0x16, 0x0a, 0x11, 0x47, 0x6f, 0x75, 0x72, 0x6d, 0x65, 0x74, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4d, 0x61, 0x78, 0x4c, 0x76, 0x10, 0xb6, 0x10, - 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x12, 0x12, 0x0a, 0x0d, 0x52, 0x74, 0x61, 0x73, 0x6b, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, + 0x64, 0x10, 0x99, 0x11, 0x12, 0x14, 0x0a, 0x0f, 0x52, 0x74, 0x61, 0x73, 0x6b, 0x55, 0x6e, 0x46, + 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x10, 0x9a, 0x11, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, + 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/pb/friend_msg.pb.go b/pb/friend_msg.pb.go index abec55ce8..bcaacbc84 100644 --- a/pb/friend_msg.pb.go +++ b/pb/friend_msg.pb.go @@ -28,7 +28,7 @@ type FriendBase struct { UserId string `protobuf:"bytes,1,opt,name=userId,proto3" json:"userId"` // ID NickName string `protobuf:"bytes,2,opt,name=NickName,proto3" json:"NickName"` //昵称 Level int32 `protobuf:"varint,3,opt,name=level,proto3" json:"level"` //等级 - Avatar int32 `protobuf:"varint,4,opt,name=avatar,proto3" json:"avatar"` //头像 + Avatar string `protobuf:"bytes,4,opt,name=avatar,proto3" json:"avatar"` //头像 Strength int64 `protobuf:"varint,5,opt,name=strength,proto3" json:"strength"` //战力 ServerId int32 `protobuf:"varint,6,opt,name=serverId,proto3" json:"serverId"` //服务编号 OfflineTime int64 `protobuf:"varint,7,opt,name=offlineTime,proto3" json:"offlineTime"` //最近一次下线时间 0在线 @@ -87,11 +87,11 @@ func (x *FriendBase) GetLevel() int32 { return 0 } -func (x *FriendBase) GetAvatar() int32 { +func (x *FriendBase) GetAvatar() string { if x != nil { return x.Avatar } - return 0 + return "" } func (x *FriendBase) GetStrength() int64 { @@ -201,6 +201,92 @@ func (x *FriendListResp) GetList() []*FriendBase { return nil } +// 随机的在线玩家 +type FriendOnlineReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *FriendOnlineReq) Reset() { + *x = FriendOnlineReq{} + if protoimpl.UnsafeEnabled { + mi := &file_friend_friend_msg_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FriendOnlineReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FriendOnlineReq) ProtoMessage() {} + +func (x *FriendOnlineReq) ProtoReflect() protoreflect.Message { + mi := &file_friend_friend_msg_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FriendOnlineReq.ProtoReflect.Descriptor instead. +func (*FriendOnlineReq) Descriptor() ([]byte, []int) { + return file_friend_friend_msg_proto_rawDescGZIP(), []int{3} +} + +type FriendOnlineResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + List []*FriendBase `protobuf:"bytes,1,rep,name=list,proto3" json:"list"` +} + +func (x *FriendOnlineResp) Reset() { + *x = FriendOnlineResp{} + if protoimpl.UnsafeEnabled { + mi := &file_friend_friend_msg_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FriendOnlineResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FriendOnlineResp) ProtoMessage() {} + +func (x *FriendOnlineResp) ProtoReflect() protoreflect.Message { + mi := &file_friend_friend_msg_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FriendOnlineResp.ProtoReflect.Descriptor instead. +func (*FriendOnlineResp) Descriptor() ([]byte, []int) { + return file_friend_friend_msg_proto_rawDescGZIP(), []int{4} +} + +func (x *FriendOnlineResp) GetList() []*FriendBase { + if x != nil { + return x.List + } + return nil +} + //申请好友 type FriendApplyReq struct { state protoimpl.MessageState @@ -213,7 +299,7 @@ type FriendApplyReq struct { func (x *FriendApplyReq) Reset() { *x = FriendApplyReq{} if protoimpl.UnsafeEnabled { - mi := &file_friend_friend_msg_proto_msgTypes[3] + mi := &file_friend_friend_msg_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -226,7 +312,7 @@ func (x *FriendApplyReq) String() string { func (*FriendApplyReq) ProtoMessage() {} func (x *FriendApplyReq) ProtoReflect() protoreflect.Message { - mi := &file_friend_friend_msg_proto_msgTypes[3] + mi := &file_friend_friend_msg_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -239,7 +325,7 @@ func (x *FriendApplyReq) ProtoReflect() protoreflect.Message { // Deprecated: Use FriendApplyReq.ProtoReflect.Descriptor instead. func (*FriendApplyReq) Descriptor() ([]byte, []int) { - return file_friend_friend_msg_proto_rawDescGZIP(), []int{3} + return file_friend_friend_msg_proto_rawDescGZIP(), []int{5} } func (x *FriendApplyReq) GetFriendId() string { @@ -261,7 +347,7 @@ type FriendApplyResp struct { func (x *FriendApplyResp) Reset() { *x = FriendApplyResp{} if protoimpl.UnsafeEnabled { - mi := &file_friend_friend_msg_proto_msgTypes[4] + mi := &file_friend_friend_msg_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -274,7 +360,7 @@ func (x *FriendApplyResp) String() string { func (*FriendApplyResp) ProtoMessage() {} func (x *FriendApplyResp) ProtoReflect() protoreflect.Message { - mi := &file_friend_friend_msg_proto_msgTypes[4] + mi := &file_friend_friend_msg_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -287,7 +373,7 @@ func (x *FriendApplyResp) ProtoReflect() protoreflect.Message { // Deprecated: Use FriendApplyResp.ProtoReflect.Descriptor instead. func (*FriendApplyResp) Descriptor() ([]byte, []int) { - return file_friend_friend_msg_proto_rawDescGZIP(), []int{4} + return file_friend_friend_msg_proto_rawDescGZIP(), []int{6} } func (x *FriendApplyResp) GetUserId() string { @@ -316,7 +402,7 @@ type FriendDelReq struct { func (x *FriendDelReq) Reset() { *x = FriendDelReq{} if protoimpl.UnsafeEnabled { - mi := &file_friend_friend_msg_proto_msgTypes[5] + mi := &file_friend_friend_msg_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -329,7 +415,7 @@ func (x *FriendDelReq) String() string { func (*FriendDelReq) ProtoMessage() {} func (x *FriendDelReq) ProtoReflect() protoreflect.Message { - mi := &file_friend_friend_msg_proto_msgTypes[5] + mi := &file_friend_friend_msg_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -342,7 +428,7 @@ func (x *FriendDelReq) ProtoReflect() protoreflect.Message { // Deprecated: Use FriendDelReq.ProtoReflect.Descriptor instead. func (*FriendDelReq) Descriptor() ([]byte, []int) { - return file_friend_friend_msg_proto_rawDescGZIP(), []int{5} + return file_friend_friend_msg_proto_rawDescGZIP(), []int{7} } func (x *FriendDelReq) GetFriendId() string { @@ -364,7 +450,7 @@ type FriendDelResp struct { func (x *FriendDelResp) Reset() { *x = FriendDelResp{} if protoimpl.UnsafeEnabled { - mi := &file_friend_friend_msg_proto_msgTypes[6] + mi := &file_friend_friend_msg_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -377,7 +463,7 @@ func (x *FriendDelResp) String() string { func (*FriendDelResp) ProtoMessage() {} func (x *FriendDelResp) ProtoReflect() protoreflect.Message { - mi := &file_friend_friend_msg_proto_msgTypes[6] + mi := &file_friend_friend_msg_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -390,7 +476,7 @@ func (x *FriendDelResp) ProtoReflect() protoreflect.Message { // Deprecated: Use FriendDelResp.ProtoReflect.Descriptor instead. func (*FriendDelResp) Descriptor() ([]byte, []int) { - return file_friend_friend_msg_proto_rawDescGZIP(), []int{6} + return file_friend_friend_msg_proto_rawDescGZIP(), []int{8} } func (x *FriendDelResp) GetFriendId() string { @@ -419,7 +505,7 @@ type FriendAgreeReq struct { func (x *FriendAgreeReq) Reset() { *x = FriendAgreeReq{} if protoimpl.UnsafeEnabled { - mi := &file_friend_friend_msg_proto_msgTypes[7] + mi := &file_friend_friend_msg_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -432,7 +518,7 @@ func (x *FriendAgreeReq) String() string { func (*FriendAgreeReq) ProtoMessage() {} func (x *FriendAgreeReq) ProtoReflect() protoreflect.Message { - mi := &file_friend_friend_msg_proto_msgTypes[7] + mi := &file_friend_friend_msg_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -445,7 +531,7 @@ func (x *FriendAgreeReq) ProtoReflect() protoreflect.Message { // Deprecated: Use FriendAgreeReq.ProtoReflect.Descriptor instead. func (*FriendAgreeReq) Descriptor() ([]byte, []int) { - return file_friend_friend_msg_proto_rawDescGZIP(), []int{7} + return file_friend_friend_msg_proto_rawDescGZIP(), []int{9} } func (x *FriendAgreeReq) GetFriendIds() []string { @@ -466,7 +552,7 @@ type FriendAgreeResp struct { func (x *FriendAgreeResp) Reset() { *x = FriendAgreeResp{} if protoimpl.UnsafeEnabled { - mi := &file_friend_friend_msg_proto_msgTypes[8] + mi := &file_friend_friend_msg_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -479,7 +565,7 @@ func (x *FriendAgreeResp) String() string { func (*FriendAgreeResp) ProtoMessage() {} func (x *FriendAgreeResp) ProtoReflect() protoreflect.Message { - mi := &file_friend_friend_msg_proto_msgTypes[8] + mi := &file_friend_friend_msg_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -492,7 +578,7 @@ func (x *FriendAgreeResp) ProtoReflect() protoreflect.Message { // Deprecated: Use FriendAgreeResp.ProtoReflect.Descriptor instead. func (*FriendAgreeResp) Descriptor() ([]byte, []int) { - return file_friend_friend_msg_proto_rawDescGZIP(), []int{8} + return file_friend_friend_msg_proto_rawDescGZIP(), []int{10} } func (x *FriendAgreeResp) GetNum() int32 { @@ -514,7 +600,7 @@ type FriendRefuseReq struct { func (x *FriendRefuseReq) Reset() { *x = FriendRefuseReq{} if protoimpl.UnsafeEnabled { - mi := &file_friend_friend_msg_proto_msgTypes[9] + mi := &file_friend_friend_msg_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -527,7 +613,7 @@ func (x *FriendRefuseReq) String() string { func (*FriendRefuseReq) ProtoMessage() {} func (x *FriendRefuseReq) ProtoReflect() protoreflect.Message { - mi := &file_friend_friend_msg_proto_msgTypes[9] + mi := &file_friend_friend_msg_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -540,7 +626,7 @@ func (x *FriendRefuseReq) ProtoReflect() protoreflect.Message { // Deprecated: Use FriendRefuseReq.ProtoReflect.Descriptor instead. func (*FriendRefuseReq) Descriptor() ([]byte, []int) { - return file_friend_friend_msg_proto_rawDescGZIP(), []int{9} + return file_friend_friend_msg_proto_rawDescGZIP(), []int{11} } func (x *FriendRefuseReq) GetFriendIds() []string { @@ -561,7 +647,7 @@ type FriendRefuseResp struct { func (x *FriendRefuseResp) Reset() { *x = FriendRefuseResp{} if protoimpl.UnsafeEnabled { - mi := &file_friend_friend_msg_proto_msgTypes[10] + mi := &file_friend_friend_msg_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -574,7 +660,7 @@ func (x *FriendRefuseResp) String() string { func (*FriendRefuseResp) ProtoMessage() {} func (x *FriendRefuseResp) ProtoReflect() protoreflect.Message { - mi := &file_friend_friend_msg_proto_msgTypes[10] + mi := &file_friend_friend_msg_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -587,7 +673,7 @@ func (x *FriendRefuseResp) ProtoReflect() protoreflect.Message { // Deprecated: Use FriendRefuseResp.ProtoReflect.Descriptor instead. func (*FriendRefuseResp) Descriptor() ([]byte, []int) { - return file_friend_friend_msg_proto_rawDescGZIP(), []int{10} + return file_friend_friend_msg_proto_rawDescGZIP(), []int{12} } func (x *FriendRefuseResp) GetNum() int32 { @@ -607,7 +693,7 @@ type FriendApplyListReq struct { func (x *FriendApplyListReq) Reset() { *x = FriendApplyListReq{} if protoimpl.UnsafeEnabled { - mi := &file_friend_friend_msg_proto_msgTypes[11] + mi := &file_friend_friend_msg_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -620,7 +706,7 @@ func (x *FriendApplyListReq) String() string { func (*FriendApplyListReq) ProtoMessage() {} func (x *FriendApplyListReq) ProtoReflect() protoreflect.Message { - mi := &file_friend_friend_msg_proto_msgTypes[11] + mi := &file_friend_friend_msg_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -633,7 +719,7 @@ func (x *FriendApplyListReq) ProtoReflect() protoreflect.Message { // Deprecated: Use FriendApplyListReq.ProtoReflect.Descriptor instead. func (*FriendApplyListReq) Descriptor() ([]byte, []int) { - return file_friend_friend_msg_proto_rawDescGZIP(), []int{11} + return file_friend_friend_msg_proto_rawDescGZIP(), []int{13} } type FriendApplyListResp struct { @@ -647,7 +733,7 @@ type FriendApplyListResp struct { func (x *FriendApplyListResp) Reset() { *x = FriendApplyListResp{} if protoimpl.UnsafeEnabled { - mi := &file_friend_friend_msg_proto_msgTypes[12] + mi := &file_friend_friend_msg_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -660,7 +746,7 @@ func (x *FriendApplyListResp) String() string { func (*FriendApplyListResp) ProtoMessage() {} func (x *FriendApplyListResp) ProtoReflect() protoreflect.Message { - mi := &file_friend_friend_msg_proto_msgTypes[12] + mi := &file_friend_friend_msg_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -673,7 +759,7 @@ func (x *FriendApplyListResp) ProtoReflect() protoreflect.Message { // Deprecated: Use FriendApplyListResp.ProtoReflect.Descriptor instead. func (*FriendApplyListResp) Descriptor() ([]byte, []int) { - return file_friend_friend_msg_proto_rawDescGZIP(), []int{12} + return file_friend_friend_msg_proto_rawDescGZIP(), []int{14} } func (x *FriendApplyListResp) GetList() []*FriendBase { @@ -695,7 +781,7 @@ type FriendSearchReq struct { func (x *FriendSearchReq) Reset() { *x = FriendSearchReq{} if protoimpl.UnsafeEnabled { - mi := &file_friend_friend_msg_proto_msgTypes[13] + mi := &file_friend_friend_msg_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -708,7 +794,7 @@ func (x *FriendSearchReq) String() string { func (*FriendSearchReq) ProtoMessage() {} func (x *FriendSearchReq) ProtoReflect() protoreflect.Message { - mi := &file_friend_friend_msg_proto_msgTypes[13] + mi := &file_friend_friend_msg_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -721,7 +807,7 @@ func (x *FriendSearchReq) ProtoReflect() protoreflect.Message { // Deprecated: Use FriendSearchReq.ProtoReflect.Descriptor instead. func (*FriendSearchReq) Descriptor() ([]byte, []int) { - return file_friend_friend_msg_proto_rawDescGZIP(), []int{13} + return file_friend_friend_msg_proto_rawDescGZIP(), []int{15} } func (x *FriendSearchReq) GetNickName() string { @@ -742,7 +828,7 @@ type FriendSearchResp struct { func (x *FriendSearchResp) Reset() { *x = FriendSearchResp{} if protoimpl.UnsafeEnabled { - mi := &file_friend_friend_msg_proto_msgTypes[14] + mi := &file_friend_friend_msg_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -755,7 +841,7 @@ func (x *FriendSearchResp) String() string { func (*FriendSearchResp) ProtoMessage() {} func (x *FriendSearchResp) ProtoReflect() protoreflect.Message { - mi := &file_friend_friend_msg_proto_msgTypes[14] + mi := &file_friend_friend_msg_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -768,7 +854,7 @@ func (x *FriendSearchResp) ProtoReflect() protoreflect.Message { // Deprecated: Use FriendSearchResp.ProtoReflect.Descriptor instead. func (*FriendSearchResp) Descriptor() ([]byte, []int) { - return file_friend_friend_msg_proto_rawDescGZIP(), []int{14} + return file_friend_friend_msg_proto_rawDescGZIP(), []int{16} } func (x *FriendSearchResp) GetFriend() *FriendBase { @@ -788,7 +874,7 @@ type FriendBlackListReq struct { func (x *FriendBlackListReq) Reset() { *x = FriendBlackListReq{} if protoimpl.UnsafeEnabled { - mi := &file_friend_friend_msg_proto_msgTypes[15] + mi := &file_friend_friend_msg_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -801,7 +887,7 @@ func (x *FriendBlackListReq) String() string { func (*FriendBlackListReq) ProtoMessage() {} func (x *FriendBlackListReq) ProtoReflect() protoreflect.Message { - mi := &file_friend_friend_msg_proto_msgTypes[15] + mi := &file_friend_friend_msg_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -814,7 +900,7 @@ func (x *FriendBlackListReq) ProtoReflect() protoreflect.Message { // Deprecated: Use FriendBlackListReq.ProtoReflect.Descriptor instead. func (*FriendBlackListReq) Descriptor() ([]byte, []int) { - return file_friend_friend_msg_proto_rawDescGZIP(), []int{15} + return file_friend_friend_msg_proto_rawDescGZIP(), []int{17} } type FriendBlackListResp struct { @@ -828,7 +914,7 @@ type FriendBlackListResp struct { func (x *FriendBlackListResp) Reset() { *x = FriendBlackListResp{} if protoimpl.UnsafeEnabled { - mi := &file_friend_friend_msg_proto_msgTypes[16] + mi := &file_friend_friend_msg_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -841,7 +927,7 @@ func (x *FriendBlackListResp) String() string { func (*FriendBlackListResp) ProtoMessage() {} func (x *FriendBlackListResp) ProtoReflect() protoreflect.Message { - mi := &file_friend_friend_msg_proto_msgTypes[16] + mi := &file_friend_friend_msg_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -854,7 +940,7 @@ func (x *FriendBlackListResp) ProtoReflect() protoreflect.Message { // Deprecated: Use FriendBlackListResp.ProtoReflect.Descriptor instead. func (*FriendBlackListResp) Descriptor() ([]byte, []int) { - return file_friend_friend_msg_proto_rawDescGZIP(), []int{16} + return file_friend_friend_msg_proto_rawDescGZIP(), []int{18} } func (x *FriendBlackListResp) GetFriends() []*FriendBase { @@ -876,7 +962,7 @@ type FriendBlackAddReq struct { func (x *FriendBlackAddReq) Reset() { *x = FriendBlackAddReq{} if protoimpl.UnsafeEnabled { - mi := &file_friend_friend_msg_proto_msgTypes[17] + mi := &file_friend_friend_msg_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -889,7 +975,7 @@ func (x *FriendBlackAddReq) String() string { func (*FriendBlackAddReq) ProtoMessage() {} func (x *FriendBlackAddReq) ProtoReflect() protoreflect.Message { - mi := &file_friend_friend_msg_proto_msgTypes[17] + mi := &file_friend_friend_msg_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -902,7 +988,7 @@ func (x *FriendBlackAddReq) ProtoReflect() protoreflect.Message { // Deprecated: Use FriendBlackAddReq.ProtoReflect.Descriptor instead. func (*FriendBlackAddReq) Descriptor() ([]byte, []int) { - return file_friend_friend_msg_proto_rawDescGZIP(), []int{17} + return file_friend_friend_msg_proto_rawDescGZIP(), []int{19} } func (x *FriendBlackAddReq) GetFriendId() string { @@ -924,7 +1010,7 @@ type FriendBlackAddResp struct { func (x *FriendBlackAddResp) Reset() { *x = FriendBlackAddResp{} if protoimpl.UnsafeEnabled { - mi := &file_friend_friend_msg_proto_msgTypes[18] + mi := &file_friend_friend_msg_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -937,7 +1023,7 @@ func (x *FriendBlackAddResp) String() string { func (*FriendBlackAddResp) ProtoMessage() {} func (x *FriendBlackAddResp) ProtoReflect() protoreflect.Message { - mi := &file_friend_friend_msg_proto_msgTypes[18] + mi := &file_friend_friend_msg_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -950,7 +1036,7 @@ func (x *FriendBlackAddResp) ProtoReflect() protoreflect.Message { // Deprecated: Use FriendBlackAddResp.ProtoReflect.Descriptor instead. func (*FriendBlackAddResp) Descriptor() ([]byte, []int) { - return file_friend_friend_msg_proto_rawDescGZIP(), []int{18} + return file_friend_friend_msg_proto_rawDescGZIP(), []int{20} } func (x *FriendBlackAddResp) GetFriendId() string { @@ -979,7 +1065,7 @@ type FriendDelBlackReq struct { func (x *FriendDelBlackReq) Reset() { *x = FriendDelBlackReq{} if protoimpl.UnsafeEnabled { - mi := &file_friend_friend_msg_proto_msgTypes[19] + mi := &file_friend_friend_msg_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -992,7 +1078,7 @@ func (x *FriendDelBlackReq) String() string { func (*FriendDelBlackReq) ProtoMessage() {} func (x *FriendDelBlackReq) ProtoReflect() protoreflect.Message { - mi := &file_friend_friend_msg_proto_msgTypes[19] + mi := &file_friend_friend_msg_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1005,7 +1091,7 @@ func (x *FriendDelBlackReq) ProtoReflect() protoreflect.Message { // Deprecated: Use FriendDelBlackReq.ProtoReflect.Descriptor instead. func (*FriendDelBlackReq) Descriptor() ([]byte, []int) { - return file_friend_friend_msg_proto_rawDescGZIP(), []int{19} + return file_friend_friend_msg_proto_rawDescGZIP(), []int{21} } func (x *FriendDelBlackReq) GetFriendId() string { @@ -1027,7 +1113,7 @@ type FriendDelBlackResp struct { func (x *FriendDelBlackResp) Reset() { *x = FriendDelBlackResp{} if protoimpl.UnsafeEnabled { - mi := &file_friend_friend_msg_proto_msgTypes[20] + mi := &file_friend_friend_msg_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1040,7 +1126,7 @@ func (x *FriendDelBlackResp) String() string { func (*FriendDelBlackResp) ProtoMessage() {} func (x *FriendDelBlackResp) ProtoReflect() protoreflect.Message { - mi := &file_friend_friend_msg_proto_msgTypes[20] + mi := &file_friend_friend_msg_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1053,7 +1139,7 @@ func (x *FriendDelBlackResp) ProtoReflect() protoreflect.Message { // Deprecated: Use FriendDelBlackResp.ProtoReflect.Descriptor instead. func (*FriendDelBlackResp) Descriptor() ([]byte, []int) { - return file_friend_friend_msg_proto_rawDescGZIP(), []int{20} + return file_friend_friend_msg_proto_rawDescGZIP(), []int{22} } func (x *FriendDelBlackResp) GetFriendId() string { @@ -1082,7 +1168,7 @@ type FriendReceiveReq struct { func (x *FriendReceiveReq) Reset() { *x = FriendReceiveReq{} if protoimpl.UnsafeEnabled { - mi := &file_friend_friend_msg_proto_msgTypes[21] + mi := &file_friend_friend_msg_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1095,7 +1181,7 @@ func (x *FriendReceiveReq) String() string { func (*FriendReceiveReq) ProtoMessage() {} func (x *FriendReceiveReq) ProtoReflect() protoreflect.Message { - mi := &file_friend_friend_msg_proto_msgTypes[21] + mi := &file_friend_friend_msg_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1108,7 +1194,7 @@ func (x *FriendReceiveReq) ProtoReflect() protoreflect.Message { // Deprecated: Use FriendReceiveReq.ProtoReflect.Descriptor instead. func (*FriendReceiveReq) Descriptor() ([]byte, []int) { - return file_friend_friend_msg_proto_rawDescGZIP(), []int{21} + return file_friend_friend_msg_proto_rawDescGZIP(), []int{23} } func (x *FriendReceiveReq) GetFriendId() string { @@ -1130,7 +1216,7 @@ type FriendReceiveResp struct { func (x *FriendReceiveResp) Reset() { *x = FriendReceiveResp{} if protoimpl.UnsafeEnabled { - mi := &file_friend_friend_msg_proto_msgTypes[22] + mi := &file_friend_friend_msg_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1143,7 +1229,7 @@ func (x *FriendReceiveResp) String() string { func (*FriendReceiveResp) ProtoMessage() {} func (x *FriendReceiveResp) ProtoReflect() protoreflect.Message { - mi := &file_friend_friend_msg_proto_msgTypes[22] + mi := &file_friend_friend_msg_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1156,7 +1242,7 @@ func (x *FriendReceiveResp) ProtoReflect() protoreflect.Message { // Deprecated: Use FriendReceiveResp.ProtoReflect.Descriptor instead. func (*FriendReceiveResp) Descriptor() ([]byte, []int) { - return file_friend_friend_msg_proto_rawDescGZIP(), []int{22} + return file_friend_friend_msg_proto_rawDescGZIP(), []int{24} } func (x *FriendReceiveResp) GetFriendId() string { @@ -1185,7 +1271,7 @@ type FriendGiveReq struct { func (x *FriendGiveReq) Reset() { *x = FriendGiveReq{} if protoimpl.UnsafeEnabled { - mi := &file_friend_friend_msg_proto_msgTypes[23] + mi := &file_friend_friend_msg_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1198,7 +1284,7 @@ func (x *FriendGiveReq) String() string { func (*FriendGiveReq) ProtoMessage() {} func (x *FriendGiveReq) ProtoReflect() protoreflect.Message { - mi := &file_friend_friend_msg_proto_msgTypes[23] + mi := &file_friend_friend_msg_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1211,7 +1297,7 @@ func (x *FriendGiveReq) ProtoReflect() protoreflect.Message { // Deprecated: Use FriendGiveReq.ProtoReflect.Descriptor instead. func (*FriendGiveReq) Descriptor() ([]byte, []int) { - return file_friend_friend_msg_proto_rawDescGZIP(), []int{23} + return file_friend_friend_msg_proto_rawDescGZIP(), []int{25} } func (x *FriendGiveReq) GetFriendId() string { @@ -1233,7 +1319,7 @@ type FriendGiveResp struct { func (x *FriendGiveResp) Reset() { *x = FriendGiveResp{} if protoimpl.UnsafeEnabled { - mi := &file_friend_friend_msg_proto_msgTypes[24] + mi := &file_friend_friend_msg_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1246,7 +1332,7 @@ func (x *FriendGiveResp) String() string { func (*FriendGiveResp) ProtoMessage() {} func (x *FriendGiveResp) ProtoReflect() protoreflect.Message { - mi := &file_friend_friend_msg_proto_msgTypes[24] + mi := &file_friend_friend_msg_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1259,7 +1345,7 @@ func (x *FriendGiveResp) ProtoReflect() protoreflect.Message { // Deprecated: Use FriendGiveResp.ProtoReflect.Descriptor instead. func (*FriendGiveResp) Descriptor() ([]byte, []int) { - return file_friend_friend_msg_proto_rawDescGZIP(), []int{24} + return file_friend_friend_msg_proto_rawDescGZIP(), []int{26} } func (x *FriendGiveResp) GetFriendId() string { @@ -1288,7 +1374,7 @@ type FriendTotalReq struct { func (x *FriendTotalReq) Reset() { *x = FriendTotalReq{} if protoimpl.UnsafeEnabled { - mi := &file_friend_friend_msg_proto_msgTypes[25] + mi := &file_friend_friend_msg_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1301,7 +1387,7 @@ func (x *FriendTotalReq) String() string { func (*FriendTotalReq) ProtoMessage() {} func (x *FriendTotalReq) ProtoReflect() protoreflect.Message { - mi := &file_friend_friend_msg_proto_msgTypes[25] + mi := &file_friend_friend_msg_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1314,7 +1400,7 @@ func (x *FriendTotalReq) ProtoReflect() protoreflect.Message { // Deprecated: Use FriendTotalReq.ProtoReflect.Descriptor instead. func (*FriendTotalReq) Descriptor() ([]byte, []int) { - return file_friend_friend_msg_proto_rawDescGZIP(), []int{25} + return file_friend_friend_msg_proto_rawDescGZIP(), []int{27} } func (x *FriendTotalReq) GetFriendId() string { @@ -1336,7 +1422,7 @@ type FriendTotalResp struct { func (x *FriendTotalResp) Reset() { *x = FriendTotalResp{} if protoimpl.UnsafeEnabled { - mi := &file_friend_friend_msg_proto_msgTypes[26] + mi := &file_friend_friend_msg_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1349,7 +1435,7 @@ func (x *FriendTotalResp) String() string { func (*FriendTotalResp) ProtoMessage() {} func (x *FriendTotalResp) ProtoReflect() protoreflect.Message { - mi := &file_friend_friend_msg_proto_msgTypes[26] + mi := &file_friend_friend_msg_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1362,7 +1448,7 @@ func (x *FriendTotalResp) ProtoReflect() protoreflect.Message { // Deprecated: Use FriendTotalResp.ProtoReflect.Descriptor instead. func (*FriendTotalResp) Descriptor() ([]byte, []int) { - return file_friend_friend_msg_proto_rawDescGZIP(), []int{26} + return file_friend_friend_msg_proto_rawDescGZIP(), []int{28} } func (x *FriendTotalResp) GetFriendId() string { @@ -1389,7 +1475,7 @@ type FriendZanlistReq struct { func (x *FriendZanlistReq) Reset() { *x = FriendZanlistReq{} if protoimpl.UnsafeEnabled { - mi := &file_friend_friend_msg_proto_msgTypes[27] + mi := &file_friend_friend_msg_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1402,7 +1488,7 @@ func (x *FriendZanlistReq) String() string { func (*FriendZanlistReq) ProtoMessage() {} func (x *FriendZanlistReq) ProtoReflect() protoreflect.Message { - mi := &file_friend_friend_msg_proto_msgTypes[27] + mi := &file_friend_friend_msg_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1415,7 +1501,7 @@ func (x *FriendZanlistReq) ProtoReflect() protoreflect.Message { // Deprecated: Use FriendZanlistReq.ProtoReflect.Descriptor instead. func (*FriendZanlistReq) Descriptor() ([]byte, []int) { - return file_friend_friend_msg_proto_rawDescGZIP(), []int{27} + return file_friend_friend_msg_proto_rawDescGZIP(), []int{29} } type FriendZanlistResp struct { @@ -1429,7 +1515,7 @@ type FriendZanlistResp struct { func (x *FriendZanlistResp) Reset() { *x = FriendZanlistResp{} if protoimpl.UnsafeEnabled { - mi := &file_friend_friend_msg_proto_msgTypes[28] + mi := &file_friend_friend_msg_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1442,7 +1528,7 @@ func (x *FriendZanlistResp) String() string { func (*FriendZanlistResp) ProtoMessage() {} func (x *FriendZanlistResp) ProtoReflect() protoreflect.Message { - mi := &file_friend_friend_msg_proto_msgTypes[28] + mi := &file_friend_friend_msg_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1455,7 +1541,7 @@ func (x *FriendZanlistResp) ProtoReflect() protoreflect.Message { // Deprecated: Use FriendZanlistResp.ProtoReflect.Descriptor instead. func (*FriendZanlistResp) Descriptor() ([]byte, []int) { - return file_friend_friend_msg_proto_rawDescGZIP(), []int{28} + return file_friend_friend_msg_proto_rawDescGZIP(), []int{30} } func (x *FriendZanlistResp) GetList() []*FriendBase { @@ -1477,7 +1563,7 @@ type FriendZanReq struct { func (x *FriendZanReq) Reset() { *x = FriendZanReq{} if protoimpl.UnsafeEnabled { - mi := &file_friend_friend_msg_proto_msgTypes[29] + mi := &file_friend_friend_msg_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1490,7 +1576,7 @@ func (x *FriendZanReq) String() string { func (*FriendZanReq) ProtoMessage() {} func (x *FriendZanReq) ProtoReflect() protoreflect.Message { - mi := &file_friend_friend_msg_proto_msgTypes[29] + mi := &file_friend_friend_msg_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1503,7 +1589,7 @@ func (x *FriendZanReq) ProtoReflect() protoreflect.Message { // Deprecated: Use FriendZanReq.ProtoReflect.Descriptor instead. func (*FriendZanReq) Descriptor() ([]byte, []int) { - return file_friend_friend_msg_proto_rawDescGZIP(), []int{29} + return file_friend_friend_msg_proto_rawDescGZIP(), []int{31} } func (x *FriendZanReq) GetFriendId() string { @@ -1524,7 +1610,7 @@ type FriendZanResp struct { func (x *FriendZanResp) Reset() { *x = FriendZanResp{} if protoimpl.UnsafeEnabled { - mi := &file_friend_friend_msg_proto_msgTypes[30] + mi := &file_friend_friend_msg_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1537,7 +1623,7 @@ func (x *FriendZanResp) String() string { func (*FriendZanResp) ProtoMessage() {} func (x *FriendZanResp) ProtoReflect() protoreflect.Message { - mi := &file_friend_friend_msg_proto_msgTypes[30] + mi := &file_friend_friend_msg_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1550,7 +1636,7 @@ func (x *FriendZanResp) ProtoReflect() protoreflect.Message { // Deprecated: Use FriendZanResp.ProtoReflect.Descriptor instead. func (*FriendZanResp) Descriptor() ([]byte, []int) { - return file_friend_friend_msg_proto_rawDescGZIP(), []int{30} + return file_friend_friend_msg_proto_rawDescGZIP(), []int{32} } func (x *FriendZanResp) GetFlag() bool { @@ -1572,7 +1658,7 @@ type FriendZanreceiveReq struct { func (x *FriendZanreceiveReq) Reset() { *x = FriendZanreceiveReq{} if protoimpl.UnsafeEnabled { - mi := &file_friend_friend_msg_proto_msgTypes[31] + mi := &file_friend_friend_msg_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1585,7 +1671,7 @@ func (x *FriendZanreceiveReq) String() string { func (*FriendZanreceiveReq) ProtoMessage() {} func (x *FriendZanreceiveReq) ProtoReflect() protoreflect.Message { - mi := &file_friend_friend_msg_proto_msgTypes[31] + mi := &file_friend_friend_msg_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1598,7 +1684,7 @@ func (x *FriendZanreceiveReq) ProtoReflect() protoreflect.Message { // Deprecated: Use FriendZanreceiveReq.ProtoReflect.Descriptor instead. func (*FriendZanreceiveReq) Descriptor() ([]byte, []int) { - return file_friend_friend_msg_proto_rawDescGZIP(), []int{31} + return file_friend_friend_msg_proto_rawDescGZIP(), []int{33} } func (x *FriendZanreceiveReq) GetFriendId() string { @@ -1619,7 +1705,7 @@ type FriendZanreceiveResp struct { func (x *FriendZanreceiveResp) Reset() { *x = FriendZanreceiveResp{} if protoimpl.UnsafeEnabled { - mi := &file_friend_friend_msg_proto_msgTypes[32] + mi := &file_friend_friend_msg_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1632,7 +1718,7 @@ func (x *FriendZanreceiveResp) String() string { func (*FriendZanreceiveResp) ProtoMessage() {} func (x *FriendZanreceiveResp) ProtoReflect() protoreflect.Message { - mi := &file_friend_friend_msg_proto_msgTypes[32] + mi := &file_friend_friend_msg_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1645,7 +1731,7 @@ func (x *FriendZanreceiveResp) ProtoReflect() protoreflect.Message { // Deprecated: Use FriendZanreceiveResp.ProtoReflect.Descriptor instead. func (*FriendZanreceiveResp) Descriptor() ([]byte, []int) { - return file_friend_friend_msg_proto_rawDescGZIP(), []int{32} + return file_friend_friend_msg_proto_rawDescGZIP(), []int{34} } func (x *FriendZanreceiveResp) GetFlag() bool { @@ -1666,7 +1752,7 @@ var file_friend_friend_msg_proto_rawDesc = []byte{ 0x28, 0x09, 0x52, 0x08, 0x4e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x74, + 0x28, 0x09, 0x52, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x74, 0x72, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x73, 0x74, 0x72, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, @@ -1676,103 +1762,107 @@ var file_friend_friend_msg_proto_rawDesc = []byte{ 0x73, 0x74, 0x52, 0x65, 0x71, 0x22, 0x31, 0x0a, 0x0e, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1f, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x42, 0x61, - 0x73, 0x65, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x22, 0x2c, 0x0a, 0x0e, 0x46, 0x72, 0x69, 0x65, - 0x6e, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x72, - 0x69, 0x65, 0x6e, 0x64, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x72, - 0x69, 0x65, 0x6e, 0x64, 0x49, 0x64, 0x22, 0x45, 0x0a, 0x0f, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, - 0x41, 0x70, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x73, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, - 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, - 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x64, 0x22, 0x2a, 0x0a, - 0x0c, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x44, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, - 0x08, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x64, 0x22, 0x43, 0x0a, 0x0d, 0x46, 0x72, 0x69, - 0x65, 0x6e, 0x64, 0x44, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x72, - 0x69, 0x65, 0x6e, 0x64, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x72, - 0x69, 0x65, 0x6e, 0x64, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0x2e, - 0x0a, 0x0e, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x41, 0x67, 0x72, 0x65, 0x65, 0x52, 0x65, 0x71, - 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x64, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x09, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x64, 0x73, 0x22, 0x23, - 0x0a, 0x0f, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x41, 0x67, 0x72, 0x65, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x12, 0x10, 0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, - 0x4e, 0x75, 0x6d, 0x22, 0x2f, 0x0a, 0x0f, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x66, - 0x75, 0x73, 0x65, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, - 0x49, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x66, 0x72, 0x69, 0x65, 0x6e, - 0x64, 0x49, 0x64, 0x73, 0x22, 0x24, 0x0a, 0x10, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, - 0x66, 0x75, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x4e, 0x75, 0x6d, 0x22, 0x14, 0x0a, 0x12, 0x46, 0x72, - 0x69, 0x65, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, - 0x22, 0x36, 0x0a, 0x13, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x4c, - 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1f, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x42, 0x61, - 0x73, 0x65, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x22, 0x2d, 0x0a, 0x0f, 0x46, 0x72, 0x69, 0x65, - 0x6e, 0x64, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x6e, - 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, - 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x37, 0x0a, 0x10, 0x46, 0x72, 0x69, 0x65, 0x6e, - 0x64, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x12, 0x23, 0x0a, 0x06, 0x66, - 0x72, 0x69, 0x65, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x46, 0x72, - 0x69, 0x65, 0x6e, 0x64, 0x42, 0x61, 0x73, 0x65, 0x52, 0x06, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, - 0x22, 0x14, 0x0a, 0x12, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x4c, - 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x22, 0x3c, 0x0a, 0x13, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, - 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x25, 0x0a, - 0x07, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, - 0x2e, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x42, 0x61, 0x73, 0x65, 0x52, 0x07, 0x66, 0x72, 0x69, - 0x65, 0x6e, 0x64, 0x73, 0x22, 0x2f, 0x0a, 0x11, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x42, 0x6c, - 0x61, 0x63, 0x6b, 0x41, 0x64, 0x64, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x72, 0x69, - 0x65, 0x6e, 0x64, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x72, 0x69, - 0x65, 0x6e, 0x64, 0x49, 0x64, 0x22, 0x48, 0x0a, 0x12, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x42, - 0x6c, 0x61, 0x63, 0x6b, 0x41, 0x64, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x66, - 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, - 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, - 0x2f, 0x0a, 0x11, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x44, 0x65, 0x6c, 0x42, 0x6c, 0x61, 0x63, - 0x6b, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x64, - 0x22, 0x48, 0x0a, 0x12, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x44, 0x65, 0x6c, 0x42, 0x6c, 0x61, - 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, - 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, - 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0x2e, 0x0a, 0x10, 0x46, 0x72, - 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x52, 0x65, 0x71, 0x12, 0x1a, - 0x0a, 0x08, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x64, 0x22, 0x47, 0x0a, 0x11, 0x46, 0x72, - 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, - 0x1a, 0x0a, 0x08, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x75, - 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, - 0x72, 0x49, 0x64, 0x22, 0x2b, 0x0a, 0x0d, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x47, 0x69, 0x76, - 0x65, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x64, - 0x22, 0x44, 0x0a, 0x0e, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x47, 0x69, 0x76, 0x65, 0x52, 0x65, + 0x73, 0x65, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x22, 0x11, 0x0a, 0x0f, 0x46, 0x72, 0x69, 0x65, + 0x6e, 0x64, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x71, 0x22, 0x33, 0x0a, 0x10, 0x46, + 0x72, 0x69, 0x65, 0x6e, 0x64, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, + 0x1f, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, + 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x42, 0x61, 0x73, 0x65, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, + 0x22, 0x2c, 0x0a, 0x0e, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x52, + 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x64, 0x22, 0x45, + 0x0a, 0x0f, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x73, + 0x70, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x72, 0x69, + 0x65, 0x6e, 0x64, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x72, 0x69, + 0x65, 0x6e, 0x64, 0x49, 0x64, 0x22, 0x2a, 0x0a, 0x0c, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x44, + 0x65, 0x6c, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, + 0x64, 0x22, 0x43, 0x0a, 0x0d, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x44, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0x2c, 0x0a, 0x0e, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, - 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x72, 0x69, 0x65, - 0x6e, 0x64, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x72, 0x69, 0x65, - 0x6e, 0x64, 0x49, 0x64, 0x22, 0x43, 0x0a, 0x0f, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x54, 0x6f, - 0x74, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x72, 0x69, 0x65, 0x6e, + 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0x2e, 0x0a, 0x0e, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, + 0x41, 0x67, 0x72, 0x65, 0x65, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x72, 0x69, 0x65, + 0x6e, 0x64, 0x49, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x66, 0x72, 0x69, + 0x65, 0x6e, 0x64, 0x49, 0x64, 0x73, 0x22, 0x23, 0x0a, 0x0f, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, + 0x41, 0x67, 0x72, 0x65, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x4e, 0x75, 0x6d, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x4e, 0x75, 0x6d, 0x22, 0x2f, 0x0a, 0x0f, 0x46, + 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x66, 0x75, 0x73, 0x65, 0x52, 0x65, 0x71, 0x12, 0x1c, + 0x0a, 0x09, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x09, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x64, 0x73, 0x22, 0x24, 0x0a, 0x10, + 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x66, 0x75, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x12, 0x10, 0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x4e, + 0x75, 0x6d, 0x22, 0x14, 0x0a, 0x12, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x6c, + 0x79, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x22, 0x36, 0x0a, 0x13, 0x46, 0x72, 0x69, 0x65, + 0x6e, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, + 0x1f, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, + 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x42, 0x61, 0x73, 0x65, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, + 0x22, 0x2d, 0x0a, 0x0f, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, + 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x22, + 0x37, 0x0a, 0x10, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, + 0x65, 0x73, 0x70, 0x12, 0x23, 0x0a, 0x06, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x42, 0x61, 0x73, 0x65, + 0x52, 0x06, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x22, 0x14, 0x0a, 0x12, 0x46, 0x72, 0x69, 0x65, + 0x6e, 0x64, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x22, 0x3c, + 0x0a, 0x13, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x4c, 0x69, 0x73, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x25, 0x0a, 0x07, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x42, + 0x61, 0x73, 0x65, 0x52, 0x07, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x22, 0x2f, 0x0a, 0x11, + 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x41, 0x64, 0x64, 0x52, 0x65, + 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x64, 0x22, 0x48, 0x0a, + 0x12, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x41, 0x64, 0x64, 0x52, + 0x65, 0x73, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x64, 0x12, + 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0x2f, 0x0a, 0x11, 0x46, 0x72, 0x69, 0x65, 0x6e, + 0x64, 0x44, 0x65, 0x6c, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, + 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x64, 0x22, 0x48, 0x0a, 0x12, 0x46, 0x72, 0x69, 0x65, + 0x6e, 0x64, 0x44, 0x65, 0x6c, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1a, + 0x0a, 0x08, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, + 0x65, 0x72, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, + 0x49, 0x64, 0x22, 0x2e, 0x0a, 0x10, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x63, 0x65, + 0x69, 0x76, 0x65, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, + 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, + 0x49, 0x64, 0x22, 0x47, 0x0a, 0x11, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x63, 0x65, + 0x69, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x72, 0x69, 0x65, 0x6e, - 0x64, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x12, 0x0a, 0x10, 0x46, 0x72, 0x69, - 0x65, 0x6e, 0x64, 0x5a, 0x61, 0x6e, 0x6c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x22, 0x34, 0x0a, - 0x11, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x5a, 0x61, 0x6e, 0x6c, 0x69, 0x73, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x12, 0x1f, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x0b, 0x2e, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x42, 0x61, 0x73, 0x65, 0x52, 0x04, 0x6c, - 0x69, 0x73, 0x74, 0x22, 0x2a, 0x0a, 0x0c, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x5a, 0x61, 0x6e, + 0x64, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0x2b, 0x0a, 0x0d, 0x46, + 0x72, 0x69, 0x65, 0x6e, 0x64, 0x47, 0x69, 0x76, 0x65, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, + 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x64, 0x22, 0x44, 0x0a, 0x0e, 0x46, 0x72, 0x69, 0x65, + 0x6e, 0x64, 0x47, 0x69, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x72, + 0x69, 0x65, 0x6e, 0x64, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x72, + 0x69, 0x65, 0x6e, 0x64, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0x2c, + 0x0a, 0x0e, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x52, 0x65, 0x71, + 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x64, 0x22, 0x43, 0x0a, 0x0f, + 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x12, + 0x1a, 0x0a, 0x08, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, + 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, + 0x6c, 0x22, 0x12, 0x0a, 0x10, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x5a, 0x61, 0x6e, 0x6c, 0x69, + 0x73, 0x74, 0x52, 0x65, 0x71, 0x22, 0x34, 0x0a, 0x11, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x5a, + 0x61, 0x6e, 0x6c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1f, 0x0a, 0x04, 0x6c, 0x69, + 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x46, 0x72, 0x69, 0x65, 0x6e, + 0x64, 0x42, 0x61, 0x73, 0x65, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x22, 0x2a, 0x0a, 0x0c, 0x46, + 0x72, 0x69, 0x65, 0x6e, 0x64, 0x5a, 0x61, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x66, + 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, + 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x64, 0x22, 0x23, 0x0a, 0x0d, 0x46, 0x72, 0x69, 0x65, 0x6e, + 0x64, 0x5a, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x6c, 0x61, 0x67, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x22, 0x31, 0x0a, 0x13, + 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x5a, 0x61, 0x6e, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x64, 0x22, - 0x23, 0x0a, 0x0d, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x5a, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x70, - 0x12, 0x12, 0x0a, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, - 0x66, 0x6c, 0x61, 0x67, 0x22, 0x31, 0x0a, 0x13, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x5a, 0x61, - 0x6e, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x66, - 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, - 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x64, 0x22, 0x2a, 0x0a, 0x14, 0x46, 0x72, 0x69, 0x65, 0x6e, - 0x64, 0x5a, 0x61, 0x6e, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, - 0x12, 0x0a, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x66, - 0x6c, 0x61, 0x67, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, + 0x2a, 0x0a, 0x14, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x5a, 0x61, 0x6e, 0x72, 0x65, 0x63, 0x65, + 0x69, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x42, 0x06, 0x5a, 0x04, 0x2e, + 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1787,53 +1877,56 @@ func file_friend_friend_msg_proto_rawDescGZIP() []byte { return file_friend_friend_msg_proto_rawDescData } -var file_friend_friend_msg_proto_msgTypes = make([]protoimpl.MessageInfo, 33) +var file_friend_friend_msg_proto_msgTypes = make([]protoimpl.MessageInfo, 35) var file_friend_friend_msg_proto_goTypes = []interface{}{ (*FriendBase)(nil), // 0: FriendBase (*FriendListReq)(nil), // 1: FriendListReq (*FriendListResp)(nil), // 2: FriendListResp - (*FriendApplyReq)(nil), // 3: FriendApplyReq - (*FriendApplyResp)(nil), // 4: FriendApplyResp - (*FriendDelReq)(nil), // 5: FriendDelReq - (*FriendDelResp)(nil), // 6: FriendDelResp - (*FriendAgreeReq)(nil), // 7: FriendAgreeReq - (*FriendAgreeResp)(nil), // 8: FriendAgreeResp - (*FriendRefuseReq)(nil), // 9: FriendRefuseReq - (*FriendRefuseResp)(nil), // 10: FriendRefuseResp - (*FriendApplyListReq)(nil), // 11: FriendApplyListReq - (*FriendApplyListResp)(nil), // 12: FriendApplyListResp - (*FriendSearchReq)(nil), // 13: FriendSearchReq - (*FriendSearchResp)(nil), // 14: FriendSearchResp - (*FriendBlackListReq)(nil), // 15: FriendBlackListReq - (*FriendBlackListResp)(nil), // 16: FriendBlackListResp - (*FriendBlackAddReq)(nil), // 17: FriendBlackAddReq - (*FriendBlackAddResp)(nil), // 18: FriendBlackAddResp - (*FriendDelBlackReq)(nil), // 19: FriendDelBlackReq - (*FriendDelBlackResp)(nil), // 20: FriendDelBlackResp - (*FriendReceiveReq)(nil), // 21: FriendReceiveReq - (*FriendReceiveResp)(nil), // 22: FriendReceiveResp - (*FriendGiveReq)(nil), // 23: FriendGiveReq - (*FriendGiveResp)(nil), // 24: FriendGiveResp - (*FriendTotalReq)(nil), // 25: FriendTotalReq - (*FriendTotalResp)(nil), // 26: FriendTotalResp - (*FriendZanlistReq)(nil), // 27: FriendZanlistReq - (*FriendZanlistResp)(nil), // 28: FriendZanlistResp - (*FriendZanReq)(nil), // 29: FriendZanReq - (*FriendZanResp)(nil), // 30: FriendZanResp - (*FriendZanreceiveReq)(nil), // 31: FriendZanreceiveReq - (*FriendZanreceiveResp)(nil), // 32: FriendZanreceiveResp + (*FriendOnlineReq)(nil), // 3: FriendOnlineReq + (*FriendOnlineResp)(nil), // 4: FriendOnlineResp + (*FriendApplyReq)(nil), // 5: FriendApplyReq + (*FriendApplyResp)(nil), // 6: FriendApplyResp + (*FriendDelReq)(nil), // 7: FriendDelReq + (*FriendDelResp)(nil), // 8: FriendDelResp + (*FriendAgreeReq)(nil), // 9: FriendAgreeReq + (*FriendAgreeResp)(nil), // 10: FriendAgreeResp + (*FriendRefuseReq)(nil), // 11: FriendRefuseReq + (*FriendRefuseResp)(nil), // 12: FriendRefuseResp + (*FriendApplyListReq)(nil), // 13: FriendApplyListReq + (*FriendApplyListResp)(nil), // 14: FriendApplyListResp + (*FriendSearchReq)(nil), // 15: FriendSearchReq + (*FriendSearchResp)(nil), // 16: FriendSearchResp + (*FriendBlackListReq)(nil), // 17: FriendBlackListReq + (*FriendBlackListResp)(nil), // 18: FriendBlackListResp + (*FriendBlackAddReq)(nil), // 19: FriendBlackAddReq + (*FriendBlackAddResp)(nil), // 20: FriendBlackAddResp + (*FriendDelBlackReq)(nil), // 21: FriendDelBlackReq + (*FriendDelBlackResp)(nil), // 22: FriendDelBlackResp + (*FriendReceiveReq)(nil), // 23: FriendReceiveReq + (*FriendReceiveResp)(nil), // 24: FriendReceiveResp + (*FriendGiveReq)(nil), // 25: FriendGiveReq + (*FriendGiveResp)(nil), // 26: FriendGiveResp + (*FriendTotalReq)(nil), // 27: FriendTotalReq + (*FriendTotalResp)(nil), // 28: FriendTotalResp + (*FriendZanlistReq)(nil), // 29: FriendZanlistReq + (*FriendZanlistResp)(nil), // 30: FriendZanlistResp + (*FriendZanReq)(nil), // 31: FriendZanReq + (*FriendZanResp)(nil), // 32: FriendZanResp + (*FriendZanreceiveReq)(nil), // 33: FriendZanreceiveReq + (*FriendZanreceiveResp)(nil), // 34: FriendZanreceiveResp } var file_friend_friend_msg_proto_depIdxs = []int32{ 0, // 0: FriendListResp.list:type_name -> FriendBase - 0, // 1: FriendApplyListResp.list:type_name -> FriendBase - 0, // 2: FriendSearchResp.friend:type_name -> FriendBase - 0, // 3: FriendBlackListResp.friends:type_name -> FriendBase - 0, // 4: FriendZanlistResp.list:type_name -> FriendBase - 5, // [5:5] is the sub-list for method output_type - 5, // [5:5] is the sub-list for method input_type - 5, // [5:5] is the sub-list for extension type_name - 5, // [5:5] is the sub-list for extension extendee - 0, // [0:5] is the sub-list for field type_name + 0, // 1: FriendOnlineResp.list:type_name -> FriendBase + 0, // 2: FriendApplyListResp.list:type_name -> FriendBase + 0, // 3: FriendSearchResp.friend:type_name -> FriendBase + 0, // 4: FriendBlackListResp.friends:type_name -> FriendBase + 0, // 5: FriendZanlistResp.list:type_name -> FriendBase + 6, // [6:6] is the sub-list for method output_type + 6, // [6:6] is the sub-list for method input_type + 6, // [6:6] is the sub-list for extension type_name + 6, // [6:6] is the sub-list for extension extendee + 0, // [0:6] is the sub-list for field type_name } func init() { file_friend_friend_msg_proto_init() } @@ -1879,7 +1972,7 @@ func file_friend_friend_msg_proto_init() { } } file_friend_friend_msg_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FriendApplyReq); i { + switch v := v.(*FriendOnlineReq); i { case 0: return &v.state case 1: @@ -1891,7 +1984,7 @@ func file_friend_friend_msg_proto_init() { } } file_friend_friend_msg_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FriendApplyResp); i { + switch v := v.(*FriendOnlineResp); i { case 0: return &v.state case 1: @@ -1903,7 +1996,7 @@ func file_friend_friend_msg_proto_init() { } } file_friend_friend_msg_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FriendDelReq); i { + switch v := v.(*FriendApplyReq); i { case 0: return &v.state case 1: @@ -1915,7 +2008,7 @@ func file_friend_friend_msg_proto_init() { } } file_friend_friend_msg_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FriendDelResp); i { + switch v := v.(*FriendApplyResp); i { case 0: return &v.state case 1: @@ -1927,7 +2020,7 @@ func file_friend_friend_msg_proto_init() { } } file_friend_friend_msg_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FriendAgreeReq); i { + switch v := v.(*FriendDelReq); i { case 0: return &v.state case 1: @@ -1939,7 +2032,7 @@ func file_friend_friend_msg_proto_init() { } } file_friend_friend_msg_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FriendAgreeResp); i { + switch v := v.(*FriendDelResp); i { case 0: return &v.state case 1: @@ -1951,7 +2044,7 @@ func file_friend_friend_msg_proto_init() { } } file_friend_friend_msg_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FriendRefuseReq); i { + switch v := v.(*FriendAgreeReq); i { case 0: return &v.state case 1: @@ -1963,7 +2056,7 @@ func file_friend_friend_msg_proto_init() { } } file_friend_friend_msg_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FriendRefuseResp); i { + switch v := v.(*FriendAgreeResp); i { case 0: return &v.state case 1: @@ -1975,7 +2068,7 @@ func file_friend_friend_msg_proto_init() { } } file_friend_friend_msg_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FriendApplyListReq); i { + switch v := v.(*FriendRefuseReq); i { case 0: return &v.state case 1: @@ -1987,7 +2080,7 @@ func file_friend_friend_msg_proto_init() { } } file_friend_friend_msg_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FriendApplyListResp); i { + switch v := v.(*FriendRefuseResp); i { case 0: return &v.state case 1: @@ -1999,7 +2092,7 @@ func file_friend_friend_msg_proto_init() { } } file_friend_friend_msg_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FriendSearchReq); i { + switch v := v.(*FriendApplyListReq); i { case 0: return &v.state case 1: @@ -2011,7 +2104,7 @@ func file_friend_friend_msg_proto_init() { } } file_friend_friend_msg_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FriendSearchResp); i { + switch v := v.(*FriendApplyListResp); i { case 0: return &v.state case 1: @@ -2023,7 +2116,7 @@ func file_friend_friend_msg_proto_init() { } } file_friend_friend_msg_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FriendBlackListReq); i { + switch v := v.(*FriendSearchReq); i { case 0: return &v.state case 1: @@ -2035,7 +2128,7 @@ func file_friend_friend_msg_proto_init() { } } file_friend_friend_msg_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FriendBlackListResp); i { + switch v := v.(*FriendSearchResp); i { case 0: return &v.state case 1: @@ -2047,7 +2140,7 @@ func file_friend_friend_msg_proto_init() { } } file_friend_friend_msg_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FriendBlackAddReq); i { + switch v := v.(*FriendBlackListReq); i { case 0: return &v.state case 1: @@ -2059,7 +2152,7 @@ func file_friend_friend_msg_proto_init() { } } file_friend_friend_msg_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FriendBlackAddResp); i { + switch v := v.(*FriendBlackListResp); i { case 0: return &v.state case 1: @@ -2071,7 +2164,7 @@ func file_friend_friend_msg_proto_init() { } } file_friend_friend_msg_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FriendDelBlackReq); i { + switch v := v.(*FriendBlackAddReq); i { case 0: return &v.state case 1: @@ -2083,7 +2176,7 @@ func file_friend_friend_msg_proto_init() { } } file_friend_friend_msg_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FriendDelBlackResp); i { + switch v := v.(*FriendBlackAddResp); i { case 0: return &v.state case 1: @@ -2095,7 +2188,7 @@ func file_friend_friend_msg_proto_init() { } } file_friend_friend_msg_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FriendReceiveReq); i { + switch v := v.(*FriendDelBlackReq); i { case 0: return &v.state case 1: @@ -2107,7 +2200,7 @@ func file_friend_friend_msg_proto_init() { } } file_friend_friend_msg_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FriendReceiveResp); i { + switch v := v.(*FriendDelBlackResp); i { case 0: return &v.state case 1: @@ -2119,7 +2212,7 @@ func file_friend_friend_msg_proto_init() { } } file_friend_friend_msg_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FriendGiveReq); i { + switch v := v.(*FriendReceiveReq); i { case 0: return &v.state case 1: @@ -2131,7 +2224,7 @@ func file_friend_friend_msg_proto_init() { } } file_friend_friend_msg_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FriendGiveResp); i { + switch v := v.(*FriendReceiveResp); i { case 0: return &v.state case 1: @@ -2143,7 +2236,7 @@ func file_friend_friend_msg_proto_init() { } } file_friend_friend_msg_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FriendTotalReq); i { + switch v := v.(*FriendGiveReq); i { case 0: return &v.state case 1: @@ -2155,7 +2248,7 @@ func file_friend_friend_msg_proto_init() { } } file_friend_friend_msg_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FriendTotalResp); i { + switch v := v.(*FriendGiveResp); i { case 0: return &v.state case 1: @@ -2167,7 +2260,7 @@ func file_friend_friend_msg_proto_init() { } } file_friend_friend_msg_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FriendZanlistReq); i { + switch v := v.(*FriendTotalReq); i { case 0: return &v.state case 1: @@ -2179,7 +2272,7 @@ func file_friend_friend_msg_proto_init() { } } file_friend_friend_msg_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FriendZanlistResp); i { + switch v := v.(*FriendTotalResp); i { case 0: return &v.state case 1: @@ -2191,7 +2284,7 @@ func file_friend_friend_msg_proto_init() { } } file_friend_friend_msg_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FriendZanReq); i { + switch v := v.(*FriendZanlistReq); i { case 0: return &v.state case 1: @@ -2203,7 +2296,7 @@ func file_friend_friend_msg_proto_init() { } } file_friend_friend_msg_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FriendZanResp); i { + switch v := v.(*FriendZanlistResp); i { case 0: return &v.state case 1: @@ -2215,7 +2308,7 @@ func file_friend_friend_msg_proto_init() { } } file_friend_friend_msg_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FriendZanreceiveReq); i { + switch v := v.(*FriendZanReq); i { case 0: return &v.state case 1: @@ -2227,6 +2320,30 @@ func file_friend_friend_msg_proto_init() { } } file_friend_friend_msg_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FriendZanResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_friend_friend_msg_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FriendZanreceiveReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_friend_friend_msg_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FriendZanreceiveResp); i { case 0: return &v.state @@ -2245,7 +2362,7 @@ func file_friend_friend_msg_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_friend_friend_msg_proto_rawDesc, NumEnums: 0, - NumMessages: 33, + NumMessages: 35, NumExtensions: 0, NumServices: 0, }, diff --git a/pb/rtask_db.pb.go b/pb/rtask_db.pb.go new file mode 100644 index 000000000..a556aea36 --- /dev/null +++ b/pb/rtask_db.pb.go @@ -0,0 +1,170 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.0 +// protoc v3.20.0 +// source: rtask/rtask_db.proto + +package pb + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type DBRtask struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id" bson:"_id"` //ID + Uid string `protobuf:"bytes,2,opt,name=uid,proto3" json:"uid" bson:"uid"` //用户ID + FrtaskIds []int32 `protobuf:"varint,3,rep,packed,name=frtaskIds,proto3" json:"frtaskIds" bson:"frtaskIds"` //已完成的任务Id + NextRtaskId int32 `protobuf:"varint,4,opt,name=nextRtaskId,proto3" json:"nextRtaskId"` //@go_tags(`bson:"nextRtaskId"`)下个任务Id +} + +func (x *DBRtask) Reset() { + *x = DBRtask{} + if protoimpl.UnsafeEnabled { + mi := &file_rtask_rtask_db_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DBRtask) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DBRtask) ProtoMessage() {} + +func (x *DBRtask) ProtoReflect() protoreflect.Message { + mi := &file_rtask_rtask_db_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DBRtask.ProtoReflect.Descriptor instead. +func (*DBRtask) Descriptor() ([]byte, []int) { + return file_rtask_rtask_db_proto_rawDescGZIP(), []int{0} +} + +func (x *DBRtask) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *DBRtask) GetUid() string { + if x != nil { + return x.Uid + } + return "" +} + +func (x *DBRtask) GetFrtaskIds() []int32 { + if x != nil { + return x.FrtaskIds + } + return nil +} + +func (x *DBRtask) GetNextRtaskId() int32 { + if x != nil { + return x.NextRtaskId + } + return 0 +} + +var File_rtask_rtask_db_proto protoreflect.FileDescriptor + +var file_rtask_rtask_db_proto_rawDesc = []byte{ + 0x0a, 0x14, 0x72, 0x74, 0x61, 0x73, 0x6b, 0x2f, 0x72, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x64, 0x62, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x6b, 0x0a, 0x07, 0x44, 0x42, 0x52, 0x74, 0x61, 0x73, + 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x75, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x72, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x73, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, 0x66, 0x72, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, + 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x6e, 0x65, 0x78, 0x74, 0x52, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6e, 0x65, 0x78, 0x74, 0x52, 0x74, 0x61, 0x73, + 0x6b, 0x49, 0x64, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, +} + +var ( + file_rtask_rtask_db_proto_rawDescOnce sync.Once + file_rtask_rtask_db_proto_rawDescData = file_rtask_rtask_db_proto_rawDesc +) + +func file_rtask_rtask_db_proto_rawDescGZIP() []byte { + file_rtask_rtask_db_proto_rawDescOnce.Do(func() { + file_rtask_rtask_db_proto_rawDescData = protoimpl.X.CompressGZIP(file_rtask_rtask_db_proto_rawDescData) + }) + return file_rtask_rtask_db_proto_rawDescData +} + +var file_rtask_rtask_db_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_rtask_rtask_db_proto_goTypes = []interface{}{ + (*DBRtask)(nil), // 0: DBRtask +} +var file_rtask_rtask_db_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_rtask_rtask_db_proto_init() } +func file_rtask_rtask_db_proto_init() { + if File_rtask_rtask_db_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_rtask_rtask_db_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DBRtask); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_rtask_rtask_db_proto_rawDesc, + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_rtask_rtask_db_proto_goTypes, + DependencyIndexes: file_rtask_rtask_db_proto_depIdxs, + MessageInfos: file_rtask_rtask_db_proto_msgTypes, + }.Build() + File_rtask_rtask_db_proto = out.File + file_rtask_rtask_db_proto_rawDesc = nil + file_rtask_rtask_db_proto_goTypes = nil + file_rtask_rtask_db_proto_depIdxs = nil +} diff --git a/pb/rtask_msg.pb.go b/pb/rtask_msg.pb.go new file mode 100644 index 000000000..a23959e04 --- /dev/null +++ b/pb/rtask_msg.pb.go @@ -0,0 +1,268 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.0 +// protoc v3.20.0 +// source: rtask/rtask_msg.proto + +package pb + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// 对话选项 +type RtaskChooseReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + RtaskId int32 `protobuf:"varint,1,opt,name=rtaskId,proto3" json:"rtaskId"` + ChooseId int32 `protobuf:"varint,2,opt,name=chooseId,proto3" json:"chooseId"` +} + +func (x *RtaskChooseReq) Reset() { + *x = RtaskChooseReq{} + if protoimpl.UnsafeEnabled { + mi := &file_rtask_rtask_msg_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RtaskChooseReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RtaskChooseReq) ProtoMessage() {} + +func (x *RtaskChooseReq) ProtoReflect() protoreflect.Message { + mi := &file_rtask_rtask_msg_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RtaskChooseReq.ProtoReflect.Descriptor instead. +func (*RtaskChooseReq) Descriptor() ([]byte, []int) { + return file_rtask_rtask_msg_proto_rawDescGZIP(), []int{0} +} + +func (x *RtaskChooseReq) GetRtaskId() int32 { + if x != nil { + return x.RtaskId + } + return 0 +} + +func (x *RtaskChooseReq) GetChooseId() int32 { + if x != nil { + return x.ChooseId + } + return 0 +} + +type RtaskChooseResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *RtaskChooseResp) Reset() { + *x = RtaskChooseResp{} + if protoimpl.UnsafeEnabled { + mi := &file_rtask_rtask_msg_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RtaskChooseResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RtaskChooseResp) ProtoMessage() {} + +func (x *RtaskChooseResp) ProtoReflect() protoreflect.Message { + mi := &file_rtask_rtask_msg_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RtaskChooseResp.ProtoReflect.Descriptor instead. +func (*RtaskChooseResp) Descriptor() ([]byte, []int) { + return file_rtask_rtask_msg_proto_rawDescGZIP(), []int{1} +} + +// 任务完成推送 +type RtaskFinishPush struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + RtaskId int32 `protobuf:"varint,1,opt,name=rtaskId,proto3" json:"rtaskId"` +} + +func (x *RtaskFinishPush) Reset() { + *x = RtaskFinishPush{} + if protoimpl.UnsafeEnabled { + mi := &file_rtask_rtask_msg_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RtaskFinishPush) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RtaskFinishPush) ProtoMessage() {} + +func (x *RtaskFinishPush) ProtoReflect() protoreflect.Message { + mi := &file_rtask_rtask_msg_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RtaskFinishPush.ProtoReflect.Descriptor instead. +func (*RtaskFinishPush) Descriptor() ([]byte, []int) { + return file_rtask_rtask_msg_proto_rawDescGZIP(), []int{2} +} + +func (x *RtaskFinishPush) GetRtaskId() int32 { + if x != nil { + return x.RtaskId + } + return 0 +} + +var File_rtask_rtask_msg_proto protoreflect.FileDescriptor + +var file_rtask_rtask_msg_proto_rawDesc = []byte{ + 0x0a, 0x15, 0x72, 0x74, 0x61, 0x73, 0x6b, 0x2f, 0x72, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x6d, 0x73, + 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x46, 0x0a, 0x0e, 0x52, 0x74, 0x61, 0x73, 0x6b, + 0x43, 0x68, 0x6f, 0x6f, 0x73, 0x65, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x74, 0x61, + 0x73, 0x6b, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x72, 0x74, 0x61, 0x73, + 0x6b, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x6f, 0x6f, 0x73, 0x65, 0x49, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x63, 0x68, 0x6f, 0x6f, 0x73, 0x65, 0x49, 0x64, 0x22, + 0x11, 0x0a, 0x0f, 0x52, 0x74, 0x61, 0x73, 0x6b, 0x43, 0x68, 0x6f, 0x6f, 0x73, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x22, 0x2b, 0x0a, 0x0f, 0x52, 0x74, 0x61, 0x73, 0x6b, 0x46, 0x69, 0x6e, 0x69, 0x73, + 0x68, 0x50, 0x75, 0x73, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x72, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x42, + 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_rtask_rtask_msg_proto_rawDescOnce sync.Once + file_rtask_rtask_msg_proto_rawDescData = file_rtask_rtask_msg_proto_rawDesc +) + +func file_rtask_rtask_msg_proto_rawDescGZIP() []byte { + file_rtask_rtask_msg_proto_rawDescOnce.Do(func() { + file_rtask_rtask_msg_proto_rawDescData = protoimpl.X.CompressGZIP(file_rtask_rtask_msg_proto_rawDescData) + }) + return file_rtask_rtask_msg_proto_rawDescData +} + +var file_rtask_rtask_msg_proto_msgTypes = make([]protoimpl.MessageInfo, 3) +var file_rtask_rtask_msg_proto_goTypes = []interface{}{ + (*RtaskChooseReq)(nil), // 0: RtaskChooseReq + (*RtaskChooseResp)(nil), // 1: RtaskChooseResp + (*RtaskFinishPush)(nil), // 2: RtaskFinishPush +} +var file_rtask_rtask_msg_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_rtask_rtask_msg_proto_init() } +func file_rtask_rtask_msg_proto_init() { + if File_rtask_rtask_msg_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_rtask_rtask_msg_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RtaskChooseReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rtask_rtask_msg_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RtaskChooseResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rtask_rtask_msg_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RtaskFinishPush); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_rtask_rtask_msg_proto_rawDesc, + NumEnums: 0, + NumMessages: 3, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_rtask_rtask_msg_proto_goTypes, + DependencyIndexes: file_rtask_rtask_msg_proto_depIdxs, + MessageInfos: file_rtask_rtask_msg_proto_msgTypes, + }.Build() + File_rtask_rtask_msg_proto = out.File + file_rtask_rtask_msg_proto_rawDesc = nil + file_rtask_rtask_msg_proto_goTypes = nil + file_rtask_rtask_msg_proto_depIdxs = nil +} diff --git a/services/worker/main.go b/services/worker/main.go index 3b964b178..b1131ce5c 100644 --- a/services/worker/main.go +++ b/services/worker/main.go @@ -16,6 +16,7 @@ import ( "go_dreamfactory/modules/martialhall" "go_dreamfactory/modules/notify" "go_dreamfactory/modules/pagoda" + "go_dreamfactory/modules/rtask" "go_dreamfactory/modules/shop" "go_dreamfactory/modules/task" "go_dreamfactory/modules/user" @@ -63,6 +64,7 @@ func main() { pagoda.NewModule(), gourmet.NewModule(), martialhall.NewModule(), + rtask.NewModule(), ) } diff --git a/sys/configure/structs/Tables.go b/sys/configure/structs/Tables.go index 9cad90257..1c8bef618 100644 --- a/sys/configure/structs/Tables.go +++ b/sys/configure/structs/Tables.go @@ -11,9 +11,6 @@ package cfg type JsonLoader func(string) ([]map[string]interface{}, error) type Tables struct { - LocalizeConfig_CNCategory *LocalizeLocalizeConfig_CNCategory - LocalizeConfig_ENCategory *LocalizeLocalizeConfig_ENCategory - LocalizeConfig_TWCategory *LocalizeLocalizeConfig_TWCategory global *Gameglobal ui *Gameui plot *Gameplot @@ -70,6 +67,14 @@ type Tables struct { pagoda *Gamepagoda pagodaTaskReward *GamepagodaTaskReward pagodaSeasonReward *GamepagodaSeasonReward + pagodaseasonLoop *GamepagodaseasonLoop + rdtaskAll *GamerdtaskAll + rdtaskType *GamerdtaskType + rdtaskChoose *GamerdtaskChoose + kungfu_unlock *Gamekungfu_unlock + kungfu_masterworker *Gamekungfu_masterworker + Gourmet *GameGourmet + GourmetSkill *GameGourmetSkill } func NewTables(loader JsonLoader) (*Tables, error) { @@ -77,24 +82,6 @@ func NewTables(loader JsonLoader) (*Tables, error) { var buf []map[string]interface{} tables := &Tables{} - if buf, err = loader("LocalizeConfig_CN") ; err != nil { - return nil, err - } - if tables.LocalizeConfig_CNCategory, err = NewLocalizeLocalizeConfig_CNCategory(buf) ; err != nil { - return nil, err - } - if buf, err = loader("LocalizeConfig_EN") ; err != nil { - return nil, err - } - if tables.LocalizeConfig_ENCategory, err = NewLocalizeLocalizeConfig_ENCategory(buf) ; err != nil { - return nil, err - } - if buf, err = loader("LocalizeConfig_TW") ; err != nil { - return nil, err - } - if tables.LocalizeConfig_TWCategory, err = NewLocalizeLocalizeConfig_TWCategory(buf) ; err != nil { - return nil, err - } if buf, err = loader("game_global") ; err != nil { return nil, err } @@ -431,5 +418,53 @@ func NewTables(loader JsonLoader) (*Tables, error) { if tables.pagodaSeasonReward, err = NewGamepagodaSeasonReward(buf) ; err != nil { return nil, err } + if buf, err = loader("game_pagodaseasonloop") ; err != nil { + return nil, err + } + if tables.pagodaseasonLoop, err = NewGamepagodaseasonLoop(buf) ; err != nil { + return nil, err + } + if buf, err = loader("game_rdtaskall") ; err != nil { + return nil, err + } + if tables.rdtaskAll, err = NewGamerdtaskAll(buf) ; err != nil { + return nil, err + } + if buf, err = loader("game_rdtasktype") ; err != nil { + return nil, err + } + if tables.rdtaskType, err = NewGamerdtaskType(buf) ; err != nil { + return nil, err + } + if buf, err = loader("game_rdtaskchoose") ; err != nil { + return nil, err + } + if tables.rdtaskChoose, err = NewGamerdtaskChoose(buf) ; err != nil { + return nil, err + } + if buf, err = loader("game_kungfu_unlock") ; err != nil { + return nil, err + } + if tables.kungfu_unlock, err = NewGamekungfu_unlock(buf) ; err != nil { + return nil, err + } + if buf, err = loader("game_kungfu_masterworker") ; err != nil { + return nil, err + } + if tables.kungfu_masterworker, err = NewGamekungfu_masterworker(buf) ; err != nil { + return nil, err + } + if buf, err = loader("game_gourmet") ; err != nil { + return nil, err + } + if tables.Gourmet, err = NewGameGourmet(buf) ; err != nil { + return nil, err + } + if buf, err = loader("game_gourmetskill") ; err != nil { + return nil, err + } + if tables.GourmetSkill, err = NewGameGourmetSkill(buf) ; err != nil { + return nil, err + } return tables, nil } diff --git a/sys/configure/structs/game.rdtaskAll.go b/sys/configure/structs/game.rdtaskAll.go new file mode 100644 index 000000000..7ccb34b8b --- /dev/null +++ b/sys/configure/structs/game.rdtaskAll.go @@ -0,0 +1,42 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +package cfg + +type GamerdtaskAll struct { + _dataMap map[int32]*GamerdtaskAllData + _dataList []*GamerdtaskAllData +} + +func NewGamerdtaskAll(_buf []map[string]interface{}) (*GamerdtaskAll, error) { + _dataList := make([]*GamerdtaskAllData, 0, len(_buf)) + dataMap := make(map[int32]*GamerdtaskAllData) + for _, _ele_ := range _buf { + if _v, err2 := DeserializeGamerdtaskAllData(_ele_); err2 != nil { + return nil, err2 + } else { + _dataList = append(_dataList, _v) + dataMap[_v.Id] = _v + } + } + return &GamerdtaskAll{_dataList:_dataList, _dataMap:dataMap}, nil +} + +func (table *GamerdtaskAll) GetDataMap() map[int32]*GamerdtaskAllData { + return table._dataMap +} + +func (table *GamerdtaskAll) GetDataList() []*GamerdtaskAllData { + return table._dataList +} + +func (table *GamerdtaskAll) Get(key int32) *GamerdtaskAllData { + return table._dataMap[key] +} + + diff --git a/sys/configure/structs/game.rdtaskAllData.go b/sys/configure/structs/game.rdtaskAllData.go new file mode 100644 index 000000000..c438ec8b7 --- /dev/null +++ b/sys/configure/structs/game.rdtaskAllData.go @@ -0,0 +1,94 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +package cfg + +import "errors" + +type GamerdtaskAllData struct { + Id int32 + Type int32 + Lastend int32 + RdtaksNum []int32 + Aftertaks int32 + Icetime int32 + Tag int32 + Story int32 + Completetask int32 + Chooseid []int32 + Reword []*Gameatn +} + +const TypeId_GamerdtaskAllData = 762735928 + +func (*GamerdtaskAllData) GetTypeId() int32 { + return 762735928 +} + +func (_v *GamerdtaskAllData)Deserialize(_buf map[string]interface{}) (err error) { + { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["id"].(float64); !_ok_ { err = errors.New("id error"); return }; _v.Id = int32(_tempNum_) } + { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["type"].(float64); !_ok_ { err = errors.New("type error"); return }; _v.Type = int32(_tempNum_) } + { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["lastend"].(float64); !_ok_ { err = errors.New("lastend error"); return }; _v.Lastend = int32(_tempNum_) } + { + var _arr_ []interface{} + var _ok_ bool + if _arr_, _ok_ = _buf["rdtaks_num"].([]interface{}); !_ok_ { err = errors.New("rdtaks_num error"); return } + + _v.RdtaksNum = make([]int32, 0, len(_arr_)) + + for _, _e_ := range _arr_ { + var _list_v_ int32 + { var _ok_ bool; var _x_ float64; if _x_, _ok_ = _e_.(float64); !_ok_ { err = errors.New("_list_v_ error"); return }; _list_v_ = int32(_x_) } + _v.RdtaksNum = append(_v.RdtaksNum, _list_v_) + } + } + + { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["aftertaks"].(float64); !_ok_ { err = errors.New("aftertaks error"); return }; _v.Aftertaks = int32(_tempNum_) } + { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["icetime"].(float64); !_ok_ { err = errors.New("icetime error"); return }; _v.Icetime = int32(_tempNum_) } + { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["tag"].(float64); !_ok_ { err = errors.New("tag error"); return }; _v.Tag = int32(_tempNum_) } + { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["story"].(float64); !_ok_ { err = errors.New("story error"); return }; _v.Story = int32(_tempNum_) } + { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["completetask"].(float64); !_ok_ { err = errors.New("completetask error"); return }; _v.Completetask = int32(_tempNum_) } + { + var _arr_ []interface{} + var _ok_ bool + if _arr_, _ok_ = _buf["chooseid"].([]interface{}); !_ok_ { err = errors.New("chooseid error"); return } + + _v.Chooseid = make([]int32, 0, len(_arr_)) + + for _, _e_ := range _arr_ { + var _list_v_ int32 + { var _ok_ bool; var _x_ float64; if _x_, _ok_ = _e_.(float64); !_ok_ { err = errors.New("_list_v_ error"); return }; _list_v_ = int32(_x_) } + _v.Chooseid = append(_v.Chooseid, _list_v_) + } + } + + { + var _arr_ []interface{} + var _ok_ bool + if _arr_, _ok_ = _buf["reword"].([]interface{}); !_ok_ { err = errors.New("reword error"); return } + + _v.Reword = make([]*Gameatn, 0, len(_arr_)) + + for _, _e_ := range _arr_ { + var _list_v_ *Gameatn + { var _ok_ bool; var _x_ map[string]interface{}; if _x_, _ok_ = _e_.(map[string]interface{}); !_ok_ { err = errors.New("_list_v_ error"); return }; if _list_v_, err = DeserializeGameatn(_x_); err != nil { return } } + _v.Reword = append(_v.Reword, _list_v_) + } + } + + return +} + +func DeserializeGamerdtaskAllData(_buf map[string]interface{}) (*GamerdtaskAllData, error) { + v := &GamerdtaskAllData{} + if err := v.Deserialize(_buf); err == nil { + return v, nil + } else { + return nil, err + } +} diff --git a/sys/configure/structs/game.rdtaskChoose.go b/sys/configure/structs/game.rdtaskChoose.go new file mode 100644 index 000000000..a848533a1 --- /dev/null +++ b/sys/configure/structs/game.rdtaskChoose.go @@ -0,0 +1,42 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +package cfg + +type GamerdtaskChoose struct { + _dataMap map[int32]*GamerdtaskChooseData + _dataList []*GamerdtaskChooseData +} + +func NewGamerdtaskChoose(_buf []map[string]interface{}) (*GamerdtaskChoose, error) { + _dataList := make([]*GamerdtaskChooseData, 0, len(_buf)) + dataMap := make(map[int32]*GamerdtaskChooseData) + for _, _ele_ := range _buf { + if _v, err2 := DeserializeGamerdtaskChooseData(_ele_); err2 != nil { + return nil, err2 + } else { + _dataList = append(_dataList, _v) + dataMap[_v.Chooseid] = _v + } + } + return &GamerdtaskChoose{_dataList:_dataList, _dataMap:dataMap}, nil +} + +func (table *GamerdtaskChoose) GetDataMap() map[int32]*GamerdtaskChooseData { + return table._dataMap +} + +func (table *GamerdtaskChoose) GetDataList() []*GamerdtaskChooseData { + return table._dataList +} + +func (table *GamerdtaskChoose) Get(key int32) *GamerdtaskChooseData { + return table._dataMap[key] +} + + diff --git a/sys/configure/structs/game.rdtaskChooseData.go b/sys/configure/structs/game.rdtaskChooseData.go new file mode 100644 index 000000000..f8b4fbe9d --- /dev/null +++ b/sys/configure/structs/game.rdtaskChooseData.go @@ -0,0 +1,54 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +package cfg + +import "errors" + +type GamerdtaskChooseData struct { + Chooseid int32 + Num int32 + RdtaksNum int32 + Need []int32 +} + +const TypeId_GamerdtaskChooseData = 1478012660 + +func (*GamerdtaskChooseData) GetTypeId() int32 { + return 1478012660 +} + +func (_v *GamerdtaskChooseData)Deserialize(_buf map[string]interface{}) (err error) { + { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["chooseid"].(float64); !_ok_ { err = errors.New("chooseid error"); return }; _v.Chooseid = int32(_tempNum_) } + { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["num"].(float64); !_ok_ { err = errors.New("num error"); return }; _v.Num = int32(_tempNum_) } + { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["rdtaks_num"].(float64); !_ok_ { err = errors.New("rdtaks_num error"); return }; _v.RdtaksNum = int32(_tempNum_) } + { + var _arr_ []interface{} + var _ok_ bool + if _arr_, _ok_ = _buf["need"].([]interface{}); !_ok_ { err = errors.New("need error"); return } + + _v.Need = make([]int32, 0, len(_arr_)) + + for _, _e_ := range _arr_ { + var _list_v_ int32 + { var _ok_ bool; var _x_ float64; if _x_, _ok_ = _e_.(float64); !_ok_ { err = errors.New("_list_v_ error"); return }; _list_v_ = int32(_x_) } + _v.Need = append(_v.Need, _list_v_) + } + } + + return +} + +func DeserializeGamerdtaskChooseData(_buf map[string]interface{}) (*GamerdtaskChooseData, error) { + v := &GamerdtaskChooseData{} + if err := v.Deserialize(_buf); err == nil { + return v, nil + } else { + return nil, err + } +} diff --git a/sys/configure/structs/game.rdtaskType.go b/sys/configure/structs/game.rdtaskType.go new file mode 100644 index 000000000..a666ffac2 --- /dev/null +++ b/sys/configure/structs/game.rdtaskType.go @@ -0,0 +1,42 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +package cfg + +type GamerdtaskType struct { + _dataMap map[int32]*GamerdtaskTypeData + _dataList []*GamerdtaskTypeData +} + +func NewGamerdtaskType(_buf []map[string]interface{}) (*GamerdtaskType, error) { + _dataList := make([]*GamerdtaskTypeData, 0, len(_buf)) + dataMap := make(map[int32]*GamerdtaskTypeData) + for _, _ele_ := range _buf { + if _v, err2 := DeserializeGamerdtaskTypeData(_ele_); err2 != nil { + return nil, err2 + } else { + _dataList = append(_dataList, _v) + dataMap[_v.RdtaksNum] = _v + } + } + return &GamerdtaskType{_dataList:_dataList, _dataMap:dataMap}, nil +} + +func (table *GamerdtaskType) GetDataMap() map[int32]*GamerdtaskTypeData { + return table._dataMap +} + +func (table *GamerdtaskType) GetDataList() []*GamerdtaskTypeData { + return table._dataList +} + +func (table *GamerdtaskType) Get(key int32) *GamerdtaskTypeData { + return table._dataMap[key] +} + + diff --git a/sys/configure/structs/game.rdtaskTypeData.go b/sys/configure/structs/game.rdtaskTypeData.go new file mode 100644 index 000000000..880f3aecf --- /dev/null +++ b/sys/configure/structs/game.rdtaskTypeData.go @@ -0,0 +1,47 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +package cfg + +import "errors" + +type GamerdtaskTypeData struct { + RdtaksNum int32 + Typdes int32 + Datatime int32 + TyptaskId int32 + Data1 int32 + Data2 int32 + Data3 int32 +} + +const TypeId_GamerdtaskTypeData = -279607465 + +func (*GamerdtaskTypeData) GetTypeId() int32 { + return -279607465 +} + +func (_v *GamerdtaskTypeData)Deserialize(_buf map[string]interface{}) (err error) { + { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["rdtaks_num"].(float64); !_ok_ { err = errors.New("rdtaks_num error"); return }; _v.RdtaksNum = int32(_tempNum_) } + { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["typdes"].(float64); !_ok_ { err = errors.New("typdes error"); return }; _v.Typdes = int32(_tempNum_) } + { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["datatime"].(float64); !_ok_ { err = errors.New("datatime error"); return }; _v.Datatime = int32(_tempNum_) } + { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["typtask_id"].(float64); !_ok_ { err = errors.New("typtask_id error"); return }; _v.TyptaskId = int32(_tempNum_) } + { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["data1"].(float64); !_ok_ { err = errors.New("data1 error"); return }; _v.Data1 = int32(_tempNum_) } + { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["data2"].(float64); !_ok_ { err = errors.New("data2 error"); return }; _v.Data2 = int32(_tempNum_) } + { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["data3"].(float64); !_ok_ { err = errors.New("data3 error"); return }; _v.Data3 = int32(_tempNum_) } + return +} + +func DeserializeGamerdtaskTypeData(_buf map[string]interface{}) (*GamerdtaskTypeData, error) { + v := &GamerdtaskTypeData{} + if err := v.Deserialize(_buf); err == nil { + return v, nil + } else { + return nil, err + } +} diff --git a/utils/strings.go b/utils/strings.go index c533256e6..dfb17a1ba 100644 --- a/utils/strings.go +++ b/utils/strings.go @@ -20,6 +20,16 @@ func UIdSplit(uid string) (string, string, bool) { return s[0], s[1], true } +func Findx[T string | int32](slice []T, val T) (int, bool) { + for i, item := range slice { + if item == val { + return i, true + } + } + return -1, false +} + +// Deprecated: Use Findx instead func Find(slice []string, val string) (int, bool) { for i, item := range slice { if item == val { From 4bb8715e7fad6dc6e15718a13b7d810310ad86c9 Mon Sep 17 00:00:00 2001 From: wh_zcy Date: Thu, 18 Aug 2022 09:28:12 +0800 Subject: [PATCH 06/10] gui --- cmd/v2/lib/common/lang.go | 1 + cmd/v2/main.go | 33 +++++++++++++++++++++++++++++++-- cmd/v2/ui/app_container.go | 9 +++++---- cmd/v2/ui/app_interface.go | 4 ++++ cmd/v2/ui/mainwindow.go | 38 ++++++++++++++++++-------------------- cmd/v2/ui/tool_bar.go | 31 +++++++++++++++---------------- go.mod | 2 +- go.sum | 10 +++------- 8 files changed, 78 insertions(+), 50 deletions(-) diff --git a/cmd/v2/lib/common/lang.go b/cmd/v2/lib/common/lang.go index ab69b2374..d06ee0f1d 100644 --- a/cmd/v2/lib/common/lang.go +++ b/cmd/v2/lib/common/lang.go @@ -88,6 +88,7 @@ const ( // toolbar TOOLBAR_MONITOR = "监控" TOOLBAR_TESTER = "接口测试" + TOOLBAR_GEN = "生成代码" //monitor APP_MONITOR_TITLE_ID = "编号" diff --git a/cmd/v2/main.go b/cmd/v2/main.go index 88213f7cd..59a0cb173 100644 --- a/cmd/v2/main.go +++ b/cmd/v2/main.go @@ -10,7 +10,10 @@ import ( "io" "os" + "fyne.io/fyne/v2" "fyne.io/fyne/v2/app" + "fyne.io/fyne/v2/container" + "fyne.io/fyne/v2/widget" "github.com/sirupsen/logrus" ) @@ -18,6 +21,7 @@ var ( connService service.ConnService pttService service.PttService configService service.ConfigService + dbService service.DbService obs = observer.NewObserver() logger *logrus.Logger ) @@ -31,6 +35,11 @@ func init() { os.Exit(1) } + if err = setupDb(); err != nil { + fmt.Println(err) + os.Exit(1) + } + // initialize logger if err = setupLogger(); err != nil { fmt.Println(err) @@ -53,9 +62,24 @@ func main() { app := app.NewWithID("protocol-test-tool") app.SetIcon(theme.ResourceIconPng) appUI := ui.NewUI(app, configService, connService, pttService, obs) - mainWindow := ui.NewMainWindow(appUI) - mainWindow.CreateWindow(common.APP_NAME, 1366, 768, true) + //创建enter + w := fyne.CurrentApp().NewWindow("") + w.SetContent(container.NewGridWithColumns(2, + widget.NewButton("工具", func() { + toolWindow := ui.NewToolWindow(appUI) + toolWindow.CreateWindow(common.APP_NAME, 1366, 768, true) + w.Hide() + }), + widget.NewButton("登服", func() { + mainWindow := ui.NewMainWindow(appUI) + mainWindow.CreateWindow(common.APP_NAME, 1366, 768, true) + w.Hide() + }))) + w.SetFixedSize(true) + w.Resize(fyne.NewSize(300, 100)) + w.Show() + w.CenterOnScreen() logrus.WithField("version", app.Metadata().Version).Info("app starting") appUI.Run() } @@ -70,6 +94,11 @@ func setupWsConn() (err error) { return } +func setupDb() (err error) { + dbService = service.NewDbService() + return +} + func setupConfig() (err error) { configService, err = service.NewConfigService() if err != nil { diff --git a/cmd/v2/ui/app_container.go b/cmd/v2/ui/app_container.go index 98af71c95..a8db6b5cf 100644 --- a/cmd/v2/ui/app_container.go +++ b/cmd/v2/ui/app_container.go @@ -10,10 +10,11 @@ type appContainer struct { appStatusMap map[string]appStatus container.DocTabs obs observer.Observer + ai []appInterface } -func newAppContainer(obs observer.Observer) *appContainer { - at := &appContainer{obs: obs} +func newAppContainer(ai []appInterface, obs observer.Observer) *appContainer { + at := &appContainer{ai: ai, obs: obs} at.appStatusMap = make(map[string]appStatus) at.CloseIntercept = at.closeHandle @@ -30,7 +31,7 @@ type appStatus struct { } func (at *appContainer) closeHandle(tab *container.TabItem) { - for _, app := range appRegister { + for _, app := range at.ai { if app.GetAppName() == tab.Text { if app.OnClose() { at.Remove(tab) @@ -60,7 +61,7 @@ func (at *appContainer) openApp(app appInterface) error { // open default app func (at *appContainer) openDefaultApp() (string, error) { var firstTab *container.TabItem - for _, app := range appRegister { + for _, app := range at.ai { if app.OpenDefault() { if err := at.initApp(app); err != nil { return app.GetAppName(), err diff --git a/cmd/v2/ui/app_interface.go b/cmd/v2/ui/app_interface.go index ed15e862d..a3ed7d9b8 100644 --- a/cmd/v2/ui/app_interface.go +++ b/cmd/v2/ui/app_interface.go @@ -19,6 +19,10 @@ var ( &appMonitor{}, &appTester{}, } + + toolRegister = []appInterface{ + &appGen{}, + } ) type appAdapter struct { diff --git a/cmd/v2/ui/mainwindow.go b/cmd/v2/ui/mainwindow.go index 83d835ec8..3b5016afe 100644 --- a/cmd/v2/ui/mainwindow.go +++ b/cmd/v2/ui/mainwindow.go @@ -16,6 +16,7 @@ import ( "fyne.io/fyne/v2" "fyne.io/fyne/v2/container" "fyne.io/fyne/v2/dialog" + "fyne.io/fyne/v2/theme" "fyne.io/fyne/v2/widget" "github.com/BabySid/gobase" "github.com/Pallinder/go-randomdata" @@ -25,6 +26,7 @@ import ( var ( globalWin *MainWindowImpl + toolWin *ToolWindowImpl ) type MainWindow interface { @@ -49,19 +51,6 @@ func NewMainWindow(ui *UIImpl) MainWindow { UIImpl: *ui, } - // main menu - // mw.mm = newMainMenu() - // mw.w.SetMainMenu(mw.mm.MainMenu) - - // status bar - mw.sb = newStatusBar() - - // tool bar - mw.tb = newToolBar() - - // main app tabs - mw.at = newAppContainer(ui.obs) - globalWin = mw ui.obs.AddListener(observer.EVENT_PING, observer.Listener{ @@ -95,13 +84,25 @@ func (ui *MainWindowImpl) createWindowContainer() { ui.sb = newStatusBar() // tool bar - ui.tb = newToolBar() + toolbar := widget.NewToolbar( + widget.NewToolbarAction(theme.ComputerIcon(), func() { + openApp2(common.TOOLBAR_MONITOR) + }), + widget.NewToolbarAction(theme.AccountIcon(), func() { + openApp2(common.TOOLBAR_TESTER) + }), + widget.NewToolbarSpacer(), + widget.NewToolbarAction(theme.HelpIcon(), func() { + showAbout() + }), + ) + ui.tb = newToolBar(toolbar) // Fun Toys ui.toys = newToys(ui.obs) // main app tabs - ui.at = newAppContainer(ui.obs) + ui.at = newAppContainer(appRegister, ui.obs) content := container.NewBorder(ui.tb.toolbar, ui.sb.widget, nil, ui.toys.widget, ui.at) ui.w.SetContent(content) ui.w.SetCloseIntercept(ui.quiteHandle) @@ -238,14 +239,11 @@ func (ui *MainWindowImpl) createChooseServerWindow( // createLoginWin func (ui *MainWindowImpl) createLoginWin(sid, sname string) { - //form account := widget.NewEntry() - account.Text = "user8080" //default account - // account.Validator = validation.NewRegexp(`^(\s*)$`, "account required") - // password := widget.NewPasswordEntry() + // account.Text = "user8080" //default account + items := []*widget.FormItem{ widget.NewFormItem(common.LABEL_ACCOUNT, account), - // widget.NewFormItem("password", password), } dialog.ShowForm(common.FORM_TITLE_LOGIN, common.BUTTON_LOGIN, common.BUTTON_CANCEL, items, func(b bool) { diff --git a/cmd/v2/ui/tool_bar.go b/cmd/v2/ui/tool_bar.go index acb160b54..ff3041dfc 100644 --- a/cmd/v2/ui/tool_bar.go +++ b/cmd/v2/ui/tool_bar.go @@ -2,9 +2,7 @@ package ui import ( "fmt" - "go_dreamfactory/cmd/v2/lib/common" - "fyne.io/fyne/v2/theme" "fyne.io/fyne/v2/widget" "github.com/sirupsen/logrus" ) @@ -13,26 +11,16 @@ type toolBar struct { toolbar *widget.Toolbar } -func newToolBar() *toolBar { +func newToolBar(items *widget.Toolbar) *toolBar { var tb toolBar // mainwindow toolbar - tb.toolbar = widget.NewToolbar( - widget.NewToolbarAction(theme.ComputerIcon(), func() { - openApp(common.TOOLBAR_MONITOR) - }), - widget.NewToolbarAction(theme.AccountIcon(), func() { - openApp(common.TOOLBAR_TESTER) - }), - widget.NewToolbarSpacer(), - widget.NewToolbarAction(theme.HelpIcon(), func() { - showAbout() - }), - ) + tb.toolbar = items return &tb } -func openApp(name string) { +// open app2 +func openApp2(name string) { for _, app := range appRegister { if app.GetAppName() == name { err := globalWin.at.openApp(app) @@ -42,3 +30,14 @@ func openApp(name string) { } } } + +func openApp1(name string) { + for _, app := range toolRegister { + if app.GetAppName() == name { + err := toolWin.at.openApp(app) + if err != nil { + logrus.Error(fmt.Errorf("%s %v", app.GetAppName(), err)) + } + } + } +} diff --git a/go.mod b/go.mod index 6e1c857b1..64cd570ae 100644 --- a/go.mod +++ b/go.mod @@ -9,6 +9,7 @@ require ( github.com/Pallinder/go-randomdata v1.2.0 github.com/atotto/clipboard v0.1.4 github.com/axgle/mahonia v0.0.0-20180208002826-3358181d7394 + github.com/boltdb/bolt v1.3.1 github.com/dengsgo/math-engine v0.0.0-20220213125415-0351c3c75eca github.com/gin-gonic/gin v1.8.1 github.com/go-playground/validator/v10 v10.10.1 @@ -169,7 +170,6 @@ require ( golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f // indirect golang.org/x/text v0.3.7 // indirect golang.org/x/tools v0.1.12 // indirect - golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect gopkg.in/ini.v1 v1.62.0 // indirect gopkg.in/natefinch/lumberjack.v2 v2.0.0 // indirect gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 // indirect diff --git a/go.sum b/go.sum index 51c8b765f..7d9c231ec 100644 --- a/go.sum +++ b/go.sum @@ -92,6 +92,8 @@ github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+Ce github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bketelsen/crypt v0.0.4/go.mod h1:aI6NrJ0pMGgvZKL1iVgXLnfIFJtfV+bKCoqOes/6LfM= +github.com/boltdb/bolt v1.3.1 h1:JQmyP4ZBrce+ZQu0dY660FMfatumYDLun9hBCUVIkF4= +github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps= github.com/bradfitz/go-smtpd v0.0.0-20170404230938-deb6d6237625/go.mod h1:HYsPBTaaSFSlLx/70C2HPIMNZpVV8+vt/A+FMnYP11g= github.com/buger/jsonparser v0.0.0-20181115193947-bf1c66bbce23/go.mod h1:bbYlZJ7hK1yFx9hf58LP0zeX7UjIGs20ufpu3evjr+s= github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= @@ -766,7 +768,6 @@ github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -github.com/yuin/goldmark v1.4.1 h1:/vn0k+RBvwlxEmP5E7SZMqNxPhfMVFEJiykr15/0XKM= github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.13 h1:fVcFKWvrslecOb/tg+Cc05dkeYx540o0FuFt3nUVDoE= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= @@ -867,7 +868,6 @@ golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= -golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3 h1:kQgndtyPBW/JIYERgdxfwMYh3AVStj88WQTlNDi2a+o= golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 h1:6zppjxzCulZykYSLyVDYbneBfbaBIQPYMevg0bEwv2s= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= @@ -925,7 +925,6 @@ golang.org/x/net v0.0.0-20210916014120-12bc252f5db8/go.mod h1:9nx3DQGgdP8bBQD5qx golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211216030914-fe4d6282115f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20220407224826-aac1ed45d8e3 h1:EN5+DfgmRMvRUrMGERW2gQl3Vc+Z7ZMnI/xdEpPSf0c= golang.org/x/net v0.0.0-20220407224826-aac1ed45d8e3/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220722155237-a158d28d115b h1:PxfKdU9lEEDYjdIzOtC4qFWgkU2rGHdKlKowJSMN9h0= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= @@ -955,8 +954,8 @@ golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4 h1:uVc8UZUe6tr40fFVnUP5Oj+veunVezqYl9z7DYw9xzw= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1035,8 +1034,6 @@ golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220111092808-5a964db01320/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220408201424-a24fb2fb8a0f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220712014510-0a85c31ab51e h1:NHvCuwuS43lGnYhten69ZWqi2QOj/CiDNcKbVqwVoew= -golang.org/x/sys v0.0.0-20220712014510-0a85c31ab51e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f h1:v4INt8xihDGvnrfjMDVXGxw9wrfxYyCjk0KbXjhR55s= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= @@ -1123,7 +1120,6 @@ golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.6-0.20210726203631-07bc1bf47fb2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.8-0.20211022200916-316ba0b74098/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo= golang.org/x/tools v0.1.8/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= -golang.org/x/tools v0.1.10 h1:QjFRCZxdOhBJ/UNgnBZLbNV13DlbnK0quyivTnXJM20= golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= golang.org/x/tools v0.1.12 h1:VveCTK38A2rkS8ZqFY25HIDFscX5X9OoEhJd3quQmXU= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= From 6c258e903b6307d5e284208943169b359460d9ae Mon Sep 17 00:00:00 2001 From: wh_zcy Date: Thu, 18 Aug 2022 09:28:37 +0800 Subject: [PATCH 07/10] =?UTF-8?q?=E5=A5=BD=E5=8F=8B=E6=90=9C=E7=B4=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/friend/api_applylist.go | 2 ++ modules/friend/api_list.go | 2 ++ modules/friend/api_randlist.go | 33 +++++++++++++++++++++++++++++++++ modules/user/api_login.go | 2 +- modules/user/model_session.go | 11 +++++++++-- modules/user/module.go | 4 ++++ 6 files changed, 51 insertions(+), 3 deletions(-) create mode 100644 modules/friend/api_randlist.go diff --git a/modules/friend/api_applylist.go b/modules/friend/api_applylist.go index 503e0ab48..443576914 100644 --- a/modules/friend/api_applylist.go +++ b/modules/friend/api_applylist.go @@ -45,6 +45,8 @@ func (this *apiComp) ApplyList(session comm.IUserSession, req *pb.FriendApplyLis list = append(list, &pb.FriendBase{ UserId: userId, NickName: user.Name, + Level: user.Lv, + Avatar: user.Avatar, }) } diff --git a/modules/friend/api_list.go b/modules/friend/api_list.go index 264d1d36e..0a10684ef 100644 --- a/modules/friend/api_list.go +++ b/modules/friend/api_list.go @@ -44,6 +44,8 @@ func (this *apiComp) List(session comm.IUserSession, req *pb.FriendListReq) (cod list = append(list, &pb.FriendBase{ UserId: userId, NickName: user.Name, + Level: user.Lv, + Avatar: user.Avatar, }) } diff --git a/modules/friend/api_randlist.go b/modules/friend/api_randlist.go new file mode 100644 index 000000000..0a65574cc --- /dev/null +++ b/modules/friend/api_randlist.go @@ -0,0 +1,33 @@ +package friend + +import ( + "go_dreamfactory/comm" + "go_dreamfactory/pb" + + "google.golang.org/protobuf/proto" +) + +func (this *apiComp) RandlistCheck(session comm.IUserSession, req *pb.FriendOnlineReq) (code pb.ErrorCode) { + return +} + +func (this *apiComp) Randlist(session comm.IUserSession, req *pb.FriendOnlineReq) (code pb.ErrorCode, data proto.Message) { + var ( + self *pb.DBFriend + ) + //在线玩家 + + self = this.moduleFriend.modelFriend.GetFriend(session.GetUserId()) + if self == nil { + code = pb.ErrorCode_FriendSelfNoData + return + } + + // 好友列表 + // self.FriendIds + + // 已申请的好友 + // self.ApplyIds + + return +} diff --git a/modules/user/api_login.go b/modules/user/api_login.go index dcbacee7b..9c7425142 100644 --- a/modules/user/api_login.go +++ b/modules/user/api_login.go @@ -80,7 +80,7 @@ func (this *apiComp) Login(session comm.IUserSession, req *pb.UserLoginReq) (cod } //缓存user session - err = this.module.modelSession.Change(user.Uid, map[string]interface{}{ + err = this.module.modelSession.ChangeList("online", user.Uid, map[string]interface{}{ "uid": user.Uid, "sessionId": session.GetSessionId(), "serviceTag": session.GetServiecTag(), diff --git a/modules/user/model_session.go b/modules/user/model_session.go index b417f1b3f..040928571 100644 --- a/modules/user/model_session.go +++ b/modules/user/model_session.go @@ -21,10 +21,17 @@ func (this *ModelSession) Init(service core.IService, module core.IModule, comp //获取用户 func (this *ModelSession) getUserSession(uid string) (cuser *pb.CacheUser) { - cuser = &pb.CacheUser{} - if err := this.Get(uid, cuser); err != nil { + var sl []*pb.CacheUser + + if err := this.GetList("online", sl); err != nil { this.module.Errorf("GetUserSession err:%v", err) return } + + for _, v := range sl { + if v.Uid == uid { + return v + } + } return } diff --git a/modules/user/module.go b/modules/user/module.go index 2ae4b0316..63f5a405b 100644 --- a/modules/user/module.go +++ b/modules/user/module.go @@ -75,6 +75,10 @@ func (this *User) CleanSession(session comm.IUserSession) { this.modelSetting.Del(session.GetUserId(), db.SetDBMgoLog(false)) } +// 在线玩家列表 +func (this *User) UserOnline() { +} + //查询用户属性值 例如 金币 经验 func (this *User) QueryAttributeValue(uid string, attr string) (value int32) { user := this.modelUser.GetUser(uid) From e3a3f3396b24974dc763e285cee1e1070b838ddc Mon Sep 17 00:00:00 2001 From: wh_zcy Date: Thu, 18 Aug 2022 09:46:37 +0800 Subject: [PATCH 08/10] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bin/json/LocalizeConfig_CN.json | 4074 ----------------- bin/json/LocalizeConfig_EN.json | 4074 ----------------- bin/json/LocalizeConfig_TW.json | 4074 ----------------- bin/json/game_drawcom.json | 18 - bin/json/game_drawcost.json | 132 - bin/json/game_drawupdraw.json | 20 - bin/json/game_gourmetskill.json | 2 +- bin/json/game_pagodaseasonloop.json | 21 + bin/json/game_serverlist.json | 30 - bin/json/game_skillafteratk.json | 295 ++ bin/json/game_ui.json | 86 +- modules/rtask/config.go | 2 +- modules/rtask/model_rtask.go | 2 +- modules/rtask/module.go | 4 +- modules/web/config.go | 35 - sys/configure/structs/ALocalizeConfig.go | 40 - .../Localize.LocalizeConfig_CNCategory.go | 42 - .../Localize.LocalizeConfig_ENCategory.go | 42 - .../Localize.LocalizeConfig_TWCategory.go | 42 - sys/configure/structs/LocalizeConfig_CN.go | 37 - sys/configure/structs/LocalizeConfig_EN.go | 37 - sys/configure/structs/LocalizeConfig_TW.go | 37 - sys/configure/structs/Tables.go | 12 +- sys/configure/structs/game.RdtaksAll.go | 42 - sys/configure/structs/game.RdtaksAllData.go | 105 - sys/configure/structs/game.RdtaksChoose.go | 42 - .../structs/game.RdtaksChooseData.go | 41 - sys/configure/structs/game.RdtaksType.go | 42 - sys/configure/structs/game.RdtaksTypeData.go | 47 - .../structs/game.pagodaseasonLoop.go | 42 + .../structs/game.pagodaseasonLoopData.go | 65 + sys/configure/structs/game.rdtaskAll.go | 22 +- sys/configure/structs/game.rdtaskAllData.go | 14 +- sys/configure/structs/game.rdtaskChoose.go | 22 +- .../structs/game.rdtaskChooseData.go | 14 +- sys/configure/structs/game.rdtaskType.go | 22 +- sys/configure/structs/game.rdtaskTypeData.go | 14 +- sys/configure/structs/game.serverList.go | 42 - sys/configure/structs/game.serverListData.go | 33 - .../structs/game.skillAfteratkData.go | 2 + 40 files changed, 569 insertions(+), 13200 deletions(-) delete mode 100644 bin/json/LocalizeConfig_CN.json delete mode 100644 bin/json/LocalizeConfig_EN.json delete mode 100644 bin/json/LocalizeConfig_TW.json delete mode 100644 bin/json/game_drawcom.json delete mode 100644 bin/json/game_drawcost.json delete mode 100644 bin/json/game_drawupdraw.json create mode 100644 bin/json/game_pagodaseasonloop.json delete mode 100644 bin/json/game_serverlist.json delete mode 100644 sys/configure/structs/ALocalizeConfig.go delete mode 100644 sys/configure/structs/Localize.LocalizeConfig_CNCategory.go delete mode 100644 sys/configure/structs/Localize.LocalizeConfig_ENCategory.go delete mode 100644 sys/configure/structs/Localize.LocalizeConfig_TWCategory.go delete mode 100644 sys/configure/structs/LocalizeConfig_CN.go delete mode 100644 sys/configure/structs/LocalizeConfig_EN.go delete mode 100644 sys/configure/structs/LocalizeConfig_TW.go delete mode 100644 sys/configure/structs/game.RdtaksAll.go delete mode 100644 sys/configure/structs/game.RdtaksAllData.go delete mode 100644 sys/configure/structs/game.RdtaksChoose.go delete mode 100644 sys/configure/structs/game.RdtaksChooseData.go delete mode 100644 sys/configure/structs/game.RdtaksType.go delete mode 100644 sys/configure/structs/game.RdtaksTypeData.go create mode 100644 sys/configure/structs/game.pagodaseasonLoop.go create mode 100644 sys/configure/structs/game.pagodaseasonLoopData.go delete mode 100644 sys/configure/structs/game.serverList.go delete mode 100644 sys/configure/structs/game.serverListData.go diff --git a/bin/json/LocalizeConfig_CN.json b/bin/json/LocalizeConfig_CN.json deleted file mode 100644 index c3e146b04..000000000 --- a/bin/json/LocalizeConfig_CN.json +++ /dev/null @@ -1,4074 +0,0 @@ -[ - { - "key": "ChineseSimplified", - "text_cn": "简体中文" - }, - { - "key": "ChineseTraditional", - "text_cn": "繁体中文" - }, - { - "key": "English", - "text_cn": "英文" - }, - { - "key": "1", - "text_cn": "一" - }, - { - "key": "2", - "text_cn": "二" - }, - { - "key": "3", - "text_cn": "三" - }, - { - "key": "4", - "text_cn": "四" - }, - { - "key": "5", - "text_cn": "五" - }, - { - "key": "6", - "text_cn": "六" - }, - { - "key": "7", - "text_cn": "七" - }, - { - "key": "8", - "text_cn": "八" - }, - { - "key": "9", - "text_cn": "九" - }, - { - "key": "10", - "text_cn": "十" - }, - { - "key": "Login", - "text_cn": "登录" - }, - { - "key": "MomentDay1", - "text_cn": "{0}天前" - }, - { - "key": "MomentDay2", - "text_cn": "还有{0}天" - }, - { - "key": "MomentHour1", - "text_cn": "{0}小时前" - }, - { - "key": "MomentHour2", - "text_cn": "还有{0}小时" - }, - { - "key": "MomentMinutes1", - "text_cn": "{0}分钟前" - }, - { - "key": "MomentMinutes2", - "text_cn": "还有{0}分钟" - }, - { - "key": "MomentSeconds1", - "text_cn": "刚刚" - }, - { - "key": "MomentSeconds2", - "text_cn": "1分以内" - }, - { - "key": "Tuijian", - "text_cn": "推荐" - }, - { - "key": "Juese", - "text_cn": "角色" - }, - { - "key": "hero_13001", - "text_cn": "闪闪" - }, - { - "key": "hero_13002", - "text_cn": "食人鱼先生" - }, - { - "key": "hero_13003", - "text_cn": "啊啊" - }, - { - "key": "hero_13004", - "text_cn": "法夸德勋爵" - }, - { - "key": "hero_13005", - "text_cn": "大大" - }, - { - "key": "hero_14001", - "text_cn": "史图依克" - }, - { - "key": "hero_14002", - "text_cn": "大龙" - }, - { - "key": "hero_14003", - "text_cn": "亚丝翠" - }, - { - "key": "hero_14004", - "text_cn": "克莱尔·努涅斯" - }, - { - "key": "hero_14005", - "text_cn": "鹤大师" - }, - { - "key": "hero_14006", - "text_cn": "布兰奇" - }, - { - "key": "hero_14007", - "text_cn": "格里斯特王子" - }, - { - "key": "hero_15001", - "text_cn": "吉姆·莱克" - }, - { - "key": "hero_15002", - "text_cn": "船长" - }, - { - "key": "hero_15003", - "text_cn": "希沙窦斯" - }, - { - "key": "hero_15004", - "text_cn": "小欧" - }, - { - "key": "hero_15005", - "text_cn": "亚力克斯" - }, - { - "key": "hero_23001", - "text_cn": "斯梅克船长" - }, - { - "key": "hero_23002", - "text_cn": "警卫队长" - }, - { - "key": "hero_23003", - "text_cn": "泰德·邓普顿" - }, - { - "key": "hero_23004", - "text_cn": "吉姆·普雷斯科特" - }, - { - "key": "hero_24001", - "text_cn": "警长" - }, - { - "key": "hero_24002", - "text_cn": "牙仙" - }, - { - "key": "hero_24003", - "text_cn": "睡神沙人" - }, - { - "key": "hero_24004", - "text_cn": "邦尼兔" - }, - { - "key": "hero_24005", - "text_cn": "金猴" - }, - { - "key": "hero_24006", - "text_cn": "凯尔" - }, - { - "key": "hero_24007", - "text_cn": "小钱" - }, - { - "key": "hero_24008", - "text_cn": "暴芙那特" - }, - { - "key": "hero_24009", - "text_cn": "云朵先生" - }, - { - "key": "hero_25001", - "text_cn": "阿宝" - }, - { - "key": "hero_25002", - "text_cn": "沃尔夫先生" - }, - { - "key": "hero_25003", - "text_cn": "无牙仔" - }, - { - "key": "hero_25004", - "text_cn": "波比" - }, - { - "key": "hero_33001", - "text_cn": "巫嘎" - }, - { - "key": "hero_33002", - "text_cn": "坦克" - }, - { - "key": "hero_33003", - "text_cn": "胡德先生" - }, - { - "key": "hero_33004", - "text_cn": "普鲁格兰杰" - }, - { - "key": "hero_33005", - "text_cn": "鼻涕粗" - }, - { - "key": "hero_33006", - "text_cn": "珍妮丝·邓普顿" - }, - { - "key": "hero_34001", - "text_cn": "贫嘴驴" - }, - { - "key": "hero_34002", - "text_cn": "蒂姆·邓普顿" - }, - { - "key": "hero_34003", - "text_cn": "圣诞老人" - }, - { - "key": "hero_34004", - "text_cn": "瓜哥" - }, - { - "key": "hero_34005", - "text_cn": "沃尔特·史翠克勒" - }, - { - "key": "hero_34006", - "text_cn": "冰霜杰克" - }, - { - "key": "hero_34007", - "text_cn": "菲奥娜" - }, - { - "key": "hero_34008", - "text_cn": "悍夫那特" - }, - { - "key": "hero_35001", - "text_cn": "师父" - }, - { - "key": "hero_35002", - "text_cn": "希卡普" - }, - { - "key": "hero_35003", - "text_cn": "漆黑" - }, - { - "key": "hero_35004", - "text_cn": "黛安·福克斯顿" - }, - { - "key": "hero_35005", - "text_cn": "幸运·普雷斯科特" - }, - { - "key": "hero_35006", - "text_cn": "平先生" - }, - { - "key": "hero_43001", - "text_cn": "阿比盖尔·斯通" - }, - { - "key": "hero_43002", - "text_cn": "果酱教授" - }, - { - "key": "hero_43003", - "text_cn": "史蒂夫·帕丘克" - }, - { - "key": "hero_43004", - "text_cn": "姜饼人" - }, - { - "key": "hero_43005", - "text_cn": "瓦希尔指挥官" - }, - { - "key": "hero_43006", - "text_cn": "布里奇特" - }, - { - "key": "hero_43007", - "text_cn": "戈伯" - }, - { - "key": "hero_44001", - "text_cn": "美肚鲨" - }, - { - "key": "hero_44002", - "text_cn": "蛇先生" - }, - { - "key": "hero_44003", - "text_cn": "匹诺曹" - }, - { - "key": "hero_44004", - "text_cn": "艾札塔伦" - }, - { - "key": "hero_44005", - "text_cn": "小伊" - }, - { - "key": "hero_44006", - "text_cn": "悍娇虎" - }, - { - "key": "hero_45001", - "text_cn": "乌龟大师" - }, - { - "key": "hero_45002", - "text_cn": "梅林" - }, - { - "key": "hero_45003", - "text_cn": "盖" - }, - { - "key": "hero_45004", - "text_cn": "穿靴子的猫" - }, - { - "key": "hero_43901", - "text_cn": "升星精灵" - }, - { - "key": "hero_42911", - "text_cn": "初级经验精灵" - }, - { - "key": "hero_43911", - "text_cn": "中级经验精灵" - }, - { - "key": "hero_44911", - "text_cn": "高级经验精灵" - }, - { - "key": "hero_43921", - "text_cn": "技能精灵·稀有" - }, - { - "key": "hero_44921", - "text_cn": "技能精灵·史诗" - }, - { - "key": "hero_45921", - "text_cn": "技能精灵·传说" - }, - { - "key": "hero_51001", - "text_cn": "啵啵星人(新增)" - }, - { - "key": "hero_51002", - "text_cn": "埃雷特手下1号(新增)" - }, - { - "key": "hero_51003", - "text_cn": "埃雷特手下2号(新增)" - }, - { - "key": "hero_51004", - "text_cn": "豺狼小怪(新增)" - }, - { - "key": "hero_51005", - "text_cn": "犀牛守卫(新增)" - }, - { - "key": "hero_51006", - "text_cn": "香塔尔 杜布瓦队长手下1号(新增)" - }, - { - "key": "hero_51007", - "text_cn": "香塔尔 杜布瓦队长手下2号(新增)" - }, - { - "key": "hero_51008", - "text_cn": "香塔尔 杜布瓦队长手下3号(新增)" - }, - { - "key": "hero_51009", - "text_cn": "香塔尔 杜布瓦队长手下4号(新增)" - }, - { - "key": "hero_51010", - "text_cn": "警卫1号(新增)" - }, - { - "key": "hero_51011", - "text_cn": "警卫2号(新增)" - }, - { - "key": "hero_51012", - "text_cn": "小猴子(新增)" - }, - { - "key": "hero_51013", - "text_cn": "巨怪啰啰(新增)" - }, - { - "key": "hero_51014", - "text_cn": "博啃族宫廷守卫(新增)" - }, - { - "key": "hero_53001", - "text_cn": "埃雷特(新增)" - }, - { - "key": "hero_53002", - "text_cn": "豺狼头领(新增)" - }, - { - "key": "hero_53003", - "text_cn": "豪猪大师(翡翠僵尸)(新增)" - }, - { - "key": "hero_53004", - "text_cn": "双獾大师(翡翠僵尸)(新增)" - }, - { - "key": "hero_53005", - "text_cn": "小猴子首领(新增)" - }, - { - "key": "hero_53006", - "text_cn": "巨怪首领(新增)" - }, - { - "key": "hero_55001", - "text_cn": "香塔尔 杜布瓦队长" - }, - { - "key": "hero_55002", - "text_cn": "亨得利克斯(新增)" - }, - { - "key": "hero_55003", - "text_cn": "巨型猩猩怪兽(新增)" - }, - { - "key": "hero_55004", - "text_cn": "白龙王" - }, - { - "key": "hero_55005", - "text_cn": "大厨(新增)" - }, - { - "key": "hero_55006", - "text_cn": "德雷格(新增)" - }, - { - "key": "hero_55007", - "text_cn": "莫甘娜巨怪" - }, - { - "key": "hero_55008", - "text_cn": "莫甘娜二阶" - }, - { - "key": "hero_55009", - "text_cn": "闪闪帅的一批" - }, - { - "key": "hero_55010", - "text_cn": "食人鱼先生帅的一批" - }, - { - "key": "hero_55011", - "text_cn": "啊啊帅的一批" - }, - { - "key": "hero_55012", - "text_cn": "法夸德勋爵帅的一批" - }, - { - "key": "hero_55013", - "text_cn": "大大帅的一批" - }, - { - "key": "hero_55014", - "text_cn": "史图依克帅的一批" - }, - { - "key": "hero_55015", - "text_cn": "大龙帅的一批" - }, - { - "key": "hero_55016", - "text_cn": "亚丝翠帅的一批" - }, - { - "key": "hero_55017", - "text_cn": "克莱尔·努涅斯帅的一批" - }, - { - "key": "hero_55018", - "text_cn": "鹤大师帅的一批" - }, - { - "key": "hero_55019", - "text_cn": "布兰奇帅的一批" - }, - { - "key": "hero_55020", - "text_cn": "格里斯特王子帅的一批" - }, - { - "key": "hero_55021", - "text_cn": "吉姆·莱克帅的一批" - }, - { - "key": "hero_55022", - "text_cn": "船长帅的一批" - }, - { - "key": "hero_55023", - "text_cn": "希沙窦斯帅的一批" - }, - { - "key": "hero_55024", - "text_cn": "小欧帅的一批" - }, - { - "key": "hero_55025", - "text_cn": "亚力克斯帅的一批" - }, - { - "key": "hero_55026", - "text_cn": "斯梅克船长帅的一批" - }, - { - "key": "hero_55027", - "text_cn": "警卫队长帅的一批" - }, - { - "key": "hero_55028", - "text_cn": "泰德·邓普顿帅的一批" - }, - { - "key": "hero_55029", - "text_cn": "吉姆·普雷斯科特帅的一批" - }, - { - "key": "hero_55030", - "text_cn": "警长帅的一批" - }, - { - "key": "hero_55031", - "text_cn": "牙仙帅的一批" - }, - { - "key": "hero_55032", - "text_cn": "睡神沙人帅的一批" - }, - { - "key": "hero_55033", - "text_cn": "邦尼兔帅的一批" - }, - { - "key": "hero_55034", - "text_cn": "金猴帅的一批" - }, - { - "key": "hero_55035", - "text_cn": "凯尔帅的一批" - }, - { - "key": "hero_55036", - "text_cn": "小钱帅的一批" - }, - { - "key": "hero_55037", - "text_cn": "暴芙那特帅的一批" - }, - { - "key": "hero_55038", - "text_cn": "云朵先生帅的一批" - }, - { - "key": "hero_55039", - "text_cn": "阿宝性格随和、天真、好动、贪玩、孩子气,但是正是这些特质,让他有了成为“神龙大侠”的潜质。也许大侠不一定是完美的,但一定是善良的!" - }, - { - "key": "hero_55040", - "text_cn": "沃尔夫先生帅的一批" - }, - { - "key": "hero_55041", - "text_cn": "无牙仔帅的一批" - }, - { - "key": "hero_55042", - "text_cn": "波比是精灵城的公主,她有着神奇的魔力和多彩的头发,乐观积极、喜爱唱歌。" - }, - { - "key": "hero_55043", - "text_cn": "巫嘎帅的一批" - }, - { - "key": "hero_55044", - "text_cn": "坦克帅的一批" - }, - { - "key": "hero_55045", - "text_cn": "胡德先生帅的一批" - }, - { - "key": "hero_55046", - "text_cn": "普鲁格兰杰帅的一批" - }, - { - "key": "hero_55047", - "text_cn": "鼻涕粗帅的一批" - }, - { - "key": "hero_55048", - "text_cn": "珍妮丝·邓普顿帅的一批" - }, - { - "key": "hero_55049", - "text_cn": "贫嘴驴帅的一批" - }, - { - "key": "hero_55050", - "text_cn": "蒂姆·邓普顿帅的一批" - }, - { - "key": "hero_55051", - "text_cn": "圣诞老人帅的一批" - }, - { - "key": "hero_55052", - "text_cn": "瓜哥帅的一批" - }, - { - "key": "hero_55053", - "text_cn": "沃尔特·史翠克勒帅的一批" - }, - { - "key": "hero_55054", - "text_cn": "冰霜杰克帅的一批" - }, - { - "key": "hero_55055", - "text_cn": "菲奥娜帅的一批" - }, - { - "key": "hero_55056", - "text_cn": "悍夫那特帅的一批" - }, - { - "key": "hero_55057", - "text_cn": "师父帅的一批" - }, - { - "key": "hero_55058", - "text_cn": "希卡普帅的一批" - }, - { - "key": "hero_55059", - "text_cn": "漆黑帅的一批" - }, - { - "key": "hero_55060", - "text_cn": "黛安·福克斯顿帅的一批" - }, - { - "key": "hero_55061", - "text_cn": "幸运·普雷斯科特帅的一批" - }, - { - "key": "hero_55062", - "text_cn": "平先生帅的一批" - }, - { - "key": "hero_55063", - "text_cn": "阿比盖尔·斯通帅的一批" - }, - { - "key": "hero_55064", - "text_cn": "果酱教授帅的一批" - }, - { - "key": "hero_55065", - "text_cn": "史蒂夫·帕丘克帅的一批" - }, - { - "key": "hero_55066", - "text_cn": "姜饼人帅的一批" - }, - { - "key": "hero_55067", - "text_cn": "瓦希尔指挥官帅的一批" - }, - { - "key": "hero_55068", - "text_cn": "布里奇特帅的一批" - }, - { - "key": "hero_55069", - "text_cn": "戈伯帅的一批" - }, - { - "key": "hero_55070", - "text_cn": "美肚鲨帅的一批" - }, - { - "key": "hero_55071", - "text_cn": "蛇先生帅的一批" - }, - { - "key": "hero_55072", - "text_cn": "匹诺曹帅的一批" - }, - { - "key": "hero_55073", - "text_cn": "艾札塔伦帅的一批" - }, - { - "key": "hero_55074", - "text_cn": "小伊帅的一批" - }, - { - "key": "hero_55075", - "text_cn": "悍娇虎帅的一批" - }, - { - "key": "hero_55076", - "text_cn": "乌龟大师帅的一批" - }, - { - "key": "hero_55077", - "text_cn": "梅林帅的一批" - }, - { - "key": "hero_55078", - "text_cn": "盖帅的一批" - }, - { - "key": "hero_55079", - "text_cn": "穿靴子的猫帅的一批" - }, - { - "key": "hero_55080", - "text_cn": "升星精灵帅的一批" - }, - { - "key": "hero_55081", - "text_cn": "初级经验精灵帅的一批" - }, - { - "key": "hero_55082", - "text_cn": "中级经验精灵帅的一批" - }, - { - "key": "hero_55083", - "text_cn": "高级经验精灵帅的一批" - }, - { - "key": "hero_55084", - "text_cn": "技能精灵·稀有帅的一批" - }, - { - "key": "hero_55085", - "text_cn": "技能精灵·史诗帅的一批" - }, - { - "key": "hero_55086", - "text_cn": "技能精灵·传说帅的一批" - }, - { - "key": "hero_55087", - "text_cn": "啵啵星人(新增)帅的一批" - }, - { - "key": "hero_55088", - "text_cn": "埃雷特手下1号(新增)帅的一批" - }, - { - "key": "hero_55089", - "text_cn": "埃雷特手下2号(新增)帅的一批" - }, - { - "key": "hero_55090", - "text_cn": "豺狼小怪(新增)帅的一批" - }, - { - "key": "hero_55091", - "text_cn": "犀牛守卫(新增)帅的一批" - }, - { - "key": "hero_55092", - "text_cn": "香塔尔 杜布瓦队长手下1号(新增)帅的一批" - }, - { - "key": "hero_55093", - "text_cn": "香塔尔 杜布瓦队长手下2号(新增)帅的一批" - }, - { - "key": "hero_55094", - "text_cn": "香塔尔 杜布瓦队长手下3号(新增)帅的一批" - }, - { - "key": "hero_55095", - "text_cn": "香塔尔 杜布瓦队长手下4号(新增)帅的一批" - }, - { - "key": "hero_55096", - "text_cn": "警卫1号(新增)帅的一批" - }, - { - "key": "hero_55097", - "text_cn": "警卫2号(新增)帅的一批" - }, - { - "key": "hero_55098", - "text_cn": "小猴子(新增)帅的一批" - }, - { - "key": "hero_55099", - "text_cn": "巨怪啰啰(新增)帅的一批" - }, - { - "key": "hero_55100", - "text_cn": "博啃族宫廷守卫(新增)帅的一批" - }, - { - "key": "hero_55101", - "text_cn": "埃雷特(新增)帅的一批" - }, - { - "key": "hero_55102", - "text_cn": "豺狼头领(新增)帅的一批" - }, - { - "key": "hero_55103", - "text_cn": "豪猪大师(翡翠僵尸)(新增)帅的一批" - }, - { - "key": "hero_55104", - "text_cn": "双獾大师(翡翠僵尸)(新增)帅的一批" - }, - { - "key": "hero_55105", - "text_cn": "小猴子首领(新增)帅的一批" - }, - { - "key": "hero_55106", - "text_cn": "巨怪首领(新增)帅的一批" - }, - { - "key": "hero_55107", - "text_cn": "香塔尔 杜布瓦队长帅的一批" - }, - { - "key": "hero_55108", - "text_cn": "亨得利克斯(新增)帅的一批" - }, - { - "key": "hero_55109", - "text_cn": "巨型猩猩怪兽(新增)帅的一批" - }, - { - "key": "hero_55110", - "text_cn": "白龙王帅的一批" - }, - { - "key": "hero_55111", - "text_cn": "大厨(新增)帅的一批" - }, - { - "key": "hero_55112", - "text_cn": "德雷格(新增)帅的一批" - }, - { - "key": "hero_55113", - "text_cn": "莫甘娜巨怪帅的一批" - }, - { - "key": "hero_55114", - "text_cn": "莫甘娜二阶帅的一批" - }, - { - "key": "equip_13001", - "text_cn": "武器" - }, - { - "key": "equip_13002", - "text_cn": "衣服" - }, - { - "key": "equip_13003", - "text_cn": "鞋子" - }, - { - "key": "equip_13004", - "text_cn": "戒指" - }, - { - "key": "equip_13005", - "text_cn": "时间宝石" - }, - { - "key": "equip_13006", - "text_cn": "空间宝石" - }, - { - "key": "equip_13007", - "text_cn": "武器" - }, - { - "key": "equip_13008", - "text_cn": "衣服" - }, - { - "key": "equip_13009", - "text_cn": "鞋子" - }, - { - "key": "equip_13010", - "text_cn": "戒指" - }, - { - "key": "equip_13011", - "text_cn": "时间宝石" - }, - { - "key": "equip_13012", - "text_cn": "空间宝石" - }, - { - "key": "equip_13013", - "text_cn": "武器" - }, - { - "key": "equip_13014", - "text_cn": "衣服" - }, - { - "key": "equip_13015", - "text_cn": "鞋子" - }, - { - "key": "equip_13016", - "text_cn": "戒指" - }, - { - "key": "equip_13017", - "text_cn": "时间宝石" - }, - { - "key": "equip_13018", - "text_cn": "空间宝石" - }, - { - "key": "equip_13019", - "text_cn": "武器" - }, - { - "key": "equip_13020", - "text_cn": "衣服" - }, - { - "key": "equip_13021", - "text_cn": "鞋子" - }, - { - "key": "equip_13022", - "text_cn": "戒指" - }, - { - "key": "equip_13023", - "text_cn": "时间宝石" - }, - { - "key": "equip_13024", - "text_cn": "空间宝石" - }, - { - "key": "equip_13025", - "text_cn": "武器" - }, - { - "key": "equip_13026", - "text_cn": "衣服" - }, - { - "key": "equip_13027", - "text_cn": "鞋子" - }, - { - "key": "equip_13028", - "text_cn": "戒指" - }, - { - "key": "equip_13029", - "text_cn": "时间宝石" - }, - { - "key": "equip_13030", - "text_cn": "空间宝石" - }, - { - "key": "equip_13031", - "text_cn": "武器" - }, - { - "key": "equip_13032", - "text_cn": "衣服" - }, - { - "key": "equip_13033", - "text_cn": "鞋子" - }, - { - "key": "equip_13034", - "text_cn": "戒指" - }, - { - "key": "equip_13035", - "text_cn": "时间宝石" - }, - { - "key": "equip_13036", - "text_cn": "空间宝石" - }, - { - "key": "equip_13037", - "text_cn": "武器" - }, - { - "key": "equip_13038", - "text_cn": "衣服" - }, - { - "key": "equip_13039", - "text_cn": "鞋子" - }, - { - "key": "equip_13040", - "text_cn": "戒指" - }, - { - "key": "equip_13041", - "text_cn": "时间宝石" - }, - { - "key": "equip_13042", - "text_cn": "空间宝石" - }, - { - "key": "equip_13043", - "text_cn": "武器" - }, - { - "key": "equip_13044", - "text_cn": "衣服" - }, - { - "key": "equip_13045", - "text_cn": "鞋子" - }, - { - "key": "equip_13046", - "text_cn": "戒指" - }, - { - "key": "equip_13047", - "text_cn": "时间宝石" - }, - { - "key": "equip_13048", - "text_cn": "空间宝石" - }, - { - "key": "equip_13049", - "text_cn": "武器" - }, - { - "key": "equip_13050", - "text_cn": "衣服" - }, - { - "key": "equip_13051", - "text_cn": "鞋子" - }, - { - "key": "equip_13052", - "text_cn": "戒指" - }, - { - "key": "equip_13053", - "text_cn": "时间宝石" - }, - { - "key": "equip_13054", - "text_cn": "空间宝石" - }, - { - "key": "equip_13055", - "text_cn": "武器" - }, - { - "key": "equip_13056", - "text_cn": "衣服" - }, - { - "key": "equip_13057", - "text_cn": "鞋子" - }, - { - "key": "equip_13058", - "text_cn": "戒指" - }, - { - "key": "equip_13059", - "text_cn": "时间宝石" - }, - { - "key": "equip_13060", - "text_cn": "空间宝石" - }, - { - "key": "equip_13061", - "text_cn": "武器" - }, - { - "key": "equip_13062", - "text_cn": "衣服" - }, - { - "key": "equip_13063", - "text_cn": "鞋子" - }, - { - "key": "equip_13064", - "text_cn": "戒指" - }, - { - "key": "equip_13065", - "text_cn": "时间宝石" - }, - { - "key": "equip_13066", - "text_cn": "空间宝石" - }, - { - "key": "equip_13067", - "text_cn": "武器" - }, - { - "key": "equip_13068", - "text_cn": "衣服" - }, - { - "key": "equip_13069", - "text_cn": "鞋子" - }, - { - "key": "equip_13070", - "text_cn": "戒指" - }, - { - "key": "equip_13071", - "text_cn": "时间宝石" - }, - { - "key": "equip_13072", - "text_cn": "空间宝石" - }, - { - "key": "equip_13073", - "text_cn": "武器" - }, - { - "key": "equip_13074", - "text_cn": "衣服" - }, - { - "key": "equip_13075", - "text_cn": "鞋子" - }, - { - "key": "equip_13076", - "text_cn": "戒指" - }, - { - "key": "equip_13077", - "text_cn": "时间宝石" - }, - { - "key": "equip_13078", - "text_cn": "空间宝石" - }, - { - "key": "equip_13079", - "text_cn": "武器" - }, - { - "key": "equip_13080", - "text_cn": "衣服" - }, - { - "key": "equip_13081", - "text_cn": "鞋子" - }, - { - "key": "equip_13082", - "text_cn": "戒指" - }, - { - "key": "equip_13083", - "text_cn": "时间宝石" - }, - { - "key": "equip_13084", - "text_cn": "空间宝石" - }, - { - "key": "equip_13085", - "text_cn": "武器" - }, - { - "key": "equip_13086", - "text_cn": "衣服" - }, - { - "key": "equip_13087", - "text_cn": "鞋子" - }, - { - "key": "equip_13088", - "text_cn": "戒指" - }, - { - "key": "equip_13089", - "text_cn": "时间宝石" - }, - { - "key": "equip_13090", - "text_cn": "空间宝石" - }, - { - "key": "equip_13091", - "text_cn": "武器" - }, - { - "key": "equip_13092", - "text_cn": "衣服" - }, - { - "key": "equip_13093", - "text_cn": "鞋子" - }, - { - "key": "equip_13094", - "text_cn": "戒指" - }, - { - "key": "equip_13095", - "text_cn": "时间宝石" - }, - { - "key": "equip_13096", - "text_cn": "空间宝石" - }, - { - "key": "equip_13097", - "text_cn": "武器" - }, - { - "key": "equip_13098", - "text_cn": "衣服" - }, - { - "key": "equip_13099", - "text_cn": "鞋子" - }, - { - "key": "equip_13100", - "text_cn": "戒指" - }, - { - "key": "equip_13101", - "text_cn": "时间宝石" - }, - { - "key": "equip_13102", - "text_cn": "空间宝石" - }, - { - "key": "equip_13103", - "text_cn": "武器" - }, - { - "key": "equip_13104", - "text_cn": "衣服" - }, - { - "key": "equip_13105", - "text_cn": "鞋子" - }, - { - "key": "equip_13106", - "text_cn": "戒指" - }, - { - "key": "equip_13107", - "text_cn": "时间宝石" - }, - { - "key": "equip_13108", - "text_cn": "空间宝石" - }, - { - "key": "equip_13109", - "text_cn": "武器" - }, - { - "key": "equip_13110", - "text_cn": "衣服" - }, - { - "key": "equip_13111", - "text_cn": "鞋子" - }, - { - "key": "equip_13112", - "text_cn": "戒指" - }, - { - "key": "equip_13113", - "text_cn": "时间宝石" - }, - { - "key": "equip_13114", - "text_cn": "空间宝石" - }, - { - "key": "equip_13115", - "text_cn": "武器" - }, - { - "key": "equip_13116", - "text_cn": "衣服" - }, - { - "key": "equip_13117", - "text_cn": "鞋子" - }, - { - "key": "equip_13118", - "text_cn": "戒指" - }, - { - "key": "equip_13119", - "text_cn": "时间宝石" - }, - { - "key": "equip_13120", - "text_cn": "空间宝石" - }, - { - "key": "equip_13121", - "text_cn": "武器" - }, - { - "key": "equip_13122", - "text_cn": "衣服" - }, - { - "key": "equip_13123", - "text_cn": "鞋子" - }, - { - "key": "equip_13124", - "text_cn": "戒指" - }, - { - "key": "equip_13125", - "text_cn": "时间宝石" - }, - { - "key": "equip_13126", - "text_cn": "空间宝石" - }, - { - "key": "equip_13127", - "text_cn": "武器" - }, - { - "key": "equip_13128", - "text_cn": "衣服" - }, - { - "key": "equip_13129", - "text_cn": "鞋子" - }, - { - "key": "equip_13130", - "text_cn": "戒指" - }, - { - "key": "equip_13131", - "text_cn": "时间宝石" - }, - { - "key": "equip_13132", - "text_cn": "空间宝石" - }, - { - "key": "equip_13133", - "text_cn": "武器" - }, - { - "key": "equip_13134", - "text_cn": "衣服" - }, - { - "key": "equip_13135", - "text_cn": "鞋子" - }, - { - "key": "equip_13136", - "text_cn": "戒指" - }, - { - "key": "equip_13137", - "text_cn": "时间宝石" - }, - { - "key": "equip_13138", - "text_cn": "空间宝石" - }, - { - "key": "equip_13139", - "text_cn": "武器" - }, - { - "key": "equip_13140", - "text_cn": "衣服" - }, - { - "key": "equip_13141", - "text_cn": "鞋子" - }, - { - "key": "equip_13142", - "text_cn": "戒指" - }, - { - "key": "equip_13143", - "text_cn": "时间宝石" - }, - { - "key": "equip_13144", - "text_cn": "空间宝石" - }, - { - "key": "equip_13145", - "text_cn": "武器" - }, - { - "key": "equip_13146", - "text_cn": "衣服" - }, - { - "key": "equip_13147", - "text_cn": "鞋子" - }, - { - "key": "equip_13148", - "text_cn": "戒指" - }, - { - "key": "equip_13149", - "text_cn": "时间宝石" - }, - { - "key": "equip_13150", - "text_cn": "空间宝石" - }, - { - "key": "equip_13151", - "text_cn": "武器" - }, - { - "key": "equip_13152", - "text_cn": "衣服" - }, - { - "key": "equip_13153", - "text_cn": "鞋子" - }, - { - "key": "equip_13154", - "text_cn": "戒指" - }, - { - "key": "equip_13155", - "text_cn": "时间宝石" - }, - { - "key": "equip_13156", - "text_cn": "空间宝石" - }, - { - "key": "equip_13157", - "text_cn": "武器" - }, - { - "key": "equip_13158", - "text_cn": "衣服" - }, - { - "key": "equip_13159", - "text_cn": "鞋子" - }, - { - "key": "equip_13160", - "text_cn": "戒指" - }, - { - "key": "equip_13161", - "text_cn": "时间宝石" - }, - { - "key": "equip_13162", - "text_cn": "空间宝石" - }, - { - "key": "equip_13163", - "text_cn": "武器" - }, - { - "key": "equip_13164", - "text_cn": "衣服" - }, - { - "key": "equip_13165", - "text_cn": "鞋子" - }, - { - "key": "equip_13166", - "text_cn": "戒指" - }, - { - "key": "equip_13167", - "text_cn": "时间宝石" - }, - { - "key": "equip_13168", - "text_cn": "空间宝石" - }, - { - "key": "equip_13169", - "text_cn": "武器" - }, - { - "key": "equip_13170", - "text_cn": "衣服" - }, - { - "key": "equip_13171", - "text_cn": "鞋子" - }, - { - "key": "equip_13172", - "text_cn": "戒指" - }, - { - "key": "equip_13173", - "text_cn": "时间宝石" - }, - { - "key": "equip_13174", - "text_cn": "空间宝石" - }, - { - "key": "equip_13175", - "text_cn": "武器" - }, - { - "key": "equip_13176", - "text_cn": "衣服" - }, - { - "key": "equip_13177", - "text_cn": "鞋子" - }, - { - "key": "equip_13178", - "text_cn": "戒指" - }, - { - "key": "equip_13179", - "text_cn": "时间宝石" - }, - { - "key": "equip_13180", - "text_cn": "空间宝石" - }, - { - "key": "equip_13181", - "text_cn": "武器" - }, - { - "key": "equip_13182", - "text_cn": "衣服" - }, - { - "key": "equip_13183", - "text_cn": "鞋子" - }, - { - "key": "equip_13184", - "text_cn": "戒指" - }, - { - "key": "equip_13185", - "text_cn": "时间宝石" - }, - { - "key": "equip_13186", - "text_cn": "空间宝石" - }, - { - "key": "equip_13187", - "text_cn": "武器" - }, - { - "key": "equip_13188", - "text_cn": "衣服" - }, - { - "key": "equip_13189", - "text_cn": "鞋子" - }, - { - "key": "equip_13190", - "text_cn": "戒指" - }, - { - "key": "equip_13191", - "text_cn": "时间宝石" - }, - { - "key": "equip_13192", - "text_cn": "空间宝石" - }, - { - "key": "equip_13193", - "text_cn": "武器" - }, - { - "key": "equip_13194", - "text_cn": "衣服" - }, - { - "key": "equip_13195", - "text_cn": "鞋子" - }, - { - "key": "equip_13196", - "text_cn": "戒指" - }, - { - "key": "equip_13197", - "text_cn": "时间宝石" - }, - { - "key": "equip_13198", - "text_cn": "空间宝石" - }, - { - "key": "equip_13199", - "text_cn": "武器" - }, - { - "key": "equip_13200", - "text_cn": "衣服" - }, - { - "key": "equip_13201", - "text_cn": "鞋子" - }, - { - "key": "equip_13202", - "text_cn": "戒指" - }, - { - "key": "equip_13203", - "text_cn": "时间宝石" - }, - { - "key": "equip_13204", - "text_cn": "戒指" - }, - { - "key": "equip_13205", - "text_cn": "武器" - }, - { - "key": "equip_13206", - "text_cn": "衣服" - }, - { - "key": "equip_13207", - "text_cn": "鞋子" - }, - { - "key": "equip_13208", - "text_cn": "戒指" - }, - { - "key": "equip_13209", - "text_cn": "武器" - }, - { - "key": "equip_13210", - "text_cn": "衣服" - }, - { - "key": "equip_13211", - "text_cn": "鞋子" - }, - { - "key": "equip_13212", - "text_cn": "戒指" - }, - { - "key": "equip_13213", - "text_cn": "神龙套装" - }, - { - "key": "equip_13214", - "text_cn": "圆月套装" - }, - { - "key": "equip_13215", - "text_cn": "暴击率+20%" - }, - { - "key": "equip_13216", - "text_cn": "未激活" - }, - { - "key": "equip_13217", - "text_cn": "已激活" - }, - { - "key": "suit_equip_10001", - "text_cn": "初心者套装" - }, - { - "key": "item_10001", - "text_cn": "1阵营觉醒材料" - }, - { - "key": "item_10002", - "text_cn": "1阵营觉醒材料" - }, - { - "key": "item_10003", - "text_cn": "1阵营觉醒材料" - }, - { - "key": "item_10011", - "text_cn": "2阵营觉醒材料" - }, - { - "key": "item_10012", - "text_cn": "2阵营觉醒材料" - }, - { - "key": "item_10013", - "text_cn": "2阵营觉醒材料" - }, - { - "key": "item_10021", - "text_cn": "3阵营觉醒材料" - }, - { - "key": "item_10022", - "text_cn": "3阵营觉醒材料" - }, - { - "key": "item_10023", - "text_cn": "3阵营觉醒材料" - }, - { - "key": "item_10031", - "text_cn": "4阵营觉醒材料" - }, - { - "key": "item_10032", - "text_cn": "4阵营觉醒材料" - }, - { - "key": "item_10033", - "text_cn": "4阵营觉醒材料" - }, - { - "key": "mainline_title_10001", - "text_cn": "第1章:功夫世界" - }, - { - "key": "mainline_title_10002", - "text_cn": "第2章:练功房" - }, - { - "key": "mainline_title_10003", - "text_cn": "第3章:太狼来袭" - }, - { - "key": "mainline_title_10004", - "text_cn": "第4章:乌龟大师" - }, - { - "key": "mainline_title_10005", - "text_cn": "第4章:太狼来袭" - }, - { - "key": "mainline_title_10006", - "text_cn": "第5章:乌龟大师" - }, - { - "key": "mainline_title_10007", - "text_cn": "第5章:太狼来袭" - }, - { - "key": "mainline_title_10008", - "text_cn": "第6章:乌龟大师" - }, - { - "key": "mainline_title_10009", - "text_cn": "第6章:太狼来袭" - }, - { - "key": "mainline_title_10010", - "text_cn": "第7章:乌龟大师" - }, - { - "key": "mainline_title_10011", - "text_cn": "第7章:太狼来袭" - }, - { - "key": "mainline_title_10012", - "text_cn": "第8章:乌龟大师" - }, - { - "key": "mainline_title_10013", - "text_cn": "第8章:太狼来袭" - }, - { - "key": "mainline_title_10014", - "text_cn": "第9章:乌龟大师" - }, - { - "key": "mainline_title_10015", - "text_cn": "第9章:太狼来袭" - }, - { - "key": "mainline_title_10016", - "text_cn": "第10章:乌龟大师" - }, - { - "key": "mainline_title_10017", - "text_cn": "第10章:太狼来袭" - }, - { - "key": "mainline_title_10018", - "text_cn": "第11章:乌龟大师" - }, - { - "key": "mainline_title_10019", - "text_cn": "第11章:太狼来袭" - }, - { - "key": "mainline_title_10020", - "text_cn": "第12章:乌龟大师" - }, - { - "key": "mainline_title_10021", - "text_cn": "第12章:太狼来袭" - }, - { - "key": "mainline_title_10022", - "text_cn": "第13章:乌龟大师" - }, - { - "key": "mainline_title_10023", - "text_cn": "第13章:太狼来袭" - }, - { - "key": "mainline_title_10024", - "text_cn": "第14章:乌龟大师" - }, - { - "key": "mainline_title_10025", - "text_cn": "第14章:太狼来袭" - }, - { - "key": "mainline_title_10026", - "text_cn": "第15章:乌龟大师" - }, - { - "key": "mainline_title_10027", - "text_cn": "第15章:太狼来袭" - }, - { - "key": "mainline_title_10028", - "text_cn": "第16章:乌龟大师" - }, - { - "key": "mainline_title_10029", - "text_cn": "第16章:太狼来袭" - }, - { - "key": "mainline_title_10030", - "text_cn": "第17章:乌龟大师" - }, - { - "key": "mainline_title_10031", - "text_cn": "第17章:太狼来袭" - }, - { - "key": "mainline_title_10032", - "text_cn": "第18章:乌龟大师" - }, - { - "key": "mainline_title_10033", - "text_cn": "第18章:太狼来袭" - }, - { - "key": "mainline_title_10034", - "text_cn": "第19章:乌龟大师" - }, - { - "key": "mainline_title_10035", - "text_cn": "第19章:太狼来袭" - }, - { - "key": "mainline_title_10036", - "text_cn": "第20章:乌龟大师" - }, - { - "key": "mainline_title_10037", - "text_cn": "第20章:太狼来袭" - }, - { - "key": "mainline_title_10038", - "text_cn": "第21章:乌龟大师" - }, - { - "key": "mainline_title_10039", - "text_cn": "第21章:太狼来袭" - }, - { - "key": "mainline_title_10040", - "text_cn": "第22章:乌龟大师" - }, - { - "key": "mainline_title_10041", - "text_cn": "第22章:太狼来袭" - }, - { - "key": "mainline_title_10042", - "text_cn": "第23章:乌龟大师" - }, - { - "key": "mainline_title_10043", - "text_cn": "第23章:太狼来袭" - }, - { - "key": "mainline_title_10044", - "text_cn": "第24章:乌龟大师" - }, - { - "key": "mainline_title_10045", - "text_cn": "第24章:太狼来袭" - }, - { - "key": "mainline_title_10046", - "text_cn": "第25章:乌龟大师" - }, - { - "key": "mainline_title_10047", - "text_cn": "第25章:太狼来袭" - }, - { - "key": "mainline_title_10048", - "text_cn": "第26章:乌龟大师" - }, - { - "key": "mainline_title_10049", - "text_cn": "第26章:太狼来袭" - }, - { - "key": "mainline_title_10050", - "text_cn": "第27章:乌龟大师" - }, - { - "key": "mainline_title_10051", - "text_cn": "第27章:太狼来袭" - }, - { - "key": "mainline_title_10052", - "text_cn": "第28章:乌龟大师" - }, - { - "key": "mainline_title_10053", - "text_cn": "第28章:太狼来袭" - }, - { - "key": "mainline_title_10054", - "text_cn": "第29章:乌龟大师" - }, - { - "key": "mainline_title_10055", - "text_cn": "第29章:太狼来袭" - }, - { - "key": "mainline_title_10056", - "text_cn": "第30章:乌龟大师" - }, - { - "key": "mainline_title_10057", - "text_cn": "第30章:太狼来袭" - }, - { - "key": "mainline_title_10058", - "text_cn": "第31章:乌龟大师" - }, - { - "key": "mainline_title_10059", - "text_cn": "第31章:太狼来袭" - }, - { - "key": "mainline_title_10060", - "text_cn": "第32章:乌龟大师" - }, - { - "key": "mainline_title_10061", - "text_cn": "第32章:太狼来袭" - }, - { - "key": "mainline_title_10062", - "text_cn": "第33章:乌龟大师" - }, - { - "key": "mainline_title_10063", - "text_cn": "第33章:太狼来袭" - }, - { - "key": "mainline_title_10064", - "text_cn": "第34章:乌龟大师" - }, - { - "key": "mainline_title_10065", - "text_cn": "第34章:太狼来袭" - }, - { - "key": "mainline_title_10066", - "text_cn": "第35章:乌龟大师" - }, - { - "key": "mainline_title_10067", - "text_cn": "第35章:太狼来袭" - }, - { - "key": "mainline_title_10068", - "text_cn": "第36章:乌龟大师" - }, - { - "key": "mainline_title_10069", - "text_cn": "第36章:太狼来袭" - }, - { - "key": "mainline_title_10070", - "text_cn": "第37章:乌龟大师" - }, - { - "key": "mainline_desc_10001", - "text_cn": "故事发生在很久以前的古代中国,而且要从一只喜欢滚来滚去、滚来滚去的大熊猫身上说起。话说熊猫阿宝是一家面条店的学徒,虽然笨手笨脚,也勉强算是谋到了一份职业。" - }, - { - "key": "mainline_desc_10002", - "text_cn": "别看阿宝所在的“和平谷”一派欣欣向荣的安详景象,其实是一个卧虎藏龙的风水宝地,先不说五大功夫高手皆坐镇于此,更有一大师级别的宗师在这里隐居。" - }, - { - "key": "mainline_desc_10003", - "text_cn": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。" - }, - { - "key": "mainline_desc_10004", - "text_cn": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。" - }, - { - "key": "mainline_desc_10005", - "text_cn": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。" - }, - { - "key": "mainline_desc_10006", - "text_cn": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。" - }, - { - "key": "mainline_desc_10007", - "text_cn": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。" - }, - { - "key": "mainline_desc_10008", - "text_cn": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。" - }, - { - "key": "mainline_desc_10009", - "text_cn": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。" - }, - { - "key": "mainline_desc_10010", - "text_cn": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。" - }, - { - "key": "mainline_desc_10011", - "text_cn": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。" - }, - { - "key": "mainline_desc_10012", - "text_cn": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。" - }, - { - "key": "mainline_desc_10013", - "text_cn": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。" - }, - { - "key": "mainline_desc_10014", - "text_cn": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。" - }, - { - "key": "mainline_desc_10015", - "text_cn": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。" - }, - { - "key": "mainline_desc_10016", - "text_cn": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。" - }, - { - "key": "mainline_desc_10017", - "text_cn": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。" - }, - { - "key": "mainline_desc_10018", - "text_cn": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。" - }, - { - "key": "mainline_desc_10019", - "text_cn": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。" - }, - { - "key": "mainline_desc_10020", - "text_cn": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。" - }, - { - "key": "mainline_desc_10021", - "text_cn": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。" - }, - { - "key": "mainline_desc_10022", - "text_cn": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。" - }, - { - "key": "mainline_desc_10023", - "text_cn": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。" - }, - { - "key": "mainline_desc_10024", - "text_cn": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。" - }, - { - "key": "mainline_desc_10025", - "text_cn": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。" - }, - { - "key": "mainline_desc_10026", - "text_cn": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。" - }, - { - "key": "mainline_desc_10027", - "text_cn": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。" - }, - { - "key": "mainline_desc_10028", - "text_cn": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。" - }, - { - "key": "mainline_desc_10029", - "text_cn": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。" - }, - { - "key": "mainline_desc_10030", - "text_cn": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。" - }, - { - "key": "mainline_desc_10031", - "text_cn": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。" - }, - { - "key": "mainline_desc_10032", - "text_cn": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。" - }, - { - "key": "mainline_desc_10033", - "text_cn": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。" - }, - { - "key": "mainline_desc_10034", - "text_cn": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。" - }, - { - "key": "mainline_desc_10035", - "text_cn": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。" - }, - { - "key": "mainline_desc_10036", - "text_cn": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。" - }, - { - "key": "mainline_desc_10037", - "text_cn": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。" - }, - { - "key": "mainline_desc_10038", - "text_cn": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。" - }, - { - "key": "mainline_desc_10039", - "text_cn": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。" - }, - { - "key": "mainline_desc_10040", - "text_cn": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。" - }, - { - "key": "mainline_desc_10041", - "text_cn": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。" - }, - { - "key": "mainline_desc_10042", - "text_cn": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。" - }, - { - "key": "mainline_desc_10043", - "text_cn": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。" - }, - { - "key": "mainline_desc_10044", - "text_cn": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。" - }, - { - "key": "mainline_desc_10045", - "text_cn": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。" - }, - { - "key": "mainline_desc_10046", - "text_cn": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。" - }, - { - "key": "mainline_desc_10047", - "text_cn": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。" - }, - { - "key": "mainline_desc_10048", - "text_cn": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。" - }, - { - "key": "mainline_desc_10049", - "text_cn": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。" - }, - { - "key": "mainline_desc_10050", - "text_cn": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。" - }, - { - "key": "mainline_desc_10051", - "text_cn": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。" - }, - { - "key": "mainline_desc_10052", - "text_cn": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。" - }, - { - "key": "mainline_desc_10053", - "text_cn": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。" - }, - { - "key": "mainline_desc_10054", - "text_cn": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。" - }, - { - "key": "mainline_desc_10055", - "text_cn": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。" - }, - { - "key": "mainline_desc_10056", - "text_cn": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。" - }, - { - "key": "mainline_desc_10057", - "text_cn": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。" - }, - { - "key": "mainline_desc_10058", - "text_cn": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。" - }, - { - "key": "mainline_desc_10059", - "text_cn": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。" - }, - { - "key": "mainline_desc_10060", - "text_cn": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。" - }, - { - "key": "mainline_desc_10061", - "text_cn": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。" - }, - { - "key": "mainline_desc_10062", - "text_cn": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。" - }, - { - "key": "mainline_desc_10063", - "text_cn": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。" - }, - { - "key": "mainline_desc_10064", - "text_cn": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。" - }, - { - "key": "mainline_desc_10065", - "text_cn": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。" - }, - { - "key": "mainline_desc_10066", - "text_cn": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。" - }, - { - "key": "mainline_desc_10067", - "text_cn": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。" - }, - { - "key": "mainline_desc_10068", - "text_cn": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。" - }, - { - "key": "mainline_desc_10069", - "text_cn": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。" - }, - { - "key": "mainline_desc_10070", - "text_cn": "可是在一场特殊的比武大会上胜出的人要代表“和平谷”将邪恶的大龙永久地驱除出去,啥都不会的阿宝却在经历了一系列阴差阳错之后屏雀中选,让所有人都大跌眼镜。" - }, - { - "key": "mainline_text_10001", - "text_cn": "金币5000" - }, - { - "key": "mainline_text_10002", - "text_cn": "金币5000" - }, - { - "key": "mainline_text_10003", - "text_cn": "金币5000" - }, - { - "key": "mainline_text_10004", - "text_cn": "金币5000" - }, - { - "key": "mainline_text_10005", - "text_cn": "金币5000" - }, - { - "key": "mainline_text_10006", - "text_cn": "金币5000" - }, - { - "key": "mainline_text_10007", - "text_cn": "金币5000" - }, - { - "key": "mainline_text_10008", - "text_cn": "金币5000" - }, - { - "key": "mainline_text_10009", - "text_cn": "金币5000" - }, - { - "key": "mainline_text_10010", - "text_cn": "金币5000" - }, - { - "key": "mainline_text_10011", - "text_cn": "金币5000" - }, - { - "key": "mainline_text_10012", - "text_cn": "金币5000" - }, - { - "key": "mainline_text_10013", - "text_cn": "金币5000" - }, - { - "key": "mainline_text_10014", - "text_cn": "金币5000" - }, - { - "key": "mainline_text_10015", - "text_cn": "金币5000" - }, - { - "key": "mainline_text_10016", - "text_cn": "金币5000" - }, - { - "key": "mainline_text_10017", - "text_cn": "金币5000" - }, - { - "key": "mainline_text_10018", - "text_cn": "金币5000" - }, - { - "key": "mainline_text_10019", - "text_cn": "金币5000" - }, - { - "key": "mainline_text_10020", - "text_cn": "金币5000" - }, - { - "key": "mainline_text_10021", - "text_cn": "金币5000" - }, - { - "key": "mainline_text_10022", - "text_cn": "金币5000" - }, - { - "key": "mainline_text_10023", - "text_cn": "金币5000" - }, - { - "key": "mainline_text_10024", - "text_cn": "金币5000" - }, - { - "key": "mainline_text_10025", - "text_cn": "金币5000" - }, - { - "key": "mainline_text_10026", - "text_cn": "金币5000" - }, - { - "key": "mainline_text_10027", - "text_cn": "金币5000" - }, - { - "key": "mainline_text_10028", - "text_cn": "金币5000" - }, - { - "key": "mainline_text_10029", - "text_cn": "金币5000" - }, - { - "key": "mainline_text_10030", - "text_cn": "金币5000" - }, - { - "key": "mainline_text_10031", - "text_cn": "金币5000" - }, - { - "key": "mainline_text_10032", - "text_cn": "金币5000" - }, - { - "key": "mainline_text_10033", - "text_cn": "金币5000" - }, - { - "key": "mainline_text_10034", - "text_cn": "金币5000" - }, - { - "key": "mainline_text_10035", - "text_cn": "金币5000" - }, - { - "key": "mainline_text_10036", - "text_cn": "金币5000" - }, - { - "key": "mainline_text_10037", - "text_cn": "金币5000" - }, - { - "key": "mainline_text_10038", - "text_cn": "金币5000" - }, - { - "key": "mainline_text_10039", - "text_cn": "金币5000" - }, - { - "key": "mainline_text_10040", - "text_cn": "金币5000" - }, - { - "key": "mainline_text_10041", - "text_cn": "金币5000" - }, - { - "key": "mainline_text_10042", - "text_cn": "金币5000" - }, - { - "key": "mainline_text_10043", - "text_cn": "金币5000" - }, - { - "key": "mainline_text_10044", - "text_cn": "金币5000" - }, - { - "key": "mainline_text_10045", - "text_cn": "金币5000" - }, - { - "key": "mainline_text_10046", - "text_cn": "金币5000" - }, - { - "key": "mainline_text_10047", - "text_cn": "金币5000" - }, - { - "key": "mainline_text_10048", - "text_cn": "金币5000" - }, - { - "key": "mainline_text_10049", - "text_cn": "金币5000" - }, - { - "key": "mainline_text_10050", - "text_cn": "金币5000" - }, - { - "key": "mainline_text_10051", - "text_cn": "金币5000" - }, - { - "key": "mainline_text_10052", - "text_cn": "金币5000" - }, - { - "key": "mainline_text_10053", - "text_cn": "金币5000" - }, - { - "key": "mainline_text_10054", - "text_cn": "金币5000" - }, - { - "key": "mainline_text_10055", - "text_cn": "金币5000" - }, - { - "key": "mainline_text_10056", - "text_cn": "金币5000" - }, - { - "key": "mainline_text_10057", - "text_cn": "金币5000" - }, - { - "key": "mainline_text_10058", - "text_cn": "金币5000" - }, - { - "key": "mainline_text_10059", - "text_cn": "金币5000" - }, - { - "key": "mainline_text_10060", - "text_cn": "金币5000" - }, - { - "key": "mainline_text_10061", - "text_cn": "金币5000" - }, - { - "key": "mainline_text_10062", - "text_cn": "金币5000" - }, - { - "key": "mainline_text_10063", - "text_cn": "金币5000" - }, - { - "key": "mainline_text_10064", - "text_cn": "金币5000" - }, - { - "key": "mainline_text_10065", - "text_cn": "金币5000" - }, - { - "key": "mainline_text_10066", - "text_cn": "金币5000" - }, - { - "key": "mainline_text_10067", - "text_cn": "金币5000" - }, - { - "key": "mainline_text_10068", - "text_cn": "金币5000" - }, - { - "key": "mainline_text_10069", - "text_cn": "金币5000" - }, - { - "key": "mainline_text_10070", - "text_cn": "金币5000" - }, - { - "key": "mainline_name_10001", - "text_cn": "Chapter 1" - }, - { - "key": "mainline_name_10002", - "text_cn": "Chapter 2" - }, - { - "key": "mainline_name_10003", - "text_cn": "Chapter 3" - }, - { - "key": "mainline_name_10004", - "text_cn": "Chapter 4" - }, - { - "key": "mainline_name_10005", - "text_cn": "Chapter 5" - }, - { - "key": "mainline_name_10006", - "text_cn": "Chapter 6" - }, - { - "key": "mainline_name_10007", - "text_cn": "Chapter 7" - }, - { - "key": "mainline_name_10008", - "text_cn": "Chapter 8" - }, - { - "key": "mainline_name_10009", - "text_cn": "Chapter 9" - }, - { - "key": "mainline_name_10010", - "text_cn": "Chapter 10" - }, - { - "key": "mainline_name_10011", - "text_cn": "Chapter 11" - }, - { - "key": "mainline_name_10012", - "text_cn": "Chapter 12" - }, - { - "key": "mainline_name_10013", - "text_cn": "Chapter 13" - }, - { - "key": "mainline_name_10014", - "text_cn": "Chapter 14" - }, - { - "key": "mainline_name_10015", - "text_cn": "Chapter 15" - }, - { - "key": "mainline_name_10016", - "text_cn": "Chapter 16" - }, - { - "key": "mainline_name_10017", - "text_cn": "Chapter 17" - }, - { - "key": "mainline_name_10018", - "text_cn": "Chapter 18" - }, - { - "key": "mainline_name_10019", - "text_cn": "Chapter 19" - }, - { - "key": "mainline_name_10020", - "text_cn": "Chapter 20" - }, - { - "key": "mainline_name_10021", - "text_cn": "Chapter 21" - }, - { - "key": "mainline_name_10022", - "text_cn": "Chapter 22" - }, - { - "key": "mainline_name_10023", - "text_cn": "Chapter 23" - }, - { - "key": "mainline_name_10024", - "text_cn": "Chapter 24" - }, - { - "key": "mainline_name_10025", - "text_cn": "Chapter 25" - }, - { - "key": "mainline_name_10026", - "text_cn": "Chapter 26" - }, - { - "key": "mainline_name_10027", - "text_cn": "Chapter 27" - }, - { - "key": "mainline_name_10028", - "text_cn": "Chapter 28" - }, - { - "key": "mainline_name_10029", - "text_cn": "Chapter 29" - }, - { - "key": "mainline_name_10030", - "text_cn": "Chapter 30" - }, - { - "key": "mainline_name_10031", - "text_cn": "Chapter 31" - }, - { - "key": "mainline_name_10032", - "text_cn": "Chapter 32" - }, - { - "key": "mainline_name_10033", - "text_cn": "Chapter 33" - }, - { - "key": "mainline_name_10034", - "text_cn": "Chapter 34" - }, - { - "key": "mainline_name_10035", - "text_cn": "Chapter 35" - }, - { - "key": "mainline_name_10036", - "text_cn": "Chapter 36" - }, - { - "key": "mainline_name_10037", - "text_cn": "Chapter 37" - }, - { - "key": "mainline_name_10038", - "text_cn": "Chapter 38" - }, - { - "key": "mainline_name_10039", - "text_cn": "Chapter 39" - }, - { - "key": "mainline_name_10040", - "text_cn": "Chapter 40" - }, - { - "key": "mainline_name_10041", - "text_cn": "Chapter 41" - }, - { - "key": "mainline_name_10042", - "text_cn": "Chapter 42" - }, - { - "key": "mainline_name_10043", - "text_cn": "Chapter 43" - }, - { - "key": "mainline_name_10044", - "text_cn": "Chapter 44" - }, - { - "key": "mainline_name_10045", - "text_cn": "Chapter 45" - }, - { - "key": "mainline_name_10046", - "text_cn": "Chapter 46" - }, - { - "key": "mainline_name_10047", - "text_cn": "Chapter 47" - }, - { - "key": "mainline_name_10048", - "text_cn": "Chapter 48" - }, - { - "key": "mainline_name_10049", - "text_cn": "Chapter 49" - }, - { - "key": "mainline_name_10050", - "text_cn": "Chapter 50" - }, - { - "key": "mainline_name_10051", - "text_cn": "Chapter 51" - }, - { - "key": "mainline_name_10052", - "text_cn": "Chapter 52" - }, - { - "key": "mainline_name_10053", - "text_cn": "Chapter 53" - }, - { - "key": "mainline_name_10054", - "text_cn": "Chapter 54" - }, - { - "key": "mainline_name_10055", - "text_cn": "Chapter 55" - }, - { - "key": "mainline_name_10056", - "text_cn": "Chapter 56" - }, - { - "key": "mainline_name_10057", - "text_cn": "Chapter 57" - }, - { - "key": "mainline_name_10058", - "text_cn": "Chapter 58" - }, - { - "key": "mainline_name_10059", - "text_cn": "Chapter 59" - }, - { - "key": "mainline_name_10060", - "text_cn": "Chapter 60" - }, - { - "key": "mainline_name_10061", - "text_cn": "Chapter 61" - }, - { - "key": "mainline_name_10062", - "text_cn": "Chapter 62" - }, - { - "key": "mainline_name_10063", - "text_cn": "Chapter 63" - }, - { - "key": "mainline_name_10064", - "text_cn": "Chapter 64" - }, - { - "key": "mainline_name_10065", - "text_cn": "Chapter 65" - }, - { - "key": "mainline_name_10066", - "text_cn": "Chapter 66" - }, - { - "key": "mainline_name_10067", - "text_cn": "Chapter 67" - }, - { - "key": "mainline_name_10068", - "text_cn": "Chapter 68" - }, - { - "key": "mainline_name_10069", - "text_cn": "Chapter 69" - }, - { - "key": "mainline_name_10070", - "text_cn": "Chapter 70" - }, - { - "key": "mainline_name_10071", - "text_cn": "故事发生在很久以前的古代中国,而且要从一只喜欢滚来滚去、滚来滚去的大熊猫身上说起。" - }, - { - "key": "equip_10001", - "text_cn": "普通" - }, - { - "key": "equip_10002", - "text_cn": "稀有" - }, - { - "key": "equip_10003", - "text_cn": "卓越" - }, - { - "key": "equip_10004", - "text_cn": "优秀" - }, - { - "key": "equip_10005", - "text_cn": "完美" - }, - { - "key": "skillname_125004011", - "text_cn": "波比队长技" - }, - { - "key": "skillname_125004111", - "text_cn": "波比1技能" - }, - { - "key": "skillname_125004211", - "text_cn": "波比2技能" - }, - { - "key": "skillname_125004311", - "text_cn": "波比3技能" - }, - { - "key": "skillname_925004211", - "text_cn": "波比2技能" - }, - { - "key": "skillname_135002011", - "text_cn": "希卡普队长技" - }, - { - "key": "skillname_135002111", - "text_cn": "希卡普1技能" - }, - { - "key": "skillname_135002211", - "text_cn": "希卡普2技能" - }, - { - "key": "skillname_135002311", - "text_cn": "希卡普3技能" - }, - { - "key": "skillname_935002321", - "text_cn": "希卡普3技能" - }, - { - "key": "skillname_124003011", - "text_cn": "睡神队长技" - }, - { - "key": "skillname_124003111", - "text_cn": "睡神1技能" - }, - { - "key": "skillname_124003211", - "text_cn": "睡神2技能" - }, - { - "key": "skillname_124003311", - "text_cn": "睡神3技能" - }, - { - "key": "skillname_924003411", - "text_cn": "睡神2技能" - }, - { - "key": "skill_1250040111", - "text_cn": "队长技:我方全体效果抵抗增加40%" - }, - { - "key": "skill_1250041111", - "text_cn": "波比对敌方1个目标造成3次攻击力30%的伤害,有40%概率为自身附加2回合【免疫】状态" - }, - { - "key": "skill_1250041112", - "text_cn": "伤害提升至35%" - }, - { - "key": "skill_1250041113", - "text_cn": "概率触发概率提升至50%" - }, - { - "key": "skill_1250041114", - "text_cn": "伤害提升至40%" - }, - { - "key": "skill_1250041115", - "text_cn": "概率触发概率提升至60%" - }, - { - "key": "skill_1250041116", - "text_cn": "伤害提升至45%" - }, - { - "key": "skill_1250042111", - "text_cn": "波比清除我方所有减益状态,并平均分配我方生命值千分比,为我方全体附加2回合【攻击提升】状态" - }, - { - "key": "skill_1250042112", - "text_cn": "冷却时间减少1回合" - }, - { - "key": "skill_1250042113", - "text_cn": "冷却时间减少1回合" - }, - { - "key": "skill_1250043111", - "text_cn": "进入2回合【喜悦】状态,使我方全体收到伤害降低25%,且在每个队友行动去,为其驱散1个减益状态并回复其最大生命值20%的生命,效果持续期间自身无法行动" - }, - { - "key": "skill_1250043112", - "text_cn": "恢复量提升至22%" - }, - { - "key": "skill_1250043113", - "text_cn": "恢复量提升至24%" - }, - { - "key": "skill_1250043114", - "text_cn": "恢复量提升至26%" - }, - { - "key": "skill_1250043115", - "text_cn": "冷却时间减少1回合" - }, - { - "key": "skill_1350020111", - "text_cn": "队长技:我方全体效果命中增加40%" - }, - { - "key": "skill_1350021111", - "text_cn": "攻击一个敌方2次,伤害分别为自身攻击力30%和80%,每次像目标转嫁自身1个减益;转嫁成功时有50%的概率为目标附加1回合【眩晕】。" - }, - { - "key": "skill_1350021112", - "text_cn": "第二段伤害提升至90%" - }, - { - "key": "skill_1350021113", - "text_cn": "效果触发几率提升至60%" - }, - { - "key": "skill_1350021114", - "text_cn": "第二段伤害提升至100%" - }, - { - "key": "skill_1350021115", - "text_cn": "效果触发几率提升至70%" - }, - { - "key": "skill_1350021116", - "text_cn": "第二段伤害提升至110%" - }, - { - "key": "skill_1350022111", - "text_cn": "自身不会失手。敌方使其友方减益提前结束时,扣除其当前生命值30%,驱散其全部增益u,为其附加1回合【石化】。" - }, - { - "key": "skill_1350023111", - "text_cn": "攻击全体敌方3次,每次伤害为自身攻击力35%。每次有80%概率驱散目标1个增益,为目标附加2回合【失手率提升】。" - }, - { - "key": "skill_1350023112", - "text_cn": "伤害提升至37" - }, - { - "key": "skill_1350023113", - "text_cn": "效果触发几率提升至90%" - }, - { - "key": "skill_1350023114", - "text_cn": "伤害提升至40%" - }, - { - "key": "skill_1350023115", - "text_cn": "效果触发几率提升至100%" - }, - { - "key": "skill_1350023116", - "text_cn": "冷却时间减少1回合" - }, - { - "key": "skill_9350023211", - "text_cn": "攻击全体敌方3次,每次伤害为自身攻击力35%。每次有80%概率驱散目标1个增益,为目标附加2回合【失手率提升】。延迟目标减益状态1回合。" - }, - { - "key": "skill_9350023212", - "text_cn": "伤害提升至37" - }, - { - "key": "skill_9350023213", - "text_cn": "效果触发几率提升至90%" - }, - { - "key": "skill_9350023214", - "text_cn": "伤害提升至40%" - }, - { - "key": "skill_9350023215", - "text_cn": "效果触发几率提升至100%" - }, - { - "key": "skill_9350023216", - "text_cn": "冷却时间减少1回合" - }, - { - "key": "skill_1240030111", - "text_cn": "队长技:我方全体效果抵抗增加40%" - }, - { - "key": "skill_1240031111", - "text_cn": "一技能:睡神沙人对敌方1个目标造成攻击力110%的伤害,并有70%的概率附加1回合【睡眠】状态。" - }, - { - "key": "skill_1240031112", - "text_cn": "等级2 伤害提升至100%" - }, - { - "key": "skill_1240031113", - "text_cn": "等级3 效果触发几率提升至60%" - }, - { - "key": "skill_1240031114", - "text_cn": "等级4 伤害提升至110%" - }, - { - "key": "skill_1240031115", - "text_cn": "等级5 效果触发几率提升至70%" - }, - { - "key": "skill_1240032111", - "text_cn": "二技能:睡神沙人为我方全体各净化1个减益状态,并附加2回合【速度提升】。" - }, - { - "key": "skill_1240032112", - "text_cn": "冷却时间减少1回合" - }, - { - "key": "skill_1240033111", - "text_cn": "三技能:睡神沙人对敌方全体造成攻击力80%的伤害,使敌方目标各减少30%行动值,并有100%概率附加1回合【睡眠】状态。" - }, - { - "key": "skill_1240033112", - "text_cn": "等级2 降低的行动值提升至25%" - }, - { - "key": "skill_1240033113", - "text_cn": "等级3 效果触发几率提升至90%" - }, - { - "key": "skill_1240033114", - "text_cn": "等级4 降低的行动值提升至30%" - }, - { - "key": "skill_1240033115", - "text_cn": "等级5 效果触发几率提升至100%" - }, - { - "key": "skill_1240033116", - "text_cn": "等级6 冷却时间减少1回合" - }, - { - "key": "skill_9240034111", - "text_cn": "二技能:睡神沙人为我方全体各净化1个减益状态,并附加2回合【速度提升】和1回合【防御提升】状态。" - }, - { - "key": "skill_9240034112", - "text_cn": "冷却时间减少1回合" - }, - { - "key": "skill_190011000", - "text_cn": "我方全体防御增加30%" - }, - { - "key": "skill_190012000", - "text_cn": "阿宝对敌方1个目标造成攻击力30%及防御力70%的伤害,并有75%概率对目标附加2回合【攻击下降】效果" - }, - { - "key": "skill_190013000", - "text_cn": "每回合结束后,阿宝会进入【玄御】状态,持续1回合,在自身新回合开始时,对敌方全体造成防御力110%的伤害。【玄御】期间自身每次收到攻击时都会获得1层【玄御之佑】,但出于不可行动状态时解除【玄御】状态。自身的任意主动技能命中敌人触发暴击时降低此技能1回合冷却" - }, - { - "key": "skill_190014000", - "text_cn": "阿宝对敌方1个目标造成攻击力80%及防御力140%的伤害,同时为自身附加【防御提升】【免疫】状态各2回合" - }, - { - "key": "skill_190015000", - "text_cn": "我方全体效果抵抗增加40%" - }, - { - "key": "skill_190016000", - "text_cn": "波比对敌方1个目标造成3次攻击力45%的伤害,有60%概率为自身附加2回合【免疫】状态。" - }, - { - "key": "skill_190017000", - "text_cn": "波比清除我方所有减益状态,并平均分配我方生命值百分比,为我方全体附加2回合【攻击提升】状态" - }, - { - "key": "skill_190018000", - "text_cn": "进入2回合【喜悦】状态,使我方全体收到伤害降低25%,且在每个队友行动去,为其驱散1个减益状态并回复其最大生命值26%的生命,效果持续期间自身无法行动。" - }, - { - "key": "skill_190011001", - "text_cn": "伤害提升至100%" - }, - { - "key": "skill_190011002", - "text_cn": "伤害提升至110%" - }, - { - "key": "skill_190011003", - "text_cn": "伤害提升至120%" - }, - { - "key": "skill_190011004", - "text_cn": "伤害提升至130%" - }, - { - "key": "skill_buff_390001001", - "text_cn": "攻击提升" - }, - { - "key": "skill_buff_390001002", - "text_cn": "防御提升" - }, - { - "key": "skill_buff_390001003", - "text_cn": "速度提升" - }, - { - "key": "skill_buff_390001004", - "text_cn": "暴击提升" - }, - { - "key": "skill_buff_390001005", - "text_cn": "暴击抵抗" - }, - { - "key": "skill_buff_390001006", - "text_cn": "叹息之力" - }, - { - "key": "skill_buff_390001007", - "text_cn": "公牛之怒" - }, - { - "key": "skill_buff_390001008", - "text_cn": "雷之庇佑" - }, - { - "key": "skill_buff_390002001", - "text_cn": "攻击下降" - }, - { - "key": "skill_buff_390002002", - "text_cn": "防御下降" - }, - { - "key": "skill_buff_390002003", - "text_cn": "速度下降" - }, - { - "key": "skill_buff_390002004", - "text_cn": "暴击下降" - }, - { - "key": "skill_buff_390002005", - "text_cn": "烙印" - }, - { - "key": "skill_buff_390002006", - "text_cn": "失手率提升" - }, - { - "key": "skill_buff_390003001", - "text_cn": "无敌" - }, - { - "key": "skill_buff_390003002", - "text_cn": "对峙" - }, - { - "key": "skill_buff_390003003", - "text_cn": "免疫控制效果" - }, - { - "key": "skill_buff_390003004", - "text_cn": "免除死亡" - }, - { - "key": "skill_buff_390004001", - "text_cn": "眩晕" - }, - { - "key": "skill_buff_390004002", - "text_cn": "冰冻" - }, - { - "key": "skill_buff_390004003", - "text_cn": "禁疗" - }, - { - "key": "skill_buff_390004004", - "text_cn": "石化" - }, - { - "key": "skill_buff_390004005", - "text_cn": "沉默" - }, - { - "key": "skill_buff_390004006", - "text_cn": "吞噬" - }, - { - "key": "skill_buff_390004007", - "text_cn": "挑衅" - }, - { - "key": "skill_buff_390004008", - "text_cn": "猫猫威慑" - }, - { - "key": "skill_buff_390005001", - "text_cn": "炎阳" - }, - { - "key": "skill_buff_390005002", - "text_cn": "无法获得减益" - }, - { - "key": "skill_buff_390005003", - "text_cn": "不会失手" - }, - { - "key": "skill_buff_390006001", - "text_cn": "无法获得增益" - }, - { - "key": "skill_buff_300192114", - "text_cn": "猫猫推理" - }, - { - "key": "skill_buff_300192115", - "text_cn": "护盾" - }, - { - "key": "skill_buffdes_390001001", - "text_cn": "攻击提升40%" - }, - { - "key": "skill_buffdes_390001002", - "text_cn": "防御提升60%" - }, - { - "key": "skill_buffdes_390001003", - "text_cn": "速度提升30%" - }, - { - "key": "skill_buffdes_390001004", - "text_cn": "暴击率提升30%" - }, - { - "key": "skill_buffdes_390001005", - "text_cn": "受到暴击概率降低30%" - }, - { - "key": "skill_buffdes_390001006", - "text_cn": "(无法驱散类状态)每层使自身攻击力提升5%,每10层使自身受到伤害降低3%。最高可叠加50层" - }, - { - "key": "skill_buffdes_390001007", - "text_cn": "每层使自身基础防御提升10%,效果抵抗提升5%,最多可叠加10层。" - }, - { - "key": "skill_buffdes_390001008", - "text_cn": "每次受到攻击提升20%的防御,最多叠加5层" - }, - { - "key": "skill_buffdes_390002001", - "text_cn": "攻击下降40%" - }, - { - "key": "skill_buffdes_390002002", - "text_cn": "防御下降60%" - }, - { - "key": "skill_buffdes_390002003", - "text_cn": "速度下降30%" - }, - { - "key": "skill_buffdes_390002004", - "text_cn": "暴击率下降30%" - }, - { - "key": "skill_buffdes_390002005", - "text_cn": "被攻击时,受到的伤害提高25%" - }, - { - "key": "skill_buffdes_390002006", - "text_cn": "失手率提升50%" - }, - { - "key": "skill_buffdes_390003001", - "text_cn": "不会受到任何伤害" - }, - { - "key": "skill_buffdes_390003002", - "text_cn": "生命最低降为1" - }, - { - "key": "skill_buffdes_390003003", - "text_cn": "无法被附加任何控制效果" - }, - { - "key": "skill_buffdes_390003004", - "text_cn": "" - }, - { - "key": "skill_buffdes_390004001", - "text_cn": "无法进行任务行动" - }, - { - "key": "skill_buffdes_390004002", - "text_cn": "无法进行任何行动" - }, - { - "key": "skill_buffdes_390004003", - "text_cn": "无法恢复生命" - }, - { - "key": "skill_buffdes_390004004", - "text_cn": "无法进行任何行动,不会随着回合到来降低技能冷却" - }, - { - "key": "skill_buffdes_390004005", - "text_cn": "只能释放基础技能" - }, - { - "key": "skill_buffdes_390004006", - "text_cn": "无法进行任何行动,无法被选中,无法被攻击,无法获得任何强化及弱化效果" - }, - { - "key": "skill_buffdes_390004007", - "text_cn": "回合开始时,会被迫发起攻击,向附加状态者释放基础技能" - }, - { - "key": "skill_buffdes_390004008", - "text_cn": "携带者阵亡时清除此状态,并对携带者一方全体造成崔佛(释放者)攻击力40%的效果附加伤害,每层使伤害系数提升40%,最多可叠加5层。" - }, - { - "key": "skill_buffdes_390005001", - "text_cn": "(无法驱散类状态)可以增强炎阳灼射的威力。" - }, - { - "key": "skill_buffdes_390005002", - "text_cn": "无法获得减益效果(不可驱散)(不配置标签)" - }, - { - "key": "skill_buffdes_390005003", - "text_cn": "不会失手" - }, - { - "key": "skill_buffdes_390006001", - "text_cn": "无法附加增益状态(不可驱散)(不配置标签)" - }, - { - "key": "skill_buffdes_300102103", - "text_cn": "受到的所有伤害降低10%" - }, - { - "key": "skill_buffdes_300162105", - "text_cn": "" - }, - { - "key": "skill_buffdes_300192114", - "text_cn": "每层为崔佛(释放者)提供15%伤害减免" - }, - { - "key": "skill_buffdes_300192115", - "text_cn": "增加护盾" - }, - { - "key": "hero_10001", - "text_cn": "基础生命" - }, - { - "key": "hero_10002", - "text_cn": "基础攻击" - }, - { - "key": "hero_10003", - "text_cn": "基础防御" - }, - { - "key": "hero_10004", - "text_cn": "基础速度" - }, - { - "key": "hero_10005", - "text_cn": "基础暴击率" - }, - { - "key": "hero_10006", - "text_cn": "基础暴击伤害" - }, - { - "key": "hero_10007", - "text_cn": "基础效果命中" - }, - { - "key": "hero_10008", - "text_cn": "基础效果抵抗" - }, - { - "key": "star_2", - "text_cn": "优秀" - }, - { - "key": "star_3", - "text_cn": "稀有" - }, - { - "key": "star_4", - "text_cn": "史诗" - }, - { - "key": "star_5", - "text_cn": "传说" - }, - { - "key": "color_1", - "text_cn": "优秀" - }, - { - "key": "color_2", - "text_cn": "稀有" - }, - { - "key": "color_3", - "text_cn": "史诗" - }, - { - "key": "color_4", - "text_cn": "传说" - }, - { - "key": "color_5", - "text_cn": "不朽" - }, - { - "key": "color_6", - "text_cn": "超凡" - }, - { - "key": "race_1", - "text_cn": "灼热" - }, - { - "key": "race_2", - "text_cn": "涌动" - }, - { - "key": "race_3", - "text_cn": "呼啸" - }, - { - "key": "race_4", - "text_cn": "闪耀" - }, - { - "key": "job_1", - "text_cn": "输出" - }, - { - "key": "job_2", - "text_cn": "防御" - }, - { - "key": "job_3", - "text_cn": "辅助" - }, - { - "key": "job_4", - "text_cn": "控制" - }, - { - "key": "job_5", - "text_cn": "材料" - }, - { - "key": "itemdesc_10001", - "text_cn": "使用后可以强化英雄" - }, - { - "key": "itemdesc_10002", - "text_cn": "一块测试功能的石头,他可能是某个不能使用的活动道具" - }, - { - "key": "itemdesc_10003", - "text_cn": "集齐50个碎片合成阿宝" - }, - { - "key": "itemdesc_10004", - "text_cn": "可以在以下道具中选择任选1个" - }, - { - "key": "itemdesc_10005", - "text_cn": "可以在以下道具中随机获取1个" - }, - { - "key": "itemdesc_10006", - "text_cn": "打开后可以获得金币" - }, - { - "key": "itemdesc_10007", - "text_cn": "使用后获得2小时金币收益" - }, - { - "key": "itemdesc_10008", - "text_cn": "使用后获得2小时金币收益,但是他会在2分钟内消失" - }, - { - "key": "itemdesc_10009", - "text_cn": "这本魔法书被强大的魔法封印了,通过第9999关后可以开启" - }, - { - "key": "itemdesc_10010", - "text_cn": "似乎是某个失落文明的货币,暂时只有纪念意义" - }, - { - "key": "itemdesc_10011", - "text_cn": "表针一动不动,也许有人可以修好它。" - }, - { - "key": "itemdesc_10012", - "text_cn": "精致的木材,散发着淡淡的香气" - }, - { - "key": "itemdesc_10013", - "text_cn": "把它放在背包里会带来好运" - }, - { - "key": "itemdesc_10014", - "text_cn": "你登录了游戏就是冒险家,就会获得这个勋章" - }, - { - "key": "itemdesc_10015", - "text_cn": "比幸运草更幸运" - }, - { - "key": "itemdesc_10016", - "text_cn": "钻石是人造的,所以不能用来买商城的商品" - }, - { - "key": "itemname_10001", - "text_cn": "初级经验精灵" - }, - { - "key": "itemname_10002", - "text_cn": "石头" - }, - { - "key": "itemname_10003", - "text_cn": "5星阿宝碎片" - }, - { - "key": "itemname_10004", - "text_cn": "金币自选箱子" - }, - { - "key": "itemname_10005", - "text_cn": "随机金币箱子" - }, - { - "key": "itemname_10006", - "text_cn": "金币箱子" - }, - { - "key": "itemname_10007", - "text_cn": "2小时金币" - }, - { - "key": "itemname_10008", - "text_cn": "特殊2小时金币" - }, - { - "key": "itemname_10009", - "text_cn": "被封印的魔法书" - }, - { - "key": "itemname_10010", - "text_cn": "古代硬币" - }, - { - "key": "itemname_10011", - "text_cn": "坏掉的钟表" - }, - { - "key": "itemname_10012", - "text_cn": "木材" - }, - { - "key": "itemname_10013", - "text_cn": "四叶草" - }, - { - "key": "itemname_10014", - "text_cn": "冒险家勋章" - }, - { - "key": "itemname_10015", - "text_cn": "猫猫护身符" - }, - { - "key": "itemname_10016", - "text_cn": "人造钻石" - }, - { - "key": "server_10001", - "text_cn": "本地测试服" - }, - { - "key": "server_10006", - "text_cn": "乌鸦岭" - }, - { - "key": "server_10003", - "text_cn": "和平谷" - }, - { - "key": "server_10004", - "text_cn": "凤凰城" - }, - { - "key": "server_10005", - "text_cn": "翡翠宫" - }, - { - "key": "skillname_190011000", - "text_cn": "阿宝队长技" - }, - { - "key": "skillname_190012000", - "text_cn": "熊猫拳" - }, - { - "key": "skillname_190013000", - "text_cn": "太极一式" - }, - { - "key": "skillname_190011003", - "text_cn": "太极零式" - }, - { - "key": "skillname_190014000", - "text_cn": "波比队长技" - }, - { - "key": "skillname_190016000", - "text_cn": "和谐音律" - }, - { - "key": "skillname_190017000", - "text_cn": "欢悦之舞" - }, - { - "key": "skillname_190018000", - "text_cn": "彩虹音符" - }, - { - "key": "tips_1001", - "text_cn": "敬请期待" - }, - { - "key": "tips_1002", - "text_cn": "暂未开放" - }, - { - "key": "tips_1003", - "text_cn": "当前星球容量超载,请更换星球开启冒险" - }, - { - "key": "tips_1004", - "text_cn": "当前世界正在建设中,请稍后进入" - }, - { - "key": "nonactivated", - "text_cn": "未激活" - }, - { - "key": "activated", - "text_cn": "已激活" - }, - { - "key": "opencond_prompt_10001", - "text_cn": "通关2-26开启" - }, - { - "key": "opencond_prompt_10002", - "text_cn": "暂不开启,敬请期待" - }, - { - "key": "opencond_prompt_10003", - "text_cn": "开服第2天开启且通关2-14后开启" - }, - { - "key": "num_1001", - "text_cn": "美食馆" - }, - { - "key": "num_1002", - "text_cn": "招募" - }, - { - "key": "num_1003", - "text_cn": "剧情副本" - }, - { - "key": "num_1004", - "text_cn": "黑暗料理大赛" - }, - { - "key": "num_1005", - "text_cn": "商队" - }, - { - "key": "num_1006", - "text_cn": "藏书馆" - }, - { - "key": "num_1007", - "text_cn": "篝火舞会" - }, - { - "key": "num_1008", - "text_cn": "心魔塔" - }, - { - "key": "num_1009", - "text_cn": "捕羊大赛" - }, - { - "key": "num_1010", - "text_cn": "地下角斗场" - }, - { - "key": "num_1011", - "text_cn": "武馆入口" - }, - { - "key": "num_1012", - "text_cn": "五侠擂台" - }, - { - "key": "num_1013", - "text_cn": "疯狂竞技赛" - }, - { - "key": "num_1014", - "text_cn": "主线入口" - }, - { - "key": "num_1015", - "text_cn": "维京远征" - }, - { - "key": "num_1016", - "text_cn": "主题活动入口" - }, - { - "key": "num_1017", - "text_cn": "美食馆" - }, - { - "key": "num_1018", - "text_cn": "戈伯铁匠铺" - }, - { - "key": "num_1019", - "text_cn": "聊天" - }, - { - "key": "num_1020", - "text_cn": "世界" - }, - { - "key": "num_1021", - "text_cn": "公会" - }, - { - "key": "num_1022", - "text_cn": "私聊" - }, - { - "key": "num_1023", - "text_cn": "跨服" - }, - { - "key": "num_1024", - "text_cn": "系统" - }, - { - "key": "opencond_name_10001", - "text_cn": "背包" - }, - { - "key": "opencond_name_10002", - "text_cn": "购物" - }, - { - "key": "opencond_name_10003", - "text_cn": "联盟" - }, - { - "key": "opencond_name_10004", - "text_cn": "邮件" - }, - { - "key": "opencond_name_10005", - "text_cn": "好友" - }, - { - "key": "opencond_name_10006", - "text_cn": "卡牌" - }, - { - "key": "opencond_name_10007", - "text_cn": "寝室" - }, - { - "key": "opencond_name_10008", - "text_cn": "商城" - }, - { - "key": "opencond_name_10009", - "text_cn": "活动" - }, - { - "key": "opencond_name_10010", - "text_cn": "任务" - }, - { - "key": "hero_help_10001", - "text_cn": "养成说明" - }, - { - "key": "hero_help_10002", - "text_cn": "英雄升级" - }, - { - "key": "hero_help_10003", - "text_cn": "英雄可通过出战或吸收经验精灵提升等级" - }, - { - "key": "hero_help_10004", - "text_cn": "英雄升星" - }, - { - "key": "hero_help_10005", - "text_cn": "不同星级的英雄有不同的等级上限,3星为30级,4星为40级,5星为50级,6星为60级。
英雄达到等级上限后,需要通过升星进一步提升等级。
升星后英雄的属性将得到提升。
升星精灵是英雄升星的优质素材" - }, - { - "key": "hero_help_10006", - "text_cn": "技能升级" - }, - { - "key": "hero_help_10007", - "text_cn": "使用稀有/史诗/传说品质的技能精灵可以提升对应品质英雄的技能等级,技能升级时将随机选择还可以继续升级的技能。
如果英雄的所有技能等级满级,将不能再使用技能精灵提升等级" - } -] \ No newline at end of file diff --git a/bin/json/LocalizeConfig_EN.json b/bin/json/LocalizeConfig_EN.json deleted file mode 100644 index eda601765..000000000 --- a/bin/json/LocalizeConfig_EN.json +++ /dev/null @@ -1,4074 +0,0 @@ -[ - { - "key": "ChineseSimplified", - "text_en": "Simplified Chinese" - }, - { - "key": "ChineseTraditional", - "text_en": "traditional Chinese" - }, - { - "key": "English", - "text_en": "English" - }, - { - "key": "1", - "text_en": "one" - }, - { - "key": "2", - "text_en": "two" - }, - { - "key": "3", - "text_en": "three" - }, - { - "key": "4", - "text_en": "Four" - }, - { - "key": "5", - "text_en": "five" - }, - { - "key": "6", - "text_en": "six" - }, - { - "key": "7", - "text_en": "seven" - }, - { - "key": "8", - "text_en": "Eight" - }, - { - "key": "9", - "text_en": "Nine" - }, - { - "key": "10", - "text_en": "ten" - }, - { - "key": "Login", - "text_en": "Log in" - }, - { - "key": "MomentDay1", - "text_en": "{0} days ago" - }, - { - "key": "MomentDay2", - "text_en": "{0} days left" - }, - { - "key": "MomentHour1", - "text_en": "{0} hours ago" - }, - { - "key": "MomentHour2", - "text_en": "{0} hours left" - }, - { - "key": "MomentMinutes1", - "text_en": "{0} minutes ago" - }, - { - "key": "MomentMinutes2", - "text_en": "{0} minutes left" - }, - { - "key": "MomentSeconds1", - "text_en": "just" - }, - { - "key": "MomentSeconds2", - "text_en": "within 1 minute" - }, - { - "key": "Tuijian", - "text_en": "recommend" - }, - { - "key": "Juese", - "text_en": "Role" - }, - { - "key": "hero_13001", - "text_en": "sparkle" - }, - { - "key": "hero_13002", - "text_en": "mr piranha" - }, - { - "key": "hero_13003", - "text_en": "ah ah" - }, - { - "key": "hero_13004", - "text_en": "lord farquad" - }, - { - "key": "hero_13005", - "text_en": "greatly" - }, - { - "key": "hero_14001", - "text_en": "Stoick" - }, - { - "key": "hero_14002", - "text_en": "big dragon" - }, - { - "key": "hero_14003", - "text_en": "Astrid" - }, - { - "key": "hero_14004", - "text_en": "Claire Nunes" - }, - { - "key": "hero_14005", - "text_en": "Master Crane" - }, - { - "key": "hero_14006", - "text_en": "Blanche" - }, - { - "key": "hero_14007", - "text_en": "Prince Grist" - }, - { - "key": "hero_15001", - "text_en": "Jim Lake" - }, - { - "key": "hero_15002", - "text_en": "captain" - }, - { - "key": "hero_15003", - "text_en": "Hisardos" - }, - { - "key": "hero_15004", - "text_en": "Xiaoou" - }, - { - "key": "hero_15005", - "text_en": "Alex" - }, - { - "key": "hero_23001", - "text_en": "Captain Smack" - }, - { - "key": "hero_23002", - "text_en": "captain of the guard" - }, - { - "key": "hero_23003", - "text_en": "Ted Templeton" - }, - { - "key": "hero_23004", - "text_en": "Jim Prescott" - }, - { - "key": "hero_24001", - "text_en": "sheriff" - }, - { - "key": "hero_24002", - "text_en": "Tooth Fairy" - }, - { - "key": "hero_24003", - "text_en": "Sleeping Sand Man" - }, - { - "key": "hero_24004", - "text_en": "Bonnie Rabbit" - }, - { - "key": "hero_24005", - "text_en": "golden monkey" - }, - { - "key": "hero_24006", - "text_en": "Kyle" - }, - { - "key": "hero_24007", - "text_en": "small money" - }, - { - "key": "hero_24008", - "text_en": "Puffnut" - }, - { - "key": "hero_24009", - "text_en": "Mr Cloud" - }, - { - "key": "hero_25001", - "text_en": "Po" - }, - { - "key": "hero_25002", - "text_en": "Mr Wolfe" - }, - { - "key": "hero_25003", - "text_en": "Toothless" - }, - { - "key": "hero_25004", - "text_en": "Poppy" - }, - { - "key": "hero_33001", - "text_en": "Wu Ga" - }, - { - "key": "hero_33002", - "text_en": "tank" - }, - { - "key": "hero_33003", - "text_en": "Mr. Hood" - }, - { - "key": "hero_33004", - "text_en": "Prue Granger" - }, - { - "key": "hero_33005", - "text_en": "thick snot" - }, - { - "key": "hero_33006", - "text_en": "Janice Templeton" - }, - { - "key": "hero_34001", - "text_en": "sloppy donkey" - }, - { - "key": "hero_34002", - "text_en": "Tim Templeton" - }, - { - "key": "hero_34003", - "text_en": "Santa Claus" - }, - { - "key": "hero_34004", - "text_en": "Guage" - }, - { - "key": "hero_34005", - "text_en": "Walter Strickler" - }, - { - "key": "hero_34006", - "text_en": "Frost Jack" - }, - { - "key": "hero_34007", - "text_en": "Fiona" - }, - { - "key": "hero_34008", - "text_en": "Huffnut" - }, - { - "key": "hero_35001", - "text_en": "Master Shifu" - }, - { - "key": "hero_35002", - "text_en": "Hiccup" - }, - { - "key": "hero_35003", - "text_en": "dark" - }, - { - "key": "hero_35004", - "text_en": "Diane Folston" - }, - { - "key": "hero_35005", - "text_en": "Lucky Prescott" - }, - { - "key": "hero_35006", - "text_en": "Mr. Ping" - }, - { - "key": "hero_43001", - "text_en": "Abigail Stone" - }, - { - "key": "hero_43002", - "text_en": "Professor Jam" - }, - { - "key": "hero_43003", - "text_en": "Steve Pachuk" - }, - { - "key": "hero_43004", - "text_en": "gingerbread Man" - }, - { - "key": "hero_43005", - "text_en": "commander wahir" - }, - { - "key": "hero_43006", - "text_en": "Bridget" - }, - { - "key": "hero_43007", - "text_en": "Gober" - }, - { - "key": "hero_44001", - "text_en": "belly shark" - }, - { - "key": "hero_44002", - "text_en": "Mr Snake" - }, - { - "key": "hero_44003", - "text_en": "Pinocchio" - }, - { - "key": "hero_44004", - "text_en": "Azatalon" - }, - { - "key": "hero_44005", - "text_en": "EEP" - }, - { - "key": "hero_44006", - "text_en": "Tigress" - }, - { - "key": "hero_45001", - "text_en": "master turtle" - }, - { - "key": "hero_45002", - "text_en": "Merlin" - }, - { - "key": "hero_45003", - "text_en": "cover" - }, - { - "key": "hero_45004", - "text_en": "the cat that wears shoes" - }, - { - "key": "hero_43901", - "text_en": "Rising Star Spirit" - }, - { - "key": "hero_42911", - "text_en": "Junior Experience Wizard" - }, - { - "key": "hero_43911", - "text_en": "Intermediate Experience Wizard" - }, - { - "key": "hero_44911", - "text_en": "Advanced Experience Wizard" - }, - { - "key": "hero_43921", - "text_en": "Skill Spirit Rare" - }, - { - "key": "hero_44921", - "text_en": "Skill Elf Epic" - }, - { - "key": "hero_45921", - "text_en": "Skill Spirit · Legend" - }, - { - "key": "hero_51001", - "text_en": "Bo Bo star (new)" - }, - { - "key": "hero_51002", - "text_en": "Erret's No. 1 (new)" - }, - { - "key": "hero_51003", - "text_en": "Erret's No. 2 (new)" - }, - { - "key": "hero_51004", - "text_en": "Jackal mobs (new)" - }, - { - "key": "hero_51005", - "text_en": "Rhino Guard (New)" - }, - { - "key": "hero_51006", - "text_en": "Captain Chantal du Bois No. 1 (new)" - }, - { - "key": "hero_51007", - "text_en": "Captain Chantal du Bois No. 2 (new)" - }, - { - "key": "hero_51008", - "text_en": "Captain Chantal du Bois No. 3 (new)" - }, - { - "key": "hero_51009", - "text_en": "Captain Chantal du Bois's No. 4 (new)" - }, - { - "key": "hero_51010", - "text_en": "Guard 1 (New)" - }, - { - "key": "hero_51011", - "text_en": "Guard 2 (New)" - }, - { - "key": "hero_51012", - "text_en": "Little Monkey (New)" - }, - { - "key": "hero_51013", - "text_en": "troll la la (new)" - }, - { - "key": "hero_51014", - "text_en": "Bogan Court Guard (New)" - }, - { - "key": "hero_53001", - "text_en": "Eret (new)" - }, - { - "key": "hero_53002", - "text_en": "Jackal Chief (New)" - }, - { - "key": "hero_53003", - "text_en": "Porcupine Master (Emerald Zombie) (New)" - }, - { - "key": "hero_53004", - "text_en": "Master Twin Badger (Emerald Zombie) (New)" - }, - { - "key": "hero_53005", - "text_en": "Little Monkey Leader (New)" - }, - { - "key": "hero_53006", - "text_en": "Troll Leader (New)" - }, - { - "key": "hero_55001", - "text_en": "Captain Chantal du Bois" - }, - { - "key": "hero_55002", - "text_en": "Hendrix (new)" - }, - { - "key": "hero_55003", - "text_en": "Giant Gorilla Monster (New)" - }, - { - "key": "hero_55004", - "text_en": "White Dragon King" - }, - { - "key": "hero_55005", - "text_en": "Chef (New)" - }, - { - "key": "hero_55006", - "text_en": "Dreg (new)" - }, - { - "key": "hero_55007", - "text_en": "Morgana Troll" - }, - { - "key": "hero_55008", - "text_en": "Morgana second order" - }, - { - "key": "hero_55009", - "text_en": "A handsome bunch" - }, - { - "key": "hero_55010", - "text_en": "Mr. Piranha's handsome batch" - }, - { - "key": "hero_55011", - "text_en": "Ahhh handsome group" - }, - { - "key": "hero_55012", - "text_en": "Lord Farquad's handsome batch" - }, - { - "key": "hero_55013", - "text_en": "big handsome group" - }, - { - "key": "hero_55014", - "text_en": "A group of handsome Stuick" - }, - { - "key": "hero_55015", - "text_en": "A group of handsome dragons" - }, - { - "key": "hero_55016", - "text_en": "A group of handsome Astrid" - }, - { - "key": "hero_55017", - "text_en": "Claire Nunes handsome batch" - }, - { - "key": "hero_55018", - "text_en": "A group of handsome master cranes" - }, - { - "key": "hero_55019", - "text_en": "Blanche's handsome batch" - }, - { - "key": "hero_55020", - "text_en": "Prince Grist's handsome batch" - }, - { - "key": "hero_55021", - "text_en": "Jim Lake handsome batch" - }, - { - "key": "hero_55022", - "text_en": "A handsome batch of captains" - }, - { - "key": "hero_55023", - "text_en": "The handsome group of Hisardos" - }, - { - "key": "hero_55024", - "text_en": "A group of Xiao Ou Shuai" - }, - { - "key": "hero_55025", - "text_en": "Alex handsome group" - }, - { - "key": "hero_55026", - "text_en": "Captain Smack's handsome batch" - }, - { - "key": "hero_55027", - "text_en": "A handsome group of guard captains" - }, - { - "key": "hero_55028", - "text_en": "Ted Templeton handsome batch" - }, - { - "key": "hero_55029", - "text_en": "Jim Prescott handsome batch" - }, - { - "key": "hero_55030", - "text_en": "A bunch of sheriffs" - }, - { - "key": "hero_55031", - "text_en": "Tooth Fairy handsome batch" - }, - { - "key": "hero_55032", - "text_en": "A handsome batch of sleeping god sand people" - }, - { - "key": "hero_55033", - "text_en": "A batch of handsome Bonnie Rabbit" - }, - { - "key": "hero_55034", - "text_en": "A group of handsome golden monkeys" - }, - { - "key": "hero_55035", - "text_en": "Kyle's group" - }, - { - "key": "hero_55036", - "text_en": "A bunch of handsome little money" - }, - { - "key": "hero_55037", - "text_en": "The handsome group of Baofu Nat" - }, - { - "key": "hero_55038", - "text_en": "Mr. Cloud is handsome" - }, - { - "key": "hero_55039", - "text_en": "Po's personality is easy-going, innocent, active, playful, and childish, but it is these qualities that give him the potential to become a \"Dragon Hero\". Maybe heroes are not necessarily perfect, but they must be kind!" - }, - { - "key": "hero_55040", - "text_en": "Mr. Wolfe's handsome batch" - }, - { - "key": "hero_55041", - "text_en": "A bunch of toothless boys" - }, - { - "key": "hero_55042", - "text_en": "Poppy is the princess of Elf City, she has magical powers and colorful hair, she is optimistic and positive, and loves to sing." - }, - { - "key": "hero_55043", - "text_en": "Wu Ga handsome group" - }, - { - "key": "hero_55044", - "text_en": "A bunch of tanks" - }, - { - "key": "hero_55045", - "text_en": "Mr. Hood is handsome" - }, - { - "key": "hero_55046", - "text_en": "Prue Granger's handsome batch" - }, - { - "key": "hero_55047", - "text_en": "A bunch of snotty handsome" - }, - { - "key": "hero_55048", - "text_en": "Janice Templeton handsome batch" - }, - { - "key": "hero_55049", - "text_en": "A bunch of handsome donkeys" - }, - { - "key": "hero_55050", - "text_en": "Tim Templeton handsome batch" - }, - { - "key": "hero_55051", - "text_en": "Handsome Santa Claus" - }, - { - "key": "hero_55052", - "text_en": "A bunch of handsome guys" - }, - { - "key": "hero_55053", - "text_en": "Walter Strickler's handsome batch" - }, - { - "key": "hero_55054", - "text_en": "Frost Jack handsome batch" - }, - { - "key": "hero_55055", - "text_en": "Fiona's handsome batch" - }, - { - "key": "hero_55056", - "text_en": "Huffnut's handsome batch" - }, - { - "key": "hero_55057", - "text_en": "A handsome batch of masters" - }, - { - "key": "hero_55058", - "text_en": "Hiccup handsome batch" - }, - { - "key": "hero_55059", - "text_en": "A group of dark handsome" - }, - { - "key": "hero_55060", - "text_en": "Diane Folston handsome batch" - }, - { - "key": "hero_55061", - "text_en": "Lucky Prescott handsome batch" - }, - { - "key": "hero_55062", - "text_en": "Mr. Ping's handsome group" - }, - { - "key": "hero_55063", - "text_en": "Abigail Stone's handsome batch" - }, - { - "key": "hero_55064", - "text_en": "A handsome batch of Professor Jam" - }, - { - "key": "hero_55065", - "text_en": "Steve Pachuk handsome batch" - }, - { - "key": "hero_55066", - "text_en": "Gingerbread man handsome batch" - }, - { - "key": "hero_55067", - "text_en": "Commander Vahir's handsome group" - }, - { - "key": "hero_55068", - "text_en": "Bridget's handsome batch" - }, - { - "key": "hero_55069", - "text_en": "A group of handsome Gerber" - }, - { - "key": "hero_55070", - "text_en": "A batch of handsome belly sharks" - }, - { - "key": "hero_55071", - "text_en": "Handsome Mr. Snake" - }, - { - "key": "hero_55072", - "text_en": "A group of handsome Pinocchio" - }, - { - "key": "hero_55073", - "text_en": "A group of handsome Aizataren" - }, - { - "key": "hero_55074", - "text_en": "A group of Xiao Yishuai" - }, - { - "key": "hero_55075", - "text_en": "A group of handsome tigers" - }, - { - "key": "hero_55076", - "text_en": "A group of handsome turtle masters" - }, - { - "key": "hero_55077", - "text_en": "Merlin handsome group" - }, - { - "key": "hero_55078", - "text_en": "Guy's group" - }, - { - "key": "hero_55079", - "text_en": "A batch of handsome cats in boots" - }, - { - "key": "hero_55080", - "text_en": "A handsome batch of rising star elves" - }, - { - "key": "hero_55081", - "text_en": "A group of handsome elves with primary experience" - }, - { - "key": "hero_55082", - "text_en": "group of handsome elves with intermediate experience" - }, - { - "key": "hero_55083", - "text_en": "A group of handsome elves with advanced experience" - }, - { - "key": "hero_55084", - "text_en": "Skill elves · Rare and handsome batch" - }, - { - "key": "hero_55085", - "text_en": "A batch of skill elves · epic handsome" - }, - { - "key": "hero_55086", - "text_en": "A batch of skill elves and legends" - }, - { - "key": "hero_55087", - "text_en": "A batch of handsome bobo stars (new)" - }, - { - "key": "hero_55088", - "text_en": "A batch of No. 1 (new) handsomes under Errett" - }, - { - "key": "hero_55089", - "text_en": "A batch of No. 2 (new) handsomes under Errett" - }, - { - "key": "hero_55090", - "text_en": "Jackal mobs (new) handsome batch" - }, - { - "key": "hero_55091", - "text_en": "Rhino Guard (New) Handsome batch" - }, - { - "key": "hero_55092", - "text_en": "A group of handsome No. 1 (newly added) under Captain Chantal Dubois" - }, - { - "key": "hero_55093", - "text_en": "A group of handsome No. 2 (newly added) under Captain Chantal Dubois" - }, - { - "key": "hero_55094", - "text_en": "A group of handsome No. 3 (newly added) under Captain Chantal Dubois" - }, - { - "key": "hero_55095", - "text_en": "A group of handsome No. 4 (newly added) under Captain Chantal Dubois" - }, - { - "key": "hero_55096", - "text_en": "Guard No. 1 (new) handsome batch" - }, - { - "key": "hero_55097", - "text_en": "Guard No. 2 (new) handsome batch" - }, - { - "key": "hero_55098", - "text_en": "A handsome batch of little monkeys (new)" - }, - { - "key": "hero_55099", - "text_en": "Troll La La (new) A handsome batch" - }, - { - "key": "hero_55100", - "text_en": "A group of handsome Bogan court guards (new)" - }, - { - "key": "hero_55101", - "text_en": "Eret (newly added) handsome batch" - }, - { - "key": "hero_55102", - "text_en": "A group of handsome jackal leaders (new)" - }, - { - "key": "hero_55103", - "text_en": "Porcupine Master (Jade Zombie) (New) Handsome batch" - }, - { - "key": "hero_55104", - "text_en": "Master Double Badger (Jade Zombie) (New) Handsome batch" - }, - { - "key": "hero_55105", - "text_en": "A group of handsome little monkey leaders (new)" - }, - { - "key": "hero_55106", - "text_en": "A group of handsome troll leaders (new)" - }, - { - "key": "hero_55107", - "text_en": "A group of handsome captains of Chantal du Bois" - }, - { - "key": "hero_55108", - "text_en": "Hendricks (new) handsome batch" - }, - { - "key": "hero_55109", - "text_en": "A handsome batch of giant orangutan monsters (new)" - }, - { - "key": "hero_55110", - "text_en": "A group of handsome white dragon king" - }, - { - "key": "hero_55111", - "text_en": "Chef (new) handsome batch" - }, - { - "key": "hero_55112", - "text_en": "Dreg (new) handsome batch" - }, - { - "key": "hero_55113", - "text_en": "Morgana troll handsome group" - }, - { - "key": "hero_55114", - "text_en": "A group of second-order handsome Morgana" - }, - { - "key": "equip_13001", - "text_en": "arms" - }, - { - "key": "equip_13002", - "text_en": "clothing" - }, - { - "key": "equip_13003", - "text_en": "shoe" - }, - { - "key": "equip_13004", - "text_en": "ring" - }, - { - "key": "equip_13005", - "text_en": "time gem" - }, - { - "key": "equip_13006", - "text_en": "space gem" - }, - { - "key": "equip_13007", - "text_en": "arms" - }, - { - "key": "equip_13008", - "text_en": "clothing" - }, - { - "key": "equip_13009", - "text_en": "shoe" - }, - { - "key": "equip_13010", - "text_en": "ring" - }, - { - "key": "equip_13011", - "text_en": "time gem" - }, - { - "key": "equip_13012", - "text_en": "space gem" - }, - { - "key": "equip_13013", - "text_en": "arms" - }, - { - "key": "equip_13014", - "text_en": "clothing" - }, - { - "key": "equip_13015", - "text_en": "shoe" - }, - { - "key": "equip_13016", - "text_en": "ring" - }, - { - "key": "equip_13017", - "text_en": "time gem" - }, - { - "key": "equip_13018", - "text_en": "space gem" - }, - { - "key": "equip_13019", - "text_en": "arms" - }, - { - "key": "equip_13020", - "text_en": "clothing" - }, - { - "key": "equip_13021", - "text_en": "shoe" - }, - { - "key": "equip_13022", - "text_en": "ring" - }, - { - "key": "equip_13023", - "text_en": "time gem" - }, - { - "key": "equip_13024", - "text_en": "space gem" - }, - { - "key": "equip_13025", - "text_en": "arms" - }, - { - "key": "equip_13026", - "text_en": "clothing" - }, - { - "key": "equip_13027", - "text_en": "shoe" - }, - { - "key": "equip_13028", - "text_en": "ring" - }, - { - "key": "equip_13029", - "text_en": "time gem" - }, - { - "key": "equip_13030", - "text_en": "space gem" - }, - { - "key": "equip_13031", - "text_en": "arms" - }, - { - "key": "equip_13032", - "text_en": "clothing" - }, - { - "key": "equip_13033", - "text_en": "shoe" - }, - { - "key": "equip_13034", - "text_en": "ring" - }, - { - "key": "equip_13035", - "text_en": "time gem" - }, - { - "key": "equip_13036", - "text_en": "space gem" - }, - { - "key": "equip_13037", - "text_en": "arms" - }, - { - "key": "equip_13038", - "text_en": "clothing" - }, - { - "key": "equip_13039", - "text_en": "shoe" - }, - { - "key": "equip_13040", - "text_en": "ring" - }, - { - "key": "equip_13041", - "text_en": "time gem" - }, - { - "key": "equip_13042", - "text_en": "space gem" - }, - { - "key": "equip_13043", - "text_en": "arms" - }, - { - "key": "equip_13044", - "text_en": "clothing" - }, - { - "key": "equip_13045", - "text_en": "shoe" - }, - { - "key": "equip_13046", - "text_en": "ring" - }, - { - "key": "equip_13047", - "text_en": "time gem" - }, - { - "key": "equip_13048", - "text_en": "space gem" - }, - { - "key": "equip_13049", - "text_en": "arms" - }, - { - "key": "equip_13050", - "text_en": "clothing" - }, - { - "key": "equip_13051", - "text_en": "shoe" - }, - { - "key": "equip_13052", - "text_en": "ring" - }, - { - "key": "equip_13053", - "text_en": "time gem" - }, - { - "key": "equip_13054", - "text_en": "space gem" - }, - { - "key": "equip_13055", - "text_en": "arms" - }, - { - "key": "equip_13056", - "text_en": "clothing" - }, - { - "key": "equip_13057", - "text_en": "shoe" - }, - { - "key": "equip_13058", - "text_en": "ring" - }, - { - "key": "equip_13059", - "text_en": "time gem" - }, - { - "key": "equip_13060", - "text_en": "space gem" - }, - { - "key": "equip_13061", - "text_en": "arms" - }, - { - "key": "equip_13062", - "text_en": "clothing" - }, - { - "key": "equip_13063", - "text_en": "shoe" - }, - { - "key": "equip_13064", - "text_en": "ring" - }, - { - "key": "equip_13065", - "text_en": "time gem" - }, - { - "key": "equip_13066", - "text_en": "space gem" - }, - { - "key": "equip_13067", - "text_en": "arms" - }, - { - "key": "equip_13068", - "text_en": "clothing" - }, - { - "key": "equip_13069", - "text_en": "shoe" - }, - { - "key": "equip_13070", - "text_en": "ring" - }, - { - "key": "equip_13071", - "text_en": "time gem" - }, - { - "key": "equip_13072", - "text_en": "space gem" - }, - { - "key": "equip_13073", - "text_en": "arms" - }, - { - "key": "equip_13074", - "text_en": "clothing" - }, - { - "key": "equip_13075", - "text_en": "shoe" - }, - { - "key": "equip_13076", - "text_en": "ring" - }, - { - "key": "equip_13077", - "text_en": "time gem" - }, - { - "key": "equip_13078", - "text_en": "space gem" - }, - { - "key": "equip_13079", - "text_en": "arms" - }, - { - "key": "equip_13080", - "text_en": "clothing" - }, - { - "key": "equip_13081", - "text_en": "shoe" - }, - { - "key": "equip_13082", - "text_en": "ring" - }, - { - "key": "equip_13083", - "text_en": "time gem" - }, - { - "key": "equip_13084", - "text_en": "space gem" - }, - { - "key": "equip_13085", - "text_en": "arms" - }, - { - "key": "equip_13086", - "text_en": "clothing" - }, - { - "key": "equip_13087", - "text_en": "shoe" - }, - { - "key": "equip_13088", - "text_en": "ring" - }, - { - "key": "equip_13089", - "text_en": "time gem" - }, - { - "key": "equip_13090", - "text_en": "space gem" - }, - { - "key": "equip_13091", - "text_en": "arms" - }, - { - "key": "equip_13092", - "text_en": "clothing" - }, - { - "key": "equip_13093", - "text_en": "shoe" - }, - { - "key": "equip_13094", - "text_en": "ring" - }, - { - "key": "equip_13095", - "text_en": "time gem" - }, - { - "key": "equip_13096", - "text_en": "space gem" - }, - { - "key": "equip_13097", - "text_en": "arms" - }, - { - "key": "equip_13098", - "text_en": "clothing" - }, - { - "key": "equip_13099", - "text_en": "shoe" - }, - { - "key": "equip_13100", - "text_en": "ring" - }, - { - "key": "equip_13101", - "text_en": "time gem" - }, - { - "key": "equip_13102", - "text_en": "space gem" - }, - { - "key": "equip_13103", - "text_en": "arms" - }, - { - "key": "equip_13104", - "text_en": "clothing" - }, - { - "key": "equip_13105", - "text_en": "shoe" - }, - { - "key": "equip_13106", - "text_en": "ring" - }, - { - "key": "equip_13107", - "text_en": "time gem" - }, - { - "key": "equip_13108", - "text_en": "space gem" - }, - { - "key": "equip_13109", - "text_en": "arms" - }, - { - "key": "equip_13110", - "text_en": "clothing" - }, - { - "key": "equip_13111", - "text_en": "shoe" - }, - { - "key": "equip_13112", - "text_en": "ring" - }, - { - "key": "equip_13113", - "text_en": "time gem" - }, - { - "key": "equip_13114", - "text_en": "space gem" - }, - { - "key": "equip_13115", - "text_en": "arms" - }, - { - "key": "equip_13116", - "text_en": "clothing" - }, - { - "key": "equip_13117", - "text_en": "shoe" - }, - { - "key": "equip_13118", - "text_en": "ring" - }, - { - "key": "equip_13119", - "text_en": "time gem" - }, - { - "key": "equip_13120", - "text_en": "space gem" - }, - { - "key": "equip_13121", - "text_en": "arms" - }, - { - "key": "equip_13122", - "text_en": "clothing" - }, - { - "key": "equip_13123", - "text_en": "shoe" - }, - { - "key": "equip_13124", - "text_en": "ring" - }, - { - "key": "equip_13125", - "text_en": "time gem" - }, - { - "key": "equip_13126", - "text_en": "space gem" - }, - { - "key": "equip_13127", - "text_en": "arms" - }, - { - "key": "equip_13128", - "text_en": "clothing" - }, - { - "key": "equip_13129", - "text_en": "shoe" - }, - { - "key": "equip_13130", - "text_en": "ring" - }, - { - "key": "equip_13131", - "text_en": "time gem" - }, - { - "key": "equip_13132", - "text_en": "space gem" - }, - { - "key": "equip_13133", - "text_en": "arms" - }, - { - "key": "equip_13134", - "text_en": "clothing" - }, - { - "key": "equip_13135", - "text_en": "shoe" - }, - { - "key": "equip_13136", - "text_en": "ring" - }, - { - "key": "equip_13137", - "text_en": "time gem" - }, - { - "key": "equip_13138", - "text_en": "space gem" - }, - { - "key": "equip_13139", - "text_en": "arms" - }, - { - "key": "equip_13140", - "text_en": "clothing" - }, - { - "key": "equip_13141", - "text_en": "shoe" - }, - { - "key": "equip_13142", - "text_en": "ring" - }, - { - "key": "equip_13143", - "text_en": "time gem" - }, - { - "key": "equip_13144", - "text_en": "space gem" - }, - { - "key": "equip_13145", - "text_en": "arms" - }, - { - "key": "equip_13146", - "text_en": "clothing" - }, - { - "key": "equip_13147", - "text_en": "shoe" - }, - { - "key": "equip_13148", - "text_en": "ring" - }, - { - "key": "equip_13149", - "text_en": "time gem" - }, - { - "key": "equip_13150", - "text_en": "space gem" - }, - { - "key": "equip_13151", - "text_en": "arms" - }, - { - "key": "equip_13152", - "text_en": "clothing" - }, - { - "key": "equip_13153", - "text_en": "shoe" - }, - { - "key": "equip_13154", - "text_en": "ring" - }, - { - "key": "equip_13155", - "text_en": "time gem" - }, - { - "key": "equip_13156", - "text_en": "space gem" - }, - { - "key": "equip_13157", - "text_en": "arms" - }, - { - "key": "equip_13158", - "text_en": "clothing" - }, - { - "key": "equip_13159", - "text_en": "shoe" - }, - { - "key": "equip_13160", - "text_en": "ring" - }, - { - "key": "equip_13161", - "text_en": "time gem" - }, - { - "key": "equip_13162", - "text_en": "space gem" - }, - { - "key": "equip_13163", - "text_en": "arms" - }, - { - "key": "equip_13164", - "text_en": "clothing" - }, - { - "key": "equip_13165", - "text_en": "shoe" - }, - { - "key": "equip_13166", - "text_en": "ring" - }, - { - "key": "equip_13167", - "text_en": "time gem" - }, - { - "key": "equip_13168", - "text_en": "space gem" - }, - { - "key": "equip_13169", - "text_en": "arms" - }, - { - "key": "equip_13170", - "text_en": "clothing" - }, - { - "key": "equip_13171", - "text_en": "shoe" - }, - { - "key": "equip_13172", - "text_en": "ring" - }, - { - "key": "equip_13173", - "text_en": "time gem" - }, - { - "key": "equip_13174", - "text_en": "space gem" - }, - { - "key": "equip_13175", - "text_en": "arms" - }, - { - "key": "equip_13176", - "text_en": "clothing" - }, - { - "key": "equip_13177", - "text_en": "shoe" - }, - { - "key": "equip_13178", - "text_en": "ring" - }, - { - "key": "equip_13179", - "text_en": "time gem" - }, - { - "key": "equip_13180", - "text_en": "space gem" - }, - { - "key": "equip_13181", - "text_en": "arms" - }, - { - "key": "equip_13182", - "text_en": "clothing" - }, - { - "key": "equip_13183", - "text_en": "shoe" - }, - { - "key": "equip_13184", - "text_en": "ring" - }, - { - "key": "equip_13185", - "text_en": "time gem" - }, - { - "key": "equip_13186", - "text_en": "space gem" - }, - { - "key": "equip_13187", - "text_en": "arms" - }, - { - "key": "equip_13188", - "text_en": "clothing" - }, - { - "key": "equip_13189", - "text_en": "shoe" - }, - { - "key": "equip_13190", - "text_en": "ring" - }, - { - "key": "equip_13191", - "text_en": "time gem" - }, - { - "key": "equip_13192", - "text_en": "space gem" - }, - { - "key": "equip_13193", - "text_en": "arms" - }, - { - "key": "equip_13194", - "text_en": "clothing" - }, - { - "key": "equip_13195", - "text_en": "shoe" - }, - { - "key": "equip_13196", - "text_en": "ring" - }, - { - "key": "equip_13197", - "text_en": "time gem" - }, - { - "key": "equip_13198", - "text_en": "space gem" - }, - { - "key": "equip_13199", - "text_en": "arms" - }, - { - "key": "equip_13200", - "text_en": "clothing" - }, - { - "key": "equip_13201", - "text_en": "shoe" - }, - { - "key": "equip_13202", - "text_en": "ring" - }, - { - "key": "equip_13203", - "text_en": "time gem" - }, - { - "key": "equip_13204", - "text_en": "ring" - }, - { - "key": "equip_13205", - "text_en": "arms" - }, - { - "key": "equip_13206", - "text_en": "clothing" - }, - { - "key": "equip_13207", - "text_en": "shoe" - }, - { - "key": "equip_13208", - "text_en": "ring" - }, - { - "key": "equip_13209", - "text_en": "arms" - }, - { - "key": "equip_13210", - "text_en": "clothing" - }, - { - "key": "equip_13211", - "text_en": "shoe" - }, - { - "key": "equip_13212", - "text_en": "ring" - }, - { - "key": "equip_13213", - "text_en": "Dragon suit" - }, - { - "key": "equip_13214", - "text_en": "full moon suit" - }, - { - "key": "equip_13215", - "text_en": "Critical strike rate +20%" - }, - { - "key": "equip_13216", - "text_en": "inactivated" - }, - { - "key": "equip_13217", - "text_en": "activated" - }, - { - "key": "suit_equip_10001", - "text_en": "Beginners set" - }, - { - "key": "item_10001", - "text_en": "1 faction awakening material" - }, - { - "key": "item_10002", - "text_en": "1 faction awakening material" - }, - { - "key": "item_10003", - "text_en": "1 faction awakening material" - }, - { - "key": "item_10011", - "text_en": "2 faction awakening materials" - }, - { - "key": "item_10012", - "text_en": "2 faction awakening materials" - }, - { - "key": "item_10013", - "text_en": "2 faction awakening materials" - }, - { - "key": "item_10021", - "text_en": "3 faction awakening materials" - }, - { - "key": "item_10022", - "text_en": "3 faction awakening materials" - }, - { - "key": "item_10023", - "text_en": "3 faction awakening materials" - }, - { - "key": "item_10031", - "text_en": "4 faction awakening materials" - }, - { - "key": "item_10032", - "text_en": "4 faction awakening materials" - }, - { - "key": "item_10033", - "text_en": "4 faction awakening materials" - }, - { - "key": "mainline_title_10001", - "text_en": "Chapter 1: Kung Fu World" - }, - { - "key": "mainline_title_10002", - "text_en": "Chapter 2: Exercise Room" - }, - { - "key": "mainline_title_10003", - "text_en": "Chapter 3: The Wolf Attacks" - }, - { - "key": "mainline_title_10004", - "text_en": "Chapter 4: Master Turtle" - }, - { - "key": "mainline_title_10005", - "text_en": "Chapter 4: The Wolf Attacks" - }, - { - "key": "mainline_title_10006", - "text_en": "Chapter 5: Master Turtle" - }, - { - "key": "mainline_title_10007", - "text_en": "Chapter 5: The Wolf Attacks" - }, - { - "key": "mainline_title_10008", - "text_en": "Chapter 6: Master Turtle" - }, - { - "key": "mainline_title_10009", - "text_en": "Chapter 6: The Wolf Attacks" - }, - { - "key": "mainline_title_10010", - "text_en": "Chapter 7: Master Turtle" - }, - { - "key": "mainline_title_10011", - "text_en": "Chapter 7: The Wolf Attacks" - }, - { - "key": "mainline_title_10012", - "text_en": "Chapter 8: Master Turtle" - }, - { - "key": "mainline_title_10013", - "text_en": "Chapter 8: The Great Wolf Attacks" - }, - { - "key": "mainline_title_10014", - "text_en": "Chapter 9: Master Turtle" - }, - { - "key": "mainline_title_10015", - "text_en": "Chapter 9: The Wolf Attacks" - }, - { - "key": "mainline_title_10016", - "text_en": "Chapter 10: Master Turtle" - }, - { - "key": "mainline_title_10017", - "text_en": "Chapter 10: The Great Wolf Attacks" - }, - { - "key": "mainline_title_10018", - "text_en": "Chapter 11: Master Turtle" - }, - { - "key": "mainline_title_10019", - "text_en": "Chapter 11: The Great Wolf Attacks" - }, - { - "key": "mainline_title_10020", - "text_en": "Chapter 12: Master Turtle" - }, - { - "key": "mainline_title_10021", - "text_en": "Chapter 12: The Great Wolf Attacks" - }, - { - "key": "mainline_title_10022", - "text_en": "Chapter 13: Master Turtle" - }, - { - "key": "mainline_title_10023", - "text_en": "Chapter 13: The Great Wolf Attacks" - }, - { - "key": "mainline_title_10024", - "text_en": "Chapter 14: Master Turtle" - }, - { - "key": "mainline_title_10025", - "text_en": "Chapter 14: The Great Wolf Attacks" - }, - { - "key": "mainline_title_10026", - "text_en": "Chapter 15: Master Turtle" - }, - { - "key": "mainline_title_10027", - "text_en": "Chapter 15: The Great Wolf Attacks" - }, - { - "key": "mainline_title_10028", - "text_en": "Chapter 16: Master Turtle" - }, - { - "key": "mainline_title_10029", - "text_en": "Chapter 16: The Great Wolf Attacks" - }, - { - "key": "mainline_title_10030", - "text_en": "Chapter 17: Master Turtle" - }, - { - "key": "mainline_title_10031", - "text_en": "Chapter 17: The Great Wolf Attacks" - }, - { - "key": "mainline_title_10032", - "text_en": "Chapter 18: Master Turtle" - }, - { - "key": "mainline_title_10033", - "text_en": "Chapter 18: The Great Wolf Attacks" - }, - { - "key": "mainline_title_10034", - "text_en": "Chapter 19: Master Turtle" - }, - { - "key": "mainline_title_10035", - "text_en": "Chapter 19: The Great Wolf Attacks" - }, - { - "key": "mainline_title_10036", - "text_en": "Chapter 20: Master Turtle" - }, - { - "key": "mainline_title_10037", - "text_en": "Chapter 20: The Great Wolf Attacks" - }, - { - "key": "mainline_title_10038", - "text_en": "Chapter 21: Master Turtle" - }, - { - "key": "mainline_title_10039", - "text_en": "Chapter 21: The Great Wolf Attacks" - }, - { - "key": "mainline_title_10040", - "text_en": "Chapter 22: Master Turtle" - }, - { - "key": "mainline_title_10041", - "text_en": "Chapter 22: The Great Wolf Attacks" - }, - { - "key": "mainline_title_10042", - "text_en": "Chapter 23: Master Turtle" - }, - { - "key": "mainline_title_10043", - "text_en": "Chapter 23: The Great Wolf Attacks" - }, - { - "key": "mainline_title_10044", - "text_en": "Chapter 24: Master Turtle" - }, - { - "key": "mainline_title_10045", - "text_en": "Chapter 24: The Great Wolf Attacks" - }, - { - "key": "mainline_title_10046", - "text_en": "Chapter 25: Master Turtle" - }, - { - "key": "mainline_title_10047", - "text_en": "Chapter 25: The Great Wolf Attacks" - }, - { - "key": "mainline_title_10048", - "text_en": "Chapter 26: Master Turtle" - }, - { - "key": "mainline_title_10049", - "text_en": "Chapter 26: The Great Wolf Attacks" - }, - { - "key": "mainline_title_10050", - "text_en": "Chapter 27: Master Turtle" - }, - { - "key": "mainline_title_10051", - "text_en": "Chapter 27: The Great Wolf Attacks" - }, - { - "key": "mainline_title_10052", - "text_en": "Chapter 28: Master Turtle" - }, - { - "key": "mainline_title_10053", - "text_en": "Chapter 28: The Great Wolf Attacks" - }, - { - "key": "mainline_title_10054", - "text_en": "Chapter 29: Master Turtle" - }, - { - "key": "mainline_title_10055", - "text_en": "Chapter 29: The Great Wolf Attacks" - }, - { - "key": "mainline_title_10056", - "text_en": "Chapter 30: Master Turtle" - }, - { - "key": "mainline_title_10057", - "text_en": "Chapter 30: The Great Wolf Attacks" - }, - { - "key": "mainline_title_10058", - "text_en": "Chapter 31: Master Turtle" - }, - { - "key": "mainline_title_10059", - "text_en": "Chapter 31: The Great Wolf Attacks" - }, - { - "key": "mainline_title_10060", - "text_en": "Chapter 32: Master Turtle" - }, - { - "key": "mainline_title_10061", - "text_en": "Chapter 32: The Great Wolf Attacks" - }, - { - "key": "mainline_title_10062", - "text_en": "Chapter 33: Master Turtle" - }, - { - "key": "mainline_title_10063", - "text_en": "Chapter 33: The Great Wolf Attacks" - }, - { - "key": "mainline_title_10064", - "text_en": "Chapter 34: Master Turtle" - }, - { - "key": "mainline_title_10065", - "text_en": "Chapter 34: The Great Wolf Attacks" - }, - { - "key": "mainline_title_10066", - "text_en": "Chapter 35: Master Turtle" - }, - { - "key": "mainline_title_10067", - "text_en": "Chapter 35: The Great Wolf Attacks" - }, - { - "key": "mainline_title_10068", - "text_en": "Chapter 36: Master Turtle" - }, - { - "key": "mainline_title_10069", - "text_en": "Chapter 36: The Great Wolf Attacks" - }, - { - "key": "mainline_title_10070", - "text_en": "Chapter 37: Master Turtle" - }, - { - "key": "mainline_desc_10001", - "text_en": "The story takes place in ancient China a long time ago, and it starts with a giant panda who likes to roll around and roll around. It is said that Panda Bao is an apprentice in a noodle shop. Although he is clumsy, he can barely get a job." - }, - { - "key": "mainline_desc_10002", - "text_en": "Don't look at the peaceful and prosperous scene of the \"Peace Valley\" where A Bao is located, it is actually a feng shui treasure land of Crouching Tiger Hidden Dragon. Not to mention that the five masters of kung fu are all sitting here, and there is even a master-level master living here in seclusion." - }, - { - "key": "mainline_desc_10003", - "text_en": "However, the winner of a special martial arts competition has to represent the \"Peace Valley\" to drive out the evil dragon forever. A Bao, who knows nothing, has gone through a series of misunderstandings and won the election. Stunned everyone." - }, - { - "key": "mainline_desc_10004", - "text_en": "However, the winner of a special martial arts competition has to represent the \"Peace Valley\" to drive out the evil dragon forever. A Bao, who knows nothing, has gone through a series of misunderstandings and won the election. Stunned everyone." - }, - { - "key": "mainline_desc_10005", - "text_en": "However, the winner of a special martial arts competition has to represent the \"Peace Valley\" to drive out the evil dragon forever. A Bao, who knows nothing, has gone through a series of misunderstandings and won the election. Stunned everyone." - }, - { - "key": "mainline_desc_10006", - "text_en": "However, the winner of a special martial arts competition has to represent the \"Peace Valley\" to drive out the evil dragon forever. A Bao, who knows nothing, has gone through a series of misunderstandings and won the election. Stunned everyone." - }, - { - "key": "mainline_desc_10007", - "text_en": "However, the winner of a special martial arts competition has to represent the \"Peace Valley\" to drive out the evil dragon forever. A Bao, who knows nothing, has gone through a series of misunderstandings and won the election. Stunned everyone." - }, - { - "key": "mainline_desc_10008", - "text_en": "However, the winner of a special martial arts competition has to represent the \"Peace Valley\" to drive out the evil dragon forever. A Bao, who knows nothing, has gone through a series of misunderstandings and won the election. Stunned everyone." - }, - { - "key": "mainline_desc_10009", - "text_en": "However, the winner of a special martial arts competition has to represent the \"Peace Valley\" to drive out the evil dragon forever. A Bao, who knows nothing, has gone through a series of misunderstandings and won the election. Stunned everyone." - }, - { - "key": "mainline_desc_10010", - "text_en": "However, the winner of a special martial arts competition has to represent the \"Peace Valley\" to drive out the evil dragon forever. A Bao, who knows nothing, has gone through a series of misunderstandings and won the election. Stunned everyone." - }, - { - "key": "mainline_desc_10011", - "text_en": "However, the winner of a special martial arts competition has to represent the \"Peace Valley\" to drive out the evil dragon forever. A Bao, who knows nothing, has gone through a series of misunderstandings and won the election. Stunned everyone." - }, - { - "key": "mainline_desc_10012", - "text_en": "However, the winner of a special martial arts competition has to represent the \"Peace Valley\" to drive out the evil dragon forever. A Bao, who knows nothing, has gone through a series of misunderstandings and won the election. Stunned everyone." - }, - { - "key": "mainline_desc_10013", - "text_en": "However, the winner of a special martial arts competition has to represent the \"Peace Valley\" to drive out the evil dragon forever. A Bao, who knows nothing, has gone through a series of misunderstandings and won the election. Stunned everyone." - }, - { - "key": "mainline_desc_10014", - "text_en": "However, the winner of a special martial arts competition has to represent the \"Peace Valley\" to drive out the evil dragon forever. A Bao, who knows nothing, has gone through a series of misunderstandings and won the election. Stunned everyone." - }, - { - "key": "mainline_desc_10015", - "text_en": "However, the winner of a special martial arts competition has to represent the \"Peace Valley\" to drive out the evil dragon forever. A Bao, who knows nothing, has gone through a series of misunderstandings and won the election. Stunned everyone." - }, - { - "key": "mainline_desc_10016", - "text_en": "However, the winner of a special martial arts competition has to represent the \"Peace Valley\" to drive out the evil dragon forever. A Bao, who knows nothing, has gone through a series of misunderstandings and won the election. Stunned everyone." - }, - { - "key": "mainline_desc_10017", - "text_en": "However, the winner of a special martial arts competition has to represent the \"Peace Valley\" to drive out the evil dragon forever. A Bao, who knows nothing, has gone through a series of misunderstandings and won the election. Stunned everyone." - }, - { - "key": "mainline_desc_10018", - "text_en": "However, the winner of a special martial arts competition has to represent the \"Peace Valley\" to drive out the evil dragon forever. A Bao, who knows nothing, has gone through a series of misunderstandings and won the election. Stunned everyone." - }, - { - "key": "mainline_desc_10019", - "text_en": "However, the winner of a special martial arts competition has to represent the \"Peace Valley\" to drive out the evil dragon forever. A Bao, who knows nothing, has gone through a series of misunderstandings and won the election. Stunned everyone." - }, - { - "key": "mainline_desc_10020", - "text_en": "However, the winner of a special martial arts competition has to represent the \"Peace Valley\" to drive out the evil dragon forever. A Bao, who knows nothing, has gone through a series of misunderstandings and won the election. Stunned everyone." - }, - { - "key": "mainline_desc_10021", - "text_en": "However, the winner of a special martial arts competition has to represent the \"Peace Valley\" to drive out the evil dragon forever. A Bao, who knows nothing, has gone through a series of misunderstandings and won the election. Stunned everyone." - }, - { - "key": "mainline_desc_10022", - "text_en": "However, the winner of a special martial arts competition has to represent the \"Peace Valley\" to drive out the evil dragon forever. A Bao, who knows nothing, has gone through a series of misunderstandings and won the election. Stunned everyone." - }, - { - "key": "mainline_desc_10023", - "text_en": "However, the winner of a special martial arts competition has to represent the \"Peace Valley\" to drive out the evil dragon forever. A Bao, who knows nothing, has gone through a series of misunderstandings and won the election. Stunned everyone." - }, - { - "key": "mainline_desc_10024", - "text_en": "However, the winner of a special martial arts competition has to represent the \"Peace Valley\" to drive out the evil dragon forever. A Bao, who knows nothing, has gone through a series of misunderstandings and won the election. Stunned everyone." - }, - { - "key": "mainline_desc_10025", - "text_en": "However, the winner of a special martial arts competition has to represent the \"Peace Valley\" to drive out the evil dragon forever. A Bao, who knows nothing, has gone through a series of misunderstandings and won the election. Stunned everyone." - }, - { - "key": "mainline_desc_10026", - "text_en": "However, the winner of a special martial arts competition has to represent the \"Peace Valley\" to drive out the evil dragon forever. A Bao, who knows nothing, has gone through a series of misunderstandings and won the election. Stunned everyone." - }, - { - "key": "mainline_desc_10027", - "text_en": "However, the winner of a special martial arts competition has to represent the \"Peace Valley\" to drive out the evil dragon forever. A Bao, who knows nothing, has gone through a series of misunderstandings and won the election. Stunned everyone." - }, - { - "key": "mainline_desc_10028", - "text_en": "However, the winner of a special martial arts competition has to represent the \"Peace Valley\" to drive out the evil dragon forever. A Bao, who knows nothing, has gone through a series of misunderstandings and won the election. Stunned everyone." - }, - { - "key": "mainline_desc_10029", - "text_en": "However, the winner of a special martial arts competition has to represent the \"Peace Valley\" to drive out the evil dragon forever. A Bao, who knows nothing, has gone through a series of misunderstandings and won the election. Stunned everyone." - }, - { - "key": "mainline_desc_10030", - "text_en": "However, the winner of a special martial arts competition has to represent the \"Peace Valley\" to drive out the evil dragon forever. A Bao, who knows nothing, has gone through a series of misunderstandings and won the election. Stunned everyone." - }, - { - "key": "mainline_desc_10031", - "text_en": "However, the winner of a special martial arts competition has to represent the \"Peace Valley\" to drive out the evil dragon forever. A Bao, who knows nothing, has gone through a series of misunderstandings and won the election. Stunned everyone." - }, - { - "key": "mainline_desc_10032", - "text_en": "However, the winner of a special martial arts competition has to represent the \"Peace Valley\" to drive out the evil dragon forever. A Bao, who knows nothing, has gone through a series of misunderstandings and won the election. Stunned everyone." - }, - { - "key": "mainline_desc_10033", - "text_en": "However, the winner of a special martial arts competition has to represent the \"Peace Valley\" to drive out the evil dragon forever. A Bao, who knows nothing, has gone through a series of misunderstandings and won the election. Stunned everyone." - }, - { - "key": "mainline_desc_10034", - "text_en": "However, the winner of a special martial arts competition has to represent the \"Peace Valley\" to drive out the evil dragon forever. A Bao, who knows nothing, has gone through a series of misunderstandings and won the election. Stunned everyone." - }, - { - "key": "mainline_desc_10035", - "text_en": "However, the winner of a special martial arts competition has to represent the \"Peace Valley\" to drive out the evil dragon forever. A Bao, who knows nothing, has gone through a series of misunderstandings and won the election. Stunned everyone." - }, - { - "key": "mainline_desc_10036", - "text_en": "However, the winner of a special martial arts competition has to represent the \"Peace Valley\" to drive out the evil dragon forever. A Bao, who knows nothing, has gone through a series of misunderstandings and won the election. Stunned everyone." - }, - { - "key": "mainline_desc_10037", - "text_en": "However, the winner of a special martial arts competition has to represent the \"Peace Valley\" to drive out the evil dragon forever. A Bao, who knows nothing, has gone through a series of misunderstandings and won the election. Stunned everyone." - }, - { - "key": "mainline_desc_10038", - "text_en": "However, the winner of a special martial arts competition has to represent the \"Peace Valley\" to drive out the evil dragon forever. A Bao, who knows nothing, has gone through a series of misunderstandings and won the election. Stunned everyone." - }, - { - "key": "mainline_desc_10039", - "text_en": "However, the winner of a special martial arts competition has to represent the \"Peace Valley\" to drive out the evil dragon forever. A Bao, who knows nothing, has gone through a series of misunderstandings and won the election. Stunned everyone." - }, - { - "key": "mainline_desc_10040", - "text_en": "However, the winner of a special martial arts competition has to represent the \"Peace Valley\" to drive out the evil dragon forever. A Bao, who knows nothing, has gone through a series of misunderstandings and won the election. Stunned everyone." - }, - { - "key": "mainline_desc_10041", - "text_en": "However, the winner of a special martial arts competition has to represent the \"Peace Valley\" to drive out the evil dragon forever. A Bao, who knows nothing, has gone through a series of misunderstandings and won the election. Stunned everyone." - }, - { - "key": "mainline_desc_10042", - "text_en": "However, the winner of a special martial arts competition has to represent the \"Peace Valley\" to drive out the evil dragon forever. A Bao, who knows nothing, has gone through a series of misunderstandings and won the election. Stunned everyone." - }, - { - "key": "mainline_desc_10043", - "text_en": "However, the winner of a special martial arts competition has to represent the \"Peace Valley\" to drive out the evil dragon forever. A Bao, who knows nothing, has gone through a series of misunderstandings and won the election. Stunned everyone." - }, - { - "key": "mainline_desc_10044", - "text_en": "However, the winner of a special martial arts competition has to represent the \"Peace Valley\" to drive out the evil dragon forever. A Bao, who knows nothing, has gone through a series of misunderstandings and won the election. Stunned everyone." - }, - { - "key": "mainline_desc_10045", - "text_en": "However, the winner of a special martial arts competition has to represent the \"Peace Valley\" to drive out the evil dragon forever. A Bao, who knows nothing, has gone through a series of misunderstandings and won the election. Stunned everyone." - }, - { - "key": "mainline_desc_10046", - "text_en": "However, the winner of a special martial arts competition has to represent the \"Peace Valley\" to drive out the evil dragon forever. A Bao, who knows nothing, has gone through a series of misunderstandings and won the election. Stunned everyone." - }, - { - "key": "mainline_desc_10047", - "text_en": "However, the winner of a special martial arts competition has to represent the \"Peace Valley\" to drive out the evil dragon forever. A Bao, who knows nothing, has gone through a series of misunderstandings and won the election. Stunned everyone." - }, - { - "key": "mainline_desc_10048", - "text_en": "However, the winner of a special martial arts competition has to represent the \"Peace Valley\" to drive out the evil dragon forever. A Bao, who knows nothing, has gone through a series of misunderstandings and won the election. Stunned everyone." - }, - { - "key": "mainline_desc_10049", - "text_en": "However, the winner of a special martial arts competition has to represent the \"Peace Valley\" to drive out the evil dragon forever. A Bao, who knows nothing, has gone through a series of misunderstandings and won the election. Stunned everyone." - }, - { - "key": "mainline_desc_10050", - "text_en": "However, the winner of a special martial arts competition has to represent the \"Peace Valley\" to drive out the evil dragon forever. A Bao, who knows nothing, has gone through a series of misunderstandings and won the election. Stunned everyone." - }, - { - "key": "mainline_desc_10051", - "text_en": "However, the winner of a special martial arts competition has to represent the \"Peace Valley\" to drive out the evil dragon forever. A Bao, who knows nothing, has gone through a series of misunderstandings and won the election. Stunned everyone." - }, - { - "key": "mainline_desc_10052", - "text_en": "However, the winner of a special martial arts competition has to represent the \"Peace Valley\" to drive out the evil dragon forever. A Bao, who knows nothing, has gone through a series of misunderstandings and won the election. Stunned everyone." - }, - { - "key": "mainline_desc_10053", - "text_en": "However, the winner of a special martial arts competition has to represent the \"Peace Valley\" to drive out the evil dragon forever. A Bao, who knows nothing, has gone through a series of misunderstandings and won the election. Stunned everyone." - }, - { - "key": "mainline_desc_10054", - "text_en": "However, the winner of a special martial arts competition has to represent the \"Peace Valley\" to drive out the evil dragon forever. A Bao, who knows nothing, has gone through a series of misunderstandings and won the election. Stunned everyone." - }, - { - "key": "mainline_desc_10055", - "text_en": "However, the winner of a special martial arts competition has to represent the \"Peace Valley\" to drive out the evil dragon forever. A Bao, who knows nothing, has gone through a series of misunderstandings and won the election. Stunned everyone." - }, - { - "key": "mainline_desc_10056", - "text_en": "However, the winner of a special martial arts competition has to represent the \"Peace Valley\" to drive out the evil dragon forever. A Bao, who knows nothing, has gone through a series of misunderstandings and won the election. Stunned everyone." - }, - { - "key": "mainline_desc_10057", - "text_en": "However, the winner of a special martial arts competition has to represent the \"Peace Valley\" to drive out the evil dragon forever. A Bao, who knows nothing, has gone through a series of misunderstandings and won the election. Stunned everyone." - }, - { - "key": "mainline_desc_10058", - "text_en": "However, the winner of a special martial arts competition has to represent the \"Peace Valley\" to drive out the evil dragon forever. A Bao, who knows nothing, has gone through a series of misunderstandings and won the election. Stunned everyone." - }, - { - "key": "mainline_desc_10059", - "text_en": "However, the winner of a special martial arts competition has to represent the \"Peace Valley\" to drive out the evil dragon forever. A Bao, who knows nothing, has gone through a series of misunderstandings and won the election. Stunned everyone." - }, - { - "key": "mainline_desc_10060", - "text_en": "However, the winner of a special martial arts competition has to represent the \"Peace Valley\" to drive out the evil dragon forever. A Bao, who knows nothing, has gone through a series of misunderstandings and won the election. Stunned everyone." - }, - { - "key": "mainline_desc_10061", - "text_en": "However, the winner of a special martial arts competition has to represent the \"Peace Valley\" to drive out the evil dragon forever. A Bao, who knows nothing, has gone through a series of misunderstandings and won the election. Stunned everyone." - }, - { - "key": "mainline_desc_10062", - "text_en": "However, the winner of a special martial arts competition has to represent the \"Peace Valley\" to drive out the evil dragon forever. A Bao, who knows nothing, has gone through a series of misunderstandings and won the election. Stunned everyone." - }, - { - "key": "mainline_desc_10063", - "text_en": "However, the winner of a special martial arts competition has to represent the \"Peace Valley\" to drive out the evil dragon forever. A Bao, who knows nothing, has gone through a series of misunderstandings and won the election. Stunned everyone." - }, - { - "key": "mainline_desc_10064", - "text_en": "However, the winner of a special martial arts competition has to represent the \"Peace Valley\" to drive out the evil dragon forever. A Bao, who knows nothing, has gone through a series of misunderstandings and won the election. Stunned everyone." - }, - { - "key": "mainline_desc_10065", - "text_en": "However, the winner of a special martial arts competition has to represent the \"Peace Valley\" to drive out the evil dragon forever. A Bao, who knows nothing, has gone through a series of misunderstandings and won the election. Stunned everyone." - }, - { - "key": "mainline_desc_10066", - "text_en": "However, the winner of a special martial arts competition has to represent the \"Peace Valley\" to drive out the evil dragon forever. A Bao, who knows nothing, has gone through a series of misunderstandings and won the election. Stunned everyone." - }, - { - "key": "mainline_desc_10067", - "text_en": "However, the winner of a special martial arts competition has to represent the \"Peace Valley\" to drive out the evil dragon forever. A Bao, who knows nothing, has gone through a series of misunderstandings and won the election. Stunned everyone." - }, - { - "key": "mainline_desc_10068", - "text_en": "However, the winner of a special martial arts competition has to represent the \"Peace Valley\" to drive out the evil dragon forever. A Bao, who knows nothing, has gone through a series of misunderstandings and won the election. Stunned everyone." - }, - { - "key": "mainline_desc_10069", - "text_en": "However, the winner of a special martial arts competition has to represent the \"Peace Valley\" to drive out the evil dragon forever. A Bao, who knows nothing, has gone through a series of misunderstandings and won the election. Stunned everyone." - }, - { - "key": "mainline_desc_10070", - "text_en": "However, the winner of a special martial arts competition has to represent the \"Peace Valley\" to drive out the evil dragon forever. A Bao, who knows nothing, has gone through a series of misunderstandings and won the election. Stunned everyone." - }, - { - "key": "mainline_text_10001", - "text_en": "Gold 5000" - }, - { - "key": "mainline_text_10002", - "text_en": "Gold 5000" - }, - { - "key": "mainline_text_10003", - "text_en": "Gold 5000" - }, - { - "key": "mainline_text_10004", - "text_en": "Gold 5000" - }, - { - "key": "mainline_text_10005", - "text_en": "Gold 5000" - }, - { - "key": "mainline_text_10006", - "text_en": "Gold 5000" - }, - { - "key": "mainline_text_10007", - "text_en": "Gold 5000" - }, - { - "key": "mainline_text_10008", - "text_en": "Gold 5000" - }, - { - "key": "mainline_text_10009", - "text_en": "Gold 5000" - }, - { - "key": "mainline_text_10010", - "text_en": "Gold 5000" - }, - { - "key": "mainline_text_10011", - "text_en": "Gold 5000" - }, - { - "key": "mainline_text_10012", - "text_en": "Gold 5000" - }, - { - "key": "mainline_text_10013", - "text_en": "Gold 5000" - }, - { - "key": "mainline_text_10014", - "text_en": "Gold 5000" - }, - { - "key": "mainline_text_10015", - "text_en": "Gold 5000" - }, - { - "key": "mainline_text_10016", - "text_en": "Gold 5000" - }, - { - "key": "mainline_text_10017", - "text_en": "Gold 5000" - }, - { - "key": "mainline_text_10018", - "text_en": "Gold 5000" - }, - { - "key": "mainline_text_10019", - "text_en": "Gold 5000" - }, - { - "key": "mainline_text_10020", - "text_en": "Gold 5000" - }, - { - "key": "mainline_text_10021", - "text_en": "Gold 5000" - }, - { - "key": "mainline_text_10022", - "text_en": "Gold 5000" - }, - { - "key": "mainline_text_10023", - "text_en": "Gold 5000" - }, - { - "key": "mainline_text_10024", - "text_en": "Gold 5000" - }, - { - "key": "mainline_text_10025", - "text_en": "Gold 5000" - }, - { - "key": "mainline_text_10026", - "text_en": "Gold 5000" - }, - { - "key": "mainline_text_10027", - "text_en": "Gold 5000" - }, - { - "key": "mainline_text_10028", - "text_en": "Gold 5000" - }, - { - "key": "mainline_text_10029", - "text_en": "Gold 5000" - }, - { - "key": "mainline_text_10030", - "text_en": "Gold 5000" - }, - { - "key": "mainline_text_10031", - "text_en": "Gold 5000" - }, - { - "key": "mainline_text_10032", - "text_en": "Gold 5000" - }, - { - "key": "mainline_text_10033", - "text_en": "Gold 5000" - }, - { - "key": "mainline_text_10034", - "text_en": "Gold 5000" - }, - { - "key": "mainline_text_10035", - "text_en": "Gold 5000" - }, - { - "key": "mainline_text_10036", - "text_en": "Gold 5000" - }, - { - "key": "mainline_text_10037", - "text_en": "Gold 5000" - }, - { - "key": "mainline_text_10038", - "text_en": "Gold 5000" - }, - { - "key": "mainline_text_10039", - "text_en": "Gold 5000" - }, - { - "key": "mainline_text_10040", - "text_en": "Gold 5000" - }, - { - "key": "mainline_text_10041", - "text_en": "Gold 5000" - }, - { - "key": "mainline_text_10042", - "text_en": "Gold 5000" - }, - { - "key": "mainline_text_10043", - "text_en": "Gold 5000" - }, - { - "key": "mainline_text_10044", - "text_en": "Gold 5000" - }, - { - "key": "mainline_text_10045", - "text_en": "Gold 5000" - }, - { - "key": "mainline_text_10046", - "text_en": "Gold 5000" - }, - { - "key": "mainline_text_10047", - "text_en": "Gold 5000" - }, - { - "key": "mainline_text_10048", - "text_en": "Gold 5000" - }, - { - "key": "mainline_text_10049", - "text_en": "Gold 5000" - }, - { - "key": "mainline_text_10050", - "text_en": "Gold 5000" - }, - { - "key": "mainline_text_10051", - "text_en": "Gold 5000" - }, - { - "key": "mainline_text_10052", - "text_en": "Gold 5000" - }, - { - "key": "mainline_text_10053", - "text_en": "Gold 5000" - }, - { - "key": "mainline_text_10054", - "text_en": "Gold 5000" - }, - { - "key": "mainline_text_10055", - "text_en": "Gold 5000" - }, - { - "key": "mainline_text_10056", - "text_en": "Gold 5000" - }, - { - "key": "mainline_text_10057", - "text_en": "Gold 5000" - }, - { - "key": "mainline_text_10058", - "text_en": "Gold 5000" - }, - { - "key": "mainline_text_10059", - "text_en": "Gold 5000" - }, - { - "key": "mainline_text_10060", - "text_en": "Gold 5000" - }, - { - "key": "mainline_text_10061", - "text_en": "Gold 5000" - }, - { - "key": "mainline_text_10062", - "text_en": "Gold 5000" - }, - { - "key": "mainline_text_10063", - "text_en": "Gold 5000" - }, - { - "key": "mainline_text_10064", - "text_en": "Gold 5000" - }, - { - "key": "mainline_text_10065", - "text_en": "Gold 5000" - }, - { - "key": "mainline_text_10066", - "text_en": "Gold 5000" - }, - { - "key": "mainline_text_10067", - "text_en": "Gold 5000" - }, - { - "key": "mainline_text_10068", - "text_en": "Gold 5000" - }, - { - "key": "mainline_text_10069", - "text_en": "Gold 5000" - }, - { - "key": "mainline_text_10070", - "text_en": "Gold 5000" - }, - { - "key": "mainline_name_10001", - "text_en": "Chapter 1" - }, - { - "key": "mainline_name_10002", - "text_en": "Chapter 2" - }, - { - "key": "mainline_name_10003", - "text_en": "Chapter 3" - }, - { - "key": "mainline_name_10004", - "text_en": "Chapter 4" - }, - { - "key": "mainline_name_10005", - "text_en": "Chapter 5" - }, - { - "key": "mainline_name_10006", - "text_en": "Chapter 6" - }, - { - "key": "mainline_name_10007", - "text_en": "Chapter 7" - }, - { - "key": "mainline_name_10008", - "text_en": "Chapter 8" - }, - { - "key": "mainline_name_10009", - "text_en": "Chapter 9" - }, - { - "key": "mainline_name_10010", - "text_en": "Chapter 10" - }, - { - "key": "mainline_name_10011", - "text_en": "Chapter 11" - }, - { - "key": "mainline_name_10012", - "text_en": "Chapter 12" - }, - { - "key": "mainline_name_10013", - "text_en": "Chapter 13" - }, - { - "key": "mainline_name_10014", - "text_en": "Chapter 14" - }, - { - "key": "mainline_name_10015", - "text_en": "Chapter 15" - }, - { - "key": "mainline_name_10016", - "text_en": "Chapter 16" - }, - { - "key": "mainline_name_10017", - "text_en": "Chapter 17" - }, - { - "key": "mainline_name_10018", - "text_en": "Chapter 18" - }, - { - "key": "mainline_name_10019", - "text_en": "Chapter 19" - }, - { - "key": "mainline_name_10020", - "text_en": "Chapter 20" - }, - { - "key": "mainline_name_10021", - "text_en": "Chapter 21" - }, - { - "key": "mainline_name_10022", - "text_en": "Chapter 22" - }, - { - "key": "mainline_name_10023", - "text_en": "Chapter 23" - }, - { - "key": "mainline_name_10024", - "text_en": "Chapter 24" - }, - { - "key": "mainline_name_10025", - "text_en": "Chapter 25" - }, - { - "key": "mainline_name_10026", - "text_en": "Chapter 26" - }, - { - "key": "mainline_name_10027", - "text_en": "Chapter 27" - }, - { - "key": "mainline_name_10028", - "text_en": "Chapter 28" - }, - { - "key": "mainline_name_10029", - "text_en": "Chapter 29" - }, - { - "key": "mainline_name_10030", - "text_en": "Chapter 30" - }, - { - "key": "mainline_name_10031", - "text_en": "Chapter 31" - }, - { - "key": "mainline_name_10032", - "text_en": "Chapter 32" - }, - { - "key": "mainline_name_10033", - "text_en": "Chapter 33" - }, - { - "key": "mainline_name_10034", - "text_en": "Chapter 34" - }, - { - "key": "mainline_name_10035", - "text_en": "Chapter 35" - }, - { - "key": "mainline_name_10036", - "text_en": "Chapter 36" - }, - { - "key": "mainline_name_10037", - "text_en": "Chapter 37" - }, - { - "key": "mainline_name_10038", - "text_en": "Chapter 38" - }, - { - "key": "mainline_name_10039", - "text_en": "Chapter 39" - }, - { - "key": "mainline_name_10040", - "text_en": "Chapter 40" - }, - { - "key": "mainline_name_10041", - "text_en": "Chapter 41" - }, - { - "key": "mainline_name_10042", - "text_en": "Chapter 42" - }, - { - "key": "mainline_name_10043", - "text_en": "Chapter 43" - }, - { - "key": "mainline_name_10044", - "text_en": "Chapter 44" - }, - { - "key": "mainline_name_10045", - "text_en": "Chapter 45" - }, - { - "key": "mainline_name_10046", - "text_en": "Chapter 46" - }, - { - "key": "mainline_name_10047", - "text_en": "Chapter 47" - }, - { - "key": "mainline_name_10048", - "text_en": "Chapter 48" - }, - { - "key": "mainline_name_10049", - "text_en": "Chapter 49" - }, - { - "key": "mainline_name_10050", - "text_en": "Chapter 50" - }, - { - "key": "mainline_name_10051", - "text_en": "Chapter 51" - }, - { - "key": "mainline_name_10052", - "text_en": "Chapter 52" - }, - { - "key": "mainline_name_10053", - "text_en": "Chapter 53" - }, - { - "key": "mainline_name_10054", - "text_en": "Chapter 54" - }, - { - "key": "mainline_name_10055", - "text_en": "Chapter 55" - }, - { - "key": "mainline_name_10056", - "text_en": "Chapter 56" - }, - { - "key": "mainline_name_10057", - "text_en": "Chapter 57" - }, - { - "key": "mainline_name_10058", - "text_en": "Chapter 58" - }, - { - "key": "mainline_name_10059", - "text_en": "Chapter 59" - }, - { - "key": "mainline_name_10060", - "text_en": "Chapter 60" - }, - { - "key": "mainline_name_10061", - "text_en": "Chapter 61" - }, - { - "key": "mainline_name_10062", - "text_en": "Chapter 62" - }, - { - "key": "mainline_name_10063", - "text_en": "Chapter 63" - }, - { - "key": "mainline_name_10064", - "text_en": "Chapter 64" - }, - { - "key": "mainline_name_10065", - "text_en": "Chapter 65" - }, - { - "key": "mainline_name_10066", - "text_en": "Chapter 66" - }, - { - "key": "mainline_name_10067", - "text_en": "Chapter 67" - }, - { - "key": "mainline_name_10068", - "text_en": "Chapter 68" - }, - { - "key": "mainline_name_10069", - "text_en": "Chapter 69" - }, - { - "key": "mainline_name_10070", - "text_en": "Chapter 70" - }, - { - "key": "mainline_name_10071", - "text_en": "The story takes place in ancient China a long time ago, and it starts with a giant panda who likes to roll around and roll around." - }, - { - "key": "equip_10001", - "text_en": "ordinary" - }, - { - "key": "equip_10002", - "text_en": "rare" - }, - { - "key": "equip_10003", - "text_en": "excellence" - }, - { - "key": "equip_10004", - "text_en": "excellent" - }, - { - "key": "equip_10005", - "text_en": "Perfect" - }, - { - "key": "skillname_125004011", - "text_en": "" - }, - { - "key": "skillname_125004111", - "text_en": "" - }, - { - "key": "skillname_125004211", - "text_en": "" - }, - { - "key": "skillname_125004311", - "text_en": "" - }, - { - "key": "skillname_925004211", - "text_en": "" - }, - { - "key": "skillname_135002011", - "text_en": "" - }, - { - "key": "skillname_135002111", - "text_en": "" - }, - { - "key": "skillname_135002211", - "text_en": "" - }, - { - "key": "skillname_135002311", - "text_en": "" - }, - { - "key": "skillname_935002321", - "text_en": "" - }, - { - "key": "skillname_124003011", - "text_en": "" - }, - { - "key": "skillname_124003111", - "text_en": "" - }, - { - "key": "skillname_124003211", - "text_en": "" - }, - { - "key": "skillname_124003311", - "text_en": "" - }, - { - "key": "skillname_924003411", - "text_en": "" - }, - { - "key": "skill_1250040111", - "text_en": "" - }, - { - "key": "skill_1250041111", - "text_en": "" - }, - { - "key": "skill_1250041112", - "text_en": "" - }, - { - "key": "skill_1250041113", - "text_en": "" - }, - { - "key": "skill_1250041114", - "text_en": "" - }, - { - "key": "skill_1250041115", - "text_en": "" - }, - { - "key": "skill_1250041116", - "text_en": "" - }, - { - "key": "skill_1250042111", - "text_en": "" - }, - { - "key": "skill_1250042112", - "text_en": "" - }, - { - "key": "skill_1250042113", - "text_en": "" - }, - { - "key": "skill_1250043111", - "text_en": "" - }, - { - "key": "skill_1250043112", - "text_en": "" - }, - { - "key": "skill_1250043113", - "text_en": "" - }, - { - "key": "skill_1250043114", - "text_en": "" - }, - { - "key": "skill_1250043115", - "text_en": "" - }, - { - "key": "skill_1350020111", - "text_en": "" - }, - { - "key": "skill_1350021111", - "text_en": "" - }, - { - "key": "skill_1350021112", - "text_en": "" - }, - { - "key": "skill_1350021113", - "text_en": "" - }, - { - "key": "skill_1350021114", - "text_en": "" - }, - { - "key": "skill_1350021115", - "text_en": "" - }, - { - "key": "skill_1350021116", - "text_en": "" - }, - { - "key": "skill_1350022111", - "text_en": "" - }, - { - "key": "skill_1350023111", - "text_en": "" - }, - { - "key": "skill_1350023112", - "text_en": "" - }, - { - "key": "skill_1350023113", - "text_en": "" - }, - { - "key": "skill_1350023114", - "text_en": "" - }, - { - "key": "skill_1350023115", - "text_en": "" - }, - { - "key": "skill_1350023116", - "text_en": "" - }, - { - "key": "skill_9350023211", - "text_en": "" - }, - { - "key": "skill_9350023212", - "text_en": "" - }, - { - "key": "skill_9350023213", - "text_en": "" - }, - { - "key": "skill_9350023214", - "text_en": "" - }, - { - "key": "skill_9350023215", - "text_en": "" - }, - { - "key": "skill_9350023216", - "text_en": "" - }, - { - "key": "skill_1240030111", - "text_en": "" - }, - { - "key": "skill_1240031111", - "text_en": "" - }, - { - "key": "skill_1240031112", - "text_en": "" - }, - { - "key": "skill_1240031113", - "text_en": "" - }, - { - "key": "skill_1240031114", - "text_en": "" - }, - { - "key": "skill_1240031115", - "text_en": "" - }, - { - "key": "skill_1240032111", - "text_en": "" - }, - { - "key": "skill_1240032112", - "text_en": "" - }, - { - "key": "skill_1240033111", - "text_en": "" - }, - { - "key": "skill_1240033112", - "text_en": "" - }, - { - "key": "skill_1240033113", - "text_en": "" - }, - { - "key": "skill_1240033114", - "text_en": "" - }, - { - "key": "skill_1240033115", - "text_en": "" - }, - { - "key": "skill_1240033116", - "text_en": "" - }, - { - "key": "skill_9240034111", - "text_en": "" - }, - { - "key": "skill_9240034112", - "text_en": "" - }, - { - "key": "skill_190011000", - "text_en": "Increases all allies' defense by 30%" - }, - { - "key": "skill_190012000", - "text_en": "Po deals 30% ATK and 70% DEF damage to 1 enemy target, and has a 75% chance to apply [Attack Down] effect to the target for 2 turns" - }, - { - "key": "skill_190013000", - "text_en": "After each round, Po will enter the [Xuan Yu] state, which lasts for 1 round. At the beginning of his new round, he will deal damage equal to 110% of his defense to all enemies. During the period of [Xuan Yu], every time you receive an attack, you will get 1 layer of [Xuan Yu's Blessing], but when you are in an immobile state, the [Xuan Yu] state will be released. When any of your own active skills hits the enemy and triggers a critical strike, the cooldown of this skill is reduced for 1 turn" - }, - { - "key": "skill_190014000", - "text_en": "Po deals 80% ATK and 140% DEF damage to 1 enemy target, and adds [Defense Up] and [Immune] to himself for 2 turns each" - }, - { - "key": "skill_190015000", - "text_en": "Increases the resistance of all allies by 40%" - }, - { - "key": "skill_190016000", - "text_en": "Poppy deals 45% ATK of damage 3 times to 1 enemy target, and has a 60% chance to add [Immunity] status to himself for 2 turns" - }, - { - "key": "skill_190017000", - "text_en": "Poppy clears all allies' debuffs, and evenly distributes the percentage of allies' health, adding 2 rounds of [Attack Boost] to all allies" - }, - { - "key": "skill_190018000", - "text_en": "Enter the state of [Joy] for 2 rounds, reduce the damage received by all allies by 25%, and when each teammate moves, dispel 1 debuff and restore 26% of their maximum health, while the effect lasts. unable to act" - }, - { - "key": "skill_190011001", - "text_en": "Damage increased to 100%" - }, - { - "key": "skill_190011002", - "text_en": "Damage increased to 110%" - }, - { - "key": "skill_190011003", - "text_en": "Damage increased to 120%" - }, - { - "key": "skill_190011004", - "text_en": "Damage increased to 130%" - }, - { - "key": "skill_buff_390001001", - "text_en": "" - }, - { - "key": "skill_buff_390001002", - "text_en": "" - }, - { - "key": "skill_buff_390001003", - "text_en": "" - }, - { - "key": "skill_buff_390001004", - "text_en": "" - }, - { - "key": "skill_buff_390001005", - "text_en": "" - }, - { - "key": "skill_buff_390001006", - "text_en": "" - }, - { - "key": "skill_buff_390001007", - "text_en": "" - }, - { - "key": "skill_buff_390001008", - "text_en": "" - }, - { - "key": "skill_buff_390002001", - "text_en": "" - }, - { - "key": "skill_buff_390002002", - "text_en": "" - }, - { - "key": "skill_buff_390002003", - "text_en": "" - }, - { - "key": "skill_buff_390002004", - "text_en": "" - }, - { - "key": "skill_buff_390002005", - "text_en": "" - }, - { - "key": "skill_buff_390002006", - "text_en": "" - }, - { - "key": "skill_buff_390003001", - "text_en": "" - }, - { - "key": "skill_buff_390003002", - "text_en": "" - }, - { - "key": "skill_buff_390003003", - "text_en": "" - }, - { - "key": "skill_buff_390003004", - "text_en": "" - }, - { - "key": "skill_buff_390004001", - "text_en": "" - }, - { - "key": "skill_buff_390004002", - "text_en": "" - }, - { - "key": "skill_buff_390004003", - "text_en": "" - }, - { - "key": "skill_buff_390004004", - "text_en": "" - }, - { - "key": "skill_buff_390004005", - "text_en": "" - }, - { - "key": "skill_buff_390004006", - "text_en": "" - }, - { - "key": "skill_buff_390004007", - "text_en": "" - }, - { - "key": "skill_buff_390004008", - "text_en": "" - }, - { - "key": "skill_buff_390005001", - "text_en": "" - }, - { - "key": "skill_buff_390005002", - "text_en": "" - }, - { - "key": "skill_buff_390005003", - "text_en": "" - }, - { - "key": "skill_buff_390006001", - "text_en": "" - }, - { - "key": "skill_buff_300192114", - "text_en": "" - }, - { - "key": "skill_buff_300192115", - "text_en": "" - }, - { - "key": "skill_buffdes_390001001", - "text_en": "" - }, - { - "key": "skill_buffdes_390001002", - "text_en": "" - }, - { - "key": "skill_buffdes_390001003", - "text_en": "" - }, - { - "key": "skill_buffdes_390001004", - "text_en": "" - }, - { - "key": "skill_buffdes_390001005", - "text_en": "" - }, - { - "key": "skill_buffdes_390001006", - "text_en": "" - }, - { - "key": "skill_buffdes_390001007", - "text_en": "" - }, - { - "key": "skill_buffdes_390001008", - "text_en": "" - }, - { - "key": "skill_buffdes_390002001", - "text_en": "" - }, - { - "key": "skill_buffdes_390002002", - "text_en": "" - }, - { - "key": "skill_buffdes_390002003", - "text_en": "" - }, - { - "key": "skill_buffdes_390002004", - "text_en": "" - }, - { - "key": "skill_buffdes_390002005", - "text_en": "" - }, - { - "key": "skill_buffdes_390002006", - "text_en": "" - }, - { - "key": "skill_buffdes_390003001", - "text_en": "" - }, - { - "key": "skill_buffdes_390003002", - "text_en": "" - }, - { - "key": "skill_buffdes_390003003", - "text_en": "" - }, - { - "key": "skill_buffdes_390003004", - "text_en": "" - }, - { - "key": "skill_buffdes_390004001", - "text_en": "" - }, - { - "key": "skill_buffdes_390004002", - "text_en": "" - }, - { - "key": "skill_buffdes_390004003", - "text_en": "" - }, - { - "key": "skill_buffdes_390004004", - "text_en": "" - }, - { - "key": "skill_buffdes_390004005", - "text_en": "" - }, - { - "key": "skill_buffdes_390004006", - "text_en": "" - }, - { - "key": "skill_buffdes_390004007", - "text_en": "" - }, - { - "key": "skill_buffdes_390004008", - "text_en": "" - }, - { - "key": "skill_buffdes_390005001", - "text_en": "" - }, - { - "key": "skill_buffdes_390005002", - "text_en": "" - }, - { - "key": "skill_buffdes_390005003", - "text_en": "" - }, - { - "key": "skill_buffdes_390006001", - "text_en": "" - }, - { - "key": "skill_buffdes_300102103", - "text_en": "" - }, - { - "key": "skill_buffdes_300162105", - "text_en": "" - }, - { - "key": "skill_buffdes_300192114", - "text_en": "" - }, - { - "key": "skill_buffdes_300192115", - "text_en": "" - }, - { - "key": "hero_10001", - "text_en": "basic life" - }, - { - "key": "hero_10002", - "text_en": "basic attack" - }, - { - "key": "hero_10003", - "text_en": "basic defense" - }, - { - "key": "hero_10004", - "text_en": "base speed" - }, - { - "key": "hero_10005", - "text_en": "base crit chance" - }, - { - "key": "hero_10006", - "text_en": "base crit damage" - }, - { - "key": "hero_10007", - "text_en": "base effect hit" - }, - { - "key": "hero_10008", - "text_en": "base effect resistance" - }, - { - "key": "star_2", - "text_en": "Excellent" - }, - { - "key": "star_3", - "text_en": "Rare" - }, - { - "key": "star_4", - "text_en": "Epic" - }, - { - "key": "star_5", - "text_en": "Legend" - }, - { - "key": "color_1", - "text_en": "Excellent" - }, - { - "key": "color_2", - "text_en": "Rare" - }, - { - "key": "color_3", - "text_en": "Epic" - }, - { - "key": "color_4", - "text_en": "Legend" - }, - { - "key": "color_5", - "text_en": "Eternity" - }, - { - "key": "color_6", - "text_en": "Uncommon" - }, - { - "key": "race_1", - "text_en": "Hot" - }, - { - "key": "race_2", - "text_en": "Surge" - }, - { - "key": "race_3", - "text_en": "Whistling" - }, - { - "key": "race_4", - "text_en": "Shine" - }, - { - "key": "job_1", - "text_en": "Output" - }, - { - "key": "job_2", - "text_en": "Defense" - }, - { - "key": "job_3", - "text_en": "Auxiliary" - }, - { - "key": "job_4", - "text_en": "Control" - }, - { - "key": "job_5", - "text_en": "Material" - }, - { - "key": "itemdesc_10001", - "text_en": "Heroes can be strengthened after use" - }, - { - "key": "itemdesc_10002", - "text_en": "A stone for testing functionality, it may be an unusable activity item" - }, - { - "key": "itemdesc_10003", - "text_en": "Collect all 50 fragments to make Po" - }, - { - "key": "itemdesc_10004", - "text_en": "You can choose any one of the following items" - }, - { - "key": "itemdesc_10005", - "text_en": "You can get 1 of the following items at random" - }, - { - "key": "itemdesc_10006", - "text_en": "Open to get gold coins" - }, - { - "key": "itemdesc_10007", - "text_en": "Get 2 hours of gold coins after use" - }, - { - "key": "itemdesc_10008", - "text_en": "Gain 2 hours of gold after use, but he will disappear within 2 minutes" - }, - { - "key": "itemdesc_10009", - "text_en": "This magic book is sealed by powerful magic, it can be opened after passing level 9999" - }, - { - "key": "itemdesc_10010", - "text_en": "It seems to be the currency of a lost civilization, for the time being, it has only commemorative significance" - }, - { - "key": "itemdesc_10011", - "text_en": "The hands don't move, maybe someone can fix it." - }, - { - "key": "itemdesc_10012", - "text_en": "Delicate wood with a light aroma" - }, - { - "key": "itemdesc_10013", - "text_en": "Carrying it in a backpack will bring good luck" - }, - { - "key": "itemdesc_10014", - "text_en": "You are an adventurer when you log in to the game, and you will get this medal" - }, - { - "key": "itemdesc_10015", - "text_en": "luckier than clover" - }, - { - "key": "itemdesc_10016", - "text_en": "Diamonds are man-made, so they cannot be used to buy items in the mall" - }, - { - "key": "itemname_10001", - "text_en": "Junior Experience Wizard" - }, - { - "key": "itemname_10002", - "text_en": "Stone" - }, - { - "key": "itemname_10003", - "text_en": "5 Star Po Shard" - }, - { - "key": "itemname_10004", - "text_en": "Gold Coin Choice Box" - }, - { - "key": "itemname_10005", - "text_en": "Random Gold Coin Box" - }, - { - "key": "itemname_10006", - "text_en": "Gold coin box" - }, - { - "key": "itemname_10007", - "text_en": "2 hour coins" - }, - { - "key": "itemname_10008", - "text_en": "Special 2 Hour Coins" - }, - { - "key": "itemname_10009", - "text_en": "Sealed magic book" - }, - { - "key": "itemname_10010", - "text_en": "Ancient coins" - }, - { - "key": "itemname_10011", - "text_en": "Broken clock" - }, - { - "key": "itemname_10012", - "text_en": "Wood" - }, - { - "key": "itemname_10013", - "text_en": "Four-leaf clover" - }, - { - "key": "itemname_10014", - "text_en": "Adventurer's Medal" - }, - { - "key": "itemname_10015", - "text_en": "Cat cat amulet" - }, - { - "key": "itemname_10016", - "text_en": "Artificial diamond" - }, - { - "key": "server_10001", - "text_en": "Local test server" - }, - { - "key": "server_10006", - "text_en": "Raven Point" - }, - { - "key": "server_10003", - "text_en": "The Valley of Peace" - }, - { - "key": "server_10004", - "text_en": "Gongmen" - }, - { - "key": "server_10005", - "text_en": "Jade Palace" - }, - { - "key": "skillname_190011000", - "text_en": "Captain Po's skills" - }, - { - "key": "skillname_190012000", - "text_en": "Panda fist" - }, - { - "key": "skillname_190013000", - "text_en": "Tai Chi Form" - }, - { - "key": "skillname_190011003", - "text_en": "Tai Chi Zero" - }, - { - "key": "skillname_190014000", - "text_en": "Captain Poppy's skills" - }, - { - "key": "skillname_190016000", - "text_en": "Harmony" - }, - { - "key": "skillname_190017000", - "text_en": "Dance of joy" - }, - { - "key": "skillname_190018000", - "text_en": "Rainbow note" - }, - { - "key": "tips_1001", - "text_en": "Stay tuned" - }, - { - "key": "tips_1002", - "text_en": "Not open yet" - }, - { - "key": "tips_1003", - "text_en": "The current planet capacity is overloaded, please change the planet and start the adventure" - }, - { - "key": "tips_1004", - "text_en": "At present, the world is under construction. Please enter later" - }, - { - "key": "nonactivated", - "text_en": "Nonactivated" - }, - { - "key": "activated", - "text_en": "Activated" - }, - { - "key": "opencond_prompt_10001", - "text_en": "" - }, - { - "key": "opencond_prompt_10002", - "text_en": "" - }, - { - "key": "opencond_prompt_10003", - "text_en": "" - }, - { - "key": "num_1001", - "text_en": "GOURMET RESTAURANT" - }, - { - "key": "num_1002", - "text_en": "SUMMON" - }, - { - "key": "num_1003", - "text_en": "STORY" - }, - { - "key": "num_1004", - "text_en": "Dark Cuisine" - }, - { - "key": "num_1005", - "text_en": "CARAVAN" - }, - { - "key": "num_1006", - "text_en": "LIBRARY" - }, - { - "key": "num_1007", - "text_en": "BONEFIRE DANCE" - }, - { - "key": "num_1008", - "text_en": "GUARD" - }, - { - "key": "num_1009", - "text_en": "Catch It!" - }, - { - "key": "num_1010", - "text_en": "ARENA" - }, - { - "key": "num_1011", - "text_en": "KUNG FU" - }, - { - "key": "num_1012", - "text_en": "TRAIN" - }, - { - "key": "num_1013", - "text_en": "CRAZY" - }, - { - "key": "num_1014", - "text_en": "ADVENTURE" - }, - { - "key": "num_1015", - "text_en": "EXPEDITION" - }, - { - "key": "num_1016", - "text_en": "FESTIVAL" - }, - { - "key": "num_1017", - "text_en": "GOURMET RESTAURANT" - }, - { - "key": "num_1018", - "text_en": "GOBER BACKSMITH SHOP" - }, - { - "key": "num_1019", - "text_en": "chat" - }, - { - "key": "num_1020", - "text_en": "World" - }, - { - "key": "num_1021", - "text_en": "Guild" - }, - { - "key": "num_1022", - "text_en": "Private" - }, - { - "key": "num_1023", - "text_en": "Public" - }, - { - "key": "num_1024", - "text_en": "System" - }, - { - "key": "opencond_name_10001", - "text_en": "INVENTORY" - }, - { - "key": "opencond_name_10002", - "text_en": "SHOP" - }, - { - "key": "opencond_name_10003", - "text_en": "UNION" - }, - { - "key": "opencond_name_10004", - "text_en": "MAIL" - }, - { - "key": "opencond_name_10005", - "text_en": "SOCIAL" - }, - { - "key": "opencond_name_10006", - "text_en": "CARDS" - }, - { - "key": "opencond_name_10007", - "text_en": "DORM" - }, - { - "key": "opencond_name_10008", - "text_en": "CHARGE" - }, - { - "key": "opencond_name_10009", - "text_en": "EVENT" - }, - { - "key": "opencond_name_10010", - "text_en": "MISSIONS" - }, - { - "key": "hero_help_10001", - "text_en": "养成说明" - }, - { - "key": "hero_help_10002", - "text_en": "英雄升级" - }, - { - "key": "hero_help_10003", - "text_en": "英雄可通过出战或吸收经验精灵提升等级" - }, - { - "key": "hero_help_10004", - "text_en": "英雄升星" - }, - { - "key": "hero_help_10005", - "text_en": "不同星级的英雄有不同的等级上限,3星为30级,4星为40级,5星为50级,6星为60级。
英雄达到等级上限后,需要通过升星进一步提升等级。
升星后英雄的属性将得到提升。
升星精灵是英雄升星的优质素材" - }, - { - "key": "hero_help_10006", - "text_en": "技能升级" - }, - { - "key": "hero_help_10007", - "text_en": "使用稀有/史诗/传说品质的技能精灵可以提升对应品质英雄的技能等级,技能升级时将随机选择还可以继续升级的技能。
如果英雄的所有技能等级满级,将不能再使用技能精灵提升等级" - } -] \ No newline at end of file diff --git a/bin/json/LocalizeConfig_TW.json b/bin/json/LocalizeConfig_TW.json deleted file mode 100644 index 7a84c4420..000000000 --- a/bin/json/LocalizeConfig_TW.json +++ /dev/null @@ -1,4074 +0,0 @@ -[ - { - "key": "ChineseSimplified", - "text_tw": "" - }, - { - "key": "ChineseTraditional", - "text_tw": "" - }, - { - "key": "English", - "text_tw": "" - }, - { - "key": "1", - "text_tw": "one" - }, - { - "key": "2", - "text_tw": "two" - }, - { - "key": "3", - "text_tw": "three" - }, - { - "key": "4", - "text_tw": "four" - }, - { - "key": "5", - "text_tw": "five" - }, - { - "key": "6", - "text_tw": "six" - }, - { - "key": "7", - "text_tw": "seven" - }, - { - "key": "8", - "text_tw": "eight" - }, - { - "key": "9", - "text_tw": "nine" - }, - { - "key": "10", - "text_tw": "ten" - }, - { - "key": "Login", - "text_tw": "Login" - }, - { - "key": "MomentDay1", - "text_tw": "" - }, - { - "key": "MomentDay2", - "text_tw": "" - }, - { - "key": "MomentHour1", - "text_tw": "" - }, - { - "key": "MomentHour2", - "text_tw": "" - }, - { - "key": "MomentMinutes1", - "text_tw": "" - }, - { - "key": "MomentMinutes2", - "text_tw": "" - }, - { - "key": "MomentSeconds1", - "text_tw": "" - }, - { - "key": "MomentSeconds2", - "text_tw": "" - }, - { - "key": "Tuijian", - "text_tw": "Hot" - }, - { - "key": "Juese", - "text_tw": "Role" - }, - { - "key": "hero_13001", - "text_tw": "shining" - }, - { - "key": "hero_13002", - "text_tw": "食人鱼先生" - }, - { - "key": "hero_13003", - "text_tw": "啊啊" - }, - { - "key": "hero_13004", - "text_tw": "法夸德勋爵" - }, - { - "key": "hero_13005", - "text_tw": "大大" - }, - { - "key": "hero_14001", - "text_tw": "史图依克" - }, - { - "key": "hero_14002", - "text_tw": "大龙" - }, - { - "key": "hero_14003", - "text_tw": "亚丝翠" - }, - { - "key": "hero_14004", - "text_tw": "克莱尔·努涅斯" - }, - { - "key": "hero_14005", - "text_tw": "鹤大师" - }, - { - "key": "hero_14006", - "text_tw": "布兰奇" - }, - { - "key": "hero_14007", - "text_tw": "格里斯特王子" - }, - { - "key": "hero_15001", - "text_tw": "吉姆·莱克" - }, - { - "key": "hero_15002", - "text_tw": "船长" - }, - { - "key": "hero_15003", - "text_tw": "希沙窦斯" - }, - { - "key": "hero_15004", - "text_tw": "小欧" - }, - { - "key": "hero_15005", - "text_tw": "亚力克斯" - }, - { - "key": "hero_23001", - "text_tw": "斯梅克船长" - }, - { - "key": "hero_23002", - "text_tw": "警卫队长" - }, - { - "key": "hero_23003", - "text_tw": "泰德·邓普顿" - }, - { - "key": "hero_23004", - "text_tw": "吉姆·普雷斯科特" - }, - { - "key": "hero_24001", - "text_tw": "警长" - }, - { - "key": "hero_24002", - "text_tw": "牙仙" - }, - { - "key": "hero_24003", - "text_tw": "睡神沙人" - }, - { - "key": "hero_24004", - "text_tw": "邦尼兔" - }, - { - "key": "hero_24005", - "text_tw": "金猴" - }, - { - "key": "hero_24006", - "text_tw": "凯尔" - }, - { - "key": "hero_24007", - "text_tw": "小钱" - }, - { - "key": "hero_24008", - "text_tw": "暴芙那特" - }, - { - "key": "hero_24009", - "text_tw": "云朵先生" - }, - { - "key": "hero_25001", - "text_tw": "阿宝" - }, - { - "key": "hero_25002", - "text_tw": "沃尔夫先生" - }, - { - "key": "hero_25003", - "text_tw": "无牙仔" - }, - { - "key": "hero_25004", - "text_tw": "波比" - }, - { - "key": "hero_33001", - "text_tw": "巫嘎" - }, - { - "key": "hero_33002", - "text_tw": "坦克" - }, - { - "key": "hero_33003", - "text_tw": "胡德先生" - }, - { - "key": "hero_33004", - "text_tw": "普鲁格兰杰" - }, - { - "key": "hero_33005", - "text_tw": "鼻涕粗" - }, - { - "key": "hero_33006", - "text_tw": "珍妮丝·邓普顿" - }, - { - "key": "hero_34001", - "text_tw": "贫嘴驴" - }, - { - "key": "hero_34002", - "text_tw": "蒂姆·邓普顿" - }, - { - "key": "hero_34003", - "text_tw": "圣诞老人" - }, - { - "key": "hero_34004", - "text_tw": "瓜哥" - }, - { - "key": "hero_34005", - "text_tw": "沃尔特·史翠克勒" - }, - { - "key": "hero_34006", - "text_tw": "冰霜杰克" - }, - { - "key": "hero_34007", - "text_tw": "菲奥娜" - }, - { - "key": "hero_34008", - "text_tw": "悍夫那特" - }, - { - "key": "hero_35001", - "text_tw": "师父" - }, - { - "key": "hero_35002", - "text_tw": "希卡普" - }, - { - "key": "hero_35003", - "text_tw": "漆黑" - }, - { - "key": "hero_35004", - "text_tw": "黛安·福克斯顿" - }, - { - "key": "hero_35005", - "text_tw": "幸运·普雷斯科特" - }, - { - "key": "hero_35006", - "text_tw": "平先生" - }, - { - "key": "hero_43001", - "text_tw": "阿比盖尔·斯通" - }, - { - "key": "hero_43002", - "text_tw": "果酱教授" - }, - { - "key": "hero_43003", - "text_tw": "史蒂夫·帕丘克" - }, - { - "key": "hero_43004", - "text_tw": "姜饼人" - }, - { - "key": "hero_43005", - "text_tw": "瓦希尔指挥官" - }, - { - "key": "hero_43006", - "text_tw": "布里奇特" - }, - { - "key": "hero_43007", - "text_tw": "戈伯" - }, - { - "key": "hero_44001", - "text_tw": "美肚鲨" - }, - { - "key": "hero_44002", - "text_tw": "蛇先生" - }, - { - "key": "hero_44003", - "text_tw": "匹诺曹" - }, - { - "key": "hero_44004", - "text_tw": "艾札塔伦" - }, - { - "key": "hero_44005", - "text_tw": "小伊" - }, - { - "key": "hero_44006", - "text_tw": "悍娇虎" - }, - { - "key": "hero_45001", - "text_tw": "乌龟大师" - }, - { - "key": "hero_45002", - "text_tw": "梅林" - }, - { - "key": "hero_45003", - "text_tw": "盖" - }, - { - "key": "hero_45004", - "text_tw": "穿靴子的猫" - }, - { - "key": "hero_43901", - "text_tw": "升星精灵" - }, - { - "key": "hero_42911", - "text_tw": "初级经验精灵" - }, - { - "key": "hero_43911", - "text_tw": "中级经验精灵" - }, - { - "key": "hero_44911", - "text_tw": "高级经验精灵" - }, - { - "key": "hero_43921", - "text_tw": "技能精灵·稀有" - }, - { - "key": "hero_44921", - "text_tw": "技能精灵·史诗" - }, - { - "key": "hero_45921", - "text_tw": "技能精灵·传说" - }, - { - "key": "hero_51001", - "text_tw": "啵啵星人(新增)" - }, - { - "key": "hero_51002", - "text_tw": "埃雷特手下1号(新增)" - }, - { - "key": "hero_51003", - "text_tw": "埃雷特手下2号(新增)" - }, - { - "key": "hero_51004", - "text_tw": "豺狼小怪(新增)" - }, - { - "key": "hero_51005", - "text_tw": "犀牛守卫(新增)" - }, - { - "key": "hero_51006", - "text_tw": "香塔尔 杜布瓦队长手下1号(新增)" - }, - { - "key": "hero_51007", - "text_tw": "香塔尔 杜布瓦队长手下2号(新增)" - }, - { - "key": "hero_51008", - "text_tw": "香塔尔 杜布瓦队长手下3号(新增)" - }, - { - "key": "hero_51009", - "text_tw": "香塔尔 杜布瓦队长手下4号(新增)" - }, - { - "key": "hero_51010", - "text_tw": "警卫1号(新增)" - }, - { - "key": "hero_51011", - "text_tw": "警卫2号(新增)" - }, - { - "key": "hero_51012", - "text_tw": "小猴子(新增)" - }, - { - "key": "hero_51013", - "text_tw": "巨怪啰啰(新增)" - }, - { - "key": "hero_51014", - "text_tw": "博啃族宫廷守卫(新增)" - }, - { - "key": "hero_53001", - "text_tw": "埃雷特(新增)" - }, - { - "key": "hero_53002", - "text_tw": "豺狼头领(新增)" - }, - { - "key": "hero_53003", - "text_tw": "豪猪大师(翡翠僵尸)(新增)" - }, - { - "key": "hero_53004", - "text_tw": "双獾大师(翡翠僵尸)(新增)" - }, - { - "key": "hero_53005", - "text_tw": "小猴子首领(新增)" - }, - { - "key": "hero_53006", - "text_tw": "巨怪首领(新增)" - }, - { - "key": "hero_55001", - "text_tw": "香塔尔 杜布瓦队长" - }, - { - "key": "hero_55002", - "text_tw": "亨得利克斯(新增)" - }, - { - "key": "hero_55003", - "text_tw": "巨型猩猩怪兽(新增)" - }, - { - "key": "hero_55004", - "text_tw": "白龙王" - }, - { - "key": "hero_55005", - "text_tw": "大厨(新增)" - }, - { - "key": "hero_55006", - "text_tw": "德雷格(新增)" - }, - { - "key": "hero_55007", - "text_tw": "莫甘娜巨怪" - }, - { - "key": "hero_55008", - "text_tw": "莫甘娜二阶" - }, - { - "key": "hero_55009", - "text_tw": "" - }, - { - "key": "hero_55010", - "text_tw": "" - }, - { - "key": "hero_55011", - "text_tw": "" - }, - { - "key": "hero_55012", - "text_tw": "" - }, - { - "key": "hero_55013", - "text_tw": "" - }, - { - "key": "hero_55014", - "text_tw": "" - }, - { - "key": "hero_55015", - "text_tw": "" - }, - { - "key": "hero_55016", - "text_tw": "" - }, - { - "key": "hero_55017", - "text_tw": "" - }, - { - "key": "hero_55018", - "text_tw": "" - }, - { - "key": "hero_55019", - "text_tw": "" - }, - { - "key": "hero_55020", - "text_tw": "" - }, - { - "key": "hero_55021", - "text_tw": "" - }, - { - "key": "hero_55022", - "text_tw": "" - }, - { - "key": "hero_55023", - "text_tw": "" - }, - { - "key": "hero_55024", - "text_tw": "" - }, - { - "key": "hero_55025", - "text_tw": "" - }, - { - "key": "hero_55026", - "text_tw": "" - }, - { - "key": "hero_55027", - "text_tw": "" - }, - { - "key": "hero_55028", - "text_tw": "" - }, - { - "key": "hero_55029", - "text_tw": "" - }, - { - "key": "hero_55030", - "text_tw": "" - }, - { - "key": "hero_55031", - "text_tw": "" - }, - { - "key": "hero_55032", - "text_tw": "" - }, - { - "key": "hero_55033", - "text_tw": "" - }, - { - "key": "hero_55034", - "text_tw": "" - }, - { - "key": "hero_55035", - "text_tw": "" - }, - { - "key": "hero_55036", - "text_tw": "" - }, - { - "key": "hero_55037", - "text_tw": "" - }, - { - "key": "hero_55038", - "text_tw": "" - }, - { - "key": "hero_55039", - "text_tw": "" - }, - { - "key": "hero_55040", - "text_tw": "" - }, - { - "key": "hero_55041", - "text_tw": "" - }, - { - "key": "hero_55042", - "text_tw": "" - }, - { - "key": "hero_55043", - "text_tw": "" - }, - { - "key": "hero_55044", - "text_tw": "" - }, - { - "key": "hero_55045", - "text_tw": "" - }, - { - "key": "hero_55046", - "text_tw": "" - }, - { - "key": "hero_55047", - "text_tw": "" - }, - { - "key": "hero_55048", - "text_tw": "" - }, - { - "key": "hero_55049", - "text_tw": "" - }, - { - "key": "hero_55050", - "text_tw": "" - }, - { - "key": "hero_55051", - "text_tw": "" - }, - { - "key": "hero_55052", - "text_tw": "" - }, - { - "key": "hero_55053", - "text_tw": "" - }, - { - "key": "hero_55054", - "text_tw": "" - }, - { - "key": "hero_55055", - "text_tw": "" - }, - { - "key": "hero_55056", - "text_tw": "" - }, - { - "key": "hero_55057", - "text_tw": "" - }, - { - "key": "hero_55058", - "text_tw": "" - }, - { - "key": "hero_55059", - "text_tw": "" - }, - { - "key": "hero_55060", - "text_tw": "" - }, - { - "key": "hero_55061", - "text_tw": "" - }, - { - "key": "hero_55062", - "text_tw": "" - }, - { - "key": "hero_55063", - "text_tw": "" - }, - { - "key": "hero_55064", - "text_tw": "" - }, - { - "key": "hero_55065", - "text_tw": "" - }, - { - "key": "hero_55066", - "text_tw": "" - }, - { - "key": "hero_55067", - "text_tw": "" - }, - { - "key": "hero_55068", - "text_tw": "" - }, - { - "key": "hero_55069", - "text_tw": "" - }, - { - "key": "hero_55070", - "text_tw": "" - }, - { - "key": "hero_55071", - "text_tw": "" - }, - { - "key": "hero_55072", - "text_tw": "" - }, - { - "key": "hero_55073", - "text_tw": "" - }, - { - "key": "hero_55074", - "text_tw": "" - }, - { - "key": "hero_55075", - "text_tw": "" - }, - { - "key": "hero_55076", - "text_tw": "" - }, - { - "key": "hero_55077", - "text_tw": "" - }, - { - "key": "hero_55078", - "text_tw": "" - }, - { - "key": "hero_55079", - "text_tw": "" - }, - { - "key": "hero_55080", - "text_tw": "" - }, - { - "key": "hero_55081", - "text_tw": "" - }, - { - "key": "hero_55082", - "text_tw": "" - }, - { - "key": "hero_55083", - "text_tw": "" - }, - { - "key": "hero_55084", - "text_tw": "" - }, - { - "key": "hero_55085", - "text_tw": "" - }, - { - "key": "hero_55086", - "text_tw": "" - }, - { - "key": "hero_55087", - "text_tw": "" - }, - { - "key": "hero_55088", - "text_tw": "" - }, - { - "key": "hero_55089", - "text_tw": "" - }, - { - "key": "hero_55090", - "text_tw": "" - }, - { - "key": "hero_55091", - "text_tw": "" - }, - { - "key": "hero_55092", - "text_tw": "" - }, - { - "key": "hero_55093", - "text_tw": "" - }, - { - "key": "hero_55094", - "text_tw": "" - }, - { - "key": "hero_55095", - "text_tw": "" - }, - { - "key": "hero_55096", - "text_tw": "" - }, - { - "key": "hero_55097", - "text_tw": "" - }, - { - "key": "hero_55098", - "text_tw": "" - }, - { - "key": "hero_55099", - "text_tw": "" - }, - { - "key": "hero_55100", - "text_tw": "" - }, - { - "key": "hero_55101", - "text_tw": "" - }, - { - "key": "hero_55102", - "text_tw": "" - }, - { - "key": "hero_55103", - "text_tw": "" - }, - { - "key": "hero_55104", - "text_tw": "" - }, - { - "key": "hero_55105", - "text_tw": "" - }, - { - "key": "hero_55106", - "text_tw": "" - }, - { - "key": "hero_55107", - "text_tw": "" - }, - { - "key": "hero_55108", - "text_tw": "" - }, - { - "key": "hero_55109", - "text_tw": "" - }, - { - "key": "hero_55110", - "text_tw": "" - }, - { - "key": "hero_55111", - "text_tw": "" - }, - { - "key": "hero_55112", - "text_tw": "" - }, - { - "key": "hero_55113", - "text_tw": "" - }, - { - "key": "hero_55114", - "text_tw": "" - }, - { - "key": "equip_13001", - "text_tw": "" - }, - { - "key": "equip_13002", - "text_tw": "" - }, - { - "key": "equip_13003", - "text_tw": "" - }, - { - "key": "equip_13004", - "text_tw": "" - }, - { - "key": "equip_13005", - "text_tw": "" - }, - { - "key": "equip_13006", - "text_tw": "" - }, - { - "key": "equip_13007", - "text_tw": "" - }, - { - "key": "equip_13008", - "text_tw": "" - }, - { - "key": "equip_13009", - "text_tw": "" - }, - { - "key": "equip_13010", - "text_tw": "" - }, - { - "key": "equip_13011", - "text_tw": "" - }, - { - "key": "equip_13012", - "text_tw": "" - }, - { - "key": "equip_13013", - "text_tw": "" - }, - { - "key": "equip_13014", - "text_tw": "" - }, - { - "key": "equip_13015", - "text_tw": "" - }, - { - "key": "equip_13016", - "text_tw": "" - }, - { - "key": "equip_13017", - "text_tw": "" - }, - { - "key": "equip_13018", - "text_tw": "" - }, - { - "key": "equip_13019", - "text_tw": "" - }, - { - "key": "equip_13020", - "text_tw": "" - }, - { - "key": "equip_13021", - "text_tw": "" - }, - { - "key": "equip_13022", - "text_tw": "" - }, - { - "key": "equip_13023", - "text_tw": "" - }, - { - "key": "equip_13024", - "text_tw": "" - }, - { - "key": "equip_13025", - "text_tw": "" - }, - { - "key": "equip_13026", - "text_tw": "" - }, - { - "key": "equip_13027", - "text_tw": "" - }, - { - "key": "equip_13028", - "text_tw": "" - }, - { - "key": "equip_13029", - "text_tw": "" - }, - { - "key": "equip_13030", - "text_tw": "" - }, - { - "key": "equip_13031", - "text_tw": "" - }, - { - "key": "equip_13032", - "text_tw": "" - }, - { - "key": "equip_13033", - "text_tw": "" - }, - { - "key": "equip_13034", - "text_tw": "" - }, - { - "key": "equip_13035", - "text_tw": "" - }, - { - "key": "equip_13036", - "text_tw": "" - }, - { - "key": "equip_13037", - "text_tw": "" - }, - { - "key": "equip_13038", - "text_tw": "" - }, - { - "key": "equip_13039", - "text_tw": "" - }, - { - "key": "equip_13040", - "text_tw": "" - }, - { - "key": "equip_13041", - "text_tw": "" - }, - { - "key": "equip_13042", - "text_tw": "" - }, - { - "key": "equip_13043", - "text_tw": "" - }, - { - "key": "equip_13044", - "text_tw": "" - }, - { - "key": "equip_13045", - "text_tw": "" - }, - { - "key": "equip_13046", - "text_tw": "" - }, - { - "key": "equip_13047", - "text_tw": "" - }, - { - "key": "equip_13048", - "text_tw": "" - }, - { - "key": "equip_13049", - "text_tw": "" - }, - { - "key": "equip_13050", - "text_tw": "" - }, - { - "key": "equip_13051", - "text_tw": "" - }, - { - "key": "equip_13052", - "text_tw": "" - }, - { - "key": "equip_13053", - "text_tw": "" - }, - { - "key": "equip_13054", - "text_tw": "" - }, - { - "key": "equip_13055", - "text_tw": "" - }, - { - "key": "equip_13056", - "text_tw": "" - }, - { - "key": "equip_13057", - "text_tw": "" - }, - { - "key": "equip_13058", - "text_tw": "" - }, - { - "key": "equip_13059", - "text_tw": "" - }, - { - "key": "equip_13060", - "text_tw": "" - }, - { - "key": "equip_13061", - "text_tw": "" - }, - { - "key": "equip_13062", - "text_tw": "" - }, - { - "key": "equip_13063", - "text_tw": "" - }, - { - "key": "equip_13064", - "text_tw": "" - }, - { - "key": "equip_13065", - "text_tw": "" - }, - { - "key": "equip_13066", - "text_tw": "" - }, - { - "key": "equip_13067", - "text_tw": "" - }, - { - "key": "equip_13068", - "text_tw": "" - }, - { - "key": "equip_13069", - "text_tw": "" - }, - { - "key": "equip_13070", - "text_tw": "" - }, - { - "key": "equip_13071", - "text_tw": "" - }, - { - "key": "equip_13072", - "text_tw": "" - }, - { - "key": "equip_13073", - "text_tw": "" - }, - { - "key": "equip_13074", - "text_tw": "" - }, - { - "key": "equip_13075", - "text_tw": "" - }, - { - "key": "equip_13076", - "text_tw": "" - }, - { - "key": "equip_13077", - "text_tw": "" - }, - { - "key": "equip_13078", - "text_tw": "" - }, - { - "key": "equip_13079", - "text_tw": "" - }, - { - "key": "equip_13080", - "text_tw": "" - }, - { - "key": "equip_13081", - "text_tw": "" - }, - { - "key": "equip_13082", - "text_tw": "" - }, - { - "key": "equip_13083", - "text_tw": "" - }, - { - "key": "equip_13084", - "text_tw": "" - }, - { - "key": "equip_13085", - "text_tw": "" - }, - { - "key": "equip_13086", - "text_tw": "" - }, - { - "key": "equip_13087", - "text_tw": "" - }, - { - "key": "equip_13088", - "text_tw": "" - }, - { - "key": "equip_13089", - "text_tw": "" - }, - { - "key": "equip_13090", - "text_tw": "" - }, - { - "key": "equip_13091", - "text_tw": "" - }, - { - "key": "equip_13092", - "text_tw": "" - }, - { - "key": "equip_13093", - "text_tw": "" - }, - { - "key": "equip_13094", - "text_tw": "" - }, - { - "key": "equip_13095", - "text_tw": "" - }, - { - "key": "equip_13096", - "text_tw": "" - }, - { - "key": "equip_13097", - "text_tw": "" - }, - { - "key": "equip_13098", - "text_tw": "" - }, - { - "key": "equip_13099", - "text_tw": "" - }, - { - "key": "equip_13100", - "text_tw": "" - }, - { - "key": "equip_13101", - "text_tw": "" - }, - { - "key": "equip_13102", - "text_tw": "" - }, - { - "key": "equip_13103", - "text_tw": "" - }, - { - "key": "equip_13104", - "text_tw": "" - }, - { - "key": "equip_13105", - "text_tw": "" - }, - { - "key": "equip_13106", - "text_tw": "" - }, - { - "key": "equip_13107", - "text_tw": "" - }, - { - "key": "equip_13108", - "text_tw": "" - }, - { - "key": "equip_13109", - "text_tw": "" - }, - { - "key": "equip_13110", - "text_tw": "" - }, - { - "key": "equip_13111", - "text_tw": "" - }, - { - "key": "equip_13112", - "text_tw": "" - }, - { - "key": "equip_13113", - "text_tw": "" - }, - { - "key": "equip_13114", - "text_tw": "" - }, - { - "key": "equip_13115", - "text_tw": "" - }, - { - "key": "equip_13116", - "text_tw": "" - }, - { - "key": "equip_13117", - "text_tw": "" - }, - { - "key": "equip_13118", - "text_tw": "" - }, - { - "key": "equip_13119", - "text_tw": "" - }, - { - "key": "equip_13120", - "text_tw": "" - }, - { - "key": "equip_13121", - "text_tw": "" - }, - { - "key": "equip_13122", - "text_tw": "" - }, - { - "key": "equip_13123", - "text_tw": "" - }, - { - "key": "equip_13124", - "text_tw": "" - }, - { - "key": "equip_13125", - "text_tw": "" - }, - { - "key": "equip_13126", - "text_tw": "" - }, - { - "key": "equip_13127", - "text_tw": "" - }, - { - "key": "equip_13128", - "text_tw": "" - }, - { - "key": "equip_13129", - "text_tw": "" - }, - { - "key": "equip_13130", - "text_tw": "" - }, - { - "key": "equip_13131", - "text_tw": "" - }, - { - "key": "equip_13132", - "text_tw": "" - }, - { - "key": "equip_13133", - "text_tw": "" - }, - { - "key": "equip_13134", - "text_tw": "" - }, - { - "key": "equip_13135", - "text_tw": "" - }, - { - "key": "equip_13136", - "text_tw": "" - }, - { - "key": "equip_13137", - "text_tw": "" - }, - { - "key": "equip_13138", - "text_tw": "" - }, - { - "key": "equip_13139", - "text_tw": "" - }, - { - "key": "equip_13140", - "text_tw": "" - }, - { - "key": "equip_13141", - "text_tw": "" - }, - { - "key": "equip_13142", - "text_tw": "" - }, - { - "key": "equip_13143", - "text_tw": "" - }, - { - "key": "equip_13144", - "text_tw": "" - }, - { - "key": "equip_13145", - "text_tw": "" - }, - { - "key": "equip_13146", - "text_tw": "" - }, - { - "key": "equip_13147", - "text_tw": "" - }, - { - "key": "equip_13148", - "text_tw": "" - }, - { - "key": "equip_13149", - "text_tw": "" - }, - { - "key": "equip_13150", - "text_tw": "" - }, - { - "key": "equip_13151", - "text_tw": "" - }, - { - "key": "equip_13152", - "text_tw": "" - }, - { - "key": "equip_13153", - "text_tw": "" - }, - { - "key": "equip_13154", - "text_tw": "" - }, - { - "key": "equip_13155", - "text_tw": "" - }, - { - "key": "equip_13156", - "text_tw": "" - }, - { - "key": "equip_13157", - "text_tw": "" - }, - { - "key": "equip_13158", - "text_tw": "" - }, - { - "key": "equip_13159", - "text_tw": "" - }, - { - "key": "equip_13160", - "text_tw": "" - }, - { - "key": "equip_13161", - "text_tw": "" - }, - { - "key": "equip_13162", - "text_tw": "" - }, - { - "key": "equip_13163", - "text_tw": "" - }, - { - "key": "equip_13164", - "text_tw": "" - }, - { - "key": "equip_13165", - "text_tw": "" - }, - { - "key": "equip_13166", - "text_tw": "" - }, - { - "key": "equip_13167", - "text_tw": "" - }, - { - "key": "equip_13168", - "text_tw": "" - }, - { - "key": "equip_13169", - "text_tw": "" - }, - { - "key": "equip_13170", - "text_tw": "" - }, - { - "key": "equip_13171", - "text_tw": "" - }, - { - "key": "equip_13172", - "text_tw": "" - }, - { - "key": "equip_13173", - "text_tw": "" - }, - { - "key": "equip_13174", - "text_tw": "" - }, - { - "key": "equip_13175", - "text_tw": "" - }, - { - "key": "equip_13176", - "text_tw": "" - }, - { - "key": "equip_13177", - "text_tw": "" - }, - { - "key": "equip_13178", - "text_tw": "" - }, - { - "key": "equip_13179", - "text_tw": "" - }, - { - "key": "equip_13180", - "text_tw": "" - }, - { - "key": "equip_13181", - "text_tw": "" - }, - { - "key": "equip_13182", - "text_tw": "" - }, - { - "key": "equip_13183", - "text_tw": "" - }, - { - "key": "equip_13184", - "text_tw": "" - }, - { - "key": "equip_13185", - "text_tw": "" - }, - { - "key": "equip_13186", - "text_tw": "" - }, - { - "key": "equip_13187", - "text_tw": "" - }, - { - "key": "equip_13188", - "text_tw": "" - }, - { - "key": "equip_13189", - "text_tw": "" - }, - { - "key": "equip_13190", - "text_tw": "" - }, - { - "key": "equip_13191", - "text_tw": "" - }, - { - "key": "equip_13192", - "text_tw": "" - }, - { - "key": "equip_13193", - "text_tw": "" - }, - { - "key": "equip_13194", - "text_tw": "" - }, - { - "key": "equip_13195", - "text_tw": "" - }, - { - "key": "equip_13196", - "text_tw": "" - }, - { - "key": "equip_13197", - "text_tw": "" - }, - { - "key": "equip_13198", - "text_tw": "" - }, - { - "key": "equip_13199", - "text_tw": "" - }, - { - "key": "equip_13200", - "text_tw": "" - }, - { - "key": "equip_13201", - "text_tw": "" - }, - { - "key": "equip_13202", - "text_tw": "" - }, - { - "key": "equip_13203", - "text_tw": "" - }, - { - "key": "equip_13204", - "text_tw": "" - }, - { - "key": "equip_13205", - "text_tw": "" - }, - { - "key": "equip_13206", - "text_tw": "" - }, - { - "key": "equip_13207", - "text_tw": "" - }, - { - "key": "equip_13208", - "text_tw": "" - }, - { - "key": "equip_13209", - "text_tw": "" - }, - { - "key": "equip_13210", - "text_tw": "" - }, - { - "key": "equip_13211", - "text_tw": "" - }, - { - "key": "equip_13212", - "text_tw": "" - }, - { - "key": "equip_13213", - "text_tw": "" - }, - { - "key": "equip_13214", - "text_tw": "" - }, - { - "key": "equip_13215", - "text_tw": "" - }, - { - "key": "equip_13216", - "text_tw": "" - }, - { - "key": "equip_13217", - "text_tw": "" - }, - { - "key": "suit_equip_10001", - "text_tw": "" - }, - { - "key": "item_10001", - "text_tw": "" - }, - { - "key": "item_10002", - "text_tw": "" - }, - { - "key": "item_10003", - "text_tw": "" - }, - { - "key": "item_10011", - "text_tw": "" - }, - { - "key": "item_10012", - "text_tw": "" - }, - { - "key": "item_10013", - "text_tw": "" - }, - { - "key": "item_10021", - "text_tw": "" - }, - { - "key": "item_10022", - "text_tw": "" - }, - { - "key": "item_10023", - "text_tw": "" - }, - { - "key": "item_10031", - "text_tw": "" - }, - { - "key": "item_10032", - "text_tw": "" - }, - { - "key": "item_10033", - "text_tw": "" - }, - { - "key": "mainline_title_10001", - "text_tw": "" - }, - { - "key": "mainline_title_10002", - "text_tw": "" - }, - { - "key": "mainline_title_10003", - "text_tw": "" - }, - { - "key": "mainline_title_10004", - "text_tw": "" - }, - { - "key": "mainline_title_10005", - "text_tw": "" - }, - { - "key": "mainline_title_10006", - "text_tw": "" - }, - { - "key": "mainline_title_10007", - "text_tw": "" - }, - { - "key": "mainline_title_10008", - "text_tw": "" - }, - { - "key": "mainline_title_10009", - "text_tw": "" - }, - { - "key": "mainline_title_10010", - "text_tw": "" - }, - { - "key": "mainline_title_10011", - "text_tw": "" - }, - { - "key": "mainline_title_10012", - "text_tw": "" - }, - { - "key": "mainline_title_10013", - "text_tw": "" - }, - { - "key": "mainline_title_10014", - "text_tw": "" - }, - { - "key": "mainline_title_10015", - "text_tw": "" - }, - { - "key": "mainline_title_10016", - "text_tw": "" - }, - { - "key": "mainline_title_10017", - "text_tw": "" - }, - { - "key": "mainline_title_10018", - "text_tw": "" - }, - { - "key": "mainline_title_10019", - "text_tw": "" - }, - { - "key": "mainline_title_10020", - "text_tw": "" - }, - { - "key": "mainline_title_10021", - "text_tw": "" - }, - { - "key": "mainline_title_10022", - "text_tw": "" - }, - { - "key": "mainline_title_10023", - "text_tw": "" - }, - { - "key": "mainline_title_10024", - "text_tw": "" - }, - { - "key": "mainline_title_10025", - "text_tw": "" - }, - { - "key": "mainline_title_10026", - "text_tw": "" - }, - { - "key": "mainline_title_10027", - "text_tw": "" - }, - { - "key": "mainline_title_10028", - "text_tw": "" - }, - { - "key": "mainline_title_10029", - "text_tw": "" - }, - { - "key": "mainline_title_10030", - "text_tw": "" - }, - { - "key": "mainline_title_10031", - "text_tw": "" - }, - { - "key": "mainline_title_10032", - "text_tw": "" - }, - { - "key": "mainline_title_10033", - "text_tw": "" - }, - { - "key": "mainline_title_10034", - "text_tw": "" - }, - { - "key": "mainline_title_10035", - "text_tw": "" - }, - { - "key": "mainline_title_10036", - "text_tw": "" - }, - { - "key": "mainline_title_10037", - "text_tw": "" - }, - { - "key": "mainline_title_10038", - "text_tw": "" - }, - { - "key": "mainline_title_10039", - "text_tw": "" - }, - { - "key": "mainline_title_10040", - "text_tw": "" - }, - { - "key": "mainline_title_10041", - "text_tw": "" - }, - { - "key": "mainline_title_10042", - "text_tw": "" - }, - { - "key": "mainline_title_10043", - "text_tw": "" - }, - { - "key": "mainline_title_10044", - "text_tw": "" - }, - { - "key": "mainline_title_10045", - "text_tw": "" - }, - { - "key": "mainline_title_10046", - "text_tw": "" - }, - { - "key": "mainline_title_10047", - "text_tw": "" - }, - { - "key": "mainline_title_10048", - "text_tw": "" - }, - { - "key": "mainline_title_10049", - "text_tw": "" - }, - { - "key": "mainline_title_10050", - "text_tw": "" - }, - { - "key": "mainline_title_10051", - "text_tw": "" - }, - { - "key": "mainline_title_10052", - "text_tw": "" - }, - { - "key": "mainline_title_10053", - "text_tw": "" - }, - { - "key": "mainline_title_10054", - "text_tw": "" - }, - { - "key": "mainline_title_10055", - "text_tw": "" - }, - { - "key": "mainline_title_10056", - "text_tw": "" - }, - { - "key": "mainline_title_10057", - "text_tw": "" - }, - { - "key": "mainline_title_10058", - "text_tw": "" - }, - { - "key": "mainline_title_10059", - "text_tw": "" - }, - { - "key": "mainline_title_10060", - "text_tw": "" - }, - { - "key": "mainline_title_10061", - "text_tw": "" - }, - { - "key": "mainline_title_10062", - "text_tw": "" - }, - { - "key": "mainline_title_10063", - "text_tw": "" - }, - { - "key": "mainline_title_10064", - "text_tw": "" - }, - { - "key": "mainline_title_10065", - "text_tw": "" - }, - { - "key": "mainline_title_10066", - "text_tw": "" - }, - { - "key": "mainline_title_10067", - "text_tw": "" - }, - { - "key": "mainline_title_10068", - "text_tw": "" - }, - { - "key": "mainline_title_10069", - "text_tw": "" - }, - { - "key": "mainline_title_10070", - "text_tw": "" - }, - { - "key": "mainline_desc_10001", - "text_tw": "" - }, - { - "key": "mainline_desc_10002", - "text_tw": "" - }, - { - "key": "mainline_desc_10003", - "text_tw": "" - }, - { - "key": "mainline_desc_10004", - "text_tw": "" - }, - { - "key": "mainline_desc_10005", - "text_tw": "" - }, - { - "key": "mainline_desc_10006", - "text_tw": "" - }, - { - "key": "mainline_desc_10007", - "text_tw": "" - }, - { - "key": "mainline_desc_10008", - "text_tw": "" - }, - { - "key": "mainline_desc_10009", - "text_tw": "" - }, - { - "key": "mainline_desc_10010", - "text_tw": "" - }, - { - "key": "mainline_desc_10011", - "text_tw": "" - }, - { - "key": "mainline_desc_10012", - "text_tw": "" - }, - { - "key": "mainline_desc_10013", - "text_tw": "" - }, - { - "key": "mainline_desc_10014", - "text_tw": "" - }, - { - "key": "mainline_desc_10015", - "text_tw": "" - }, - { - "key": "mainline_desc_10016", - "text_tw": "" - }, - { - "key": "mainline_desc_10017", - "text_tw": "" - }, - { - "key": "mainline_desc_10018", - "text_tw": "" - }, - { - "key": "mainline_desc_10019", - "text_tw": "" - }, - { - "key": "mainline_desc_10020", - "text_tw": "" - }, - { - "key": "mainline_desc_10021", - "text_tw": "" - }, - { - "key": "mainline_desc_10022", - "text_tw": "" - }, - { - "key": "mainline_desc_10023", - "text_tw": "" - }, - { - "key": "mainline_desc_10024", - "text_tw": "" - }, - { - "key": "mainline_desc_10025", - "text_tw": "" - }, - { - "key": "mainline_desc_10026", - "text_tw": "" - }, - { - "key": "mainline_desc_10027", - "text_tw": "" - }, - { - "key": "mainline_desc_10028", - "text_tw": "" - }, - { - "key": "mainline_desc_10029", - "text_tw": "" - }, - { - "key": "mainline_desc_10030", - "text_tw": "" - }, - { - "key": "mainline_desc_10031", - "text_tw": "" - }, - { - "key": "mainline_desc_10032", - "text_tw": "" - }, - { - "key": "mainline_desc_10033", - "text_tw": "" - }, - { - "key": "mainline_desc_10034", - "text_tw": "" - }, - { - "key": "mainline_desc_10035", - "text_tw": "" - }, - { - "key": "mainline_desc_10036", - "text_tw": "" - }, - { - "key": "mainline_desc_10037", - "text_tw": "" - }, - { - "key": "mainline_desc_10038", - "text_tw": "" - }, - { - "key": "mainline_desc_10039", - "text_tw": "" - }, - { - "key": "mainline_desc_10040", - "text_tw": "" - }, - { - "key": "mainline_desc_10041", - "text_tw": "" - }, - { - "key": "mainline_desc_10042", - "text_tw": "" - }, - { - "key": "mainline_desc_10043", - "text_tw": "" - }, - { - "key": "mainline_desc_10044", - "text_tw": "" - }, - { - "key": "mainline_desc_10045", - "text_tw": "" - }, - { - "key": "mainline_desc_10046", - "text_tw": "" - }, - { - "key": "mainline_desc_10047", - "text_tw": "" - }, - { - "key": "mainline_desc_10048", - "text_tw": "" - }, - { - "key": "mainline_desc_10049", - "text_tw": "" - }, - { - "key": "mainline_desc_10050", - "text_tw": "" - }, - { - "key": "mainline_desc_10051", - "text_tw": "" - }, - { - "key": "mainline_desc_10052", - "text_tw": "" - }, - { - "key": "mainline_desc_10053", - "text_tw": "" - }, - { - "key": "mainline_desc_10054", - "text_tw": "" - }, - { - "key": "mainline_desc_10055", - "text_tw": "" - }, - { - "key": "mainline_desc_10056", - "text_tw": "" - }, - { - "key": "mainline_desc_10057", - "text_tw": "" - }, - { - "key": "mainline_desc_10058", - "text_tw": "" - }, - { - "key": "mainline_desc_10059", - "text_tw": "" - }, - { - "key": "mainline_desc_10060", - "text_tw": "" - }, - { - "key": "mainline_desc_10061", - "text_tw": "" - }, - { - "key": "mainline_desc_10062", - "text_tw": "" - }, - { - "key": "mainline_desc_10063", - "text_tw": "" - }, - { - "key": "mainline_desc_10064", - "text_tw": "" - }, - { - "key": "mainline_desc_10065", - "text_tw": "" - }, - { - "key": "mainline_desc_10066", - "text_tw": "" - }, - { - "key": "mainline_desc_10067", - "text_tw": "" - }, - { - "key": "mainline_desc_10068", - "text_tw": "" - }, - { - "key": "mainline_desc_10069", - "text_tw": "" - }, - { - "key": "mainline_desc_10070", - "text_tw": "" - }, - { - "key": "mainline_text_10001", - "text_tw": "" - }, - { - "key": "mainline_text_10002", - "text_tw": "" - }, - { - "key": "mainline_text_10003", - "text_tw": "" - }, - { - "key": "mainline_text_10004", - "text_tw": "" - }, - { - "key": "mainline_text_10005", - "text_tw": "" - }, - { - "key": "mainline_text_10006", - "text_tw": "" - }, - { - "key": "mainline_text_10007", - "text_tw": "" - }, - { - "key": "mainline_text_10008", - "text_tw": "" - }, - { - "key": "mainline_text_10009", - "text_tw": "" - }, - { - "key": "mainline_text_10010", - "text_tw": "" - }, - { - "key": "mainline_text_10011", - "text_tw": "" - }, - { - "key": "mainline_text_10012", - "text_tw": "" - }, - { - "key": "mainline_text_10013", - "text_tw": "" - }, - { - "key": "mainline_text_10014", - "text_tw": "" - }, - { - "key": "mainline_text_10015", - "text_tw": "" - }, - { - "key": "mainline_text_10016", - "text_tw": "" - }, - { - "key": "mainline_text_10017", - "text_tw": "" - }, - { - "key": "mainline_text_10018", - "text_tw": "" - }, - { - "key": "mainline_text_10019", - "text_tw": "" - }, - { - "key": "mainline_text_10020", - "text_tw": "" - }, - { - "key": "mainline_text_10021", - "text_tw": "" - }, - { - "key": "mainline_text_10022", - "text_tw": "" - }, - { - "key": "mainline_text_10023", - "text_tw": "" - }, - { - "key": "mainline_text_10024", - "text_tw": "" - }, - { - "key": "mainline_text_10025", - "text_tw": "" - }, - { - "key": "mainline_text_10026", - "text_tw": "" - }, - { - "key": "mainline_text_10027", - "text_tw": "" - }, - { - "key": "mainline_text_10028", - "text_tw": "" - }, - { - "key": "mainline_text_10029", - "text_tw": "" - }, - { - "key": "mainline_text_10030", - "text_tw": "" - }, - { - "key": "mainline_text_10031", - "text_tw": "" - }, - { - "key": "mainline_text_10032", - "text_tw": "" - }, - { - "key": "mainline_text_10033", - "text_tw": "" - }, - { - "key": "mainline_text_10034", - "text_tw": "" - }, - { - "key": "mainline_text_10035", - "text_tw": "" - }, - { - "key": "mainline_text_10036", - "text_tw": "" - }, - { - "key": "mainline_text_10037", - "text_tw": "" - }, - { - "key": "mainline_text_10038", - "text_tw": "" - }, - { - "key": "mainline_text_10039", - "text_tw": "" - }, - { - "key": "mainline_text_10040", - "text_tw": "" - }, - { - "key": "mainline_text_10041", - "text_tw": "" - }, - { - "key": "mainline_text_10042", - "text_tw": "" - }, - { - "key": "mainline_text_10043", - "text_tw": "" - }, - { - "key": "mainline_text_10044", - "text_tw": "" - }, - { - "key": "mainline_text_10045", - "text_tw": "" - }, - { - "key": "mainline_text_10046", - "text_tw": "" - }, - { - "key": "mainline_text_10047", - "text_tw": "" - }, - { - "key": "mainline_text_10048", - "text_tw": "" - }, - { - "key": "mainline_text_10049", - "text_tw": "" - }, - { - "key": "mainline_text_10050", - "text_tw": "" - }, - { - "key": "mainline_text_10051", - "text_tw": "" - }, - { - "key": "mainline_text_10052", - "text_tw": "" - }, - { - "key": "mainline_text_10053", - "text_tw": "" - }, - { - "key": "mainline_text_10054", - "text_tw": "" - }, - { - "key": "mainline_text_10055", - "text_tw": "" - }, - { - "key": "mainline_text_10056", - "text_tw": "" - }, - { - "key": "mainline_text_10057", - "text_tw": "" - }, - { - "key": "mainline_text_10058", - "text_tw": "" - }, - { - "key": "mainline_text_10059", - "text_tw": "" - }, - { - "key": "mainline_text_10060", - "text_tw": "" - }, - { - "key": "mainline_text_10061", - "text_tw": "" - }, - { - "key": "mainline_text_10062", - "text_tw": "" - }, - { - "key": "mainline_text_10063", - "text_tw": "" - }, - { - "key": "mainline_text_10064", - "text_tw": "" - }, - { - "key": "mainline_text_10065", - "text_tw": "" - }, - { - "key": "mainline_text_10066", - "text_tw": "" - }, - { - "key": "mainline_text_10067", - "text_tw": "" - }, - { - "key": "mainline_text_10068", - "text_tw": "" - }, - { - "key": "mainline_text_10069", - "text_tw": "" - }, - { - "key": "mainline_text_10070", - "text_tw": "" - }, - { - "key": "mainline_name_10001", - "text_tw": "" - }, - { - "key": "mainline_name_10002", - "text_tw": "" - }, - { - "key": "mainline_name_10003", - "text_tw": "" - }, - { - "key": "mainline_name_10004", - "text_tw": "" - }, - { - "key": "mainline_name_10005", - "text_tw": "" - }, - { - "key": "mainline_name_10006", - "text_tw": "" - }, - { - "key": "mainline_name_10007", - "text_tw": "" - }, - { - "key": "mainline_name_10008", - "text_tw": "" - }, - { - "key": "mainline_name_10009", - "text_tw": "" - }, - { - "key": "mainline_name_10010", - "text_tw": "" - }, - { - "key": "mainline_name_10011", - "text_tw": "" - }, - { - "key": "mainline_name_10012", - "text_tw": "" - }, - { - "key": "mainline_name_10013", - "text_tw": "" - }, - { - "key": "mainline_name_10014", - "text_tw": "" - }, - { - "key": "mainline_name_10015", - "text_tw": "" - }, - { - "key": "mainline_name_10016", - "text_tw": "" - }, - { - "key": "mainline_name_10017", - "text_tw": "" - }, - { - "key": "mainline_name_10018", - "text_tw": "" - }, - { - "key": "mainline_name_10019", - "text_tw": "" - }, - { - "key": "mainline_name_10020", - "text_tw": "" - }, - { - "key": "mainline_name_10021", - "text_tw": "" - }, - { - "key": "mainline_name_10022", - "text_tw": "" - }, - { - "key": "mainline_name_10023", - "text_tw": "" - }, - { - "key": "mainline_name_10024", - "text_tw": "" - }, - { - "key": "mainline_name_10025", - "text_tw": "" - }, - { - "key": "mainline_name_10026", - "text_tw": "" - }, - { - "key": "mainline_name_10027", - "text_tw": "" - }, - { - "key": "mainline_name_10028", - "text_tw": "" - }, - { - "key": "mainline_name_10029", - "text_tw": "" - }, - { - "key": "mainline_name_10030", - "text_tw": "" - }, - { - "key": "mainline_name_10031", - "text_tw": "" - }, - { - "key": "mainline_name_10032", - "text_tw": "" - }, - { - "key": "mainline_name_10033", - "text_tw": "" - }, - { - "key": "mainline_name_10034", - "text_tw": "" - }, - { - "key": "mainline_name_10035", - "text_tw": "" - }, - { - "key": "mainline_name_10036", - "text_tw": "" - }, - { - "key": "mainline_name_10037", - "text_tw": "" - }, - { - "key": "mainline_name_10038", - "text_tw": "" - }, - { - "key": "mainline_name_10039", - "text_tw": "" - }, - { - "key": "mainline_name_10040", - "text_tw": "" - }, - { - "key": "mainline_name_10041", - "text_tw": "" - }, - { - "key": "mainline_name_10042", - "text_tw": "" - }, - { - "key": "mainline_name_10043", - "text_tw": "" - }, - { - "key": "mainline_name_10044", - "text_tw": "" - }, - { - "key": "mainline_name_10045", - "text_tw": "" - }, - { - "key": "mainline_name_10046", - "text_tw": "" - }, - { - "key": "mainline_name_10047", - "text_tw": "" - }, - { - "key": "mainline_name_10048", - "text_tw": "" - }, - { - "key": "mainline_name_10049", - "text_tw": "" - }, - { - "key": "mainline_name_10050", - "text_tw": "" - }, - { - "key": "mainline_name_10051", - "text_tw": "" - }, - { - "key": "mainline_name_10052", - "text_tw": "" - }, - { - "key": "mainline_name_10053", - "text_tw": "" - }, - { - "key": "mainline_name_10054", - "text_tw": "" - }, - { - "key": "mainline_name_10055", - "text_tw": "" - }, - { - "key": "mainline_name_10056", - "text_tw": "" - }, - { - "key": "mainline_name_10057", - "text_tw": "" - }, - { - "key": "mainline_name_10058", - "text_tw": "" - }, - { - "key": "mainline_name_10059", - "text_tw": "" - }, - { - "key": "mainline_name_10060", - "text_tw": "" - }, - { - "key": "mainline_name_10061", - "text_tw": "" - }, - { - "key": "mainline_name_10062", - "text_tw": "" - }, - { - "key": "mainline_name_10063", - "text_tw": "" - }, - { - "key": "mainline_name_10064", - "text_tw": "" - }, - { - "key": "mainline_name_10065", - "text_tw": "" - }, - { - "key": "mainline_name_10066", - "text_tw": "" - }, - { - "key": "mainline_name_10067", - "text_tw": "" - }, - { - "key": "mainline_name_10068", - "text_tw": "" - }, - { - "key": "mainline_name_10069", - "text_tw": "" - }, - { - "key": "mainline_name_10070", - "text_tw": "" - }, - { - "key": "mainline_name_10071", - "text_tw": "" - }, - { - "key": "equip_10001", - "text_tw": "" - }, - { - "key": "equip_10002", - "text_tw": "" - }, - { - "key": "equip_10003", - "text_tw": "" - }, - { - "key": "equip_10004", - "text_tw": "" - }, - { - "key": "equip_10005", - "text_tw": "" - }, - { - "key": "skillname_125004011", - "text_tw": "" - }, - { - "key": "skillname_125004111", - "text_tw": "" - }, - { - "key": "skillname_125004211", - "text_tw": "" - }, - { - "key": "skillname_125004311", - "text_tw": "" - }, - { - "key": "skillname_925004211", - "text_tw": "" - }, - { - "key": "skillname_135002011", - "text_tw": "" - }, - { - "key": "skillname_135002111", - "text_tw": "" - }, - { - "key": "skillname_135002211", - "text_tw": "" - }, - { - "key": "skillname_135002311", - "text_tw": "" - }, - { - "key": "skillname_935002321", - "text_tw": "" - }, - { - "key": "skillname_124003011", - "text_tw": "" - }, - { - "key": "skillname_124003111", - "text_tw": "" - }, - { - "key": "skillname_124003211", - "text_tw": "" - }, - { - "key": "skillname_124003311", - "text_tw": "" - }, - { - "key": "skillname_924003411", - "text_tw": "" - }, - { - "key": "skill_1250040111", - "text_tw": "" - }, - { - "key": "skill_1250041111", - "text_tw": "" - }, - { - "key": "skill_1250041112", - "text_tw": "" - }, - { - "key": "skill_1250041113", - "text_tw": "" - }, - { - "key": "skill_1250041114", - "text_tw": "" - }, - { - "key": "skill_1250041115", - "text_tw": "" - }, - { - "key": "skill_1250041116", - "text_tw": "" - }, - { - "key": "skill_1250042111", - "text_tw": "" - }, - { - "key": "skill_1250042112", - "text_tw": "" - }, - { - "key": "skill_1250042113", - "text_tw": "" - }, - { - "key": "skill_1250043111", - "text_tw": "" - }, - { - "key": "skill_1250043112", - "text_tw": "" - }, - { - "key": "skill_1250043113", - "text_tw": "" - }, - { - "key": "skill_1250043114", - "text_tw": "" - }, - { - "key": "skill_1250043115", - "text_tw": "" - }, - { - "key": "skill_1350020111", - "text_tw": "" - }, - { - "key": "skill_1350021111", - "text_tw": "" - }, - { - "key": "skill_1350021112", - "text_tw": "" - }, - { - "key": "skill_1350021113", - "text_tw": "" - }, - { - "key": "skill_1350021114", - "text_tw": "" - }, - { - "key": "skill_1350021115", - "text_tw": "" - }, - { - "key": "skill_1350021116", - "text_tw": "" - }, - { - "key": "skill_1350022111", - "text_tw": "" - }, - { - "key": "skill_1350023111", - "text_tw": "" - }, - { - "key": "skill_1350023112", - "text_tw": "" - }, - { - "key": "skill_1350023113", - "text_tw": "" - }, - { - "key": "skill_1350023114", - "text_tw": "" - }, - { - "key": "skill_1350023115", - "text_tw": "" - }, - { - "key": "skill_1350023116", - "text_tw": "" - }, - { - "key": "skill_9350023211", - "text_tw": "" - }, - { - "key": "skill_9350023212", - "text_tw": "" - }, - { - "key": "skill_9350023213", - "text_tw": "" - }, - { - "key": "skill_9350023214", - "text_tw": "" - }, - { - "key": "skill_9350023215", - "text_tw": "" - }, - { - "key": "skill_9350023216", - "text_tw": "" - }, - { - "key": "skill_1240030111", - "text_tw": "" - }, - { - "key": "skill_1240031111", - "text_tw": "" - }, - { - "key": "skill_1240031112", - "text_tw": "" - }, - { - "key": "skill_1240031113", - "text_tw": "" - }, - { - "key": "skill_1240031114", - "text_tw": "" - }, - { - "key": "skill_1240031115", - "text_tw": "" - }, - { - "key": "skill_1240032111", - "text_tw": "" - }, - { - "key": "skill_1240032112", - "text_tw": "" - }, - { - "key": "skill_1240033111", - "text_tw": "" - }, - { - "key": "skill_1240033112", - "text_tw": "" - }, - { - "key": "skill_1240033113", - "text_tw": "" - }, - { - "key": "skill_1240033114", - "text_tw": "" - }, - { - "key": "skill_1240033115", - "text_tw": "" - }, - { - "key": "skill_1240033116", - "text_tw": "" - }, - { - "key": "skill_9240034111", - "text_tw": "" - }, - { - "key": "skill_9240034112", - "text_tw": "" - }, - { - "key": "skill_190011000", - "text_tw": "" - }, - { - "key": "skill_190012000", - "text_tw": "" - }, - { - "key": "skill_190013000", - "text_tw": "" - }, - { - "key": "skill_190014000", - "text_tw": "" - }, - { - "key": "skill_190015000", - "text_tw": "" - }, - { - "key": "skill_190016000", - "text_tw": "" - }, - { - "key": "skill_190017000", - "text_tw": "" - }, - { - "key": "skill_190018000", - "text_tw": "" - }, - { - "key": "skill_190011001", - "text_tw": "" - }, - { - "key": "skill_190011002", - "text_tw": "" - }, - { - "key": "skill_190011003", - "text_tw": "" - }, - { - "key": "skill_190011004", - "text_tw": "" - }, - { - "key": "skill_buff_390001001", - "text_tw": "" - }, - { - "key": "skill_buff_390001002", - "text_tw": "" - }, - { - "key": "skill_buff_390001003", - "text_tw": "" - }, - { - "key": "skill_buff_390001004", - "text_tw": "" - }, - { - "key": "skill_buff_390001005", - "text_tw": "" - }, - { - "key": "skill_buff_390001006", - "text_tw": "" - }, - { - "key": "skill_buff_390001007", - "text_tw": "" - }, - { - "key": "skill_buff_390001008", - "text_tw": "" - }, - { - "key": "skill_buff_390002001", - "text_tw": "" - }, - { - "key": "skill_buff_390002002", - "text_tw": "" - }, - { - "key": "skill_buff_390002003", - "text_tw": "" - }, - { - "key": "skill_buff_390002004", - "text_tw": "" - }, - { - "key": "skill_buff_390002005", - "text_tw": "" - }, - { - "key": "skill_buff_390002006", - "text_tw": "" - }, - { - "key": "skill_buff_390003001", - "text_tw": "" - }, - { - "key": "skill_buff_390003002", - "text_tw": "" - }, - { - "key": "skill_buff_390003003", - "text_tw": "" - }, - { - "key": "skill_buff_390003004", - "text_tw": "" - }, - { - "key": "skill_buff_390004001", - "text_tw": "" - }, - { - "key": "skill_buff_390004002", - "text_tw": "" - }, - { - "key": "skill_buff_390004003", - "text_tw": "" - }, - { - "key": "skill_buff_390004004", - "text_tw": "" - }, - { - "key": "skill_buff_390004005", - "text_tw": "" - }, - { - "key": "skill_buff_390004006", - "text_tw": "" - }, - { - "key": "skill_buff_390004007", - "text_tw": "" - }, - { - "key": "skill_buff_390004008", - "text_tw": "" - }, - { - "key": "skill_buff_390005001", - "text_tw": "" - }, - { - "key": "skill_buff_390005002", - "text_tw": "" - }, - { - "key": "skill_buff_390005003", - "text_tw": "" - }, - { - "key": "skill_buff_390006001", - "text_tw": "" - }, - { - "key": "skill_buff_300192114", - "text_tw": "" - }, - { - "key": "skill_buff_300192115", - "text_tw": "" - }, - { - "key": "skill_buffdes_390001001", - "text_tw": "" - }, - { - "key": "skill_buffdes_390001002", - "text_tw": "" - }, - { - "key": "skill_buffdes_390001003", - "text_tw": "" - }, - { - "key": "skill_buffdes_390001004", - "text_tw": "" - }, - { - "key": "skill_buffdes_390001005", - "text_tw": "" - }, - { - "key": "skill_buffdes_390001006", - "text_tw": "" - }, - { - "key": "skill_buffdes_390001007", - "text_tw": "" - }, - { - "key": "skill_buffdes_390001008", - "text_tw": "" - }, - { - "key": "skill_buffdes_390002001", - "text_tw": "" - }, - { - "key": "skill_buffdes_390002002", - "text_tw": "" - }, - { - "key": "skill_buffdes_390002003", - "text_tw": "" - }, - { - "key": "skill_buffdes_390002004", - "text_tw": "" - }, - { - "key": "skill_buffdes_390002005", - "text_tw": "" - }, - { - "key": "skill_buffdes_390002006", - "text_tw": "" - }, - { - "key": "skill_buffdes_390003001", - "text_tw": "" - }, - { - "key": "skill_buffdes_390003002", - "text_tw": "" - }, - { - "key": "skill_buffdes_390003003", - "text_tw": "" - }, - { - "key": "skill_buffdes_390003004", - "text_tw": "" - }, - { - "key": "skill_buffdes_390004001", - "text_tw": "" - }, - { - "key": "skill_buffdes_390004002", - "text_tw": "" - }, - { - "key": "skill_buffdes_390004003", - "text_tw": "" - }, - { - "key": "skill_buffdes_390004004", - "text_tw": "" - }, - { - "key": "skill_buffdes_390004005", - "text_tw": "" - }, - { - "key": "skill_buffdes_390004006", - "text_tw": "" - }, - { - "key": "skill_buffdes_390004007", - "text_tw": "" - }, - { - "key": "skill_buffdes_390004008", - "text_tw": "" - }, - { - "key": "skill_buffdes_390005001", - "text_tw": "" - }, - { - "key": "skill_buffdes_390005002", - "text_tw": "" - }, - { - "key": "skill_buffdes_390005003", - "text_tw": "" - }, - { - "key": "skill_buffdes_390006001", - "text_tw": "" - }, - { - "key": "skill_buffdes_300102103", - "text_tw": "" - }, - { - "key": "skill_buffdes_300162105", - "text_tw": "" - }, - { - "key": "skill_buffdes_300192114", - "text_tw": "" - }, - { - "key": "skill_buffdes_300192115", - "text_tw": "" - }, - { - "key": "hero_10001", - "text_tw": "" - }, - { - "key": "hero_10002", - "text_tw": "" - }, - { - "key": "hero_10003", - "text_tw": "" - }, - { - "key": "hero_10004", - "text_tw": "" - }, - { - "key": "hero_10005", - "text_tw": "" - }, - { - "key": "hero_10006", - "text_tw": "" - }, - { - "key": "hero_10007", - "text_tw": "" - }, - { - "key": "hero_10008", - "text_tw": "" - }, - { - "key": "star_2", - "text_tw": "" - }, - { - "key": "star_3", - "text_tw": "" - }, - { - "key": "star_4", - "text_tw": "" - }, - { - "key": "star_5", - "text_tw": "" - }, - { - "key": "color_1", - "text_tw": "" - }, - { - "key": "color_2", - "text_tw": "" - }, - { - "key": "color_3", - "text_tw": "" - }, - { - "key": "color_4", - "text_tw": "" - }, - { - "key": "color_5", - "text_tw": "" - }, - { - "key": "color_6", - "text_tw": "" - }, - { - "key": "race_1", - "text_tw": "" - }, - { - "key": "race_2", - "text_tw": "" - }, - { - "key": "race_3", - "text_tw": "" - }, - { - "key": "race_4", - "text_tw": "" - }, - { - "key": "job_1", - "text_tw": "" - }, - { - "key": "job_2", - "text_tw": "" - }, - { - "key": "job_3", - "text_tw": "" - }, - { - "key": "job_4", - "text_tw": "" - }, - { - "key": "job_5", - "text_tw": "" - }, - { - "key": "itemdesc_10001", - "text_tw": "" - }, - { - "key": "itemdesc_10002", - "text_tw": "" - }, - { - "key": "itemdesc_10003", - "text_tw": "" - }, - { - "key": "itemdesc_10004", - "text_tw": "" - }, - { - "key": "itemdesc_10005", - "text_tw": "" - }, - { - "key": "itemdesc_10006", - "text_tw": "" - }, - { - "key": "itemdesc_10007", - "text_tw": "" - }, - { - "key": "itemdesc_10008", - "text_tw": "" - }, - { - "key": "itemdesc_10009", - "text_tw": "" - }, - { - "key": "itemdesc_10010", - "text_tw": "" - }, - { - "key": "itemdesc_10011", - "text_tw": "" - }, - { - "key": "itemdesc_10012", - "text_tw": "" - }, - { - "key": "itemdesc_10013", - "text_tw": "" - }, - { - "key": "itemdesc_10014", - "text_tw": "" - }, - { - "key": "itemdesc_10015", - "text_tw": "" - }, - { - "key": "itemdesc_10016", - "text_tw": "" - }, - { - "key": "itemname_10001", - "text_tw": "" - }, - { - "key": "itemname_10002", - "text_tw": "" - }, - { - "key": "itemname_10003", - "text_tw": "" - }, - { - "key": "itemname_10004", - "text_tw": "" - }, - { - "key": "itemname_10005", - "text_tw": "" - }, - { - "key": "itemname_10006", - "text_tw": "" - }, - { - "key": "itemname_10007", - "text_tw": "" - }, - { - "key": "itemname_10008", - "text_tw": "" - }, - { - "key": "itemname_10009", - "text_tw": "" - }, - { - "key": "itemname_10010", - "text_tw": "" - }, - { - "key": "itemname_10011", - "text_tw": "" - }, - { - "key": "itemname_10012", - "text_tw": "" - }, - { - "key": "itemname_10013", - "text_tw": "" - }, - { - "key": "itemname_10014", - "text_tw": "" - }, - { - "key": "itemname_10015", - "text_tw": "" - }, - { - "key": "itemname_10016", - "text_tw": "" - }, - { - "key": "server_10001", - "text_tw": "" - }, - { - "key": "server_10006", - "text_tw": "" - }, - { - "key": "server_10003", - "text_tw": "" - }, - { - "key": "server_10004", - "text_tw": "" - }, - { - "key": "server_10005", - "text_tw": "" - }, - { - "key": "skillname_190011000", - "text_tw": "" - }, - { - "key": "skillname_190012000", - "text_tw": "" - }, - { - "key": "skillname_190013000", - "text_tw": "" - }, - { - "key": "skillname_190011003", - "text_tw": "" - }, - { - "key": "skillname_190014000", - "text_tw": "" - }, - { - "key": "skillname_190016000", - "text_tw": "" - }, - { - "key": "skillname_190017000", - "text_tw": "" - }, - { - "key": "skillname_190018000", - "text_tw": "" - }, - { - "key": "tips_1001", - "text_tw": "" - }, - { - "key": "tips_1002", - "text_tw": "" - }, - { - "key": "tips_1003", - "text_tw": "" - }, - { - "key": "tips_1004", - "text_tw": "" - }, - { - "key": "nonactivated", - "text_tw": "" - }, - { - "key": "activated", - "text_tw": "" - }, - { - "key": "opencond_prompt_10001", - "text_tw": "" - }, - { - "key": "opencond_prompt_10002", - "text_tw": "" - }, - { - "key": "opencond_prompt_10003", - "text_tw": "" - }, - { - "key": "num_1001", - "text_tw": "" - }, - { - "key": "num_1002", - "text_tw": "" - }, - { - "key": "num_1003", - "text_tw": "" - }, - { - "key": "num_1004", - "text_tw": "" - }, - { - "key": "num_1005", - "text_tw": "" - }, - { - "key": "num_1006", - "text_tw": "" - }, - { - "key": "num_1007", - "text_tw": "" - }, - { - "key": "num_1008", - "text_tw": "" - }, - { - "key": "num_1009", - "text_tw": "" - }, - { - "key": "num_1010", - "text_tw": "" - }, - { - "key": "num_1011", - "text_tw": "" - }, - { - "key": "num_1012", - "text_tw": "" - }, - { - "key": "num_1013", - "text_tw": "" - }, - { - "key": "num_1014", - "text_tw": "" - }, - { - "key": "num_1015", - "text_tw": "" - }, - { - "key": "num_1016", - "text_tw": "" - }, - { - "key": "num_1017", - "text_tw": "" - }, - { - "key": "num_1018", - "text_tw": "" - }, - { - "key": "num_1019", - "text_tw": "" - }, - { - "key": "num_1020", - "text_tw": "" - }, - { - "key": "num_1021", - "text_tw": "" - }, - { - "key": "num_1022", - "text_tw": "" - }, - { - "key": "num_1023", - "text_tw": "" - }, - { - "key": "num_1024", - "text_tw": "" - }, - { - "key": "opencond_name_10001", - "text_tw": "" - }, - { - "key": "opencond_name_10002", - "text_tw": "" - }, - { - "key": "opencond_name_10003", - "text_tw": "" - }, - { - "key": "opencond_name_10004", - "text_tw": "" - }, - { - "key": "opencond_name_10005", - "text_tw": "" - }, - { - "key": "opencond_name_10006", - "text_tw": "" - }, - { - "key": "opencond_name_10007", - "text_tw": "" - }, - { - "key": "opencond_name_10008", - "text_tw": "" - }, - { - "key": "opencond_name_10009", - "text_tw": "" - }, - { - "key": "opencond_name_10010", - "text_tw": "" - }, - { - "key": "hero_help_10001", - "text_tw": "" - }, - { - "key": "hero_help_10002", - "text_tw": "" - }, - { - "key": "hero_help_10003", - "text_tw": "" - }, - { - "key": "hero_help_10004", - "text_tw": "" - }, - { - "key": "hero_help_10005", - "text_tw": "" - }, - { - "key": "hero_help_10006", - "text_tw": "" - }, - { - "key": "hero_help_10007", - "text_tw": "" - } -] \ No newline at end of file diff --git a/bin/json/game_drawcom.json b/bin/json/game_drawcom.json deleted file mode 100644 index 195027285..000000000 --- a/bin/json/game_drawcom.json +++ /dev/null @@ -1,18 +0,0 @@ -[ - { - "key": "star3_click", - "value": 2 - }, - { - "key": "star4_click", - "value": 4 - }, - { - "key": "star5_click", - "value": 6 - }, - { - "key": "progress_bar_time", - "value": 10 - } -] \ No newline at end of file diff --git a/bin/json/game_drawcost.json b/bin/json/game_drawcost.json deleted file mode 100644 index 6fb741b05..000000000 --- a/bin/json/game_drawcost.json +++ /dev/null @@ -1,132 +0,0 @@ -[ - { - "key": 1, - "count": 1, - "cost": { - "a": "item", - "t": "10001", - "n": 1 - }, - "floor4": 50, - "floor5": 100, - "floor4cards": 2, - "floor5cards": 11 - }, - { - "key": 2, - "count": 10, - "cost": { - "a": "item", - "t": "10001", - "n": 10 - }, - "floor4": 50, - "floor5": 100, - "floor4cards": 2, - "floor5cards": 11 - }, - { - "key": 3, - "count": 1, - "cost": { - "a": "item", - "t": "10002", - "n": 1 - }, - "floor4": 50, - "floor5": 100, - "floor4cards": 2, - "floor5cards": 11 - }, - { - "key": 4, - "count": 10, - "cost": { - "a": "item", - "t": "10002", - "n": 10 - }, - "floor4": 50, - "floor5": 100, - "floor4cards": 2, - "floor5cards": 11 - }, - { - "key": 5, - "count": 1, - "cost": { - "a": "item", - "t": "10003", - "n": 1 - }, - "floor4": 50, - "floor5": 100, - "floor4cards": 2, - "floor5cards": 11 - }, - { - "key": 6, - "count": 10, - "cost": { - "a": "item", - "t": "10003", - "n": 10 - }, - "floor4": 50, - "floor5": 100, - "floor4cards": 2, - "floor5cards": 11 - }, - { - "key": 7, - "count": 1, - "cost": { - "a": "item", - "t": "10004", - "n": 1 - }, - "floor4": 50, - "floor5": 100, - "floor4cards": 2, - "floor5cards": 11 - }, - { - "key": 8, - "count": 10, - "cost": { - "a": "item", - "t": "10004", - "n": 10 - }, - "floor4": 50, - "floor5": 100, - "floor4cards": 2, - "floor5cards": 11 - }, - { - "key": 9, - "count": 1, - "cost": { - "a": "item", - "t": "10005", - "n": 1 - }, - "floor4": 50, - "floor5": 100, - "floor4cards": 2, - "floor5cards": 11 - }, - { - "key": 10, - "count": 10, - "cost": { - "a": "item", - "t": "10005", - "n": 10 - }, - "floor4": 50, - "floor5": 100, - "floor4cards": 2, - "floor5cards": 11 - } -] \ No newline at end of file diff --git a/bin/json/game_drawupdraw.json b/bin/json/game_drawupdraw.json deleted file mode 100644 index 563a6c61a..000000000 --- a/bin/json/game_drawupdraw.json +++ /dev/null @@ -1,20 +0,0 @@ -[ - { - "key": 1, - "time_on": 934041600, - "time_off": 935251200, - "up_hero": [ - "10001", - "10002" - ], - "up_weight": [ - 5000, - 5000 - ], - "trigger_num": 50, - "Increase_weight": [ - 100, - 100 - ] - } -] \ No newline at end of file diff --git a/bin/json/game_gourmetskill.json b/bin/json/game_gourmetskill.json index efd243c55..c82b3e212 100644 --- a/bin/json/game_gourmetskill.json +++ b/bin/json/game_gourmetskill.json @@ -610,7 +610,7 @@ { "id": 10051, "type": 1005, - "initial": 0, + "initial": 1, "level": 1, "levelname": { "key": "gourmet_ln1", diff --git a/bin/json/game_pagodaseasonloop.json b/bin/json/game_pagodaseasonloop.json new file mode 100644 index 000000000..7d9536e78 --- /dev/null +++ b/bin/json/game_pagodaseasonloop.json @@ -0,0 +1,21 @@ +[ + { + "key": 2, + "disposable_loop": [ + 201, + 203, + 202, + 204, + 203, + 202, + 201, + 204 + ], + "fixed_loop": [ + 201, + 202, + 203, + 204 + ] + } +] \ No newline at end of file diff --git a/bin/json/game_serverlist.json b/bin/json/game_serverlist.json deleted file mode 100644 index 1dc4001d8..000000000 --- a/bin/json/game_serverlist.json +++ /dev/null @@ -1,30 +0,0 @@ -[ - { - "id": 1, - "ip": "10.0.1.238", - "port": 7981, - "groupId": 0, - "name": "熊猫" - }, - { - "id": 2, - "ip": "10.0.1.239", - "port": 7982, - "groupId": 0, - "name": "野鸡" - }, - { - "id": 3, - "ip": "10.0.1.237", - "port": 7983, - "groupId": 0, - "name": "鸭子" - }, - { - "id": 4, - "ip": "10.0.0.9", - "port": 7984, - "groupId": 0, - "name": "乌龟" - } -] \ No newline at end of file diff --git a/bin/json/game_skillafteratk.json b/bin/json/game_skillafteratk.json index 2d2a12a4b..65fbd4d68 100644 --- a/bin/json/game_skillafteratk.json +++ b/bin/json/game_skillafteratk.json @@ -5,6 +5,7 @@ "From": 4, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -31,6 +32,7 @@ "From": 2, "Limit": 5, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -57,6 +59,7 @@ "From": 2, "Limit": 5, "EmitPR": 1000, + "AfteratkAct": "", "Where": [ "Type=ProJudge,Judge0,Key=Total_Atk,Op=0" ], @@ -85,6 +88,7 @@ "From": 2, "Limit": 3, "EmitPR": 1000, + "AfteratkAct": "", "Where": [ "Type=MyProJudge" ], @@ -115,6 +119,7 @@ "From": 2, "Limit": 3, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Sort,Sort0,Key=Total_Def,SortMet=0" @@ -141,6 +146,7 @@ "From": 2, "Limit": 5, "EmitPR": 1000, + "AfteratkAct": "", "Where": [ "Type=ProJudge,Judge1,Key=Total_Def,Op=1,Val=100" ], @@ -169,6 +175,7 @@ "From": 2, "Limit": 5, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -197,6 +204,7 @@ "From": 2, "Limit": 5, "EmitPR": 1000, + "AfteratkAct": "", "Where": [ "Type=MyProJudge,Key=Total_Atk,Op=0,Val=100", "Type=ProJudge,Judge0,Key=Total_Atk,Op=0" @@ -226,6 +234,7 @@ "From": 1, "Limit": 5, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -247,6 +256,7 @@ "From": 4, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -268,6 +278,7 @@ "From": 1, "Limit": 5, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -289,6 +300,7 @@ "From": 4, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -310,6 +322,7 @@ "From": 1, "Limit": 5, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -331,6 +344,7 @@ "From": 4, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -352,6 +366,7 @@ "From": 1, "Limit": 5, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -373,6 +388,7 @@ "From": 4, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -394,6 +410,7 @@ "From": 4, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -415,6 +432,7 @@ "From": 4, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -436,6 +454,7 @@ "From": 1, "Limit": 5, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -457,6 +476,7 @@ "From": 1, "Limit": 5, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -478,6 +498,7 @@ "From": 4, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -499,6 +520,7 @@ "From": 4, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -520,6 +542,7 @@ "From": 1, "Limit": 5, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -541,6 +564,7 @@ "From": 1, "Limit": 5, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -562,6 +586,7 @@ "From": 1, "Limit": 5, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -583,6 +608,7 @@ "From": 1, "Limit": 5, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -604,6 +630,7 @@ "From": 4, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -625,6 +652,7 @@ "From": 4, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -651,6 +679,7 @@ "From": 4, "Limit": 1, "EmitPR": 500, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -677,6 +706,7 @@ "From": 2, "Limit": 5, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -705,6 +735,7 @@ "From": 0, "Limit": 0, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -731,6 +762,7 @@ "From": 4, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -757,6 +789,7 @@ "From": 0, "Limit": 0, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -783,6 +816,7 @@ "From": 4, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -809,6 +843,7 @@ "From": 4, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -835,6 +870,7 @@ "From": 4, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -861,6 +897,7 @@ "From": 3, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -887,6 +924,7 @@ "From": 2, "Limit": 5, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -913,6 +951,7 @@ "From": 4, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -939,6 +978,7 @@ "From": 4, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -965,6 +1005,7 @@ "From": 2, "Limit": 5, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -993,6 +1034,7 @@ "From": 2, "Limit": 5, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -1019,6 +1061,7 @@ "From": 4, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -1045,6 +1088,7 @@ "From": 6, "Limit": 4, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -1071,6 +1115,7 @@ "From": 1, "Limit": 5, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -1096,6 +1141,7 @@ "From": 1, "Limit": 5, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -1121,6 +1167,7 @@ "From": 1, "Limit": 5, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -1142,6 +1189,7 @@ "From": 2, "Limit": 5, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -1163,6 +1211,7 @@ "From": 4, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -1184,6 +1233,7 @@ "From": 1, "Limit": 5, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -1209,6 +1259,7 @@ "From": 2, "Limit": 5, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -1234,6 +1285,7 @@ "From": 4, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -1259,6 +1311,7 @@ "From": 1, "Limit": 5, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -1284,6 +1337,7 @@ "From": 1, "Limit": 5, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -1305,6 +1359,7 @@ "From": 2, "Limit": 5, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -1326,6 +1381,7 @@ "From": 1, "Limit": 5, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -1347,6 +1403,7 @@ "From": 2, "Limit": 5, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -1368,6 +1425,7 @@ "From": 4, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -1394,6 +1452,7 @@ "From": 3, "Limit": 0, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -1415,6 +1474,7 @@ "From": 4, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -1436,6 +1496,7 @@ "From": 4, "Limit": 0, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -1461,6 +1522,7 @@ "From": 4, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -1489,6 +1551,7 @@ "From": 4, "Limit": 0, "EmitPR": 500, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -1510,6 +1573,7 @@ "From": 4, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -1536,6 +1600,7 @@ "From": 4, "Limit": 0, "EmitPR": 500, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -1559,6 +1624,7 @@ "From": 3, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -1580,6 +1646,7 @@ "From": 3, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -1601,6 +1668,7 @@ "From": 3, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -1622,6 +1690,7 @@ "From": 3, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -1643,6 +1712,7 @@ "From": 2, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -1671,6 +1741,7 @@ "From": 0, "Limit": 0, "EmitPR": 500, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "Dmg", @@ -1695,6 +1766,7 @@ "From": 3, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -1719,6 +1791,7 @@ "From": 2, "Limit": 5, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -1742,6 +1815,7 @@ "From": 3, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -1766,6 +1840,7 @@ "From": 2, "Limit": 5, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -1789,6 +1864,7 @@ "From": 3, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -1810,6 +1886,7 @@ "From": 3, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -1831,6 +1908,7 @@ "From": 3, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -1852,6 +1930,7 @@ "From": 3, "Limit": 1, "EmitPR": 0, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -1875,6 +1954,7 @@ "From": 3, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -1896,6 +1976,7 @@ "From": 3, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -1917,6 +1998,7 @@ "From": 3, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -1938,6 +2020,7 @@ "From": 3, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -1959,6 +2042,7 @@ "From": 3, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -1980,6 +2064,7 @@ "From": 3, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -2001,6 +2086,7 @@ "From": 3, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -2022,6 +2108,7 @@ "From": 3, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -2043,6 +2130,7 @@ "From": 3, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -2066,6 +2154,7 @@ "From": 3, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -2087,6 +2176,7 @@ "From": 3, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -2108,6 +2198,7 @@ "From": 3, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -2129,6 +2220,7 @@ "From": 3, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -2150,6 +2242,7 @@ "From": 3, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -2171,6 +2264,7 @@ "From": 2, "Limit": 5, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -2192,6 +2286,7 @@ "From": 1, "Limit": 5, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -2213,6 +2308,7 @@ "From": 3, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -2234,6 +2330,7 @@ "From": 3, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -2255,6 +2352,7 @@ "From": 3, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -2276,6 +2374,7 @@ "From": 3, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -2297,6 +2396,7 @@ "From": 3, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -2318,6 +2418,7 @@ "From": 2, "Limit": 5, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -2344,6 +2445,7 @@ "From": 3, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -2365,6 +2467,7 @@ "From": 3, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -2386,6 +2489,7 @@ "From": 3, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -2407,6 +2511,7 @@ "From": 3, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -2428,6 +2533,7 @@ "From": 3, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -2449,6 +2555,7 @@ "From": 3, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -2470,6 +2577,7 @@ "From": 1, "Limit": 5, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -2491,6 +2599,7 @@ "From": 1, "Limit": 5, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -2512,6 +2621,7 @@ "From": 3, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -2535,6 +2645,7 @@ "From": 3, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -2556,6 +2667,7 @@ "From": 3, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -2577,6 +2689,7 @@ "From": 0, "Limit": 0, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "NowHpDmg", @@ -2598,6 +2711,7 @@ "From": 0, "Limit": 0, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "BuffAction", @@ -2619,6 +2733,7 @@ "From": 0, "Limit": 0, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddBuff", @@ -2638,6 +2753,7 @@ "From": 3, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -2659,6 +2775,7 @@ "From": 3, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -2680,6 +2797,7 @@ "From": 3, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -2701,6 +2819,7 @@ "From": 3, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -2722,6 +2841,7 @@ "From": 3, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -2743,6 +2863,7 @@ "From": 3, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -2764,6 +2885,7 @@ "From": 3, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -2785,6 +2907,7 @@ "From": 3, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -2806,6 +2929,7 @@ "From": 3, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -2827,6 +2951,7 @@ "From": 3, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -2848,6 +2973,7 @@ "From": 3, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -2873,6 +2999,7 @@ "From": 3, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -2894,6 +3021,7 @@ "From": 3, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -2915,6 +3043,7 @@ "From": 3, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -2936,6 +3065,7 @@ "From": 3, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -2959,6 +3089,7 @@ "From": 3, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -2980,6 +3111,7 @@ "From": 0, "Limit": 0, "EmitPR": 1000, + "AfteratkAct": "", "Where": [ "BuffRely,Rely1,Key=1,Op=0,Val=1" ], @@ -3003,6 +3135,7 @@ "From": 0, "Limit": 0, "EmitPR": 1000, + "AfteratkAct": "", "Where": [ "BuffRely,Rely1,Key=1,Op=3,Val=0" ], @@ -3026,6 +3159,7 @@ "From": 0, "Limit": 0, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -3047,6 +3181,7 @@ "From": 4, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -3068,6 +3203,7 @@ "From": 4, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -3089,6 +3225,7 @@ "From": 3, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -3110,6 +3247,7 @@ "From": 2, "Limit": 5, "EmitPR": 1000, + "AfteratkAct": "", "Where": [ "BuffRely,Rely0,Key=390004008,Op=4,Val=1" ], @@ -3133,6 +3271,7 @@ "From": 3, "Limit": 0, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -3154,6 +3293,7 @@ "From": 3, "Limit": 0, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -3175,6 +3315,7 @@ "From": 3, "Limit": 0, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -3196,6 +3337,7 @@ "From": 3, "Limit": 0, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -3217,6 +3359,7 @@ "From": 3, "Limit": 0, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -3238,6 +3381,7 @@ "From": 3, "Limit": 0, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -3259,6 +3403,7 @@ "From": 3, "Limit": 0, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -3280,6 +3425,7 @@ "From": 3, "Limit": 0, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -3301,6 +3447,7 @@ "From": 3, "Limit": 0, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -3322,6 +3469,7 @@ "From": 3, "Limit": 0, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -3343,6 +3491,7 @@ "From": 0, "Limit": 0, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "Again", @@ -3362,6 +3511,7 @@ "From": 0, "Limit": 0, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -3383,6 +3533,7 @@ "From": 3, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -3404,6 +3555,7 @@ "From": 3, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -3425,6 +3577,7 @@ "From": 0, "Limit": 0, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -3451,6 +3604,7 @@ "From": 3, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -3472,6 +3626,7 @@ "From": 2, "Limit": 5, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -3496,6 +3651,7 @@ "From": 3, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddPas", @@ -3515,6 +3671,7 @@ "From": 3, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddBuff", @@ -3534,6 +3691,7 @@ "From": 3, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddPas", @@ -3553,6 +3711,7 @@ "From": 3, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddPas", @@ -3572,6 +3731,7 @@ "From": 2, "Limit": 5, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -3593,6 +3753,7 @@ "From": 4, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "Dmg", @@ -3612,6 +3773,7 @@ "From": 4, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "Tre", @@ -3631,6 +3793,7 @@ "From": 1, "Limit": 5, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [ "Type=Rnd" @@ -3652,6 +3815,7 @@ "From": 1, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddBuff", @@ -3671,6 +3835,7 @@ "From": 4, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "Dmg", @@ -3692,6 +3857,7 @@ "From": 3, "Limit": 1, "EmitPR": 400, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddBuff", @@ -3711,6 +3877,7 @@ "From": 4, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "Dmg", @@ -3732,6 +3899,7 @@ "From": 3, "Limit": 1, "EmitPR": 400, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddBuff", @@ -3751,6 +3919,7 @@ "From": 4, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "Dmg", @@ -3772,6 +3941,7 @@ "From": 3, "Limit": 1, "EmitPR": 500, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddBuff", @@ -3791,6 +3961,7 @@ "From": 4, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "Dmg", @@ -3812,6 +3983,7 @@ "From": 3, "Limit": 1, "EmitPR": 500, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddBuff", @@ -3831,6 +4003,7 @@ "From": 4, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "Dmg", @@ -3852,6 +4025,7 @@ "From": 3, "Limit": 1, "EmitPR": 600, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddBuff", @@ -3871,6 +4045,7 @@ "From": 4, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "Dmg", @@ -3892,6 +4067,7 @@ "From": 3, "Limit": 1, "EmitPR": 600, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddBuff", @@ -3911,6 +4087,7 @@ "From": 1, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "RemoveDebuff", @@ -3930,6 +4107,7 @@ "From": 1, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AveTre", @@ -3949,6 +4127,7 @@ "From": 1, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddBuff", @@ -3968,6 +4147,7 @@ "From": 3, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddBuff", @@ -3987,6 +4167,7 @@ "From": 3, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddBuff", @@ -4006,6 +4187,7 @@ "From": 3, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddPas", @@ -4025,6 +4207,7 @@ "From": 1, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "Tre", @@ -4044,6 +4227,7 @@ "From": 1, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "RemoveDebuff", @@ -4063,6 +4247,7 @@ "From": 1, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddBuff", @@ -4082,6 +4267,7 @@ "From": 4, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "Dmg", @@ -4103,6 +4289,7 @@ "From": 4, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "Dmg", @@ -4124,6 +4311,7 @@ "From": 4, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "ShiftBuff", @@ -4145,6 +4333,7 @@ "From": 4, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddBuff", @@ -4164,6 +4353,7 @@ "From": 4, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "Dmg", @@ -4185,6 +4375,7 @@ "From": 4, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddBuff", @@ -4204,6 +4395,7 @@ "From": 4, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "Dmg", @@ -4225,6 +4417,7 @@ "From": 4, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddBuff", @@ -4244,6 +4437,7 @@ "From": 4, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "Dmg", @@ -4265,6 +4459,7 @@ "From": 4, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddBuff", @@ -4284,6 +4479,7 @@ "From": 4, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "Dmg", @@ -4305,6 +4501,7 @@ "From": 4, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddBuff", @@ -4324,6 +4521,7 @@ "From": 4, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "Dmg", @@ -4345,6 +4543,7 @@ "From": 4, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddBuff", @@ -4364,6 +4563,7 @@ "From": 3, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddBuff", @@ -4383,6 +4583,7 @@ "From": 3, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddPas", @@ -4402,6 +4603,7 @@ "From": 9, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "NowHpDps", @@ -4421,6 +4623,7 @@ "From": 9, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "RemoveDebuff", @@ -4440,6 +4643,7 @@ "From": 9, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddBuff", @@ -4459,6 +4663,7 @@ "From": 2, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "Dmg", @@ -4480,6 +4685,7 @@ "From": 2, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "RemoveDebuff", @@ -4501,6 +4707,7 @@ "From": 2, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddBuff", @@ -4520,6 +4727,7 @@ "From": 2, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "Dmg", @@ -4541,6 +4749,7 @@ "From": 2, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "RemoveDebuff", @@ -4562,6 +4771,7 @@ "From": 2, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "Dmg", @@ -4583,6 +4793,7 @@ "From": 2, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "RemoveDebuff", @@ -4604,6 +4815,7 @@ "From": 2, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "Dmg", @@ -4625,6 +4837,7 @@ "From": 2, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "RemoveDebuff", @@ -4646,6 +4859,7 @@ "From": 2, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "Dmg", @@ -4667,6 +4881,7 @@ "From": 2, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "RemoveDebuff", @@ -4688,6 +4903,7 @@ "From": 2, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "Dmg", @@ -4710,6 +4926,7 @@ "From": 2, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "RemoveDebuff", @@ -4731,6 +4948,7 @@ "From": 2, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddBuff", @@ -4750,6 +4968,7 @@ "From": 2, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "BuffCD", @@ -4769,6 +4988,7 @@ "From": 2, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "Dmg", @@ -4791,6 +5011,7 @@ "From": 2, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "RemoveDebuff", @@ -4812,6 +5033,7 @@ "From": 2, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "Dmg", @@ -4834,6 +5056,7 @@ "From": 2, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "RemoveDebuff", @@ -4855,6 +5078,7 @@ "From": 2, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "Dmg", @@ -4877,6 +5101,7 @@ "From": 2, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "RemoveDebuff", @@ -4898,6 +5123,7 @@ "From": 2, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "Dmg", @@ -4920,6 +5146,7 @@ "From": 2, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "RemoveDebuff", @@ -4941,6 +5168,7 @@ "From": 1, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddBuff", @@ -4960,6 +5188,7 @@ "From": 4, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "Dmg", @@ -4981,6 +5210,7 @@ "From": 4, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddBuff", @@ -5000,6 +5230,7 @@ "From": 4, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "Dmg", @@ -5021,6 +5252,7 @@ "From": 4, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddBuff", @@ -5040,6 +5272,7 @@ "From": 4, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "Dmg", @@ -5061,6 +5294,7 @@ "From": 4, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddBuff", @@ -5080,6 +5314,7 @@ "From": 4, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "Dmg", @@ -5101,6 +5336,7 @@ "From": 4, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddBuff", @@ -5120,6 +5356,7 @@ "From": 4, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "Dmg", @@ -5141,6 +5378,7 @@ "From": 4, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddBuff", @@ -5160,6 +5398,7 @@ "From": 1, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "RemoveDebuff", @@ -5179,6 +5418,7 @@ "From": 1, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddBuff", @@ -5198,6 +5438,7 @@ "From": 1, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "RemoveDebuff", @@ -5217,6 +5458,7 @@ "From": 1, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddBuff", @@ -5236,6 +5478,7 @@ "From": 1, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddBuff", @@ -5255,6 +5498,7 @@ "From": 2, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "Dmg", @@ -5274,6 +5518,7 @@ "From": 2, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddActValue", @@ -5293,6 +5538,7 @@ "From": 2, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddBuff", @@ -5312,6 +5558,7 @@ "From": 2, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddActValue", @@ -5331,6 +5578,7 @@ "From": 2, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddBuff", @@ -5350,6 +5598,7 @@ "From": 2, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddActValue", @@ -5369,6 +5618,7 @@ "From": 2, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddBuff", @@ -5388,6 +5638,7 @@ "From": 2, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddActValue", @@ -5407,6 +5658,7 @@ "From": 2, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddBuff", @@ -5426,6 +5678,7 @@ "From": 2, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddActValue", @@ -5445,6 +5698,7 @@ "From": 2, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddBuff", @@ -5464,6 +5718,7 @@ "From": 1, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddBuff", @@ -5483,6 +5738,7 @@ "From": 4, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "Dmg", @@ -5504,6 +5760,7 @@ "From": 4, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddBuff", @@ -5523,6 +5780,7 @@ "From": 4, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "Dmg", @@ -5544,6 +5802,7 @@ "From": 4, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddBuff", @@ -5563,6 +5822,7 @@ "From": 4, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "Dmg", @@ -5584,6 +5844,7 @@ "From": 4, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddBuff", @@ -5603,6 +5864,7 @@ "From": 4, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "Dmg", @@ -5624,6 +5886,7 @@ "From": 4, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddBuff", @@ -5643,6 +5906,7 @@ "From": 4, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "Dmg", @@ -5664,6 +5928,7 @@ "From": 4, "Limit": 1, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddBuff", @@ -5683,6 +5948,7 @@ "From": 2, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "Dmg", @@ -5704,6 +5970,7 @@ "From": 2, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddActValue", @@ -5723,6 +5990,7 @@ "From": 2, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "Dmg", @@ -5744,6 +6012,7 @@ "From": 2, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddActValue", @@ -5763,6 +6032,7 @@ "From": 2, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "Dmg", @@ -5784,6 +6054,7 @@ "From": 2, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddActValue", @@ -5803,6 +6074,7 @@ "From": 2, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "Dmg", @@ -5824,6 +6096,7 @@ "From": 2, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddActValue", @@ -5843,6 +6116,7 @@ "From": 2, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "Dmg", @@ -5864,6 +6138,7 @@ "From": 2, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddBuff", @@ -5883,6 +6158,7 @@ "From": 2, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddBuff", @@ -5902,6 +6178,7 @@ "From": 2, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "Dmg", @@ -5924,6 +6201,7 @@ "From": 2, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddBuff", @@ -5943,6 +6221,7 @@ "From": 2, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddBuff", @@ -5962,6 +6241,7 @@ "From": 2, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "Dmg", @@ -5984,6 +6264,7 @@ "From": 2, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddBuff", @@ -6003,6 +6284,7 @@ "From": 2, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddBuff", @@ -6022,6 +6304,7 @@ "From": 2, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "Dmg", @@ -6044,6 +6327,7 @@ "From": 2, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddBuff", @@ -6063,6 +6347,7 @@ "From": 2, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddBuff", @@ -6082,6 +6367,7 @@ "From": 2, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "Dmg", @@ -6104,6 +6390,7 @@ "From": 2, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddActValue", @@ -6123,6 +6410,7 @@ "From": 2, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddPas", @@ -6142,6 +6430,7 @@ "From": 2, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddActValue", @@ -6161,6 +6450,7 @@ "From": 2, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "Dmg", @@ -6183,6 +6473,7 @@ "From": 2, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddActValue", @@ -6202,6 +6493,7 @@ "From": 2, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "Dmg", @@ -6224,6 +6516,7 @@ "From": 2, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddActValue", @@ -6243,6 +6536,7 @@ "From": 2, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "Dmg", @@ -6265,6 +6559,7 @@ "From": 2, "Limit": 10, "EmitPR": 1000, + "AfteratkAct": "", "Where": [], "Order": [], "Type": "AddActValue", diff --git a/bin/json/game_ui.json b/bin/json/game_ui.json index f22d4714a..6a7d64ccd 100644 --- a/bin/json/game_ui.json +++ b/bin/json/game_ui.json @@ -684,16 +684,16 @@ "des": "装备强化" }, { - "id": "strengthenup", - "file": "StrengthenUpWindow", + "id": "equistrengthenup", + "file": "EquiStrengthenUpPopup", "unloadpkg": 5, "loadtype": 1, "full": 0, "blur": 1, "package": "roledetails/roledetails", "packagename": "roledetails", - "comname": "strengthen", - "des": "英雄升级升星详情" + "comname": "equistrengthenup", + "des": "装备强化成功弹窗" }, { "id": "croppingwindow", @@ -746,7 +746,7 @@ { "id": "examine", "file": "ExaminePopup", - "unloadpkg": 5, + "unloadpkg": 3, "loadtype": 1, "full": 0, "blur": 1, @@ -806,7 +806,7 @@ { "id": "resonancepopup", "file": "ResonancePopup", - "unloadpkg": 5, + "unloadpkg": 3, "loadtype": 1, "full": 0, "blur": 1, @@ -818,7 +818,7 @@ { "id": "materialsynthesispopup", "file": "MaterialSynthesisPopup", - "unloadpkg": 5, + "unloadpkg": 3, "loadtype": 1, "full": 0, "blur": 1, @@ -850,5 +850,77 @@ "packagename": "pagoda", "comname": "main", "des": "心魔之塔" + }, + { + "id": "pagodaadoptreward", + "file": "PagodaAdoptRewardPopup", + "unloadpkg": 3, + "loadtype": 1, + "full": 0, + "blur": 0, + "package": "pagoda/pagoda", + "packagename": "pagoda", + "comname": "pagodaadoptreward", + "des": "心魔之塔奖励弹窗" + }, + { + "id": "pagodalineup", + "file": "PagodaLineupPopup", + "unloadpkg": 3, + "loadtype": 1, + "full": 0, + "blur": 0, + "package": "pagoda/pagoda", + "packagename": "pagoda", + "comname": "pagodalineup", + "des": "心魔之塔推荐阵容弹窗" + }, + { + "id": "pagodarankingpopup", + "file": "PagodaRankingPopup", + "unloadpkg": 3, + "loadtype": 1, + "full": 0, + "blur": 0, + "package": "pagoda/pagoda", + "packagename": "pagoda", + "comname": "pagodaranking", + "des": "心魔之塔排行弹窗" + }, + { + "id": "pagodaseasonpopup", + "file": "PagodaRankingPopup", + "unloadpkg": 3, + "loadtype": 1, + "full": 0, + "blur": 0, + "package": "pagoda/pagoda", + "packagename": "pagoda", + "comname": "pagodaranking", + "des": "心魔之塔排行弹窗" + }, + { + "id": "friendsystemwin", + "file": "FriendSystemWindow", + "unloadpkg": 2, + "loadtype": 1, + "full": 1, + "blur": 0, + "package": "friendsystem/friendsystem", + "packagename": "friendsystem", + "comname": "main", + "des": "好友系统" + }, + { + "id": "frienddetailspop", + "file": "FriendDetailsPopup", + "unloadpkg": 3, + "loadtype": 1, + "full": 0, + "blur": 0, + "package": "friendsystem/friendsystem", + "packagename": "friendsystem", + "comname": "details", + "des": "好详细信息" } ] \ No newline at end of file diff --git a/modules/rtask/config.go b/modules/rtask/config.go index 052dd2246..3370b26ed 100644 --- a/modules/rtask/config.go +++ b/modules/rtask/config.go @@ -107,7 +107,7 @@ func (this *configureComp) getFirstTask() *cfg.GameRdtaskAllData { } if cfg != nil { for _, v := range cfg.GetDataList() { - if v.IdLast == 0 { + if v.Aftertaks == 0 { return v } } diff --git a/modules/rtask/model_rtask.go b/modules/rtask/model_rtask.go index 9dc44caa3..d4c57e34f 100644 --- a/modules/rtask/model_rtask.go +++ b/modules/rtask/model_rtask.go @@ -41,7 +41,7 @@ func (this *ModelRtask) doRtaskHandle(uid string, param *pb.RtaskParam) (rtaskId if len(rtask.FrtaskIds) == 0 { conf := this.moduleRtask.configure.getFirstTask() if conf != nil { - taskId = conf.IdLast + taskId = conf.Aftertaks } } else { //TODO diff --git a/modules/rtask/module.go b/modules/rtask/module.go index 1be0f62c0..0991ffe10 100644 --- a/modules/rtask/module.go +++ b/modules/rtask/module.go @@ -66,7 +66,7 @@ func (this *ModuleRtask) initRtaskHandle() { for _, v := range data { var handlers []*rtaskCondi rtask := &rtask{ - rtaskId: v.RdtaksId, + rtaskId: v.Id, handlers: handlers, } @@ -109,7 +109,7 @@ func (this *ModuleRtask) initRtaskHandle() { } } - this.register(v.RdtaksId, rtask) + this.register(v.Id, rtask) } } diff --git a/modules/web/config.go b/modules/web/config.go index b714579a9..e0e38f411 100644 --- a/modules/web/config.go +++ b/modules/web/config.go @@ -1,14 +1,8 @@ package web import ( - "fmt" "go_dreamfactory/lego/core" "go_dreamfactory/modules" - cfg "go_dreamfactory/sys/configure/structs" -) - -const ( - game_serverlist = "game_serverlist.json" ) type configureComp struct { @@ -17,35 +11,6 @@ type configureComp struct { func (this *configureComp) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) { err = this.MCompConfigure.Init(service, module, comp, options) - err = this.LoadConfigure(game_serverlist, cfg.NewGame_serverList) - return -} - -func (this *configureComp) getConfig() (data *cfg.Game_serverList, err error) { - var ( - v interface{} - ok bool - ) - if v, err = this.GetConfigure(game_serverlist); err != nil { - return - } else { - if data, ok = v.(*cfg.Game_serverList); !ok { - err = fmt.Errorf("%T no is *cfg.Game_ActiveReward", v) - return - } - } - return -} - -func (this *configureComp) getServerListConf() (data []*cfg.Game_serverListData) { - conf, err := this.getConfig() - if err != nil { - return data - } - - if conf != nil { - return conf.GetDataList() - } return } diff --git a/sys/configure/structs/ALocalizeConfig.go b/sys/configure/structs/ALocalizeConfig.go deleted file mode 100644 index 2fab4df79..000000000 --- a/sys/configure/structs/ALocalizeConfig.go +++ /dev/null @@ -1,40 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -package cfg - -import "errors" - -type ALocalizeConfig struct { - Key string -} - -const TypeId_ALocalizeConfig = 1703856460 - -func (*ALocalizeConfig) GetTypeId() int32 { - return 1703856460 -} - -func (_v *ALocalizeConfig)Deserialize(_buf map[string]interface{}) (err error) { - { var _ok_ bool; if _v.Key, _ok_ = _buf["key"].(string); !_ok_ { err = errors.New("key error"); return } } - return -} - -func DeserializeALocalizeConfig(_buf map[string]interface{}) (interface{}, error) { - var id string - var _ok_ bool - if id, _ok_ = _buf["$type"].(string) ; !_ok_ { - return nil, errors.New("type id missing") - } - switch id { - case "LocalizeConfig_CN": _v := &LocalizeConfig_CN{}; if err := _v.Deserialize(_buf); err != nil { return nil, errors.New("LocalizeConfig_CN") } else { return _v, nil } - case "LocalizeConfig_EN": _v := &LocalizeConfig_EN{}; if err := _v.Deserialize(_buf); err != nil { return nil, errors.New("LocalizeConfig_EN") } else { return _v, nil } - case "LocalizeConfig_TW": _v := &LocalizeConfig_TW{}; if err := _v.Deserialize(_buf); err != nil { return nil, errors.New("LocalizeConfig_TW") } else { return _v, nil } - default: return nil, errors.New("unknown type id") - } -} diff --git a/sys/configure/structs/Localize.LocalizeConfig_CNCategory.go b/sys/configure/structs/Localize.LocalizeConfig_CNCategory.go deleted file mode 100644 index f36e1c142..000000000 --- a/sys/configure/structs/Localize.LocalizeConfig_CNCategory.go +++ /dev/null @@ -1,42 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -package cfg - -type LocalizeLocalizeConfig_CNCategory struct { - _dataMap map[string]*LocalizeConfig_CN - _dataList []*LocalizeConfig_CN -} - -func NewLocalizeLocalizeConfig_CNCategory(_buf []map[string]interface{}) (*LocalizeLocalizeConfig_CNCategory, error) { - _dataList := make([]*LocalizeConfig_CN, 0, len(_buf)) - dataMap := make(map[string]*LocalizeConfig_CN) - for _, _ele_ := range _buf { - if _v, err2 := DeserializeLocalizeConfig_CN(_ele_); err2 != nil { - return nil, err2 - } else { - _dataList = append(_dataList, _v) - dataMap[_v.Key] = _v - } - } - return &LocalizeLocalizeConfig_CNCategory{_dataList:_dataList, _dataMap:dataMap}, nil -} - -func (table *LocalizeLocalizeConfig_CNCategory) GetDataMap() map[string]*LocalizeConfig_CN { - return table._dataMap -} - -func (table *LocalizeLocalizeConfig_CNCategory) GetDataList() []*LocalizeConfig_CN { - return table._dataList -} - -func (table *LocalizeLocalizeConfig_CNCategory) Get(key string) *LocalizeConfig_CN { - return table._dataMap[key] -} - - diff --git a/sys/configure/structs/Localize.LocalizeConfig_ENCategory.go b/sys/configure/structs/Localize.LocalizeConfig_ENCategory.go deleted file mode 100644 index 72d72195d..000000000 --- a/sys/configure/structs/Localize.LocalizeConfig_ENCategory.go +++ /dev/null @@ -1,42 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -package cfg - -type LocalizeLocalizeConfig_ENCategory struct { - _dataMap map[string]*LocalizeConfig_EN - _dataList []*LocalizeConfig_EN -} - -func NewLocalizeLocalizeConfig_ENCategory(_buf []map[string]interface{}) (*LocalizeLocalizeConfig_ENCategory, error) { - _dataList := make([]*LocalizeConfig_EN, 0, len(_buf)) - dataMap := make(map[string]*LocalizeConfig_EN) - for _, _ele_ := range _buf { - if _v, err2 := DeserializeLocalizeConfig_EN(_ele_); err2 != nil { - return nil, err2 - } else { - _dataList = append(_dataList, _v) - dataMap[_v.Key] = _v - } - } - return &LocalizeLocalizeConfig_ENCategory{_dataList:_dataList, _dataMap:dataMap}, nil -} - -func (table *LocalizeLocalizeConfig_ENCategory) GetDataMap() map[string]*LocalizeConfig_EN { - return table._dataMap -} - -func (table *LocalizeLocalizeConfig_ENCategory) GetDataList() []*LocalizeConfig_EN { - return table._dataList -} - -func (table *LocalizeLocalizeConfig_ENCategory) Get(key string) *LocalizeConfig_EN { - return table._dataMap[key] -} - - diff --git a/sys/configure/structs/Localize.LocalizeConfig_TWCategory.go b/sys/configure/structs/Localize.LocalizeConfig_TWCategory.go deleted file mode 100644 index 8a6459c02..000000000 --- a/sys/configure/structs/Localize.LocalizeConfig_TWCategory.go +++ /dev/null @@ -1,42 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -package cfg - -type LocalizeLocalizeConfig_TWCategory struct { - _dataMap map[string]*LocalizeConfig_TW - _dataList []*LocalizeConfig_TW -} - -func NewLocalizeLocalizeConfig_TWCategory(_buf []map[string]interface{}) (*LocalizeLocalizeConfig_TWCategory, error) { - _dataList := make([]*LocalizeConfig_TW, 0, len(_buf)) - dataMap := make(map[string]*LocalizeConfig_TW) - for _, _ele_ := range _buf { - if _v, err2 := DeserializeLocalizeConfig_TW(_ele_); err2 != nil { - return nil, err2 - } else { - _dataList = append(_dataList, _v) - dataMap[_v.Key] = _v - } - } - return &LocalizeLocalizeConfig_TWCategory{_dataList:_dataList, _dataMap:dataMap}, nil -} - -func (table *LocalizeLocalizeConfig_TWCategory) GetDataMap() map[string]*LocalizeConfig_TW { - return table._dataMap -} - -func (table *LocalizeLocalizeConfig_TWCategory) GetDataList() []*LocalizeConfig_TW { - return table._dataList -} - -func (table *LocalizeLocalizeConfig_TWCategory) Get(key string) *LocalizeConfig_TW { - return table._dataMap[key] -} - - diff --git a/sys/configure/structs/LocalizeConfig_CN.go b/sys/configure/structs/LocalizeConfig_CN.go deleted file mode 100644 index 9450e03a8..000000000 --- a/sys/configure/structs/LocalizeConfig_CN.go +++ /dev/null @@ -1,37 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -package cfg - -import "errors" - -type LocalizeConfig_CN struct { - Key string - TextCn string -} - -const TypeId_LocalizeConfig_CN = 2049582687 - -func (*LocalizeConfig_CN) GetTypeId() int32 { - return 2049582687 -} - -func (_v *LocalizeConfig_CN)Deserialize(_buf map[string]interface{}) (err error) { - { var _ok_ bool; if _v.Key, _ok_ = _buf["key"].(string); !_ok_ { err = errors.New("key error"); return } } - { var _ok_ bool; if _v.TextCn, _ok_ = _buf["text_cn"].(string); !_ok_ { err = errors.New("text_cn error"); return } } - return -} - -func DeserializeLocalizeConfig_CN(_buf map[string]interface{}) (*LocalizeConfig_CN, error) { - v := &LocalizeConfig_CN{} - if err := v.Deserialize(_buf); err == nil { - return v, nil - } else { - return nil, err - } -} diff --git a/sys/configure/structs/LocalizeConfig_EN.go b/sys/configure/structs/LocalizeConfig_EN.go deleted file mode 100644 index 6f63a12c6..000000000 --- a/sys/configure/structs/LocalizeConfig_EN.go +++ /dev/null @@ -1,37 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -package cfg - -import "errors" - -type LocalizeConfig_EN struct { - Key string - TextEn string -} - -const TypeId_LocalizeConfig_EN = 2049582749 - -func (*LocalizeConfig_EN) GetTypeId() int32 { - return 2049582749 -} - -func (_v *LocalizeConfig_EN)Deserialize(_buf map[string]interface{}) (err error) { - { var _ok_ bool; if _v.Key, _ok_ = _buf["key"].(string); !_ok_ { err = errors.New("key error"); return } } - { var _ok_ bool; if _v.TextEn, _ok_ = _buf["text_en"].(string); !_ok_ { err = errors.New("text_en error"); return } } - return -} - -func DeserializeLocalizeConfig_EN(_buf map[string]interface{}) (*LocalizeConfig_EN, error) { - v := &LocalizeConfig_EN{} - if err := v.Deserialize(_buf); err == nil { - return v, nil - } else { - return nil, err - } -} diff --git a/sys/configure/structs/LocalizeConfig_TW.go b/sys/configure/structs/LocalizeConfig_TW.go deleted file mode 100644 index 32a02e88a..000000000 --- a/sys/configure/structs/LocalizeConfig_TW.go +++ /dev/null @@ -1,37 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -package cfg - -import "errors" - -type LocalizeConfig_TW struct { - Key string - TextTw string -} - -const TypeId_LocalizeConfig_TW = 2049583223 - -func (*LocalizeConfig_TW) GetTypeId() int32 { - return 2049583223 -} - -func (_v *LocalizeConfig_TW)Deserialize(_buf map[string]interface{}) (err error) { - { var _ok_ bool; if _v.Key, _ok_ = _buf["key"].(string); !_ok_ { err = errors.New("key error"); return } } - { var _ok_ bool; if _v.TextTw, _ok_ = _buf["text_tw"].(string); !_ok_ { err = errors.New("text_tw error"); return } } - return -} - -func DeserializeLocalizeConfig_TW(_buf map[string]interface{}) (*LocalizeConfig_TW, error) { - v := &LocalizeConfig_TW{} - if err := v.Deserialize(_buf); err == nil { - return v, nil - } else { - return nil, err - } -} diff --git a/sys/configure/structs/Tables.go b/sys/configure/structs/Tables.go index 1c8bef618..2734d2c0d 100644 --- a/sys/configure/structs/Tables.go +++ b/sys/configure/structs/Tables.go @@ -68,9 +68,9 @@ type Tables struct { pagodaTaskReward *GamepagodaTaskReward pagodaSeasonReward *GamepagodaSeasonReward pagodaseasonLoop *GamepagodaseasonLoop - rdtaskAll *GamerdtaskAll - rdtaskType *GamerdtaskType - rdtaskChoose *GamerdtaskChoose + RdtaskAll *GameRdtaskAll + RdtaskType *GameRdtaskType + RdtaskChoose *GameRdtaskChoose kungfu_unlock *Gamekungfu_unlock kungfu_masterworker *Gamekungfu_masterworker Gourmet *GameGourmet @@ -427,19 +427,19 @@ func NewTables(loader JsonLoader) (*Tables, error) { if buf, err = loader("game_rdtaskall") ; err != nil { return nil, err } - if tables.rdtaskAll, err = NewGamerdtaskAll(buf) ; err != nil { + if tables.RdtaskAll, err = NewGameRdtaskAll(buf) ; err != nil { return nil, err } if buf, err = loader("game_rdtasktype") ; err != nil { return nil, err } - if tables.rdtaskType, err = NewGamerdtaskType(buf) ; err != nil { + if tables.RdtaskType, err = NewGameRdtaskType(buf) ; err != nil { return nil, err } if buf, err = loader("game_rdtaskchoose") ; err != nil { return nil, err } - if tables.rdtaskChoose, err = NewGamerdtaskChoose(buf) ; err != nil { + if tables.RdtaskChoose, err = NewGameRdtaskChoose(buf) ; err != nil { return nil, err } if buf, err = loader("game_kungfu_unlock") ; err != nil { diff --git a/sys/configure/structs/game.RdtaksAll.go b/sys/configure/structs/game.RdtaksAll.go deleted file mode 100644 index e8b38f20e..000000000 --- a/sys/configure/structs/game.RdtaksAll.go +++ /dev/null @@ -1,42 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -package cfg - -type GameRdtaksAll struct { - _dataMap map[int32]*GameRdtaksAllData - _dataList []*GameRdtaksAllData -} - -func NewGameRdtaksAll(_buf []map[string]interface{}) (*GameRdtaksAll, error) { - _dataList := make([]*GameRdtaksAllData, 0, len(_buf)) - dataMap := make(map[int32]*GameRdtaksAllData) - for _, _ele_ := range _buf { - if _v, err2 := DeserializeGameRdtaksAllData(_ele_); err2 != nil { - return nil, err2 - } else { - _dataList = append(_dataList, _v) - dataMap[_v.RdtaksId] = _v - } - } - return &GameRdtaksAll{_dataList:_dataList, _dataMap:dataMap}, nil -} - -func (table *GameRdtaksAll) GetDataMap() map[int32]*GameRdtaksAllData { - return table._dataMap -} - -func (table *GameRdtaksAll) GetDataList() []*GameRdtaksAllData { - return table._dataList -} - -func (table *GameRdtaksAll) Get(key int32) *GameRdtaksAllData { - return table._dataMap[key] -} - - diff --git a/sys/configure/structs/game.RdtaksAllData.go b/sys/configure/structs/game.RdtaksAllData.go deleted file mode 100644 index 039999325..000000000 --- a/sys/configure/structs/game.RdtaksAllData.go +++ /dev/null @@ -1,105 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -package cfg - -import "errors" - -type GameRdtaksAllData struct { - RdtaksId int32 - TaskType int32 - RdtaksNum []int32 - IdLast []int32 - IdAfter int32 - IdTag int32 - Story int32 - Completetask int32 - Reword []*Gameatn - ChooseId []int32 -} - -const TypeId_GameRdtaksAllData = -100955128 - -func (*GameRdtaksAllData) GetTypeId() int32 { - return -100955128 -} - -func (_v *GameRdtaksAllData)Deserialize(_buf map[string]interface{}) (err error) { - { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["rdtaks_id"].(float64); !_ok_ { err = errors.New("rdtaks_id error"); return }; _v.RdtaksId = int32(_tempNum_) } - { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["task_type"].(float64); !_ok_ { err = errors.New("task_type error"); return }; _v.TaskType = int32(_tempNum_) } - { - var _arr_ []interface{} - var _ok_ bool - if _arr_, _ok_ = _buf["rdtaks_num"].([]interface{}); !_ok_ { err = errors.New("rdtaks_num error"); return } - - _v.RdtaksNum = make([]int32, 0, len(_arr_)) - - for _, _e_ := range _arr_ { - var _list_v_ int32 - { var _ok_ bool; var _x_ float64; if _x_, _ok_ = _e_.(float64); !_ok_ { err = errors.New("_list_v_ error"); return }; _list_v_ = int32(_x_) } - _v.RdtaksNum = append(_v.RdtaksNum, _list_v_) - } - } - - { - var _arr_ []interface{} - var _ok_ bool - if _arr_, _ok_ = _buf["id_last"].([]interface{}); !_ok_ { err = errors.New("id_last error"); return } - - _v.IdLast = make([]int32, 0, len(_arr_)) - - for _, _e_ := range _arr_ { - var _list_v_ int32 - { var _ok_ bool; var _x_ float64; if _x_, _ok_ = _e_.(float64); !_ok_ { err = errors.New("_list_v_ error"); return }; _list_v_ = int32(_x_) } - _v.IdLast = append(_v.IdLast, _list_v_) - } - } - - { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["id_after"].(float64); !_ok_ { err = errors.New("id_after error"); return }; _v.IdAfter = int32(_tempNum_) } - { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["id_tag"].(float64); !_ok_ { err = errors.New("id_tag error"); return }; _v.IdTag = int32(_tempNum_) } - { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["story"].(float64); !_ok_ { err = errors.New("story error"); return }; _v.Story = int32(_tempNum_) } - { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["completetask"].(float64); !_ok_ { err = errors.New("completetask error"); return }; _v.Completetask = int32(_tempNum_) } - { - var _arr_ []interface{} - var _ok_ bool - if _arr_, _ok_ = _buf["reword"].([]interface{}); !_ok_ { err = errors.New("reword error"); return } - - _v.Reword = make([]*Gameatn, 0, len(_arr_)) - - for _, _e_ := range _arr_ { - var _list_v_ *Gameatn - { var _ok_ bool; var _x_ map[string]interface{}; if _x_, _ok_ = _e_.(map[string]interface{}); !_ok_ { err = errors.New("_list_v_ error"); return }; if _list_v_, err = DeserializeGameatn(_x_); err != nil { return } } - _v.Reword = append(_v.Reword, _list_v_) - } - } - - { - var _arr_ []interface{} - var _ok_ bool - if _arr_, _ok_ = _buf["choose_id"].([]interface{}); !_ok_ { err = errors.New("choose_id error"); return } - - _v.ChooseId = make([]int32, 0, len(_arr_)) - - for _, _e_ := range _arr_ { - var _list_v_ int32 - { var _ok_ bool; var _x_ float64; if _x_, _ok_ = _e_.(float64); !_ok_ { err = errors.New("_list_v_ error"); return }; _list_v_ = int32(_x_) } - _v.ChooseId = append(_v.ChooseId, _list_v_) - } - } - - return -} - -func DeserializeGameRdtaksAllData(_buf map[string]interface{}) (*GameRdtaksAllData, error) { - v := &GameRdtaksAllData{} - if err := v.Deserialize(_buf); err == nil { - return v, nil - } else { - return nil, err - } -} diff --git a/sys/configure/structs/game.RdtaksChoose.go b/sys/configure/structs/game.RdtaksChoose.go deleted file mode 100644 index 8b8c6b67c..000000000 --- a/sys/configure/structs/game.RdtaksChoose.go +++ /dev/null @@ -1,42 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -package cfg - -type GameRdtaksChoose struct { - _dataMap map[int32]*GameRdtaksChooseData - _dataList []*GameRdtaksChooseData -} - -func NewGameRdtaksChoose(_buf []map[string]interface{}) (*GameRdtaksChoose, error) { - _dataList := make([]*GameRdtaksChooseData, 0, len(_buf)) - dataMap := make(map[int32]*GameRdtaksChooseData) - for _, _ele_ := range _buf { - if _v, err2 := DeserializeGameRdtaksChooseData(_ele_); err2 != nil { - return nil, err2 - } else { - _dataList = append(_dataList, _v) - dataMap[_v.ChooseId] = _v - } - } - return &GameRdtaksChoose{_dataList:_dataList, _dataMap:dataMap}, nil -} - -func (table *GameRdtaksChoose) GetDataMap() map[int32]*GameRdtaksChooseData { - return table._dataMap -} - -func (table *GameRdtaksChoose) GetDataList() []*GameRdtaksChooseData { - return table._dataList -} - -func (table *GameRdtaksChoose) Get(key int32) *GameRdtaksChooseData { - return table._dataMap[key] -} - - diff --git a/sys/configure/structs/game.RdtaksChooseData.go b/sys/configure/structs/game.RdtaksChooseData.go deleted file mode 100644 index 74b20694a..000000000 --- a/sys/configure/structs/game.RdtaksChooseData.go +++ /dev/null @@ -1,41 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -package cfg - -import "errors" - -type GameRdtaksChooseData struct { - ChooseId int32 - Num int32 - RdtaksNum int32 - RdtaksId int32 -} - -const TypeId_GameRdtaksChooseData = -1888133596 - -func (*GameRdtaksChooseData) GetTypeId() int32 { - return -1888133596 -} - -func (_v *GameRdtaksChooseData)Deserialize(_buf map[string]interface{}) (err error) { - { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["choose_id"].(float64); !_ok_ { err = errors.New("choose_id error"); return }; _v.ChooseId = int32(_tempNum_) } - { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["num"].(float64); !_ok_ { err = errors.New("num error"); return }; _v.Num = int32(_tempNum_) } - { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["rdtaks_num"].(float64); !_ok_ { err = errors.New("rdtaks_num error"); return }; _v.RdtaksNum = int32(_tempNum_) } - { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["rdtaks_id"].(float64); !_ok_ { err = errors.New("rdtaks_id error"); return }; _v.RdtaksId = int32(_tempNum_) } - return -} - -func DeserializeGameRdtaksChooseData(_buf map[string]interface{}) (*GameRdtaksChooseData, error) { - v := &GameRdtaksChooseData{} - if err := v.Deserialize(_buf); err == nil { - return v, nil - } else { - return nil, err - } -} diff --git a/sys/configure/structs/game.RdtaksType.go b/sys/configure/structs/game.RdtaksType.go deleted file mode 100644 index df279548b..000000000 --- a/sys/configure/structs/game.RdtaksType.go +++ /dev/null @@ -1,42 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -package cfg - -type GameRdtaksType struct { - _dataMap map[int32]*GameRdtaksTypeData - _dataList []*GameRdtaksTypeData -} - -func NewGameRdtaksType(_buf []map[string]interface{}) (*GameRdtaksType, error) { - _dataList := make([]*GameRdtaksTypeData, 0, len(_buf)) - dataMap := make(map[int32]*GameRdtaksTypeData) - for _, _ele_ := range _buf { - if _v, err2 := DeserializeGameRdtaksTypeData(_ele_); err2 != nil { - return nil, err2 - } else { - _dataList = append(_dataList, _v) - dataMap[_v.RdtaksNum] = _v - } - } - return &GameRdtaksType{_dataList:_dataList, _dataMap:dataMap}, nil -} - -func (table *GameRdtaksType) GetDataMap() map[int32]*GameRdtaksTypeData { - return table._dataMap -} - -func (table *GameRdtaksType) GetDataList() []*GameRdtaksTypeData { - return table._dataList -} - -func (table *GameRdtaksType) Get(key int32) *GameRdtaksTypeData { - return table._dataMap[key] -} - - diff --git a/sys/configure/structs/game.RdtaksTypeData.go b/sys/configure/structs/game.RdtaksTypeData.go deleted file mode 100644 index ca2461f89..000000000 --- a/sys/configure/structs/game.RdtaksTypeData.go +++ /dev/null @@ -1,47 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -package cfg - -import "errors" - -type GameRdtaksTypeData struct { - RdtaksNum int32 - Typdes int32 - Datatime int32 - TyptaskId int32 - Data1 int32 - Data2 int32 - Data3 int32 -} - -const TypeId_GameRdtaksTypeData = -1284226425 - -func (*GameRdtaksTypeData) GetTypeId() int32 { - return -1284226425 -} - -func (_v *GameRdtaksTypeData)Deserialize(_buf map[string]interface{}) (err error) { - { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["rdtaks_num"].(float64); !_ok_ { err = errors.New("rdtaks_num error"); return }; _v.RdtaksNum = int32(_tempNum_) } - { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["typdes"].(float64); !_ok_ { err = errors.New("typdes error"); return }; _v.Typdes = int32(_tempNum_) } - { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["datatime"].(float64); !_ok_ { err = errors.New("datatime error"); return }; _v.Datatime = int32(_tempNum_) } - { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["typtask_id"].(float64); !_ok_ { err = errors.New("typtask_id error"); return }; _v.TyptaskId = int32(_tempNum_) } - { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["data1"].(float64); !_ok_ { err = errors.New("data1 error"); return }; _v.Data1 = int32(_tempNum_) } - { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["data2"].(float64); !_ok_ { err = errors.New("data2 error"); return }; _v.Data2 = int32(_tempNum_) } - { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["data3"].(float64); !_ok_ { err = errors.New("data3 error"); return }; _v.Data3 = int32(_tempNum_) } - return -} - -func DeserializeGameRdtaksTypeData(_buf map[string]interface{}) (*GameRdtaksTypeData, error) { - v := &GameRdtaksTypeData{} - if err := v.Deserialize(_buf); err == nil { - return v, nil - } else { - return nil, err - } -} diff --git a/sys/configure/structs/game.pagodaseasonLoop.go b/sys/configure/structs/game.pagodaseasonLoop.go new file mode 100644 index 000000000..db23c348d --- /dev/null +++ b/sys/configure/structs/game.pagodaseasonLoop.go @@ -0,0 +1,42 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +package cfg + +type GamepagodaseasonLoop struct { + _dataMap map[int32]*GamepagodaseasonLoopData + _dataList []*GamepagodaseasonLoopData +} + +func NewGamepagodaseasonLoop(_buf []map[string]interface{}) (*GamepagodaseasonLoop, error) { + _dataList := make([]*GamepagodaseasonLoopData, 0, len(_buf)) + dataMap := make(map[int32]*GamepagodaseasonLoopData) + for _, _ele_ := range _buf { + if _v, err2 := DeserializeGamepagodaseasonLoopData(_ele_); err2 != nil { + return nil, err2 + } else { + _dataList = append(_dataList, _v) + dataMap[_v.Key] = _v + } + } + return &GamepagodaseasonLoop{_dataList:_dataList, _dataMap:dataMap}, nil +} + +func (table *GamepagodaseasonLoop) GetDataMap() map[int32]*GamepagodaseasonLoopData { + return table._dataMap +} + +func (table *GamepagodaseasonLoop) GetDataList() []*GamepagodaseasonLoopData { + return table._dataList +} + +func (table *GamepagodaseasonLoop) Get(key int32) *GamepagodaseasonLoopData { + return table._dataMap[key] +} + + diff --git a/sys/configure/structs/game.pagodaseasonLoopData.go b/sys/configure/structs/game.pagodaseasonLoopData.go new file mode 100644 index 000000000..bcbf62ca5 --- /dev/null +++ b/sys/configure/structs/game.pagodaseasonLoopData.go @@ -0,0 +1,65 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +package cfg + +import "errors" + +type GamepagodaseasonLoopData struct { + Key int32 + DisposableLoop []int32 + FixedLoop []int32 +} + +const TypeId_GamepagodaseasonLoopData = -1606971581 + +func (*GamepagodaseasonLoopData) GetTypeId() int32 { + return -1606971581 +} + +func (_v *GamepagodaseasonLoopData)Deserialize(_buf map[string]interface{}) (err error) { + { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["key"].(float64); !_ok_ { err = errors.New("key error"); return }; _v.Key = int32(_tempNum_) } + { + var _arr_ []interface{} + var _ok_ bool + if _arr_, _ok_ = _buf["disposable_loop"].([]interface{}); !_ok_ { err = errors.New("disposable_loop error"); return } + + _v.DisposableLoop = make([]int32, 0, len(_arr_)) + + for _, _e_ := range _arr_ { + var _list_v_ int32 + { var _ok_ bool; var _x_ float64; if _x_, _ok_ = _e_.(float64); !_ok_ { err = errors.New("_list_v_ error"); return }; _list_v_ = int32(_x_) } + _v.DisposableLoop = append(_v.DisposableLoop, _list_v_) + } + } + + { + var _arr_ []interface{} + var _ok_ bool + if _arr_, _ok_ = _buf["fixed_loop"].([]interface{}); !_ok_ { err = errors.New("fixed_loop error"); return } + + _v.FixedLoop = make([]int32, 0, len(_arr_)) + + for _, _e_ := range _arr_ { + var _list_v_ int32 + { var _ok_ bool; var _x_ float64; if _x_, _ok_ = _e_.(float64); !_ok_ { err = errors.New("_list_v_ error"); return }; _list_v_ = int32(_x_) } + _v.FixedLoop = append(_v.FixedLoop, _list_v_) + } + } + + return +} + +func DeserializeGamepagodaseasonLoopData(_buf map[string]interface{}) (*GamepagodaseasonLoopData, error) { + v := &GamepagodaseasonLoopData{} + if err := v.Deserialize(_buf); err == nil { + return v, nil + } else { + return nil, err + } +} diff --git a/sys/configure/structs/game.rdtaskAll.go b/sys/configure/structs/game.rdtaskAll.go index 7ccb34b8b..cbd2288a3 100644 --- a/sys/configure/structs/game.rdtaskAll.go +++ b/sys/configure/structs/game.rdtaskAll.go @@ -8,34 +8,34 @@ package cfg -type GamerdtaskAll struct { - _dataMap map[int32]*GamerdtaskAllData - _dataList []*GamerdtaskAllData +type GameRdtaskAll struct { + _dataMap map[int32]*GameRdtaskAllData + _dataList []*GameRdtaskAllData } -func NewGamerdtaskAll(_buf []map[string]interface{}) (*GamerdtaskAll, error) { - _dataList := make([]*GamerdtaskAllData, 0, len(_buf)) - dataMap := make(map[int32]*GamerdtaskAllData) +func NewGameRdtaskAll(_buf []map[string]interface{}) (*GameRdtaskAll, error) { + _dataList := make([]*GameRdtaskAllData, 0, len(_buf)) + dataMap := make(map[int32]*GameRdtaskAllData) for _, _ele_ := range _buf { - if _v, err2 := DeserializeGamerdtaskAllData(_ele_); err2 != nil { + if _v, err2 := DeserializeGameRdtaskAllData(_ele_); err2 != nil { return nil, err2 } else { _dataList = append(_dataList, _v) dataMap[_v.Id] = _v } } - return &GamerdtaskAll{_dataList:_dataList, _dataMap:dataMap}, nil + return &GameRdtaskAll{_dataList:_dataList, _dataMap:dataMap}, nil } -func (table *GamerdtaskAll) GetDataMap() map[int32]*GamerdtaskAllData { +func (table *GameRdtaskAll) GetDataMap() map[int32]*GameRdtaskAllData { return table._dataMap } -func (table *GamerdtaskAll) GetDataList() []*GamerdtaskAllData { +func (table *GameRdtaskAll) GetDataList() []*GameRdtaskAllData { return table._dataList } -func (table *GamerdtaskAll) Get(key int32) *GamerdtaskAllData { +func (table *GameRdtaskAll) Get(key int32) *GameRdtaskAllData { return table._dataMap[key] } diff --git a/sys/configure/structs/game.rdtaskAllData.go b/sys/configure/structs/game.rdtaskAllData.go index c438ec8b7..2ded0d1fa 100644 --- a/sys/configure/structs/game.rdtaskAllData.go +++ b/sys/configure/structs/game.rdtaskAllData.go @@ -10,7 +10,7 @@ package cfg import "errors" -type GamerdtaskAllData struct { +type GameRdtaskAllData struct { Id int32 Type int32 Lastend int32 @@ -24,13 +24,13 @@ type GamerdtaskAllData struct { Reword []*Gameatn } -const TypeId_GamerdtaskAllData = 762735928 +const TypeId_GameRdtaskAllData = 1561697560 -func (*GamerdtaskAllData) GetTypeId() int32 { - return 762735928 +func (*GameRdtaskAllData) GetTypeId() int32 { + return 1561697560 } -func (_v *GamerdtaskAllData)Deserialize(_buf map[string]interface{}) (err error) { +func (_v *GameRdtaskAllData)Deserialize(_buf map[string]interface{}) (err error) { { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["id"].(float64); !_ok_ { err = errors.New("id error"); return }; _v.Id = int32(_tempNum_) } { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["type"].(float64); !_ok_ { err = errors.New("type error"); return }; _v.Type = int32(_tempNum_) } { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["lastend"].(float64); !_ok_ { err = errors.New("lastend error"); return }; _v.Lastend = int32(_tempNum_) } @@ -84,8 +84,8 @@ func (_v *GamerdtaskAllData)Deserialize(_buf map[string]interface{}) (err error) return } -func DeserializeGamerdtaskAllData(_buf map[string]interface{}) (*GamerdtaskAllData, error) { - v := &GamerdtaskAllData{} +func DeserializeGameRdtaskAllData(_buf map[string]interface{}) (*GameRdtaskAllData, error) { + v := &GameRdtaskAllData{} if err := v.Deserialize(_buf); err == nil { return v, nil } else { diff --git a/sys/configure/structs/game.rdtaskChoose.go b/sys/configure/structs/game.rdtaskChoose.go index a848533a1..6d34008d7 100644 --- a/sys/configure/structs/game.rdtaskChoose.go +++ b/sys/configure/structs/game.rdtaskChoose.go @@ -8,34 +8,34 @@ package cfg -type GamerdtaskChoose struct { - _dataMap map[int32]*GamerdtaskChooseData - _dataList []*GamerdtaskChooseData +type GameRdtaskChoose struct { + _dataMap map[int32]*GameRdtaskChooseData + _dataList []*GameRdtaskChooseData } -func NewGamerdtaskChoose(_buf []map[string]interface{}) (*GamerdtaskChoose, error) { - _dataList := make([]*GamerdtaskChooseData, 0, len(_buf)) - dataMap := make(map[int32]*GamerdtaskChooseData) +func NewGameRdtaskChoose(_buf []map[string]interface{}) (*GameRdtaskChoose, error) { + _dataList := make([]*GameRdtaskChooseData, 0, len(_buf)) + dataMap := make(map[int32]*GameRdtaskChooseData) for _, _ele_ := range _buf { - if _v, err2 := DeserializeGamerdtaskChooseData(_ele_); err2 != nil { + if _v, err2 := DeserializeGameRdtaskChooseData(_ele_); err2 != nil { return nil, err2 } else { _dataList = append(_dataList, _v) dataMap[_v.Chooseid] = _v } } - return &GamerdtaskChoose{_dataList:_dataList, _dataMap:dataMap}, nil + return &GameRdtaskChoose{_dataList:_dataList, _dataMap:dataMap}, nil } -func (table *GamerdtaskChoose) GetDataMap() map[int32]*GamerdtaskChooseData { +func (table *GameRdtaskChoose) GetDataMap() map[int32]*GameRdtaskChooseData { return table._dataMap } -func (table *GamerdtaskChoose) GetDataList() []*GamerdtaskChooseData { +func (table *GameRdtaskChoose) GetDataList() []*GameRdtaskChooseData { return table._dataList } -func (table *GamerdtaskChoose) Get(key int32) *GamerdtaskChooseData { +func (table *GameRdtaskChoose) Get(key int32) *GameRdtaskChooseData { return table._dataMap[key] } diff --git a/sys/configure/structs/game.rdtaskChooseData.go b/sys/configure/structs/game.rdtaskChooseData.go index f8b4fbe9d..6a72027a8 100644 --- a/sys/configure/structs/game.rdtaskChooseData.go +++ b/sys/configure/structs/game.rdtaskChooseData.go @@ -10,20 +10,20 @@ package cfg import "errors" -type GamerdtaskChooseData struct { +type GameRdtaskChooseData struct { Chooseid int32 Num int32 RdtaksNum int32 Need []int32 } -const TypeId_GamerdtaskChooseData = 1478012660 +const TypeId_GameRdtaskChooseData = 635237140 -func (*GamerdtaskChooseData) GetTypeId() int32 { - return 1478012660 +func (*GameRdtaskChooseData) GetTypeId() int32 { + return 635237140 } -func (_v *GamerdtaskChooseData)Deserialize(_buf map[string]interface{}) (err error) { +func (_v *GameRdtaskChooseData)Deserialize(_buf map[string]interface{}) (err error) { { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["chooseid"].(float64); !_ok_ { err = errors.New("chooseid error"); return }; _v.Chooseid = int32(_tempNum_) } { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["num"].(float64); !_ok_ { err = errors.New("num error"); return }; _v.Num = int32(_tempNum_) } { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["rdtaks_num"].(float64); !_ok_ { err = errors.New("rdtaks_num error"); return }; _v.RdtaksNum = int32(_tempNum_) } @@ -44,8 +44,8 @@ func (_v *GamerdtaskChooseData)Deserialize(_buf map[string]interface{}) (err err return } -func DeserializeGamerdtaskChooseData(_buf map[string]interface{}) (*GamerdtaskChooseData, error) { - v := &GamerdtaskChooseData{} +func DeserializeGameRdtaskChooseData(_buf map[string]interface{}) (*GameRdtaskChooseData, error) { + v := &GameRdtaskChooseData{} if err := v.Deserialize(_buf); err == nil { return v, nil } else { diff --git a/sys/configure/structs/game.rdtaskType.go b/sys/configure/structs/game.rdtaskType.go index a666ffac2..b1ec19cb7 100644 --- a/sys/configure/structs/game.rdtaskType.go +++ b/sys/configure/structs/game.rdtaskType.go @@ -8,34 +8,34 @@ package cfg -type GamerdtaskType struct { - _dataMap map[int32]*GamerdtaskTypeData - _dataList []*GamerdtaskTypeData +type GameRdtaskType struct { + _dataMap map[int32]*GameRdtaskTypeData + _dataList []*GameRdtaskTypeData } -func NewGamerdtaskType(_buf []map[string]interface{}) (*GamerdtaskType, error) { - _dataList := make([]*GamerdtaskTypeData, 0, len(_buf)) - dataMap := make(map[int32]*GamerdtaskTypeData) +func NewGameRdtaskType(_buf []map[string]interface{}) (*GameRdtaskType, error) { + _dataList := make([]*GameRdtaskTypeData, 0, len(_buf)) + dataMap := make(map[int32]*GameRdtaskTypeData) for _, _ele_ := range _buf { - if _v, err2 := DeserializeGamerdtaskTypeData(_ele_); err2 != nil { + if _v, err2 := DeserializeGameRdtaskTypeData(_ele_); err2 != nil { return nil, err2 } else { _dataList = append(_dataList, _v) dataMap[_v.RdtaksNum] = _v } } - return &GamerdtaskType{_dataList:_dataList, _dataMap:dataMap}, nil + return &GameRdtaskType{_dataList:_dataList, _dataMap:dataMap}, nil } -func (table *GamerdtaskType) GetDataMap() map[int32]*GamerdtaskTypeData { +func (table *GameRdtaskType) GetDataMap() map[int32]*GameRdtaskTypeData { return table._dataMap } -func (table *GamerdtaskType) GetDataList() []*GamerdtaskTypeData { +func (table *GameRdtaskType) GetDataList() []*GameRdtaskTypeData { return table._dataList } -func (table *GamerdtaskType) Get(key int32) *GamerdtaskTypeData { +func (table *GameRdtaskType) Get(key int32) *GameRdtaskTypeData { return table._dataMap[key] } diff --git a/sys/configure/structs/game.rdtaskTypeData.go b/sys/configure/structs/game.rdtaskTypeData.go index 880f3aecf..a779729f6 100644 --- a/sys/configure/structs/game.rdtaskTypeData.go +++ b/sys/configure/structs/game.rdtaskTypeData.go @@ -10,7 +10,7 @@ package cfg import "errors" -type GamerdtaskTypeData struct { +type GameRdtaskTypeData struct { RdtaksNum int32 Typdes int32 Datatime int32 @@ -20,13 +20,13 @@ type GamerdtaskTypeData struct { Data3 int32 } -const TypeId_GamerdtaskTypeData = -279607465 +const TypeId_GameRdtaskTypeData = -1281600649 -func (*GamerdtaskTypeData) GetTypeId() int32 { - return -279607465 +func (*GameRdtaskTypeData) GetTypeId() int32 { + return -1281600649 } -func (_v *GamerdtaskTypeData)Deserialize(_buf map[string]interface{}) (err error) { +func (_v *GameRdtaskTypeData)Deserialize(_buf map[string]interface{}) (err error) { { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["rdtaks_num"].(float64); !_ok_ { err = errors.New("rdtaks_num error"); return }; _v.RdtaksNum = int32(_tempNum_) } { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["typdes"].(float64); !_ok_ { err = errors.New("typdes error"); return }; _v.Typdes = int32(_tempNum_) } { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["datatime"].(float64); !_ok_ { err = errors.New("datatime error"); return }; _v.Datatime = int32(_tempNum_) } @@ -37,8 +37,8 @@ func (_v *GamerdtaskTypeData)Deserialize(_buf map[string]interface{}) (err error return } -func DeserializeGamerdtaskTypeData(_buf map[string]interface{}) (*GamerdtaskTypeData, error) { - v := &GamerdtaskTypeData{} +func DeserializeGameRdtaskTypeData(_buf map[string]interface{}) (*GameRdtaskTypeData, error) { + v := &GameRdtaskTypeData{} if err := v.Deserialize(_buf); err == nil { return v, nil } else { diff --git a/sys/configure/structs/game.serverList.go b/sys/configure/structs/game.serverList.go deleted file mode 100644 index 3b5f79227..000000000 --- a/sys/configure/structs/game.serverList.go +++ /dev/null @@ -1,42 +0,0 @@ - -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ -package cfg - -type Game_serverList struct { - _dataMap map[int32]*Game_serverListData - _dataList []*Game_serverListData -} - -func NewGame_serverList(_buf []map[string]interface{}) (*Game_serverList, error) { - _dataList := make([]*Game_serverListData, 0, len(_buf)) - dataMap := make(map[int32]*Game_serverListData) - for _, _ele_ := range _buf { - if _v, err2 := NewGame_serverListData(_ele_); err2 != nil { - return nil, err2 - } else { - _dataList = append(_dataList, _v) - dataMap[_v.Id] = _v - } - } - return &Game_serverList{_dataList:_dataList, _dataMap:dataMap}, nil -} - -func (table *Game_serverList) GetDataMap() map[int32]*Game_serverListData { - return table._dataMap -} - -func (table *Game_serverList) GetDataList() []*Game_serverListData { - return table._dataList -} - -func (table *Game_serverList) Get(key int32) *Game_serverListData { - return table._dataMap[key] -} - - diff --git a/sys/configure/structs/game.serverListData.go b/sys/configure/structs/game.serverListData.go deleted file mode 100644 index d220bfbd7..000000000 --- a/sys/configure/structs/game.serverListData.go +++ /dev/null @@ -1,33 +0,0 @@ - -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ -package cfg - -import "errors" - -type Game_serverListData struct { - Id int32 - Ip string - Port int32 - GroupId int32 - Name string -} - -func (Game_serverListData) GetTypeId() int { - return 292904775 -} - -func NewGame_serverListData(_buf map[string]interface{}) (_v *Game_serverListData, err error) { - _v = &Game_serverListData{} - { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["id"].(float64); !_ok_ { err = errors.New("id error"); return }; _v.Id = int32(_tempNum_) } - { var _ok_ bool; if _v.Ip, _ok_ = _buf["ip"].(string); !_ok_ { err = errors.New("ip error"); return } } - { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["port"].(float64); !_ok_ { err = errors.New("port error"); return }; _v.Port = int32(_tempNum_) } - { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["groupId"].(float64); !_ok_ { err = errors.New("groupId error"); return }; _v.GroupId = int32(_tempNum_) } - { var _ok_ bool; if _v.Name, _ok_ = _buf["name"].(string); !_ok_ { err = errors.New("name error"); return } } - return -} diff --git a/sys/configure/structs/game.skillAfteratkData.go b/sys/configure/structs/game.skillAfteratkData.go index 59a22a598..340bf2215 100644 --- a/sys/configure/structs/game.skillAfteratkData.go +++ b/sys/configure/structs/game.skillAfteratkData.go @@ -16,6 +16,7 @@ type GameskillAfteratkData struct { From int32 Limit int32 EmitPR int32 + AfteratkAct string Where []string Order []string Type string @@ -42,6 +43,7 @@ func (_v *GameskillAfteratkData)Deserialize(_buf map[string]interface{}) (err er { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["From"].(float64); !_ok_ { err = errors.New("From error"); return }; _v.From = int32(_tempNum_) } { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["Limit"].(float64); !_ok_ { err = errors.New("Limit error"); return }; _v.Limit = int32(_tempNum_) } { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["EmitPR"].(float64); !_ok_ { err = errors.New("EmitPR error"); return }; _v.EmitPR = int32(_tempNum_) } + { var _ok_ bool; if _v.AfteratkAct, _ok_ = _buf["AfteratkAct"].(string); !_ok_ { err = errors.New("AfteratkAct error"); return } } { var _arr_ []interface{} var _ok_ bool From 98f149b3ee00800435cf5383fbef21a767227957 Mon Sep 17 00:00:00 2001 From: liwei1dao Date: Thu, 18 Aug 2022 09:52:18 +0800 Subject: [PATCH 09/10] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E8=81=8A=E5=A4=A9?= =?UTF-8?q?=E6=88=90=E5=8A=9F=E8=BF=94=E5=9B=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/chat/api_send.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/chat/api_send.go b/modules/chat/api_send.go index 028dfd5c1..0057b1fae 100644 --- a/modules/chat/api_send.go +++ b/modules/chat/api_send.go @@ -93,6 +93,6 @@ func (this *apiComp) Send(session comm.IUserSession, req *pb.ChatSendReq) (code this.module.PushToUsers(userexpand.Chatchannel, msg) break } - session.SendMsg(string(this.module.GetType()), "send", &pb.ChatSendResp{}) + session.SendMsg(string(this.module.GetType()), "send", &pb.ChatSendResp{Issucc: true}) return } From bad7c449037dce07b00d17e43eb0d7daaa12b591 Mon Sep 17 00:00:00 2001 From: wh_zcy Date: Thu, 18 Aug 2022 10:00:43 +0800 Subject: [PATCH 10/10] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/friend/api_addblack.go | 2 +- modules/friend/api_apply.go | 4 ++-- modules/friend/api_zan.go | 2 +- modules/friend/api_zanreceive.go | 4 ++-- modules/friend/module.go | 32 -------------------------------- modules/rtask/config.go | 4 ++-- modules/rtask/module.go | 4 +++- 7 files changed, 11 insertions(+), 41 deletions(-) diff --git a/modules/friend/api_addblack.go b/modules/friend/api_addblack.go index 6c74b5461..17d11f5d8 100644 --- a/modules/friend/api_addblack.go +++ b/modules/friend/api_addblack.go @@ -70,7 +70,7 @@ func (this *apiComp) Addblack(session comm.IUserSession, req *pb.FriendBlackAddR } // 判断是否黑名单人数已满 - if len(self.BlackIds) >= this.moduleFriend.getBlackMax() { + if len(self.BlackIds) >= int(this.moduleFriend.configure.GetGlobalConf().FriendBlack) { code = pb.ErrorCode_FriendBlackMax return } diff --git a/modules/friend/api_apply.go b/modules/friend/api_apply.go index 067af6ab5..388b3bf84 100644 --- a/modules/friend/api_apply.go +++ b/modules/friend/api_apply.go @@ -63,13 +63,13 @@ func (this *apiComp) Apply(session comm.IUserSession, req *pb.FriendApplyReq) (c } //判断是否超过最大好友数量 - if len(self.FriendIds) >= this.moduleFriend.getFriendMax() { + if len(self.FriendIds) >= int(this.moduleFriend.configure.GetGlobalConf().FriendMaxnum) { code = pb.ErrorCode_FriendSelfMax return } //判断对方是否也超过最大好友数量 - if len(target.FriendIds) >= this.moduleFriend.getFriendMax() { + if len(target.FriendIds) >= int(this.moduleFriend.configure.GetGlobalConf().FriendMaxnum) { code = pb.ErrorCode_FriendTargetMax return } diff --git a/modules/friend/api_zan.go b/modules/friend/api_zan.go index f99295839..886bdbe62 100644 --- a/modules/friend/api_zan.go +++ b/modules/friend/api_zan.go @@ -56,7 +56,7 @@ func (this *apiComp) Zan(session comm.IUserSession, req *pb.FriendZanReq) (code } // 今日送出的友情点是否达到上限 - if ue.FriendPointOD >= int32(this.moduleFriend.getOutFriendPointMax()) { + if ue.FriendPointOD >= this.moduleFriend.configure.GetGlobalConf().FriendMaxsendnum { code = pb.ErrorCode_FriendPointLimit return } diff --git a/modules/friend/api_zanreceive.go b/modules/friend/api_zanreceive.go index 3caf4de1a..21bbb2600 100644 --- a/modules/friend/api_zanreceive.go +++ b/modules/friend/api_zanreceive.go @@ -56,13 +56,13 @@ func (this *apiComp) Zanreceive(session comm.IUserSession, req *pb.FriendZanrece } // 今日获赠的友情点是否达到上限 - if ue.FriendPointID >= int32(this.moduleFriend.getInFriendPointMax()) { + if ue.FriendPointID >= int32(this.moduleFriend.configure.GetGlobalConf().FriendMaxgetnum) { code = pb.ErrorCode_FriendPointLimit return } update := map[string]interface{}{ - "friendPoint": ue.FriendPoint + 10, + "friendPoint": ue.FriendPoint + 10, "friendPointID": ue.FriendPointID + 10, } if err := this.moduleFriend.ModuleUser.ChangeUserExpand(session.GetUserId(), update); err != nil { diff --git a/modules/friend/module.go b/modules/friend/module.go index 7c06158a2..2bb91fb83 100644 --- a/modules/friend/module.go +++ b/modules/friend/module.go @@ -36,38 +36,6 @@ func (this *Friend) OnInstallComp() { this.modelFriend = this.RegisterComp(new(ModelFriend)).(*ModelFriend) } -//获取最大好友数 -func (this *Friend) getFriendMax() int { - // if maxHy := this.configure.GetGlobalConf("friend_maxnum"); maxHy != "" { - // return cast.ToInt(maxHy) - // } - return 0 -} - -//获取最大黑名单数 -func (this *Friend) getBlackMax() int { - // if maxHy := this.configure.GetGlobalConf("friend_black"); maxHy != "" { - // return cast.ToInt(maxHy) - // } - return 0 -} - -// 每日最大送出友情点 -func (this *Friend) getOutFriendPointMax() int { - // if max := this.configure.GetGlobalConf("friend_maxsendnum"); max != "" { - // return cast.ToInt(max) - // } - return 0 -} - -// 每日最大获赠友情点 -func (this *Friend) getInFriendPointMax() int { - // if max := this.configure.GetGlobalConf("friend_maxsendnum"); max != "" { - // return cast.ToInt(max) - // } - return 0 -} - func (this *Friend) ResetFriend(uid string) { // 重置点赞列表 zanUpdate := map[string]interface{}{ diff --git a/modules/rtask/config.go b/modules/rtask/config.go index 3370b26ed..5b6d6a980 100644 --- a/modules/rtask/config.go +++ b/modules/rtask/config.go @@ -9,8 +9,8 @@ import ( const ( gameRtask = "game_rdtaskall.json" - gameRtaskChoose = "rdtaskchoose.json" - gameRtaskType = "rdtasktype.json" + gameRtaskChoose = "game_rdtaskchoose.json" + gameRtaskType = "game_rdtasktype.json" ) type configureComp struct { diff --git a/modules/rtask/module.go b/modules/rtask/module.go index 0991ffe10..48beb246b 100644 --- a/modules/rtask/module.go +++ b/modules/rtask/module.go @@ -52,7 +52,9 @@ func (this *ModuleRtask) Init(service core.IService, module core.IModule, option func (this *ModuleRtask) OnInstallComp() { this.ModuleBase.OnInstallComp() - + this.api = this.RegisterComp(new(apiComp)).(*apiComp) + this.modelRtask = this.RegisterComp(new(ModelRtask)).(*ModelRtask) + this.configure = this.RegisterComp(new(configureComp)).(*configureComp) } func (this *ModuleRtask) register(rtaskId int32, rtask *rtask) {