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
}