From 3ca79532b24017740d6a41be3b668e59f159187d Mon Sep 17 00:00:00 2001 From: meixiongfeng <766881921@qq.com> Date: Fri, 7 Jul 2023 18:42:18 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E5=BE=AA=E7=8E=AF=E5=A1=94=20=E8=B5=9B?= =?UTF-8?q?=E5=AD=A3=E5=A1=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pb/pagoda_db.pb.go | 218 ++++++++++++++++-- pb/pagoda_msg.pb.go | 521 ++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 683 insertions(+), 56 deletions(-) diff --git a/pb/pagoda_db.pb.go b/pb/pagoda_db.pb.go index 9afe00981..9043656ef 100644 --- a/pb/pagoda_db.pb.go +++ b/pb/pagoda_db.pb.go @@ -259,6 +259,141 @@ func (x *DBPagodaRecord) GetTab() int32 { return 0 } +type DBPagodaRace 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 + Race map[int32]*RaceData `protobuf:"bytes,3,rep,name=race,proto3" json:"race" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // 阵营 +} + +func (x *DBPagodaRace) Reset() { + *x = DBPagodaRace{} + if protoimpl.UnsafeEnabled { + mi := &file_pagoda_pagoda_db_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DBPagodaRace) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DBPagodaRace) ProtoMessage() {} + +func (x *DBPagodaRace) ProtoReflect() protoreflect.Message { + mi := &file_pagoda_pagoda_db_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 DBPagodaRace.ProtoReflect.Descriptor instead. +func (*DBPagodaRace) Descriptor() ([]byte, []int) { + return file_pagoda_pagoda_db_proto_rawDescGZIP(), []int{2} +} + +func (x *DBPagodaRace) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *DBPagodaRace) GetUid() string { + if x != nil { + return x.Uid + } + return "" +} + +func (x *DBPagodaRace) GetRace() map[int32]*RaceData { + if x != nil { + return x.Race + } + return nil +} + +// 阵营塔数据 +type RaceData struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Buf []int32 `protobuf:"varint,1,rep,packed,name=buf,proto3" json:"buf"` + Rtime int64 `protobuf:"varint,2,opt,name=rtime,proto3" json:"rtime"` // 刷新时间 客户端不用 + Defeat int32 `protobuf:"varint,3,opt,name=defeat,proto3" json:"defeat"` // 今日战胜的次数 + Floor map[int32]int64 `protobuf:"bytes,4,rep,name=floor,proto3" json:"floor" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` //key 层数 value 耗时 +} + +func (x *RaceData) Reset() { + *x = RaceData{} + if protoimpl.UnsafeEnabled { + mi := &file_pagoda_pagoda_db_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RaceData) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RaceData) ProtoMessage() {} + +func (x *RaceData) ProtoReflect() protoreflect.Message { + mi := &file_pagoda_pagoda_db_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 RaceData.ProtoReflect.Descriptor instead. +func (*RaceData) Descriptor() ([]byte, []int) { + return file_pagoda_pagoda_db_proto_rawDescGZIP(), []int{3} +} + +func (x *RaceData) GetBuf() []int32 { + if x != nil { + return x.Buf + } + return nil +} + +func (x *RaceData) GetRtime() int64 { + if x != nil { + return x.Rtime + } + return 0 +} + +func (x *RaceData) GetDefeat() int32 { + if x != nil { + return x.Defeat + } + return 0 +} + +func (x *RaceData) GetFloor() map[int32]int64 { + if x != nil { + return x.Floor + } + return nil +} + var File_pagoda_pagoda_db_proto protoreflect.FileDescriptor var file_pagoda_pagoda_db_proto_rawDesc = []byte{ @@ -306,8 +441,30 @@ var file_pagoda_pagoda_db_proto_rawDesc = []byte{ 0x07, 0x2e, 0x4c, 0x69, 0x6e, 0x65, 0x55, 0x70, 0x52, 0x04, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x63, 0x6f, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x61, - 0x62, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x74, 0x61, 0x62, 0x42, 0x06, 0x5a, 0x04, - 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x62, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x74, 0x61, 0x62, 0x22, 0xa1, 0x01, 0x0a, + 0x0c, 0x44, 0x42, 0x50, 0x61, 0x67, 0x6f, 0x64, 0x61, 0x52, 0x61, 0x63, 0x65, 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, + 0x2b, 0x0a, 0x04, 0x72, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, + 0x44, 0x42, 0x50, 0x61, 0x67, 0x6f, 0x64, 0x61, 0x52, 0x61, 0x63, 0x65, 0x2e, 0x52, 0x61, 0x63, + 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x72, 0x61, 0x63, 0x65, 0x1a, 0x42, 0x0a, 0x09, + 0x52, 0x61, 0x63, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x1f, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x52, 0x61, 0x63, + 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x22, 0xb0, 0x01, 0x0a, 0x08, 0x52, 0x61, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, + 0x03, 0x62, 0x75, 0x66, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x03, 0x62, 0x75, 0x66, 0x12, + 0x14, 0x0a, 0x05, 0x72, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, + 0x72, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x65, 0x66, 0x65, 0x61, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x64, 0x65, 0x66, 0x65, 0x61, 0x74, 0x12, 0x2a, 0x0a, + 0x05, 0x66, 0x6c, 0x6f, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x52, + 0x61, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x46, 0x6c, 0x6f, 0x6f, 0x72, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x05, 0x66, 0x6c, 0x6f, 0x6f, 0x72, 0x1a, 0x38, 0x0a, 0x0a, 0x46, 0x6c, 0x6f, + 0x6f, 0x72, 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, 0x03, 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 ( @@ -322,23 +479,30 @@ func file_pagoda_pagoda_db_proto_rawDescGZIP() []byte { return file_pagoda_pagoda_db_proto_rawDescData } -var file_pagoda_pagoda_db_proto_msgTypes = make([]protoimpl.MessageInfo, 4) +var file_pagoda_pagoda_db_proto_msgTypes = make([]protoimpl.MessageInfo, 8) var file_pagoda_pagoda_db_proto_goTypes = []interface{}{ (*DBPagoda)(nil), // 0: DBPagoda (*DBPagodaRecord)(nil), // 1: DBPagodaRecord - nil, // 2: DBPagoda.RewardEntry - nil, // 3: DBPagoda.DataEntry - (*LineUp)(nil), // 4: LineUp + (*DBPagodaRace)(nil), // 2: DBPagodaRace + (*RaceData)(nil), // 3: RaceData + nil, // 4: DBPagoda.RewardEntry + nil, // 5: DBPagoda.DataEntry + nil, // 6: DBPagodaRace.RaceEntry + nil, // 7: RaceData.FloorEntry + (*LineUp)(nil), // 8: LineUp } var file_pagoda_pagoda_db_proto_depIdxs = []int32{ - 2, // 0: DBPagoda.reward:type_name -> DBPagoda.RewardEntry - 3, // 1: DBPagoda.data:type_name -> DBPagoda.DataEntry - 4, // 2: DBPagodaRecord.line:type_name -> LineUp - 3, // [3:3] is the sub-list for method output_type - 3, // [3:3] is the sub-list for method input_type - 3, // [3:3] is the sub-list for extension type_name - 3, // [3:3] is the sub-list for extension extendee - 0, // [0:3] is the sub-list for field type_name + 4, // 0: DBPagoda.reward:type_name -> DBPagoda.RewardEntry + 5, // 1: DBPagoda.data:type_name -> DBPagoda.DataEntry + 8, // 2: DBPagodaRecord.line:type_name -> LineUp + 6, // 3: DBPagodaRace.race:type_name -> DBPagodaRace.RaceEntry + 7, // 4: RaceData.floor:type_name -> RaceData.FloorEntry + 3, // 5: DBPagodaRace.RaceEntry.value:type_name -> RaceData + 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_pagoda_pagoda_db_proto_init() } @@ -372,6 +536,30 @@ func file_pagoda_pagoda_db_proto_init() { return nil } } + file_pagoda_pagoda_db_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DBPagodaRace); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pagoda_pagoda_db_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RaceData); 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{ @@ -379,7 +567,7 @@ func file_pagoda_pagoda_db_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_pagoda_pagoda_db_proto_rawDesc, NumEnums: 0, - NumMessages: 4, + NumMessages: 8, NumExtensions: 0, NumServices: 0, }, diff --git a/pb/pagoda_msg.pb.go b/pb/pagoda_msg.pb.go index c189e7818..ebf9bd5a3 100644 --- a/pb/pagoda_msg.pb.go +++ b/pb/pagoda_msg.pb.go @@ -784,6 +784,330 @@ func (x *PagodaWarOrderResp) GetItmes() []*UserAssets { return nil } +// 挑战阵营塔 +type PagodaCallengeRaceReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Race int32 `protobuf:"varint,1,opt,name=race,proto3" json:"race"` //0 循环塔 1 阵营1 ... + Cid int32 `protobuf:"varint,2,opt,name=cid,proto3" json:"cid"` // circularcamptower 表中的id + Battle *BattleFormation `protobuf:"bytes,3,opt,name=battle,proto3" json:"battle"` +} + +func (x *PagodaCallengeRaceReq) Reset() { + *x = PagodaCallengeRaceReq{} + if protoimpl.UnsafeEnabled { + mi := &file_pagoda_pagoda_msg_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PagodaCallengeRaceReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PagodaCallengeRaceReq) ProtoMessage() {} + +func (x *PagodaCallengeRaceReq) ProtoReflect() protoreflect.Message { + mi := &file_pagoda_pagoda_msg_proto_msgTypes[16] + 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 PagodaCallengeRaceReq.ProtoReflect.Descriptor instead. +func (*PagodaCallengeRaceReq) Descriptor() ([]byte, []int) { + return file_pagoda_pagoda_msg_proto_rawDescGZIP(), []int{16} +} + +func (x *PagodaCallengeRaceReq) GetRace() int32 { + if x != nil { + return x.Race + } + return 0 +} + +func (x *PagodaCallengeRaceReq) GetCid() int32 { + if x != nil { + return x.Cid + } + return 0 +} + +func (x *PagodaCallengeRaceReq) GetBattle() *BattleFormation { + if x != nil { + return x.Battle + } + return nil +} + +type PagodaCallengeRaceResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Info *BattleInfo `protobuf:"bytes,1,opt,name=info,proto3" json:"info"` + Cid int32 `protobuf:"varint,2,opt,name=cid,proto3" json:"cid"` // 塔的配置id +} + +func (x *PagodaCallengeRaceResp) Reset() { + *x = PagodaCallengeRaceResp{} + if protoimpl.UnsafeEnabled { + mi := &file_pagoda_pagoda_msg_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PagodaCallengeRaceResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PagodaCallengeRaceResp) ProtoMessage() {} + +func (x *PagodaCallengeRaceResp) ProtoReflect() protoreflect.Message { + mi := &file_pagoda_pagoda_msg_proto_msgTypes[17] + 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 PagodaCallengeRaceResp.ProtoReflect.Descriptor instead. +func (*PagodaCallengeRaceResp) Descriptor() ([]byte, []int) { + return file_pagoda_pagoda_msg_proto_rawDescGZIP(), []int{17} +} + +func (x *PagodaCallengeRaceResp) GetInfo() *BattleInfo { + if x != nil { + return x.Info + } + return nil +} + +func (x *PagodaCallengeRaceResp) GetCid() int32 { + if x != nil { + return x.Cid + } + return 0 +} + +// 挑战Over +type PagodaCallengeRaceOverReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Race int32 `protobuf:"varint,1,opt,name=race,proto3" json:"race"` //0 循环塔 1 阵营1 ... + Cid int32 `protobuf:"varint,2,opt,name=cid,proto3" json:"cid"` // circularcamptower 表中的id + Report *BattleReport `protobuf:"bytes,3,opt,name=report,proto3" json:"report"` //战报 +} + +func (x *PagodaCallengeRaceOverReq) Reset() { + *x = PagodaCallengeRaceOverReq{} + if protoimpl.UnsafeEnabled { + mi := &file_pagoda_pagoda_msg_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PagodaCallengeRaceOverReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PagodaCallengeRaceOverReq) ProtoMessage() {} + +func (x *PagodaCallengeRaceOverReq) ProtoReflect() protoreflect.Message { + mi := &file_pagoda_pagoda_msg_proto_msgTypes[18] + 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 PagodaCallengeRaceOverReq.ProtoReflect.Descriptor instead. +func (*PagodaCallengeRaceOverReq) Descriptor() ([]byte, []int) { + return file_pagoda_pagoda_msg_proto_rawDescGZIP(), []int{18} +} + +func (x *PagodaCallengeRaceOverReq) GetRace() int32 { + if x != nil { + return x.Race + } + return 0 +} + +func (x *PagodaCallengeRaceOverReq) GetCid() int32 { + if x != nil { + return x.Cid + } + return 0 +} + +func (x *PagodaCallengeRaceOverReq) GetReport() *BattleReport { + if x != nil { + return x.Report + } + return nil +} + +type PagodaCallengeRaceOverResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Race *DBPagodaRace `protobuf:"bytes,1,opt,name=race,proto3" json:"race"` + Reward []*UserAtno `protobuf:"bytes,2,rep,name=reward,proto3" json:"reward"` +} + +func (x *PagodaCallengeRaceOverResp) Reset() { + *x = PagodaCallengeRaceOverResp{} + if protoimpl.UnsafeEnabled { + mi := &file_pagoda_pagoda_msg_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PagodaCallengeRaceOverResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PagodaCallengeRaceOverResp) ProtoMessage() {} + +func (x *PagodaCallengeRaceOverResp) ProtoReflect() protoreflect.Message { + mi := &file_pagoda_pagoda_msg_proto_msgTypes[19] + 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 PagodaCallengeRaceOverResp.ProtoReflect.Descriptor instead. +func (*PagodaCallengeRaceOverResp) Descriptor() ([]byte, []int) { + return file_pagoda_pagoda_msg_proto_rawDescGZIP(), []int{19} +} + +func (x *PagodaCallengeRaceOverResp) GetRace() *DBPagodaRace { + if x != nil { + return x.Race + } + return nil +} + +func (x *PagodaCallengeRaceOverResp) GetReward() []*UserAtno { + if x != nil { + return x.Reward + } + return nil +} + +// 获取所有塔的信息 +type PagodaGetRaceReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PagodaGetRaceReq) Reset() { + *x = PagodaGetRaceReq{} + if protoimpl.UnsafeEnabled { + mi := &file_pagoda_pagoda_msg_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PagodaGetRaceReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PagodaGetRaceReq) ProtoMessage() {} + +func (x *PagodaGetRaceReq) ProtoReflect() protoreflect.Message { + mi := &file_pagoda_pagoda_msg_proto_msgTypes[20] + 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 PagodaGetRaceReq.ProtoReflect.Descriptor instead. +func (*PagodaGetRaceReq) Descriptor() ([]byte, []int) { + return file_pagoda_pagoda_msg_proto_rawDescGZIP(), []int{20} +} + +type PagodaGetRaceResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Race []*DBPagodaRace `protobuf:"bytes,1,rep,name=race,proto3" json:"race"` +} + +func (x *PagodaGetRaceResp) Reset() { + *x = PagodaGetRaceResp{} + if protoimpl.UnsafeEnabled { + mi := &file_pagoda_pagoda_msg_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PagodaGetRaceResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PagodaGetRaceResp) ProtoMessage() {} + +func (x *PagodaGetRaceResp) ProtoReflect() protoreflect.Message { + mi := &file_pagoda_pagoda_msg_proto_msgTypes[21] + 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 PagodaGetRaceResp.ProtoReflect.Descriptor instead. +func (*PagodaGetRaceResp) Descriptor() ([]byte, []int) { + return file_pagoda_pagoda_msg_proto_rawDescGZIP(), []int{21} +} + +func (x *PagodaGetRaceResp) GetRace() []*DBPagodaRace { + if x != nil { + return x.Race + } + return nil +} + var File_pagoda_pagoda_msg_proto protoreflect.FileDescriptor var file_pagoda_pagoda_msg_proto_rawDesc = []byte{ @@ -845,7 +1169,36 @@ var file_pagoda_pagoda_msg_proto_rawDesc = []byte{ 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x44, 0x42, 0x50, 0x61, 0x67, 0x6f, 0x64, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x21, 0x0a, 0x05, 0x69, 0x74, 0x6d, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x41, - 0x73, 0x73, 0x65, 0x74, 0x73, 0x52, 0x05, 0x69, 0x74, 0x6d, 0x65, 0x73, 0x42, 0x06, 0x5a, 0x04, + 0x73, 0x73, 0x65, 0x74, 0x73, 0x52, 0x05, 0x69, 0x74, 0x6d, 0x65, 0x73, 0x22, 0x67, 0x0a, 0x15, + 0x50, 0x61, 0x67, 0x6f, 0x64, 0x61, 0x43, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x52, 0x61, + 0x63, 0x65, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x04, 0x72, 0x61, 0x63, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x63, 0x69, 0x64, 0x12, 0x28, 0x0a, 0x06, 0x62, + 0x61, 0x74, 0x74, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x42, 0x61, + 0x74, 0x74, 0x6c, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x62, + 0x61, 0x74, 0x74, 0x6c, 0x65, 0x22, 0x4b, 0x0a, 0x16, 0x50, 0x61, 0x67, 0x6f, 0x64, 0x61, 0x43, + 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x52, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, + 0x1f, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, + 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, + 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x63, + 0x69, 0x64, 0x22, 0x68, 0x0a, 0x19, 0x50, 0x61, 0x67, 0x6f, 0x64, 0x61, 0x43, 0x61, 0x6c, 0x6c, + 0x65, 0x6e, 0x67, 0x65, 0x52, 0x61, 0x63, 0x65, 0x4f, 0x76, 0x65, 0x72, 0x52, 0x65, 0x71, 0x12, + 0x12, 0x0a, 0x04, 0x72, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x72, + 0x61, 0x63, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x03, 0x63, 0x69, 0x64, 0x12, 0x25, 0x0a, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x52, 0x65, + 0x70, 0x6f, 0x72, 0x74, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x22, 0x62, 0x0a, 0x1a, + 0x50, 0x61, 0x67, 0x6f, 0x64, 0x61, 0x43, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x52, 0x61, + 0x63, 0x65, 0x4f, 0x76, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x21, 0x0a, 0x04, 0x72, 0x61, + 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x44, 0x42, 0x50, 0x61, 0x67, + 0x6f, 0x64, 0x61, 0x52, 0x61, 0x63, 0x65, 0x52, 0x04, 0x72, 0x61, 0x63, 0x65, 0x12, 0x21, 0x0a, + 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x09, 0x2e, + 0x55, 0x73, 0x65, 0x72, 0x41, 0x74, 0x6e, 0x6f, 0x52, 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, + 0x22, 0x12, 0x0a, 0x10, 0x50, 0x61, 0x67, 0x6f, 0x64, 0x61, 0x47, 0x65, 0x74, 0x52, 0x61, 0x63, + 0x65, 0x52, 0x65, 0x71, 0x22, 0x36, 0x0a, 0x11, 0x50, 0x61, 0x67, 0x6f, 0x64, 0x61, 0x47, 0x65, + 0x74, 0x52, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x21, 0x0a, 0x04, 0x72, 0x61, 0x63, + 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x44, 0x42, 0x50, 0x61, 0x67, 0x6f, + 0x64, 0x61, 0x52, 0x61, 0x63, 0x65, 0x52, 0x04, 0x72, 0x61, 0x63, 0x65, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } @@ -861,48 +1214,62 @@ func file_pagoda_pagoda_msg_proto_rawDescGZIP() []byte { return file_pagoda_pagoda_msg_proto_rawDescData } -var file_pagoda_pagoda_msg_proto_msgTypes = make([]protoimpl.MessageInfo, 16) +var file_pagoda_pagoda_msg_proto_msgTypes = make([]protoimpl.MessageInfo, 22) var file_pagoda_pagoda_msg_proto_goTypes = []interface{}{ - (*PagodaGetListReq)(nil), // 0: PagodaGetListReq - (*PagodaGetListResp)(nil), // 1: PagodaGetListResp - (*PagodaGetRewardReq)(nil), // 2: PagodaGetRewardReq - (*PagodaGetRewardResp)(nil), // 3: PagodaGetRewardResp - (*PagodaChallengeReq)(nil), // 4: PagodaChallengeReq - (*PagodaChallengeResp)(nil), // 5: PagodaChallengeResp - (*PagodaChallengeOverReq)(nil), // 6: PagodaChallengeOverReq - (*PagodaChallengeOverResp)(nil), // 7: PagodaChallengeOverResp - (*PagodaRankListReq)(nil), // 8: PagodaRankListReq - (*PagodaRankListResp)(nil), // 9: PagodaRankListResp - (*PagodaQueryRecordReq)(nil), // 10: PagodaQueryRecordReq - (*PagodaQueryRecordResp)(nil), // 11: PagodaQueryRecordResp - (*PagodaActivateReq)(nil), // 12: PagodaActivateReq - (*PagodaActivateResp)(nil), // 13: PagodaActivateResp - (*PagodaWarOrderReq)(nil), // 14: PagodaWarOrderReq - (*PagodaWarOrderResp)(nil), // 15: PagodaWarOrderResp - (*DBPagoda)(nil), // 16: DBPagoda - (*BattleFormation)(nil), // 17: BattleFormation - (*BattleInfo)(nil), // 18: BattleInfo - (*BattleReport)(nil), // 19: BattleReport - (*DBPagodaRecord)(nil), // 20: DBPagodaRecord - (*UserAssets)(nil), // 21: UserAssets + (*PagodaGetListReq)(nil), // 0: PagodaGetListReq + (*PagodaGetListResp)(nil), // 1: PagodaGetListResp + (*PagodaGetRewardReq)(nil), // 2: PagodaGetRewardReq + (*PagodaGetRewardResp)(nil), // 3: PagodaGetRewardResp + (*PagodaChallengeReq)(nil), // 4: PagodaChallengeReq + (*PagodaChallengeResp)(nil), // 5: PagodaChallengeResp + (*PagodaChallengeOverReq)(nil), // 6: PagodaChallengeOverReq + (*PagodaChallengeOverResp)(nil), // 7: PagodaChallengeOverResp + (*PagodaRankListReq)(nil), // 8: PagodaRankListReq + (*PagodaRankListResp)(nil), // 9: PagodaRankListResp + (*PagodaQueryRecordReq)(nil), // 10: PagodaQueryRecordReq + (*PagodaQueryRecordResp)(nil), // 11: PagodaQueryRecordResp + (*PagodaActivateReq)(nil), // 12: PagodaActivateReq + (*PagodaActivateResp)(nil), // 13: PagodaActivateResp + (*PagodaWarOrderReq)(nil), // 14: PagodaWarOrderReq + (*PagodaWarOrderResp)(nil), // 15: PagodaWarOrderResp + (*PagodaCallengeRaceReq)(nil), // 16: PagodaCallengeRaceReq + (*PagodaCallengeRaceResp)(nil), // 17: PagodaCallengeRaceResp + (*PagodaCallengeRaceOverReq)(nil), // 18: PagodaCallengeRaceOverReq + (*PagodaCallengeRaceOverResp)(nil), // 19: PagodaCallengeRaceOverResp + (*PagodaGetRaceReq)(nil), // 20: PagodaGetRaceReq + (*PagodaGetRaceResp)(nil), // 21: PagodaGetRaceResp + (*DBPagoda)(nil), // 22: DBPagoda + (*BattleFormation)(nil), // 23: BattleFormation + (*BattleInfo)(nil), // 24: BattleInfo + (*BattleReport)(nil), // 25: BattleReport + (*DBPagodaRecord)(nil), // 26: DBPagodaRecord + (*UserAssets)(nil), // 27: UserAssets + (*DBPagodaRace)(nil), // 28: DBPagodaRace + (*UserAtno)(nil), // 29: UserAtno } var file_pagoda_pagoda_msg_proto_depIdxs = []int32{ - 16, // 0: PagodaGetListResp.data:type_name -> DBPagoda - 16, // 1: PagodaGetRewardResp.data:type_name -> DBPagoda - 17, // 2: PagodaChallengeReq.battle:type_name -> BattleFormation - 18, // 3: PagodaChallengeResp.info:type_name -> BattleInfo - 19, // 4: PagodaChallengeOverReq.report:type_name -> BattleReport - 16, // 5: PagodaChallengeOverResp.data:type_name -> DBPagoda - 20, // 6: PagodaRankListResp.ranks:type_name -> DBPagodaRecord - 20, // 7: PagodaQueryRecordResp.data:type_name -> DBPagodaRecord - 16, // 8: PagodaActivateResp.data:type_name -> DBPagoda - 16, // 9: PagodaWarOrderResp.data:type_name -> DBPagoda - 21, // 10: PagodaWarOrderResp.itmes:type_name -> UserAssets - 11, // [11:11] is the sub-list for method output_type - 11, // [11:11] is the sub-list for method input_type - 11, // [11:11] is the sub-list for extension type_name - 11, // [11:11] is the sub-list for extension extendee - 0, // [0:11] is the sub-list for field type_name + 22, // 0: PagodaGetListResp.data:type_name -> DBPagoda + 22, // 1: PagodaGetRewardResp.data:type_name -> DBPagoda + 23, // 2: PagodaChallengeReq.battle:type_name -> BattleFormation + 24, // 3: PagodaChallengeResp.info:type_name -> BattleInfo + 25, // 4: PagodaChallengeOverReq.report:type_name -> BattleReport + 22, // 5: PagodaChallengeOverResp.data:type_name -> DBPagoda + 26, // 6: PagodaRankListResp.ranks:type_name -> DBPagodaRecord + 26, // 7: PagodaQueryRecordResp.data:type_name -> DBPagodaRecord + 22, // 8: PagodaActivateResp.data:type_name -> DBPagoda + 22, // 9: PagodaWarOrderResp.data:type_name -> DBPagoda + 27, // 10: PagodaWarOrderResp.itmes:type_name -> UserAssets + 23, // 11: PagodaCallengeRaceReq.battle:type_name -> BattleFormation + 24, // 12: PagodaCallengeRaceResp.info:type_name -> BattleInfo + 25, // 13: PagodaCallengeRaceOverReq.report:type_name -> BattleReport + 28, // 14: PagodaCallengeRaceOverResp.race:type_name -> DBPagodaRace + 29, // 15: PagodaCallengeRaceOverResp.reward:type_name -> UserAtno + 28, // 16: PagodaGetRaceResp.race:type_name -> DBPagodaRace + 17, // [17:17] is the sub-list for method output_type + 17, // [17:17] is the sub-list for method input_type + 17, // [17:17] is the sub-list for extension type_name + 17, // [17:17] is the sub-list for extension extendee + 0, // [0:17] is the sub-list for field type_name } func init() { file_pagoda_pagoda_msg_proto_init() } @@ -1106,6 +1473,78 @@ func file_pagoda_pagoda_msg_proto_init() { return nil } } + file_pagoda_pagoda_msg_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PagodaCallengeRaceReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pagoda_pagoda_msg_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PagodaCallengeRaceResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pagoda_pagoda_msg_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PagodaCallengeRaceOverReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pagoda_pagoda_msg_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PagodaCallengeRaceOverResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pagoda_pagoda_msg_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PagodaGetRaceReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pagoda_pagoda_msg_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PagodaGetRaceResp); 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{ @@ -1113,7 +1552,7 @@ func file_pagoda_pagoda_msg_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_pagoda_pagoda_msg_proto_rawDesc, NumEnums: 0, - NumMessages: 16, + NumMessages: 22, NumExtensions: 0, NumServices: 0, }, From ff98a1fba81160e9cdcf78365d37571fc67578ca Mon Sep 17 00:00:00 2001 From: meixiongfeng <766881921@qq.com> Date: Mon, 10 Jul 2023 10:45:36 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E5=8A=9F=E5=A4=AB=E5=A1=94=E9=80=9A?= =?UTF-8?q?=E5=85=B3=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/pagoda/api_challengeover.go | 13 +++ modules/pagoda/api_warorder.go | 113 ----------------------- modules/pagoda/comp_configure.go | 8 ++ pb/pagoda_db.pb.go | 135 ++++++++++++---------------- 4 files changed, 78 insertions(+), 191 deletions(-) diff --git a/modules/pagoda/api_challengeover.go b/modules/pagoda/api_challengeover.go index 94d7fe6b5..11acb8bf8 100644 --- a/modules/pagoda/api_challengeover.go +++ b/modules/pagoda/api_challengeover.go @@ -109,6 +109,19 @@ func (this *apiComp) ChallengeOver(session comm.IUserSession, req *pb.PagodaChal mapData["pagodaId"] = pagoda.PagodaId mapData["type"] = pagoda.Type mapData["data"] = pagoda.Data + // 校验所有塔是否通关 + if !pagoda.Complete { + pagoda.Complete = true + for k, v := range this.module.configure.GetMapFloorData() { + if pagoda.Data[k] != v { + pagoda.Complete = false + break + } + } + if pagoda.Complete { + mapData["complete"] = pagoda.Complete + } + } errdata = this.module.ModifyPagodaData(session.GetUserId(), mapData) session.SendMsg(string(this.module.GetType()), PagodaChallengeOverResp, &pb.PagodaChallengeOverResp{Data: pagoda}) diff --git a/modules/pagoda/api_warorder.go b/modules/pagoda/api_warorder.go index 159af3a34..19e858208 100644 --- a/modules/pagoda/api_warorder.go +++ b/modules/pagoda/api_warorder.go @@ -3,7 +3,6 @@ package pagoda import ( "go_dreamfactory/comm" "go_dreamfactory/pb" - cfg "go_dreamfactory/sys/configure/structs" ) //参数校验 @@ -14,117 +13,5 @@ func (this *apiComp) WarOrderCheck(session comm.IUserSession, req *pb.PagodaWarO // 战令领取 func (this *apiComp) WarOrder(session comm.IUserSession, req *pb.PagodaWarOrderReq) (errdata *pb.ErrorData) { - var ( - list *pb.DBPagoda - resCfg []*cfg.Gameatn - res []*pb.UserAssets - vip bool // 是否有特权 - resID []int32 // 当前可领取的id - vipID []int32 // 有vip的情况 可领取的id - mapData map[string]interface{} - bReward bool - ) - mapData = make(map[string]interface{}, 0) - //this.WarOrderCheck(session, req) - - list, _ = this.module.modelPagoda.getPagodaList(session.GetUserId()) - if list.Id == "" { - errdata = &pb.ErrorData{ - Code: pb.ErrorCode_PagodaConditionErr, // 领取条件没达到 - Title: pb.ErrorCode_PagodaConditionErr.ToString(), - } - return - } - - payPoint := this.module.configure.GetPassCheckPointByTtype(1) - if payPoint != "" { - // 获取特权信息 - vip = this.module.ModulePrivilege.CheckPrivilege(session, payPoint) - } - - if list.PagodaId < list.PassCheckID { // 层数校验 - //code = pb.ErrorCode_PagodaConditionErr // 领取条件没达到 - //return - bReward = true - } - if vip && bReward { - if list.PagodaId < list.VipPassCheckID { // 层数校验 - errdata = &pb.ErrorData{ - Code: pb.ErrorCode_PagodaConditionErr, // 领取条件没达到 - Title: pb.ErrorCode_PagodaConditionErr.ToString(), - } - return - } - } - conf := this.module.configure.GetPassCheckByTtype(1) - - for _, v := range conf { - if v.Parameter <= list.PassCheckID { - continue - } - if v.Parameter <= list.PagodaId { - resID = append(resID, v.Id) - mapData["passCheckID"] = v.Parameter - list.PassCheckID = v.Parameter - } - } - if vip { - for _, v := range conf { - if v.Parameter <= list.VipPassCheckID { - continue - } - if v.Parameter <= list.PagodaId { - vipID = append(vipID, v.Id) - mapData["vipPassCheckID"] = v.Parameter - list.VipPassCheckID = v.Parameter - } - } - } - for _, v := range resID { - if confCheck := this.module.configure.GetPassCheckByID(v); conf != nil { - resCfg = append(resCfg, confCheck.FreeReward) - - } - } - for _, v := range vipID { - if confCheck := this.module.configure.GetPassCheckByID(v); conf != nil { - resCfg = append(resCfg, confCheck.PayReward) - } - } - // 资源整合 - var totalRes []*cfg.Gameatn - for _, v := range resCfg { - b := false - for _, v1 := range totalRes { - if v.A == v1.A && v.T == v1.T { - b = true - v1.N += v.N - break - } - } - if !b { - totalRes = append(totalRes, v) - } - } - if len(totalRes) > 0 { - if errdata = this.module.DispenseRes(session, totalRes, true); errdata != nil { // 发放奖励 - return - } - } - - // 转成协议格式 - for _, v := range totalRes { - res = append(res, &pb.UserAssets{ - A: v.A, - T: v.T, - N: v.N, - }) - } - - errdata = this.module.ModifyPagodaData(session.GetUserId(), mapData) - session.SendMsg(string(this.module.GetType()), PagodaWarOrderResp, &pb.PagodaWarOrderResp{ - Data: list, - Itmes: res, - }) return } diff --git a/modules/pagoda/comp_configure.go b/modules/pagoda/comp_configure.go index 912c8132a..d5ad01c8c 100644 --- a/modules/pagoda/comp_configure.go +++ b/modules/pagoda/comp_configure.go @@ -27,6 +27,7 @@ type configureComp struct { _checkType map[int32][]*cfg.GamePassCheckData // key type _mapPagoda map[int32]*cfg.GamePagodaData + _mapFloor map[int32]int32 // key 页签 value 层数 } //组件初始化接口 @@ -40,6 +41,7 @@ func (this *configureComp) Init(service core.IService, module core.IModule, comp configure.RegisterConfigure(game_passcheck, cfg.NewGamePassCheck, this.LoadPassCheck) configure.RegisterConfigure(game_pagoda, cfg.NewGamePagoda, this.LoadPagoda) + return } @@ -171,9 +173,11 @@ func (this *configureComp) LoadPagoda() { this.hlock.Lock() defer this.hlock.Unlock() this._mapPagoda = make(map[int32]*cfg.GamePagodaData) + this._mapFloor = make(map[int32]int32) for _, value := range configure.GetDataList() { key := value.Tab<<16 + value.LayerNum this._mapPagoda[key] = value + this._mapFloor[value.Tab] = value.LayerNum } return } @@ -182,6 +186,10 @@ func (this *configureComp) LoadPagoda() { return } +func (this *configureComp) GetMapFloorData() (data map[int32]int32) { + return this._mapFloor +} + func (this *configureComp) GetPagodaConfBytab(tab int32, ly int32) (data *cfg.GamePagoda, err error) { if _, ok := this._mapPagoda[tab<<16+ly]; ok { return diff --git a/pb/pagoda_db.pb.go b/pb/pagoda_db.pb.go index 9043656ef..11660a49f 100644 --- a/pb/pagoda_db.pb.go +++ b/pb/pagoda_db.pb.go @@ -25,15 +25,13 @@ type DBPagoda 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 - PagodaId int32 `protobuf:"varint,3,opt,name=pagodaId,proto3" json:"pagodaId" bson:"pagodaId"` //塔层 - Reward map[int32]bool `protobuf:"bytes,4,rep,name=reward,proto3" json:"reward" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` // 是否领奖 - Type int32 `protobuf:"varint,5,opt,name=type,proto3" json:"type"` - Complete bool `protobuf:"varint,6,opt,name=complete,proto3" json:"complete"` // 是否通关 - PassCheckID int32 `protobuf:"varint,7,opt,name=passCheckID,proto3" json:"passCheckID"` // 战令领奖ID - VipPassCheckID int32 `protobuf:"varint,8,opt,name=vipPassCheckID,proto3" json:"vipPassCheckID"` // vip战令领奖ID - Data map[int32]int32 `protobuf:"bytes,9,rep,name=data,proto3" json:"data" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` // key 页签 value 层数 + 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 + PagodaId int32 `protobuf:"varint,3,opt,name=pagodaId,proto3" json:"pagodaId" bson:"pagodaId"` //塔层 + Reward map[int32]bool `protobuf:"bytes,4,rep,name=reward,proto3" json:"reward" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` // 是否领奖 + Type int32 `protobuf:"varint,5,opt,name=type,proto3" json:"type"` + Complete bool `protobuf:"varint,6,opt,name=complete,proto3" json:"complete"` // 是否通关 + Data map[int32]int32 `protobuf:"bytes,7,rep,name=data,proto3" json:"data" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` // key 页签 value 层数 } func (x *DBPagoda) Reset() { @@ -110,20 +108,6 @@ func (x *DBPagoda) GetComplete() bool { return false } -func (x *DBPagoda) GetPassCheckID() int32 { - if x != nil { - return x.PassCheckID - } - return 0 -} - -func (x *DBPagoda) GetVipPassCheckID() int32 { - if x != nil { - return x.VipPassCheckID - } - return 0 -} - func (x *DBPagoda) GetData() map[int32]int32 { if x != nil { return x.Data @@ -400,7 +384,7 @@ var file_pagoda_pagoda_db_proto_rawDesc = []byte{ 0x0a, 0x16, 0x70, 0x61, 0x67, 0x6f, 0x64, 0x61, 0x2f, 0x70, 0x61, 0x67, 0x6f, 0x64, 0x61, 0x5f, 0x64, 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x2f, 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x5f, 0x6d, 0x73, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x22, 0x8e, 0x03, 0x0a, 0x08, 0x44, 0x42, 0x50, 0x61, 0x67, 0x6f, 0x64, 0x61, 0x12, 0x0e, + 0x6f, 0x22, 0xc4, 0x02, 0x0a, 0x08, 0x44, 0x42, 0x50, 0x61, 0x67, 0x6f, 0x64, 0x61, 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, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x6f, 0x64, 0x61, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, @@ -410,61 +394,56 @@ var file_pagoda_pagoda_db_proto_rawDesc = []byte{ 0x74, 0x72, 0x79, 0x52, 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x70, - 0x61, 0x73, 0x73, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x49, 0x44, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x0b, 0x70, 0x61, 0x73, 0x73, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x49, 0x44, 0x12, 0x26, 0x0a, - 0x0e, 0x76, 0x69, 0x70, 0x50, 0x61, 0x73, 0x73, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x49, 0x44, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x76, 0x69, 0x70, 0x50, 0x61, 0x73, 0x73, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x49, 0x44, 0x12, 0x27, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x09, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x44, 0x42, 0x50, 0x61, 0x67, 0x6f, 0x64, 0x61, 0x2e, 0x44, - 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x39, - 0x0a, 0x0b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, + 0x08, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x27, 0x0a, 0x04, 0x64, + 0x61, 0x74, 0x61, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x44, 0x42, 0x50, 0x61, + 0x67, 0x6f, 0x64, 0x61, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, + 0x64, 0x61, 0x74, 0x61, 0x1a, 0x39, 0x0a, 0x0b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 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, 0x08, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, + 0x37, 0x0a, 0x09, 0x44, 0x61, 0x74, 0x61, 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, 0x22, 0x87, 0x02, 0x0a, 0x0e, 0x44, 0x42, 0x50, + 0x61, 0x67, 0x6f, 0x64, 0x61, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 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, 0x1a, 0x0a, + 0x08, 0x70, 0x61, 0x67, 0x6f, 0x64, 0x61, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x08, 0x70, 0x61, 0x67, 0x6f, 0x64, 0x61, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, + 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x63, 0x6f, + 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, + 0x02, 0x6c, 0x76, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x6c, 0x76, 0x12, 0x18, 0x0a, + 0x07, 0x6c, 0x65, 0x61, 0x64, 0x70, 0x6f, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, + 0x6c, 0x65, 0x61, 0x64, 0x70, 0x6f, 0x73, 0x12, 0x1b, 0x0a, 0x04, 0x6c, 0x69, 0x6e, 0x65, 0x18, + 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x4c, 0x69, 0x6e, 0x65, 0x55, 0x70, 0x52, 0x04, + 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x63, 0x6f, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, + 0x12, 0x10, 0x0a, 0x03, 0x74, 0x61, 0x62, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x74, + 0x61, 0x62, 0x22, 0xa1, 0x01, 0x0a, 0x0c, 0x44, 0x42, 0x50, 0x61, 0x67, 0x6f, 0x64, 0x61, 0x52, + 0x61, 0x63, 0x65, 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, 0x2b, 0x0a, 0x04, 0x72, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x44, 0x42, 0x50, 0x61, 0x67, 0x6f, 0x64, 0x61, 0x52, 0x61, + 0x63, 0x65, 0x2e, 0x52, 0x61, 0x63, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x72, 0x61, + 0x63, 0x65, 0x1a, 0x42, 0x0a, 0x09, 0x52, 0x61, 0x63, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x1f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x09, 0x2e, 0x52, 0x61, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xb0, 0x01, 0x0a, 0x08, 0x52, 0x61, 0x63, 0x65, 0x44, + 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x62, 0x75, 0x66, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, + 0x52, 0x03, 0x62, 0x75, 0x66, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x72, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x64, + 0x65, 0x66, 0x65, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x64, 0x65, 0x66, + 0x65, 0x61, 0x74, 0x12, 0x2a, 0x0a, 0x05, 0x66, 0x6c, 0x6f, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x52, 0x61, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x46, 0x6c, + 0x6f, 0x6f, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x66, 0x6c, 0x6f, 0x6f, 0x72, 0x1a, + 0x38, 0x0a, 0x0a, 0x46, 0x6c, 0x6f, 0x6f, 0x72, 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, 0x08, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x37, 0x0a, 0x09, 0x44, 0x61, 0x74, - 0x61, 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, 0x22, 0x87, 0x02, 0x0a, 0x0e, 0x44, 0x42, 0x50, 0x61, 0x67, 0x6f, 0x64, 0x61, 0x52, - 0x65, 0x63, 0x6f, 0x72, 0x64, 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, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x6f, 0x64, - 0x61, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x6f, 0x64, - 0x61, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x6c, 0x76, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x02, 0x6c, 0x76, 0x12, 0x18, 0x0a, 0x07, 0x6c, 0x65, 0x61, 0x64, 0x70, - 0x6f, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6c, 0x65, 0x61, 0x64, 0x70, 0x6f, - 0x73, 0x12, 0x1b, 0x0a, 0x04, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x07, 0x2e, 0x4c, 0x69, 0x6e, 0x65, 0x55, 0x70, 0x52, 0x04, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x1a, - 0x0a, 0x08, 0x63, 0x6f, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x08, 0x63, 0x6f, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x61, - 0x62, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x74, 0x61, 0x62, 0x22, 0xa1, 0x01, 0x0a, - 0x0c, 0x44, 0x42, 0x50, 0x61, 0x67, 0x6f, 0x64, 0x61, 0x52, 0x61, 0x63, 0x65, 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, - 0x2b, 0x0a, 0x04, 0x72, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, - 0x44, 0x42, 0x50, 0x61, 0x67, 0x6f, 0x64, 0x61, 0x52, 0x61, 0x63, 0x65, 0x2e, 0x52, 0x61, 0x63, - 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x72, 0x61, 0x63, 0x65, 0x1a, 0x42, 0x0a, 0x09, - 0x52, 0x61, 0x63, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x1f, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x52, 0x61, 0x63, - 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x22, 0xb0, 0x01, 0x0a, 0x08, 0x52, 0x61, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, - 0x03, 0x62, 0x75, 0x66, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x03, 0x62, 0x75, 0x66, 0x12, - 0x14, 0x0a, 0x05, 0x72, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, - 0x72, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x65, 0x66, 0x65, 0x61, 0x74, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x64, 0x65, 0x66, 0x65, 0x61, 0x74, 0x12, 0x2a, 0x0a, - 0x05, 0x66, 0x6c, 0x6f, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x52, - 0x61, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x46, 0x6c, 0x6f, 0x6f, 0x72, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x52, 0x05, 0x66, 0x6c, 0x6f, 0x6f, 0x72, 0x1a, 0x38, 0x0a, 0x0a, 0x46, 0x6c, 0x6f, - 0x6f, 0x72, 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, 0x03, 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, + 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 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 ( From 6adbd3be879d28d422443c412e7d58f3b4972d8d Mon Sep 17 00:00:00 2001 From: meixiongfeng <766881921@qq.com> Date: Mon, 10 Jul 2023 11:19:22 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E5=8D=8F=E8=AE=AE=E4=BC=98=E5=8C=96=20?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E8=A7=A3=E6=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bin/json/game_circulate.json | 4257 +++++++++++++++++++ bin/json/game_mainstage.json | 16 +- modules/pagoda/comp_configure.go | 25 +- pb/pagoda_db.pb.go | 43 +- pb/pagoda_msg.pb.go | 103 +- sys/configure/structs/Game.Circulate.go | 42 + sys/configure/structs/Game.CirculateData.go | 102 + sys/configure/structs/Tables.go | 7 + 8 files changed, 4518 insertions(+), 77 deletions(-) create mode 100644 bin/json/game_circulate.json create mode 100644 sys/configure/structs/Game.Circulate.go create mode 100644 sys/configure/structs/Game.CirculateData.go diff --git a/bin/json/game_circulate.json b/bin/json/game_circulate.json new file mode 100644 index 000000000..425e69047 --- /dev/null +++ b/bin/json/game_circulate.json @@ -0,0 +1,4257 @@ +[ + { + "id": 11000001, + "name": 1, + "restriction": 0, + "battlereadyID": 129, + "openingtime": [], + "unlock": 1, + "floors": 1, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_1", + "text": "循环之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "attr", + "t": "gold", + "n": 50000 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_1", + "text": "第1层" + }, + "model_display": 13002 + }, + { + "id": 11000002, + "name": 1, + "restriction": 0, + "battlereadyID": 129, + "openingtime": [], + "unlock": 1, + "floors": 2, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_2", + "text": "循环之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "item", + "t": "10000001", + "n": 1 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + }, + { + "a": "item", + "t": "10000005", + "n": 5 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_2", + "text": "第2层" + }, + "model_display": 13002 + }, + { + "id": 11000003, + "name": 1, + "restriction": 0, + "battlereadyID": 129, + "openingtime": [], + "unlock": 1, + "floors": 3, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_3", + "text": "循环之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "attr", + "t": "gold", + "n": 50000 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_3", + "text": "第3层" + }, + "model_display": 13002 + }, + { + "id": 11000004, + "name": 1, + "restriction": 0, + "battlereadyID": 129, + "openingtime": [], + "unlock": 1, + "floors": 4, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_4", + "text": "循环之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "item", + "t": "10000001", + "n": 1 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + }, + { + "a": "item", + "t": "10000005", + "n": 5 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_4", + "text": "第4层" + }, + "model_display": 13002 + }, + { + "id": 11000005, + "name": 1, + "restriction": 0, + "battlereadyID": 129, + "openingtime": [], + "unlock": 1, + "floors": 5, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_5", + "text": "循环之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "attr", + "t": "gold", + "n": 50000 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_5", + "text": "第5层" + }, + "model_display": 13002 + }, + { + "id": 11000006, + "name": 1, + "restriction": 0, + "battlereadyID": 129, + "openingtime": [], + "unlock": 1, + "floors": 6, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_6", + "text": "循环之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "item", + "t": "10000001", + "n": 1 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + }, + { + "a": "item", + "t": "10000005", + "n": 5 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_6", + "text": "第6层" + }, + "model_display": 13002 + }, + { + "id": 11000007, + "name": 1, + "restriction": 0, + "battlereadyID": 129, + "openingtime": [], + "unlock": 1, + "floors": 7, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_7", + "text": "循环之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "attr", + "t": "gold", + "n": 50000 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_7", + "text": "第7层" + }, + "model_display": 13002 + }, + { + "id": 11000008, + "name": 1, + "restriction": 0, + "battlereadyID": 129, + "openingtime": [], + "unlock": 1, + "floors": 8, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_8", + "text": "循环之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "item", + "t": "10000001", + "n": 1 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + }, + { + "a": "item", + "t": "10000005", + "n": 5 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_8", + "text": "第8层" + }, + "model_display": 13002 + }, + { + "id": 11000009, + "name": 1, + "restriction": 0, + "battlereadyID": 129, + "openingtime": [], + "unlock": 1, + "floors": 9, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_9", + "text": "循环之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "attr", + "t": "gold", + "n": 50000 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_9", + "text": "第9层" + }, + "model_display": 13002 + }, + { + "id": 11000010, + "name": 1, + "restriction": 0, + "battlereadyID": 129, + "openingtime": [], + "unlock": 1, + "floors": 10, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_10", + "text": "循环之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "item", + "t": "10000001", + "n": 1 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + }, + { + "a": "item", + "t": "10000005", + "n": 5 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_10", + "text": "第10层" + }, + "model_display": 13002 + }, + { + "id": 11000011, + "name": 1, + "restriction": 0, + "battlereadyID": 129, + "openingtime": [], + "unlock": 1, + "floors": 11, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_11", + "text": "循环之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "attr", + "t": "gold", + "n": 50000 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_11", + "text": "第11层" + }, + "model_display": 13002 + }, + { + "id": 11000012, + "name": 1, + "restriction": 0, + "battlereadyID": 129, + "openingtime": [], + "unlock": 1, + "floors": 12, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_12", + "text": "循环之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "item", + "t": "10000001", + "n": 1 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + }, + { + "a": "item", + "t": "10000005", + "n": 5 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_12", + "text": "第12层" + }, + "model_display": 13002 + }, + { + "id": 11000013, + "name": 1, + "restriction": 0, + "battlereadyID": 129, + "openingtime": [], + "unlock": 1, + "floors": 13, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_13", + "text": "循环之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "attr", + "t": "gold", + "n": 50000 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_13", + "text": "第13层" + }, + "model_display": 13002 + }, + { + "id": 11000014, + "name": 1, + "restriction": 0, + "battlereadyID": 129, + "openingtime": [], + "unlock": 1, + "floors": 14, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_14", + "text": "循环之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "item", + "t": "10000001", + "n": 1 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + }, + { + "a": "item", + "t": "10000005", + "n": 5 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_14", + "text": "第14层" + }, + "model_display": 13002 + }, + { + "id": 11000015, + "name": 1, + "restriction": 0, + "battlereadyID": 129, + "openingtime": [], + "unlock": 1, + "floors": 15, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_15", + "text": "循环之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "attr", + "t": "gold", + "n": 50000 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_15", + "text": "第15层" + }, + "model_display": 13002 + }, + { + "id": 11000016, + "name": 1, + "restriction": 0, + "battlereadyID": 129, + "openingtime": [], + "unlock": 1, + "floors": 16, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_16", + "text": "循环之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "item", + "t": "10000001", + "n": 1 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + }, + { + "a": "item", + "t": "10000005", + "n": 5 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_16", + "text": "第16层" + }, + "model_display": 13002 + }, + { + "id": 11000017, + "name": 1, + "restriction": 0, + "battlereadyID": 129, + "openingtime": [], + "unlock": 1, + "floors": 17, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_17", + "text": "循环之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "attr", + "t": "gold", + "n": 50000 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_17", + "text": "第17层" + }, + "model_display": 13002 + }, + { + "id": 11000018, + "name": 1, + "restriction": 0, + "battlereadyID": 129, + "openingtime": [], + "unlock": 1, + "floors": 18, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_18", + "text": "循环之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "item", + "t": "10000001", + "n": 1 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + }, + { + "a": "item", + "t": "10000005", + "n": 5 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_18", + "text": "第18层" + }, + "model_display": 13002 + }, + { + "id": 11000019, + "name": 1, + "restriction": 0, + "battlereadyID": 129, + "openingtime": [], + "unlock": 1, + "floors": 19, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_19", + "text": "循环之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "attr", + "t": "gold", + "n": 50000 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_19", + "text": "第19层" + }, + "model_display": 13002 + }, + { + "id": 11000020, + "name": 1, + "restriction": 0, + "battlereadyID": 129, + "openingtime": [], + "unlock": 1, + "floors": 20, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_20", + "text": "循环之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "item", + "t": "10000001", + "n": 1 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + }, + { + "a": "item", + "t": "10000005", + "n": 5 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_20", + "text": "第20层" + }, + "model_display": 13002 + }, + { + "id": 11000021, + "name": 1, + "restriction": 0, + "battlereadyID": 129, + "openingtime": [], + "unlock": 1, + "floors": 21, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_21", + "text": "循环之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "attr", + "t": "gold", + "n": 50000 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_21", + "text": "第21层" + }, + "model_display": 13002 + }, + { + "id": 11000022, + "name": 1, + "restriction": 0, + "battlereadyID": 129, + "openingtime": [], + "unlock": 1, + "floors": 22, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_22", + "text": "循环之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "item", + "t": "10000001", + "n": 1 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + }, + { + "a": "item", + "t": "10000005", + "n": 5 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_22", + "text": "第22层" + }, + "model_display": 13002 + }, + { + "id": 11000023, + "name": 1, + "restriction": 0, + "battlereadyID": 129, + "openingtime": [], + "unlock": 1, + "floors": 23, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_23", + "text": "循环之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "attr", + "t": "gold", + "n": 50000 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_23", + "text": "第23层" + }, + "model_display": 13002 + }, + { + "id": 11000024, + "name": 1, + "restriction": 0, + "battlereadyID": 129, + "openingtime": [], + "unlock": 1, + "floors": 24, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_24", + "text": "循环之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "item", + "t": "10000001", + "n": 1 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + }, + { + "a": "item", + "t": "10000005", + "n": 5 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_24", + "text": "第24层" + }, + "model_display": 13002 + }, + { + "id": 11000025, + "name": 1, + "restriction": 0, + "battlereadyID": 129, + "openingtime": [], + "unlock": 1, + "floors": 25, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_25", + "text": "循环之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "attr", + "t": "gold", + "n": 50000 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_25", + "text": "第25层" + }, + "model_display": 13002 + }, + { + "id": 11000026, + "name": 1, + "restriction": 0, + "battlereadyID": 129, + "openingtime": [], + "unlock": 1, + "floors": 26, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_26", + "text": "循环之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "item", + "t": "10000001", + "n": 1 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + }, + { + "a": "item", + "t": "10000005", + "n": 5 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_26", + "text": "第26层" + }, + "model_display": 13002 + }, + { + "id": 11000027, + "name": 1, + "restriction": 0, + "battlereadyID": 129, + "openingtime": [], + "unlock": 1, + "floors": 27, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_27", + "text": "循环之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "attr", + "t": "gold", + "n": 50000 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_27", + "text": "第27层" + }, + "model_display": 13002 + }, + { + "id": 11000028, + "name": 1, + "restriction": 0, + "battlereadyID": 129, + "openingtime": [], + "unlock": 1, + "floors": 28, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_28", + "text": "循环之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "item", + "t": "10000001", + "n": 1 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + }, + { + "a": "item", + "t": "10000005", + "n": 5 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_28", + "text": "第28层" + }, + "model_display": 13002 + }, + { + "id": 11000029, + "name": 1, + "restriction": 0, + "battlereadyID": 129, + "openingtime": [], + "unlock": 1, + "floors": 29, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_29", + "text": "循环之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "attr", + "t": "gold", + "n": 50000 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_29", + "text": "第29层" + }, + "model_display": 13002 + }, + { + "id": 11000030, + "name": 1, + "restriction": 0, + "battlereadyID": 129, + "openingtime": [], + "unlock": 1, + "floors": 30, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_30", + "text": "循环之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "item", + "t": "10000001", + "n": 1 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + }, + { + "a": "item", + "t": "10000005", + "n": 5 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_30", + "text": "第30层" + }, + "model_display": 13002 + }, + { + "id": 11000031, + "name": 1, + "restriction": 0, + "battlereadyID": 129, + "openingtime": [], + "unlock": 1, + "floors": 31, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_31", + "text": "循环之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "attr", + "t": "gold", + "n": 50000 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_31", + "text": "第31层" + }, + "model_display": 13002 + }, + { + "id": 11000032, + "name": 1, + "restriction": 0, + "battlereadyID": 129, + "openingtime": [], + "unlock": 1, + "floors": 32, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_32", + "text": "循环之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "item", + "t": "10000001", + "n": 1 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + }, + { + "a": "item", + "t": "10000005", + "n": 5 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_32", + "text": "第32层" + }, + "model_display": 13002 + }, + { + "id": 11000033, + "name": 1, + "restriction": 0, + "battlereadyID": 129, + "openingtime": [], + "unlock": 1, + "floors": 33, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_33", + "text": "循环之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "attr", + "t": "gold", + "n": 50000 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_33", + "text": "第33层" + }, + "model_display": 13002 + }, + { + "id": 11000034, + "name": 1, + "restriction": 0, + "battlereadyID": 129, + "openingtime": [], + "unlock": 1, + "floors": 34, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_34", + "text": "循环之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "item", + "t": "10000001", + "n": 1 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + }, + { + "a": "item", + "t": "10000005", + "n": 5 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_34", + "text": "第34层" + }, + "model_display": 13002 + }, + { + "id": 11000035, + "name": 1, + "restriction": 0, + "battlereadyID": 129, + "openingtime": [], + "unlock": 1, + "floors": 35, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_35", + "text": "循环之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "attr", + "t": "gold", + "n": 50000 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_35", + "text": "第35层" + }, + "model_display": 13002 + }, + { + "id": 11000036, + "name": 1, + "restriction": 0, + "battlereadyID": 129, + "openingtime": [], + "unlock": 1, + "floors": 36, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_36", + "text": "循环之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "item", + "t": "10000001", + "n": 1 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + }, + { + "a": "item", + "t": "10000005", + "n": 5 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_36", + "text": "第36层" + }, + "model_display": 13002 + }, + { + "id": 11000037, + "name": 1, + "restriction": 0, + "battlereadyID": 129, + "openingtime": [], + "unlock": 1, + "floors": 37, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_37", + "text": "循环之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "attr", + "t": "gold", + "n": 50000 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_37", + "text": "第37层" + }, + "model_display": 13002 + }, + { + "id": 11000038, + "name": 1, + "restriction": 0, + "battlereadyID": 129, + "openingtime": [], + "unlock": 1, + "floors": 38, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_38", + "text": "循环之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "item", + "t": "10000001", + "n": 1 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + }, + { + "a": "item", + "t": "10000005", + "n": 5 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_38", + "text": "第38层" + }, + "model_display": 13002 + }, + { + "id": 11000039, + "name": 1, + "restriction": 0, + "battlereadyID": 129, + "openingtime": [], + "unlock": 1, + "floors": 39, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_39", + "text": "循环之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "attr", + "t": "gold", + "n": 50000 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_39", + "text": "第39层" + }, + "model_display": 13002 + }, + { + "id": 11000040, + "name": 1, + "restriction": 0, + "battlereadyID": 129, + "openingtime": [], + "unlock": 1, + "floors": 40, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_40", + "text": "循环之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "item", + "t": "10000001", + "n": 1 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + }, + { + "a": "item", + "t": "10000005", + "n": 5 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_40", + "text": "第40层" + }, + "model_display": 13002 + }, + { + "id": 11000041, + "name": 1, + "restriction": 0, + "battlereadyID": 129, + "openingtime": [], + "unlock": 1, + "floors": 41, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_41", + "text": "循环之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "attr", + "t": "gold", + "n": 50000 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_41", + "text": "第41层" + }, + "model_display": 13002 + }, + { + "id": 11000042, + "name": 1, + "restriction": 0, + "battlereadyID": 129, + "openingtime": [], + "unlock": 1, + "floors": 42, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_42", + "text": "循环之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "item", + "t": "10000001", + "n": 1 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + }, + { + "a": "item", + "t": "10000005", + "n": 5 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_42", + "text": "第42层" + }, + "model_display": 13002 + }, + { + "id": 11000043, + "name": 1, + "restriction": 0, + "battlereadyID": 129, + "openingtime": [], + "unlock": 1, + "floors": 43, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_43", + "text": "循环之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "attr", + "t": "gold", + "n": 50000 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_43", + "text": "第43层" + }, + "model_display": 13002 + }, + { + "id": 11000044, + "name": 1, + "restriction": 0, + "battlereadyID": 129, + "openingtime": [], + "unlock": 1, + "floors": 44, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_44", + "text": "循环之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "item", + "t": "10000001", + "n": 1 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + }, + { + "a": "item", + "t": "10000005", + "n": 5 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_44", + "text": "第44层" + }, + "model_display": 13002 + }, + { + "id": 11000045, + "name": 1, + "restriction": 0, + "battlereadyID": 129, + "openingtime": [], + "unlock": 1, + "floors": 45, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_45", + "text": "循环之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "attr", + "t": "gold", + "n": 50000 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_45", + "text": "第45层" + }, + "model_display": 13002 + }, + { + "id": 11000046, + "name": 1, + "restriction": 0, + "battlereadyID": 129, + "openingtime": [], + "unlock": 1, + "floors": 46, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_46", + "text": "循环之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "item", + "t": "10000001", + "n": 1 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + }, + { + "a": "item", + "t": "10000005", + "n": 5 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_46", + "text": "第46层" + }, + "model_display": 13002 + }, + { + "id": 11000047, + "name": 1, + "restriction": 0, + "battlereadyID": 129, + "openingtime": [], + "unlock": 1, + "floors": 47, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_47", + "text": "循环之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "attr", + "t": "gold", + "n": 50000 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_47", + "text": "第47层" + }, + "model_display": 13002 + }, + { + "id": 11000048, + "name": 1, + "restriction": 0, + "battlereadyID": 129, + "openingtime": [], + "unlock": 1, + "floors": 48, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_48", + "text": "循环之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "item", + "t": "10000001", + "n": 1 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + }, + { + "a": "item", + "t": "10000005", + "n": 5 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_48", + "text": "第48层" + }, + "model_display": 13002 + }, + { + "id": 11000049, + "name": 1, + "restriction": 0, + "battlereadyID": 129, + "openingtime": [], + "unlock": 1, + "floors": 49, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_49", + "text": "循环之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "attr", + "t": "gold", + "n": 50000 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_49", + "text": "第49层" + }, + "model_display": 13002 + }, + { + "id": 11000050, + "name": 1, + "restriction": 0, + "battlereadyID": 129, + "openingtime": [], + "unlock": 1, + "floors": 50, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_50", + "text": "循环之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "item", + "t": "10000001", + "n": 1 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + }, + { + "a": "item", + "t": "10000005", + "n": 5 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_50", + "text": "第50层" + }, + "model_display": 13002 + }, + { + "id": 21000001, + "name": 2, + "restriction": 1, + "battlereadyID": 129, + "openingtime": [ + 1, + 5, + 7 + ], + "unlock": 1100102, + "floors": 1, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_51", + "text": "真诚阵营之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "attr", + "t": "gold", + "n": 50000 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_51", + "text": "第1层" + }, + "model_display": 0 + }, + { + "id": 21000002, + "name": 2, + "restriction": 1, + "battlereadyID": 129, + "openingtime": [ + 1, + 5, + 7 + ], + "unlock": 1100102, + "floors": 2, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_52", + "text": "真诚阵营之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "item", + "t": "10000001", + "n": 1 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + }, + { + "a": "item", + "t": "10000005", + "n": 5 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_52", + "text": "第2层" + }, + "model_display": 0 + }, + { + "id": 21000003, + "name": 2, + "restriction": 1, + "battlereadyID": 129, + "openingtime": [ + 1, + 5, + 7 + ], + "unlock": 1100102, + "floors": 3, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_53", + "text": "真诚阵营之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "attr", + "t": "gold", + "n": 50000 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_53", + "text": "第3层" + }, + "model_display": 0 + }, + { + "id": 21000004, + "name": 2, + "restriction": 1, + "battlereadyID": 129, + "openingtime": [ + 1, + 5, + 7 + ], + "unlock": 1100102, + "floors": 4, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_54", + "text": "真诚阵营之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "item", + "t": "10000001", + "n": 1 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + }, + { + "a": "item", + "t": "10000005", + "n": 5 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_54", + "text": "第4层" + }, + "model_display": 0 + }, + { + "id": 21000005, + "name": 2, + "restriction": 1, + "battlereadyID": 129, + "openingtime": [ + 1, + 5, + 7 + ], + "unlock": 1100102, + "floors": 5, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_55", + "text": "真诚阵营之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "attr", + "t": "gold", + "n": 50000 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_55", + "text": "第5层" + }, + "model_display": 0 + }, + { + "id": 21000006, + "name": 2, + "restriction": 1, + "battlereadyID": 129, + "openingtime": [ + 1, + 5, + 7 + ], + "unlock": 1100102, + "floors": 6, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_56", + "text": "真诚阵营之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "item", + "t": "10000001", + "n": 1 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + }, + { + "a": "item", + "t": "10000005", + "n": 5 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_56", + "text": "第6层" + }, + "model_display": 0 + }, + { + "id": 21000007, + "name": 2, + "restriction": 1, + "battlereadyID": 129, + "openingtime": [ + 1, + 5, + 7 + ], + "unlock": 1100102, + "floors": 7, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_57", + "text": "真诚阵营之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "attr", + "t": "gold", + "n": 50000 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_57", + "text": "第7层" + }, + "model_display": 0 + }, + { + "id": 21000008, + "name": 2, + "restriction": 1, + "battlereadyID": 129, + "openingtime": [ + 1, + 5, + 7 + ], + "unlock": 1100102, + "floors": 8, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_58", + "text": "真诚阵营之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "item", + "t": "10000001", + "n": 1 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + }, + { + "a": "item", + "t": "10000005", + "n": 5 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_58", + "text": "第8层" + }, + "model_display": 0 + }, + { + "id": 21000009, + "name": 2, + "restriction": 1, + "battlereadyID": 129, + "openingtime": [ + 1, + 5, + 7 + ], + "unlock": 1100102, + "floors": 9, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_59", + "text": "真诚阵营之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "attr", + "t": "gold", + "n": 50000 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_59", + "text": "第9层" + }, + "model_display": 0 + }, + { + "id": 21000010, + "name": 2, + "restriction": 1, + "battlereadyID": 129, + "openingtime": [ + 1, + 5, + 7 + ], + "unlock": 1100102, + "floors": 10, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_60", + "text": "真诚阵营之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "item", + "t": "10000001", + "n": 1 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + }, + { + "a": "item", + "t": "10000005", + "n": 5 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_60", + "text": "第10层" + }, + "model_display": 0 + }, + { + "id": 21000011, + "name": 2, + "restriction": 1, + "battlereadyID": 129, + "openingtime": [ + 1, + 5, + 7 + ], + "unlock": 1100102, + "floors": 11, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_61", + "text": "真诚阵营之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "attr", + "t": "gold", + "n": 50000 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_61", + "text": "第11层" + }, + "model_display": 0 + }, + { + "id": 21000012, + "name": 2, + "restriction": 1, + "battlereadyID": 129, + "openingtime": [ + 1, + 5, + 7 + ], + "unlock": 1100102, + "floors": 12, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_62", + "text": "真诚阵营之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "item", + "t": "10000001", + "n": 1 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + }, + { + "a": "item", + "t": "10000005", + "n": 5 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_62", + "text": "第12层" + }, + "model_display": 0 + }, + { + "id": 21000013, + "name": 2, + "restriction": 1, + "battlereadyID": 129, + "openingtime": [ + 1, + 5, + 7 + ], + "unlock": 1100102, + "floors": 13, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_63", + "text": "真诚阵营之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "attr", + "t": "gold", + "n": 50000 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_63", + "text": "第13层" + }, + "model_display": 0 + }, + { + "id": 21000014, + "name": 2, + "restriction": 1, + "battlereadyID": 129, + "openingtime": [ + 1, + 5, + 7 + ], + "unlock": 1100102, + "floors": 14, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_64", + "text": "真诚阵营之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "item", + "t": "10000001", + "n": 1 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + }, + { + "a": "item", + "t": "10000005", + "n": 5 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_64", + "text": "第14层" + }, + "model_display": 0 + }, + { + "id": 21000015, + "name": 2, + "restriction": 1, + "battlereadyID": 129, + "openingtime": [ + 1, + 5, + 7 + ], + "unlock": 1100102, + "floors": 15, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_65", + "text": "真诚阵营之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "attr", + "t": "gold", + "n": 50000 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_65", + "text": "第15层" + }, + "model_display": 0 + }, + { + "id": 21000016, + "name": 2, + "restriction": 1, + "battlereadyID": 129, + "openingtime": [ + 1, + 5, + 7 + ], + "unlock": 1100102, + "floors": 16, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_66", + "text": "真诚阵营之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "item", + "t": "10000001", + "n": 1 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + }, + { + "a": "item", + "t": "10000005", + "n": 5 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_66", + "text": "第16层" + }, + "model_display": 0 + }, + { + "id": 21000017, + "name": 2, + "restriction": 1, + "battlereadyID": 129, + "openingtime": [ + 1, + 5, + 7 + ], + "unlock": 1100102, + "floors": 17, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_67", + "text": "真诚阵营之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "attr", + "t": "gold", + "n": 50000 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_67", + "text": "第17层" + }, + "model_display": 0 + }, + { + "id": 21000018, + "name": 2, + "restriction": 1, + "battlereadyID": 129, + "openingtime": [ + 1, + 5, + 7 + ], + "unlock": 1100102, + "floors": 18, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_68", + "text": "真诚阵营之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "item", + "t": "10000001", + "n": 1 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + }, + { + "a": "item", + "t": "10000005", + "n": 5 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_68", + "text": "第18层" + }, + "model_display": 0 + }, + { + "id": 21000019, + "name": 2, + "restriction": 1, + "battlereadyID": 129, + "openingtime": [ + 1, + 5, + 7 + ], + "unlock": 1100102, + "floors": 19, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_69", + "text": "真诚阵营之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "attr", + "t": "gold", + "n": 50000 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_69", + "text": "第19层" + }, + "model_display": 0 + }, + { + "id": 21000020, + "name": 2, + "restriction": 1, + "battlereadyID": 129, + "openingtime": [ + 1, + 5, + 7 + ], + "unlock": 1100102, + "floors": 20, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_70", + "text": "真诚阵营之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "item", + "t": "10000001", + "n": 1 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + }, + { + "a": "item", + "t": "10000005", + "n": 5 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_70", + "text": "第20层" + }, + "model_display": 0 + }, + { + "id": 22000001, + "name": 2, + "restriction": 2, + "battlereadyID": 129, + "openingtime": [ + 2, + 5, + 7 + ], + "unlock": 1100102, + "floors": 1, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_71", + "text": "共情阵营之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "attr", + "t": "gold", + "n": 50000 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_71", + "text": "第1层" + }, + "model_display": 0 + }, + { + "id": 22000002, + "name": 2, + "restriction": 2, + "battlereadyID": 129, + "openingtime": [ + 2, + 5, + 7 + ], + "unlock": 1100102, + "floors": 2, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_72", + "text": "共情阵营之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "item", + "t": "10000001", + "n": 1 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + }, + { + "a": "item", + "t": "10000005", + "n": 5 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_72", + "text": "第2层" + }, + "model_display": 0 + }, + { + "id": 22000003, + "name": 2, + "restriction": 2, + "battlereadyID": 129, + "openingtime": [ + 2, + 5, + 7 + ], + "unlock": 1100102, + "floors": 3, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_73", + "text": "共情阵营之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "attr", + "t": "gold", + "n": 50000 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_73", + "text": "第3层" + }, + "model_display": 0 + }, + { + "id": 22000004, + "name": 2, + "restriction": 2, + "battlereadyID": 129, + "openingtime": [ + 2, + 5, + 7 + ], + "unlock": 1100102, + "floors": 4, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_74", + "text": "共情阵营之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "item", + "t": "10000001", + "n": 1 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + }, + { + "a": "item", + "t": "10000005", + "n": 5 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_74", + "text": "第4层" + }, + "model_display": 0 + }, + { + "id": 22000005, + "name": 2, + "restriction": 2, + "battlereadyID": 129, + "openingtime": [ + 2, + 5, + 7 + ], + "unlock": 1100102, + "floors": 5, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_75", + "text": "共情阵营之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "attr", + "t": "gold", + "n": 50000 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_75", + "text": "第5层" + }, + "model_display": 0 + }, + { + "id": 22000006, + "name": 2, + "restriction": 2, + "battlereadyID": 129, + "openingtime": [ + 2, + 5, + 7 + ], + "unlock": 1100102, + "floors": 6, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_76", + "text": "共情阵营之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "item", + "t": "10000001", + "n": 1 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + }, + { + "a": "item", + "t": "10000005", + "n": 5 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_76", + "text": "第6层" + }, + "model_display": 0 + }, + { + "id": 22000007, + "name": 2, + "restriction": 2, + "battlereadyID": 129, + "openingtime": [ + 2, + 5, + 7 + ], + "unlock": 1100102, + "floors": 7, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_77", + "text": "共情阵营之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "attr", + "t": "gold", + "n": 50000 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_77", + "text": "第7层" + }, + "model_display": 0 + }, + { + "id": 22000008, + "name": 2, + "restriction": 2, + "battlereadyID": 129, + "openingtime": [ + 2, + 5, + 7 + ], + "unlock": 1100102, + "floors": 8, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_78", + "text": "共情阵营之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "item", + "t": "10000001", + "n": 1 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + }, + { + "a": "item", + "t": "10000005", + "n": 5 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_78", + "text": "第8层" + }, + "model_display": 0 + }, + { + "id": 22000009, + "name": 2, + "restriction": 2, + "battlereadyID": 129, + "openingtime": [ + 2, + 5, + 7 + ], + "unlock": 1100102, + "floors": 9, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_79", + "text": "共情阵营之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "attr", + "t": "gold", + "n": 50000 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_79", + "text": "第9层" + }, + "model_display": 0 + }, + { + "id": 22000010, + "name": 2, + "restriction": 2, + "battlereadyID": 129, + "openingtime": [ + 2, + 5, + 7 + ], + "unlock": 1100102, + "floors": 10, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_80", + "text": "共情阵营之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "item", + "t": "10000001", + "n": 1 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + }, + { + "a": "item", + "t": "10000005", + "n": 5 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_80", + "text": "第10层" + }, + "model_display": 0 + }, + { + "id": 22000011, + "name": 2, + "restriction": 2, + "battlereadyID": 129, + "openingtime": [ + 2, + 5, + 7 + ], + "unlock": 1100102, + "floors": 11, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_81", + "text": "共情阵营之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "attr", + "t": "gold", + "n": 50000 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_81", + "text": "第11层" + }, + "model_display": 0 + }, + { + "id": 22000012, + "name": 2, + "restriction": 2, + "battlereadyID": 129, + "openingtime": [ + 2, + 5, + 7 + ], + "unlock": 1100102, + "floors": 12, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_82", + "text": "共情阵营之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "item", + "t": "10000001", + "n": 1 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + }, + { + "a": "item", + "t": "10000005", + "n": 5 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_82", + "text": "第12层" + }, + "model_display": 0 + }, + { + "id": 22000013, + "name": 2, + "restriction": 2, + "battlereadyID": 129, + "openingtime": [ + 2, + 5, + 7 + ], + "unlock": 1100102, + "floors": 13, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_83", + "text": "共情阵营之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "attr", + "t": "gold", + "n": 50000 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_83", + "text": "第13层" + }, + "model_display": 0 + }, + { + "id": 22000014, + "name": 2, + "restriction": 2, + "battlereadyID": 129, + "openingtime": [ + 2, + 5, + 7 + ], + "unlock": 1100102, + "floors": 14, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_84", + "text": "共情阵营之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "item", + "t": "10000001", + "n": 1 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + }, + { + "a": "item", + "t": "10000005", + "n": 5 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_84", + "text": "第14层" + }, + "model_display": 0 + }, + { + "id": 22000015, + "name": 2, + "restriction": 2, + "battlereadyID": 129, + "openingtime": [ + 2, + 5, + 7 + ], + "unlock": 1100102, + "floors": 15, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_85", + "text": "共情阵营之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "attr", + "t": "gold", + "n": 50000 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_85", + "text": "第15层" + }, + "model_display": 0 + }, + { + "id": 22000016, + "name": 2, + "restriction": 2, + "battlereadyID": 129, + "openingtime": [ + 2, + 5, + 7 + ], + "unlock": 1100102, + "floors": 16, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_86", + "text": "共情阵营之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "item", + "t": "10000001", + "n": 1 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + }, + { + "a": "item", + "t": "10000005", + "n": 5 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_86", + "text": "第16层" + }, + "model_display": 0 + }, + { + "id": 22000017, + "name": 2, + "restriction": 2, + "battlereadyID": 129, + "openingtime": [ + 2, + 5, + 7 + ], + "unlock": 1100102, + "floors": 17, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_87", + "text": "共情阵营之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "attr", + "t": "gold", + "n": 50000 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_87", + "text": "第17层" + }, + "model_display": 0 + }, + { + "id": 22000018, + "name": 2, + "restriction": 2, + "battlereadyID": 129, + "openingtime": [ + 2, + 5, + 7 + ], + "unlock": 1100102, + "floors": 18, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_88", + "text": "共情阵营之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "item", + "t": "10000001", + "n": 1 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + }, + { + "a": "item", + "t": "10000005", + "n": 5 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_88", + "text": "第18层" + }, + "model_display": 0 + }, + { + "id": 22000019, + "name": 2, + "restriction": 2, + "battlereadyID": 129, + "openingtime": [ + 2, + 5, + 7 + ], + "unlock": 1100102, + "floors": 19, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_89", + "text": "共情阵营之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "attr", + "t": "gold", + "n": 50000 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_89", + "text": "第19层" + }, + "model_display": 0 + }, + { + "id": 22000020, + "name": 2, + "restriction": 2, + "battlereadyID": 129, + "openingtime": [ + 2, + 5, + 7 + ], + "unlock": 1100102, + "floors": 20, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_90", + "text": "共情阵营之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "item", + "t": "10000001", + "n": 1 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + }, + { + "a": "item", + "t": "10000005", + "n": 5 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_90", + "text": "第20层" + }, + "model_display": 0 + }, + { + "id": 23000001, + "name": 2, + "restriction": 3, + "battlereadyID": 129, + "openingtime": [ + 3, + 6, + 7 + ], + "unlock": 1100102, + "floors": 1, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_91", + "text": "直觉阵营之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "attr", + "t": "gold", + "n": 50000 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_91", + "text": "第1层" + }, + "model_display": 0 + }, + { + "id": 23000002, + "name": 2, + "restriction": 3, + "battlereadyID": 129, + "openingtime": [ + 3, + 6, + 7 + ], + "unlock": 1100102, + "floors": 2, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_92", + "text": "直觉阵营之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "item", + "t": "10000001", + "n": 1 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + }, + { + "a": "item", + "t": "10000005", + "n": 5 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_92", + "text": "第2层" + }, + "model_display": 0 + }, + { + "id": 23000003, + "name": 2, + "restriction": 3, + "battlereadyID": 129, + "openingtime": [ + 3, + 6, + 7 + ], + "unlock": 1100102, + "floors": 3, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_93", + "text": "直觉阵营之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "attr", + "t": "gold", + "n": 50000 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_93", + "text": "第3层" + }, + "model_display": 0 + }, + { + "id": 23000004, + "name": 2, + "restriction": 3, + "battlereadyID": 129, + "openingtime": [ + 3, + 6, + 7 + ], + "unlock": 1100102, + "floors": 4, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_94", + "text": "直觉阵营之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "item", + "t": "10000001", + "n": 1 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + }, + { + "a": "item", + "t": "10000005", + "n": 5 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_94", + "text": "第4层" + }, + "model_display": 0 + }, + { + "id": 23000005, + "name": 2, + "restriction": 3, + "battlereadyID": 129, + "openingtime": [ + 3, + 6, + 7 + ], + "unlock": 1100102, + "floors": 5, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_95", + "text": "直觉阵营之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "attr", + "t": "gold", + "n": 50000 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_95", + "text": "第5层" + }, + "model_display": 0 + }, + { + "id": 23000006, + "name": 2, + "restriction": 3, + "battlereadyID": 129, + "openingtime": [ + 3, + 6, + 7 + ], + "unlock": 1100102, + "floors": 6, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_96", + "text": "直觉阵营之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "item", + "t": "10000001", + "n": 1 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + }, + { + "a": "item", + "t": "10000005", + "n": 5 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_96", + "text": "第6层" + }, + "model_display": 0 + }, + { + "id": 23000007, + "name": 2, + "restriction": 3, + "battlereadyID": 129, + "openingtime": [ + 3, + 6, + 7 + ], + "unlock": 1100102, + "floors": 7, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_97", + "text": "直觉阵营之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "attr", + "t": "gold", + "n": 50000 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_97", + "text": "第7层" + }, + "model_display": 0 + }, + { + "id": 23000008, + "name": 2, + "restriction": 3, + "battlereadyID": 129, + "openingtime": [ + 3, + 6, + 7 + ], + "unlock": 1100102, + "floors": 8, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_98", + "text": "直觉阵营之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "item", + "t": "10000001", + "n": 1 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + }, + { + "a": "item", + "t": "10000005", + "n": 5 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_98", + "text": "第8层" + }, + "model_display": 0 + }, + { + "id": 23000009, + "name": 2, + "restriction": 3, + "battlereadyID": 129, + "openingtime": [ + 3, + 6, + 7 + ], + "unlock": 1100102, + "floors": 9, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_99", + "text": "直觉阵营之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "attr", + "t": "gold", + "n": 50000 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_99", + "text": "第9层" + }, + "model_display": 0 + }, + { + "id": 23000010, + "name": 2, + "restriction": 3, + "battlereadyID": 129, + "openingtime": [ + 3, + 6, + 7 + ], + "unlock": 1100102, + "floors": 10, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_100", + "text": "直觉阵营之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "item", + "t": "10000001", + "n": 1 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + }, + { + "a": "item", + "t": "10000005", + "n": 5 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_100", + "text": "第10层" + }, + "model_display": 0 + }, + { + "id": 23000011, + "name": 2, + "restriction": 3, + "battlereadyID": 129, + "openingtime": [ + 3, + 6, + 7 + ], + "unlock": 1100102, + "floors": 11, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_101", + "text": "直觉阵营之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "attr", + "t": "gold", + "n": 50000 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_101", + "text": "第11层" + }, + "model_display": 0 + }, + { + "id": 23000012, + "name": 2, + "restriction": 3, + "battlereadyID": 129, + "openingtime": [ + 3, + 6, + 7 + ], + "unlock": 1100102, + "floors": 12, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_102", + "text": "直觉阵营之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "item", + "t": "10000001", + "n": 1 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + }, + { + "a": "item", + "t": "10000005", + "n": 5 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_102", + "text": "第12层" + }, + "model_display": 0 + }, + { + "id": 23000013, + "name": 2, + "restriction": 3, + "battlereadyID": 129, + "openingtime": [ + 3, + 6, + 7 + ], + "unlock": 1100102, + "floors": 13, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_103", + "text": "直觉阵营之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "attr", + "t": "gold", + "n": 50000 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_103", + "text": "第13层" + }, + "model_display": 0 + }, + { + "id": 23000014, + "name": 2, + "restriction": 3, + "battlereadyID": 129, + "openingtime": [ + 3, + 6, + 7 + ], + "unlock": 1100102, + "floors": 14, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_104", + "text": "直觉阵营之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "item", + "t": "10000001", + "n": 1 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + }, + { + "a": "item", + "t": "10000005", + "n": 5 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_104", + "text": "第14层" + }, + "model_display": 0 + }, + { + "id": 23000015, + "name": 2, + "restriction": 3, + "battlereadyID": 129, + "openingtime": [ + 3, + 6, + 7 + ], + "unlock": 1100102, + "floors": 15, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_105", + "text": "直觉阵营之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "attr", + "t": "gold", + "n": 50000 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_105", + "text": "第15层" + }, + "model_display": 0 + }, + { + "id": 23000016, + "name": 2, + "restriction": 3, + "battlereadyID": 129, + "openingtime": [ + 3, + 6, + 7 + ], + "unlock": 1100102, + "floors": 16, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_106", + "text": "直觉阵营之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "item", + "t": "10000001", + "n": 1 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + }, + { + "a": "item", + "t": "10000005", + "n": 5 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_106", + "text": "第16层" + }, + "model_display": 0 + }, + { + "id": 23000017, + "name": 2, + "restriction": 3, + "battlereadyID": 129, + "openingtime": [ + 3, + 6, + 7 + ], + "unlock": 1100102, + "floors": 17, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_107", + "text": "直觉阵营之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "attr", + "t": "gold", + "n": 50000 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_107", + "text": "第17层" + }, + "model_display": 0 + }, + { + "id": 23000018, + "name": 2, + "restriction": 3, + "battlereadyID": 129, + "openingtime": [ + 3, + 6, + 7 + ], + "unlock": 1100102, + "floors": 18, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_108", + "text": "直觉阵营之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "item", + "t": "10000001", + "n": 1 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + }, + { + "a": "item", + "t": "10000005", + "n": 5 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_108", + "text": "第18层" + }, + "model_display": 0 + }, + { + "id": 23000019, + "name": 2, + "restriction": 3, + "battlereadyID": 129, + "openingtime": [ + 3, + 6, + 7 + ], + "unlock": 1100102, + "floors": 19, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_109", + "text": "直觉阵营之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "attr", + "t": "gold", + "n": 50000 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_109", + "text": "第19层" + }, + "model_display": 0 + }, + { + "id": 23000020, + "name": 2, + "restriction": 3, + "battlereadyID": 129, + "openingtime": [ + 3, + 6, + 7 + ], + "unlock": 1100102, + "floors": 20, + "gaineffect": 0, + "tabIcon": "", + "tabTitle": { + "key": "circularcamptower_Sheet1_tabTitle_110", + "text": "直觉阵营之塔" + }, + "monsterlineup": [], + "reward": [ + { + "a": "item", + "t": "10000001", + "n": 1 + }, + { + "a": "item", + "t": "20000002", + "n": 1 + }, + { + "a": "item", + "t": "10000005", + "n": 5 + } + ], + "exp": 100, + "name_display": { + "key": "circularcamptower_Sheet1_name_display_110", + "text": "第20层" + }, + "model_display": 0 + } +] \ No newline at end of file diff --git a/bin/json/game_mainstage.json b/bin/json/game_mainstage.json index da760cfd1..af51a6abf 100644 --- a/bin/json/game_mainstage.json +++ b/bin/json/game_mainstage.json @@ -63,7 +63,7 @@ }, { "a": "equi", - "t": "10120", + "t": "10110", "n": 1 } ], @@ -152,7 +152,7 @@ }, { "a": "equi", - "t": "10121", + "t": "10111", "n": 1 } ], @@ -241,7 +241,7 @@ }, { "a": "equi", - "t": "10122", + "t": "10112", "n": 1 } ], @@ -330,7 +330,7 @@ }, { "a": "equi", - "t": "10123", + "t": "10113", "n": 1 } ], @@ -419,7 +419,7 @@ }, { "a": "equi", - "t": "10124", + "t": "10114", "n": 1 } ], @@ -513,7 +513,7 @@ }, { "a": "equi", - "t": "10125", + "t": "10115", "n": 1 } ], @@ -602,7 +602,7 @@ }, { "a": "equi", - "t": "10124", + "t": "10114", "n": 1 } ], @@ -691,7 +691,7 @@ }, { "a": "equi", - "t": "10125", + "t": "10115", "n": 1 } ], diff --git a/modules/pagoda/comp_configure.go b/modules/pagoda/comp_configure.go index d5ad01c8c..aa962a1a7 100644 --- a/modules/pagoda/comp_configure.go +++ b/modules/pagoda/comp_configure.go @@ -17,6 +17,7 @@ const ( game_pagodaseasonreward = "game_pagodaseasonreward.json" game_pagodataskreward = "game_pagodataskreward.json" game_passcheck = "game_passcheck.json" + game_circulate = "game_circulate.json" ) ///配置管理基础组件 @@ -27,7 +28,8 @@ type configureComp struct { _checkType map[int32][]*cfg.GamePassCheckData // key type _mapPagoda map[int32]*cfg.GamePagodaData - _mapFloor map[int32]int32 // key 页签 value 层数 + _mapFloor map[int32]int32 // key 页签 value 层数 + _mapRace map[int32]*cfg.GameCirculateData // 阵营塔 } //组件初始化接口 @@ -41,7 +43,7 @@ func (this *configureComp) Init(service core.IService, module core.IModule, comp configure.RegisterConfigure(game_passcheck, cfg.NewGamePassCheck, this.LoadPassCheck) configure.RegisterConfigure(game_pagoda, cfg.NewGamePagoda, this.LoadPagoda) - + configure.RegisterConfigure(game_circulate, cfg.NewGameCirculate, this.LoadCirculate) return } @@ -167,7 +169,6 @@ func (this *configureComp) GetPagodaConfigData(id int32) (data *cfg.GamePagodaDa } func (this *configureComp) LoadPagoda() { - var err error if v, err := this.GetConfigure(game_pagoda); err == nil { if configure, ok := v.(*cfg.GamePagoda); ok { this.hlock.Lock() @@ -182,7 +183,6 @@ func (this *configureComp) LoadPagoda() { return } } - log.Errorf("get game_pagoda conf err:%v", err) return } @@ -197,3 +197,20 @@ func (this *configureComp) GetPagodaConfBytab(tab int32, ly int32) (data *cfg.Ga err = comm.NewNotFoundConfErr("pagoda", game_pagoda, fmt.Errorf("tab %d ,ly %d not found", tab, ly)) return } + +func (this *configureComp) LoadCirculate() { + + if v, err := this.GetConfigure(game_circulate); err == nil { + if configure, ok := v.(*cfg.GameCirculate); ok { + this.hlock.Lock() + defer this.hlock.Unlock() + this._mapRace = make(map[int32]*cfg.GameCirculateData) + for _, value := range configure.GetDataList() { + this._mapRace[value.Restriction] = value + } + return + } + } + + return +} diff --git a/pb/pagoda_db.pb.go b/pb/pagoda_db.pb.go index 11660a49f..10d435b07 100644 --- a/pb/pagoda_db.pb.go +++ b/pb/pagoda_db.pb.go @@ -312,10 +312,11 @@ type RaceData struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Buf []int32 `protobuf:"varint,1,rep,packed,name=buf,proto3" json:"buf"` - Rtime int64 `protobuf:"varint,2,opt,name=rtime,proto3" json:"rtime"` // 刷新时间 客户端不用 - Defeat int32 `protobuf:"varint,3,opt,name=defeat,proto3" json:"defeat"` // 今日战胜的次数 - Floor map[int32]int64 `protobuf:"bytes,4,rep,name=floor,proto3" json:"floor" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` //key 层数 value 耗时 + Race int32 `protobuf:"varint,1,opt,name=race,proto3" json:"race"` // 阵营ID 0:循环塔 1: 阵营1 + Buf []int32 `protobuf:"varint,2,rep,packed,name=buf,proto3" json:"buf"` + Rtime int64 `protobuf:"varint,3,opt,name=rtime,proto3" json:"rtime"` // 刷新时间 客户端不用 + Defeat int32 `protobuf:"varint,4,opt,name=defeat,proto3" json:"defeat"` // 今日战胜的次数 + Floor map[int32]int64 `protobuf:"bytes,5,rep,name=floor,proto3" json:"floor" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` //key 层数 value 耗时 } func (x *RaceData) Reset() { @@ -350,6 +351,13 @@ func (*RaceData) Descriptor() ([]byte, []int) { return file_pagoda_pagoda_db_proto_rawDescGZIP(), []int{3} } +func (x *RaceData) GetRace() int32 { + if x != nil { + return x.Race + } + return 0 +} + func (x *RaceData) GetBuf() []int32 { if x != nil { return x.Buf @@ -431,19 +439,20 @@ var file_pagoda_pagoda_db_proto_rawDesc = []byte{ 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x1f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x52, 0x61, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xb0, 0x01, 0x0a, 0x08, 0x52, 0x61, 0x63, 0x65, 0x44, - 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x62, 0x75, 0x66, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, - 0x52, 0x03, 0x62, 0x75, 0x66, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x72, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x64, - 0x65, 0x66, 0x65, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x64, 0x65, 0x66, - 0x65, 0x61, 0x74, 0x12, 0x2a, 0x0a, 0x05, 0x66, 0x6c, 0x6f, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x52, 0x61, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x46, 0x6c, - 0x6f, 0x6f, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x66, 0x6c, 0x6f, 0x6f, 0x72, 0x1a, - 0x38, 0x0a, 0x0a, 0x46, 0x6c, 0x6f, 0x6f, 0x72, 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, 0x03, 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, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xc4, 0x01, 0x0a, 0x08, 0x52, 0x61, 0x63, 0x65, 0x44, + 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x04, 0x72, 0x61, 0x63, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x62, 0x75, 0x66, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x05, 0x52, 0x03, 0x62, 0x75, 0x66, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x74, 0x69, + 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x72, 0x74, 0x69, 0x6d, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x64, 0x65, 0x66, 0x65, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x06, 0x64, 0x65, 0x66, 0x65, 0x61, 0x74, 0x12, 0x2a, 0x0a, 0x05, 0x66, 0x6c, 0x6f, 0x6f, 0x72, + 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x52, 0x61, 0x63, 0x65, 0x44, 0x61, 0x74, + 0x61, 0x2e, 0x46, 0x6c, 0x6f, 0x6f, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x66, 0x6c, + 0x6f, 0x6f, 0x72, 0x1a, 0x38, 0x0a, 0x0a, 0x46, 0x6c, 0x6f, 0x6f, 0x72, 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, 0x03, 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 ( diff --git a/pb/pagoda_msg.pb.go b/pb/pagoda_msg.pb.go index ebf9bd5a3..26e714bf3 100644 --- a/pb/pagoda_msg.pb.go +++ b/pb/pagoda_msg.pb.go @@ -972,8 +972,8 @@ type PagodaCallengeRaceOverResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Race *DBPagodaRace `protobuf:"bytes,1,opt,name=race,proto3" json:"race"` - Reward []*UserAtno `protobuf:"bytes,2,rep,name=reward,proto3" json:"reward"` + Race *RaceData `protobuf:"bytes,1,opt,name=race,proto3" json:"race"` + Reward []*UserAtno `protobuf:"bytes,2,rep,name=reward,proto3" json:"reward"` } func (x *PagodaCallengeRaceOverResp) Reset() { @@ -1008,7 +1008,7 @@ func (*PagodaCallengeRaceOverResp) Descriptor() ([]byte, []int) { return file_pagoda_pagoda_msg_proto_rawDescGZIP(), []int{19} } -func (x *PagodaCallengeRaceOverResp) GetRace() *DBPagodaRace { +func (x *PagodaCallengeRaceOverResp) GetRace() *RaceData { if x != nil { return x.Race } @@ -1066,7 +1066,7 @@ type PagodaGetRaceResp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Race []*DBPagodaRace `protobuf:"bytes,1,rep,name=race,proto3" json:"race"` + Race map[int32]*RaceData `protobuf:"bytes,1,rep,name=race,proto3" json:"race" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // 塔信息 } func (x *PagodaGetRaceResp) Reset() { @@ -1101,7 +1101,7 @@ func (*PagodaGetRaceResp) Descriptor() ([]byte, []int) { return file_pagoda_pagoda_msg_proto_rawDescGZIP(), []int{21} } -func (x *PagodaGetRaceResp) GetRace() []*DBPagodaRace { +func (x *PagodaGetRaceResp) GetRace() map[int32]*RaceData { if x != nil { return x.Race } @@ -1187,18 +1187,23 @@ var file_pagoda_pagoda_msg_proto_rawDesc = []byte{ 0x61, 0x63, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x63, 0x69, 0x64, 0x12, 0x25, 0x0a, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x52, 0x65, - 0x70, 0x6f, 0x72, 0x74, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x22, 0x62, 0x0a, 0x1a, + 0x70, 0x6f, 0x72, 0x74, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x22, 0x5e, 0x0a, 0x1a, 0x50, 0x61, 0x67, 0x6f, 0x64, 0x61, 0x43, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x52, 0x61, - 0x63, 0x65, 0x4f, 0x76, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x21, 0x0a, 0x04, 0x72, 0x61, - 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x44, 0x42, 0x50, 0x61, 0x67, - 0x6f, 0x64, 0x61, 0x52, 0x61, 0x63, 0x65, 0x52, 0x04, 0x72, 0x61, 0x63, 0x65, 0x12, 0x21, 0x0a, - 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x09, 0x2e, - 0x55, 0x73, 0x65, 0x72, 0x41, 0x74, 0x6e, 0x6f, 0x52, 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, - 0x22, 0x12, 0x0a, 0x10, 0x50, 0x61, 0x67, 0x6f, 0x64, 0x61, 0x47, 0x65, 0x74, 0x52, 0x61, 0x63, - 0x65, 0x52, 0x65, 0x71, 0x22, 0x36, 0x0a, 0x11, 0x50, 0x61, 0x67, 0x6f, 0x64, 0x61, 0x47, 0x65, - 0x74, 0x52, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x21, 0x0a, 0x04, 0x72, 0x61, 0x63, - 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x44, 0x42, 0x50, 0x61, 0x67, 0x6f, - 0x64, 0x61, 0x52, 0x61, 0x63, 0x65, 0x52, 0x04, 0x72, 0x61, 0x63, 0x65, 0x42, 0x06, 0x5a, 0x04, + 0x63, 0x65, 0x4f, 0x76, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1d, 0x0a, 0x04, 0x72, 0x61, + 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x52, 0x61, 0x63, 0x65, 0x44, + 0x61, 0x74, 0x61, 0x52, 0x04, 0x72, 0x61, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x06, 0x72, 0x65, 0x77, + 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x55, 0x73, 0x65, 0x72, + 0x41, 0x74, 0x6e, 0x6f, 0x52, 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x22, 0x12, 0x0a, 0x10, + 0x50, 0x61, 0x67, 0x6f, 0x64, 0x61, 0x47, 0x65, 0x74, 0x52, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, + 0x22, 0x89, 0x01, 0x0a, 0x11, 0x50, 0x61, 0x67, 0x6f, 0x64, 0x61, 0x47, 0x65, 0x74, 0x52, 0x61, + 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x30, 0x0a, 0x04, 0x72, 0x61, 0x63, 0x65, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x50, 0x61, 0x67, 0x6f, 0x64, 0x61, 0x47, 0x65, 0x74, + 0x52, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x52, 0x61, 0x63, 0x65, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x04, 0x72, 0x61, 0x63, 0x65, 0x1a, 0x42, 0x0a, 0x09, 0x52, 0x61, 0x63, 0x65, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x1f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x52, 0x61, 0x63, 0x65, 0x44, 0x61, 0x74, + 0x61, 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, } @@ -1214,7 +1219,7 @@ func file_pagoda_pagoda_msg_proto_rawDescGZIP() []byte { return file_pagoda_pagoda_msg_proto_rawDescData } -var file_pagoda_pagoda_msg_proto_msgTypes = make([]protoimpl.MessageInfo, 22) +var file_pagoda_pagoda_msg_proto_msgTypes = make([]protoimpl.MessageInfo, 23) var file_pagoda_pagoda_msg_proto_goTypes = []interface{}{ (*PagodaGetListReq)(nil), // 0: PagodaGetListReq (*PagodaGetListResp)(nil), // 1: PagodaGetListResp @@ -1238,38 +1243,40 @@ var file_pagoda_pagoda_msg_proto_goTypes = []interface{}{ (*PagodaCallengeRaceOverResp)(nil), // 19: PagodaCallengeRaceOverResp (*PagodaGetRaceReq)(nil), // 20: PagodaGetRaceReq (*PagodaGetRaceResp)(nil), // 21: PagodaGetRaceResp - (*DBPagoda)(nil), // 22: DBPagoda - (*BattleFormation)(nil), // 23: BattleFormation - (*BattleInfo)(nil), // 24: BattleInfo - (*BattleReport)(nil), // 25: BattleReport - (*DBPagodaRecord)(nil), // 26: DBPagodaRecord - (*UserAssets)(nil), // 27: UserAssets - (*DBPagodaRace)(nil), // 28: DBPagodaRace - (*UserAtno)(nil), // 29: UserAtno + nil, // 22: PagodaGetRaceResp.RaceEntry + (*DBPagoda)(nil), // 23: DBPagoda + (*BattleFormation)(nil), // 24: BattleFormation + (*BattleInfo)(nil), // 25: BattleInfo + (*BattleReport)(nil), // 26: BattleReport + (*DBPagodaRecord)(nil), // 27: DBPagodaRecord + (*UserAssets)(nil), // 28: UserAssets + (*RaceData)(nil), // 29: RaceData + (*UserAtno)(nil), // 30: UserAtno } var file_pagoda_pagoda_msg_proto_depIdxs = []int32{ - 22, // 0: PagodaGetListResp.data:type_name -> DBPagoda - 22, // 1: PagodaGetRewardResp.data:type_name -> DBPagoda - 23, // 2: PagodaChallengeReq.battle:type_name -> BattleFormation - 24, // 3: PagodaChallengeResp.info:type_name -> BattleInfo - 25, // 4: PagodaChallengeOverReq.report:type_name -> BattleReport - 22, // 5: PagodaChallengeOverResp.data:type_name -> DBPagoda - 26, // 6: PagodaRankListResp.ranks:type_name -> DBPagodaRecord - 26, // 7: PagodaQueryRecordResp.data:type_name -> DBPagodaRecord - 22, // 8: PagodaActivateResp.data:type_name -> DBPagoda - 22, // 9: PagodaWarOrderResp.data:type_name -> DBPagoda - 27, // 10: PagodaWarOrderResp.itmes:type_name -> UserAssets - 23, // 11: PagodaCallengeRaceReq.battle:type_name -> BattleFormation - 24, // 12: PagodaCallengeRaceResp.info:type_name -> BattleInfo - 25, // 13: PagodaCallengeRaceOverReq.report:type_name -> BattleReport - 28, // 14: PagodaCallengeRaceOverResp.race:type_name -> DBPagodaRace - 29, // 15: PagodaCallengeRaceOverResp.reward:type_name -> UserAtno - 28, // 16: PagodaGetRaceResp.race:type_name -> DBPagodaRace - 17, // [17:17] is the sub-list for method output_type - 17, // [17:17] is the sub-list for method input_type - 17, // [17:17] is the sub-list for extension type_name - 17, // [17:17] is the sub-list for extension extendee - 0, // [0:17] is the sub-list for field type_name + 23, // 0: PagodaGetListResp.data:type_name -> DBPagoda + 23, // 1: PagodaGetRewardResp.data:type_name -> DBPagoda + 24, // 2: PagodaChallengeReq.battle:type_name -> BattleFormation + 25, // 3: PagodaChallengeResp.info:type_name -> BattleInfo + 26, // 4: PagodaChallengeOverReq.report:type_name -> BattleReport + 23, // 5: PagodaChallengeOverResp.data:type_name -> DBPagoda + 27, // 6: PagodaRankListResp.ranks:type_name -> DBPagodaRecord + 27, // 7: PagodaQueryRecordResp.data:type_name -> DBPagodaRecord + 23, // 8: PagodaActivateResp.data:type_name -> DBPagoda + 23, // 9: PagodaWarOrderResp.data:type_name -> DBPagoda + 28, // 10: PagodaWarOrderResp.itmes:type_name -> UserAssets + 24, // 11: PagodaCallengeRaceReq.battle:type_name -> BattleFormation + 25, // 12: PagodaCallengeRaceResp.info:type_name -> BattleInfo + 26, // 13: PagodaCallengeRaceOverReq.report:type_name -> BattleReport + 29, // 14: PagodaCallengeRaceOverResp.race:type_name -> RaceData + 30, // 15: PagodaCallengeRaceOverResp.reward:type_name -> UserAtno + 22, // 16: PagodaGetRaceResp.race:type_name -> PagodaGetRaceResp.RaceEntry + 29, // 17: PagodaGetRaceResp.RaceEntry.value:type_name -> RaceData + 18, // [18:18] is the sub-list for method output_type + 18, // [18:18] is the sub-list for method input_type + 18, // [18:18] is the sub-list for extension type_name + 18, // [18:18] is the sub-list for extension extendee + 0, // [0:18] is the sub-list for field type_name } func init() { file_pagoda_pagoda_msg_proto_init() } @@ -1552,7 +1559,7 @@ func file_pagoda_pagoda_msg_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_pagoda_pagoda_msg_proto_rawDesc, NumEnums: 0, - NumMessages: 22, + NumMessages: 23, NumExtensions: 0, NumServices: 0, }, diff --git a/sys/configure/structs/Game.Circulate.go b/sys/configure/structs/Game.Circulate.go new file mode 100644 index 000000000..d2c17b9f5 --- /dev/null +++ b/sys/configure/structs/Game.Circulate.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 GameCirculate struct { + _dataMap map[int32]*GameCirculateData + _dataList []*GameCirculateData +} + +func NewGameCirculate(_buf []map[string]interface{}) (*GameCirculate, error) { + _dataList := make([]*GameCirculateData, 0, len(_buf)) + dataMap := make(map[int32]*GameCirculateData) + for _, _ele_ := range _buf { + if _v, err2 := DeserializeGameCirculateData(_ele_); err2 != nil { + return nil, err2 + } else { + _dataList = append(_dataList, _v) + dataMap[_v.Id] = _v + } + } + return &GameCirculate{_dataList:_dataList, _dataMap:dataMap}, nil +} + +func (table *GameCirculate) GetDataMap() map[int32]*GameCirculateData { + return table._dataMap +} + +func (table *GameCirculate) GetDataList() []*GameCirculateData { + return table._dataList +} + +func (table *GameCirculate) Get(key int32) *GameCirculateData { + return table._dataMap[key] +} + + diff --git a/sys/configure/structs/Game.CirculateData.go b/sys/configure/structs/Game.CirculateData.go new file mode 100644 index 000000000..0399564e7 --- /dev/null +++ b/sys/configure/structs/Game.CirculateData.go @@ -0,0 +1,102 @@ +//------------------------------------------------------------------------------ +// +// 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 GameCirculateData struct { + Id int32 + Name int32 + Restriction int32 + BattlereadyID int32 + Openingtime []int32 + Unlock int32 + Floors int32 + Gaineffect int32 + TabIcon string + TabTitle string + Monsterlineup []int32 + Reward []*Gameatn + Exp int32 + NameDisplay string + ModelDisplay int32 +} + +const TypeId_GameCirculateData = -253541710 + +func (*GameCirculateData) GetTypeId() int32 { + return -253541710 +} + +func (_v *GameCirculateData)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["name"].(float64); !_ok_ { err = errors.New("name error"); return }; _v.Name = int32(_tempNum_) } + { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["restriction"].(float64); !_ok_ { err = errors.New("restriction error"); return }; _v.Restriction = int32(_tempNum_) } + { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["battlereadyID"].(float64); !_ok_ { err = errors.New("battlereadyID error"); return }; _v.BattlereadyID = int32(_tempNum_) } + { + var _arr_ []interface{} + var _ok_ bool + if _arr_, _ok_ = _buf["openingtime"].([]interface{}); !_ok_ { err = errors.New("openingtime error"); return } + + _v.Openingtime = 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.Openingtime = append(_v.Openingtime, _list_v_) + } + } + + { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["unlock"].(float64); !_ok_ { err = errors.New("unlock error"); return }; _v.Unlock = int32(_tempNum_) } + { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["floors"].(float64); !_ok_ { err = errors.New("floors error"); return }; _v.Floors = int32(_tempNum_) } + { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["gaineffect"].(float64); !_ok_ { err = errors.New("gaineffect error"); return }; _v.Gaineffect = int32(_tempNum_) } + { var _ok_ bool; if _v.TabIcon, _ok_ = _buf["tabIcon"].(string); !_ok_ { err = errors.New("tabIcon error"); return } } + {var _ok_ bool; var __json_text__ map[string]interface{}; if __json_text__, _ok_ = _buf["tabTitle"].(map[string]interface{}) ; !_ok_ { err = errors.New("_v.TabTitle error"); return }; { var _ok_ bool; if _, _ok_ = __json_text__["key"].(string); !_ok_ { err = errors.New("key error"); return } }; { var _ok_ bool; if _v.TabTitle, _ok_ = __json_text__["text"].(string); !_ok_ { err = errors.New("text error"); return } } } + { + var _arr_ []interface{} + var _ok_ bool + if _arr_, _ok_ = _buf["monsterlineup"].([]interface{}); !_ok_ { err = errors.New("monsterlineup error"); return } + + _v.Monsterlineup = 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.Monsterlineup = append(_v.Monsterlineup, _list_v_) + } + } + + { + var _arr_ []interface{} + var _ok_ bool + if _arr_, _ok_ = _buf["reward"].([]interface{}); !_ok_ { err = errors.New("reward error"); return } + + _v.Reward = 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.Reward = append(_v.Reward, _list_v_) + } + } + + { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["exp"].(float64); !_ok_ { err = errors.New("exp error"); return }; _v.Exp = int32(_tempNum_) } + {var _ok_ bool; var __json_text__ map[string]interface{}; if __json_text__, _ok_ = _buf["name_display"].(map[string]interface{}) ; !_ok_ { err = errors.New("_v.NameDisplay error"); return }; { var _ok_ bool; if _, _ok_ = __json_text__["key"].(string); !_ok_ { err = errors.New("key error"); return } }; { var _ok_ bool; if _v.NameDisplay, _ok_ = __json_text__["text"].(string); !_ok_ { err = errors.New("text error"); return } } } + { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["model_display"].(float64); !_ok_ { err = errors.New("model_display error"); return }; _v.ModelDisplay = int32(_tempNum_) } + return +} + +func DeserializeGameCirculateData(_buf map[string]interface{}) (*GameCirculateData, error) { + v := &GameCirculateData{} + 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 919272422..630d29146 100644 --- a/sys/configure/structs/Tables.go +++ b/sys/configure/structs/Tables.go @@ -184,6 +184,7 @@ type Tables struct { CardPool *GameCardPool Robot *GameRobot Passon *GamePasson + Circulate *GameCirculate } func NewTables(loader JsonLoader) (*Tables, error) { @@ -1229,5 +1230,11 @@ func NewTables(loader JsonLoader) (*Tables, error) { if tables.Passon, err = NewGamePasson(buf) ; err != nil { return nil, err } + if buf, err = loader("game_circulate") ; err != nil { + return nil, err + } + if tables.Circulate, err = NewGameCirculate(buf) ; err != nil { + return nil, err + } return tables, nil }